Re: [PATCH 00/14] Introduce PECI subsystem

From: Williams, Dan J
Date: Wed Jul 14 2021 - 12:51:35 EST


On Tue, 2021-07-13 at 00:04 +0200, Iwona Winiarska wrote:
> Note: All changes to arch/x86 are contained within patches 01-02.

Hi Iwona,

One meta question first, who is this submission "To:"? Is there an
existing upstream maintainer path for OpenBMC changes? Are you
expecting contributions to this subsystem from others? While Greg
sometimes ends up as default maintainer for new stuff, I wonder if
someone from the OpenBMC commnuity should step up to fill this role?

>
> The Platform Environment Control Interface (PECI) is a communication
> interface between Intel processors and management controllers (e.g.
> Baseboard Management Controller, BMC).
>
> This series adds a PECI subsystem and introduces drivers which run in
> the Linux instance on the management controller (not the main Intel
> processor) and is intended to be used by the OpenBMC [1], a Linux
> distribution for BMC devices.
> The information exposed over PECI (like processor and DIMM
> temperature) refers to the Intel processor and can be consumed by
> daemons running on the BMC to, for example, display the processor
> temperature in its web interface.
>
> The PECI bus is collection of code that provides interface support
> between PECI devices (that actually represent processors) and PECI
> controllers (such as the "peci-aspeed" controller) that allow to
> access physical PECI interface. PECI devices are bound to PECI
> drivers that provides access to PECI services. This series introduces
> a generic "peci-cpu" driver that exposes hardware monitoring
> "cputemp"
> and "dimmtemp" using the auxiliary bus.
>
> Exposing "raw" PECI to userspace, either to write userspace drivers
> or
> for debug/testing purpose was left out of this series to encourage
> writing kernel drivers instead, but may be pursued in the future.
>
> Introducing PECI to upstream Linux was already attempted before [2].
> Since it's been over a year since last revision, and the series
> changed quite a bit in the meantime, I've decided to start from v1.
>
> I would also like to give credit to everyone who helped me with
> different aspects of preliminary review:
> - Pierre-Louis Bossart,
> - Tony Luck,
> - Andy Shevchenko,
> - Dave Hansen.
>
> [1] https://github.com/openbmc/openbmc
> [2]
> https://lore.kernel.org/openbmc/20191211194624.2872-1-jae.hyun.yoo@xxxxxxxxxxxxxxx/
>
> Iwona Winiarska (12):
>   x86/cpu: Move intel-family to arch-independent headers
>   x86/cpu: Extract cpuid helpers to arch-independent
>   dt-bindings: Add generic bindings for PECI
>   dt-bindings: Add bindings for peci-aspeed
>   ARM: dts: aspeed: Add PECI controller nodes
>   peci: Add core infrastructure
>   peci: Add device detection
>   peci: Add support for PECI device drivers
>   peci: Add peci-cpu driver
>   hwmon: peci: Add cputemp driver
>   hwmon: peci: Add dimmtemp driver
>   docs: Add PECI documentation
>
> Jae Hyun Yoo (2):
>   peci: Add peci-aspeed controller driver
>   docs: hwmon: Document PECI drivers
>
>  .../devicetree/bindings/peci/peci-aspeed.yaml | 111 ++++
>  .../bindings/peci/peci-controller.yaml        |  28 +
>  Documentation/hwmon/index.rst                 |   2 +
>  Documentation/hwmon/peci-cputemp.rst          |  93 ++++
>  Documentation/hwmon/peci-dimmtemp.rst         |  58 ++
>  Documentation/index.rst                       |   1 +
>  Documentation/peci/index.rst                  |  16 +
>  Documentation/peci/peci.rst                   |  48 ++
>  MAINTAINERS                                   |  32 ++
>  arch/arm/boot/dts/aspeed-g4.dtsi              |  14 +
>  arch/arm/boot/dts/aspeed-g5.dtsi              |  14 +
>  arch/arm/boot/dts/aspeed-g6.dtsi              |  14 +
>  arch/x86/Kconfig                              |   1 +
>  arch/x86/include/asm/cpu.h                    |   3 -
>  arch/x86/include/asm/intel-family.h           | 141 +----
>  arch/x86/include/asm/microcode.h              |   2 +-
>  arch/x86/kvm/cpuid.h                          |   3 +-
>  arch/x86/lib/Makefile                         |   2 +-
>  drivers/Kconfig                               |   3 +
>  drivers/Makefile                              |   1 +
>  drivers/edac/mce_amd.c                        |   3 +-
>  drivers/hwmon/Kconfig                         |   2 +
>  drivers/hwmon/Makefile                        |   1 +
>  drivers/hwmon/peci/Kconfig                    |  31 ++
>  drivers/hwmon/peci/Makefile                   |   7 +
>  drivers/hwmon/peci/common.h                   |  46 ++
>  drivers/hwmon/peci/cputemp.c                  | 503
> +++++++++++++++++
>  drivers/hwmon/peci/dimmtemp.c                 | 508
> ++++++++++++++++++
>  drivers/peci/Kconfig                          |  36 ++
>  drivers/peci/Makefile                         |  10 +
>  drivers/peci/controller/Kconfig               |  12 +
>  drivers/peci/controller/Makefile              |   3 +
>  drivers/peci/controller/peci-aspeed.c         | 501
> +++++++++++++++++
>  drivers/peci/core.c                           | 224 ++++++++
>  drivers/peci/cpu.c                            | 347 ++++++++++++
>  drivers/peci/device.c                         | 211 ++++++++
>  drivers/peci/internal.h                       | 137 +++++
>  drivers/peci/request.c                        | 502
> +++++++++++++++++
>  drivers/peci/sysfs.c                          |  82 +++
>  include/linux/peci-cpu.h                      |  38 ++
>  include/linux/peci.h                          |  93 ++++
>  include/linux/x86/cpu.h                       |   9 +
>  include/linux/x86/intel-family.h              | 146 +++++
>  lib/Kconfig                                   |   5 +
>  lib/Makefile                                  |   2 +
>  lib/x86/Makefile                              |   3 +
>  {arch/x86/lib => lib/x86}/cpu.c               |   2 +-
>  47 files changed, 3902 insertions(+), 149 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/peci/peci-
> aspeed.yaml
>  create mode 100644 Documentation/devicetree/bindings/peci/peci-
> controller.yaml
>  create mode 100644 Documentation/hwmon/peci-cputemp.rst
>  create mode 100644 Documentation/hwmon/peci-dimmtemp.rst
>  create mode 100644 Documentation/peci/index.rst
>  create mode 100644 Documentation/peci/peci.rst
>  create mode 100644 drivers/hwmon/peci/Kconfig
>  create mode 100644 drivers/hwmon/peci/Makefile
>  create mode 100644 drivers/hwmon/peci/common.h
>  create mode 100644 drivers/hwmon/peci/cputemp.c
>  create mode 100644 drivers/hwmon/peci/dimmtemp.c
>  create mode 100644 drivers/peci/Kconfig
>  create mode 100644 drivers/peci/Makefile
>  create mode 100644 drivers/peci/controller/Kconfig
>  create mode 100644 drivers/peci/controller/Makefile
>  create mode 100644 drivers/peci/controller/peci-aspeed.c
>  create mode 100644 drivers/peci/core.c
>  create mode 100644 drivers/peci/cpu.c
>  create mode 100644 drivers/peci/device.c
>  create mode 100644 drivers/peci/internal.h
>  create mode 100644 drivers/peci/request.c
>  create mode 100644 drivers/peci/sysfs.c
>  create mode 100644 include/linux/peci-cpu.h
>  create mode 100644 include/linux/peci.h
>  create mode 100644 include/linux/x86/cpu.h
>  create mode 100644 include/linux/x86/intel-family.h
>  create mode 100644 lib/x86/Makefile
>  rename {arch/x86/lib => lib/x86}/cpu.c (95%)
>