Message ID | 20211123140706.2945700-1-iwona.winiarska@intel.com |
---|---|
Headers | show |
Series | Introduce PECI subsystem | expand |
Hi Iwona, Attach NPCM PECI driver support. The PECI driver built-in kernel 5.16-rc and tested on NPCM750 and NPCM845 BMC SoC's It will be great if you can add it to the PECI patchset. Thanks, Tomer On Tue, 23 Nov 2021 at 16:09, Iwona Winiarska <iwona.winiarska@intel.com> wrote: > 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@linux.intel.com/ > > Changes v3 -> v4: > * Fixed an issue where peci doesn't work after host shutdown (Zev) > * Replaced kill_device() with peci_device_del_lock (Greg) > * Fixed dts_valid() parameter type (Guenter) > * Removed Jae from MAINTAINERS file (Jae) > > Changes v2 -> v3: > > * Dropped x86/cpu patches (Boris) > * Dropped pr_fmt() for PECI module (Dan) > * Fixed releasing peci controller device flow (Dan) > * Improved peci-aspeed commit-msg and Kconfig help (Dan) > * Fixed aspeed_peci_xfer() to use the proper spin_lock function (Dan) > * Wrapped print_hex_dump_bytes() in CONFIG_DYNAMIC_DEBUG (Dan) > * Removed debug status logs from aspeed_peci_irq_handler() (Dan) > * Renamed functions using devres to start with "devm" (Dan) > * Changed request to be allocated on stack in peci_detect (Dan) > * Removed redundant WARN_ON on invalid PECI addr (Dan) > * Changed peci_device_create() to use device_initialize() + device_add() > pattern (Dan) > * Fixed peci_device_destroy() to use kill_device() avoiding double-free > (Dan) > * Renamed functions that perform xfer using "peci_xfer_*" prefix (Dan) > * Renamed peci_request_data_dib(temp) -> peci_request_dib(temp)_read (Dan) > * Fixed thermal margin readings for older Intel processors (Zev) > * Misc hwmon simplifications (Guenter) > * Used BIT_PER_TYPE to verify macro value constrains (Guenter) > * Improved WARN_ON message to print chan_rank_max and idx_dimm_max > (Guenter) > * Improved dimmtemp to not reattempt probe if no dimms are populated > > Changes v1 -> v2: > > Biggest changes when it comes to diffstat are locking in HWMON > (I decided to clean things up a bit while adding it), switching to > devres usage in more places and exposing sysfs interface in separate patch. > > * Moved extending X86 ARCHITECTURE MAINTAINERS earlier in series (Dan) > * Removed "default n" for GENERIC_LIB_X86 (Dan) > * Added vendor prefix for peci-aspeed specific properties (Rob) > * Refactored PECI to use devres consistently (Dan) > * Added missing sysfs documentation and excluded adding peci-sysfs to > separate patch (Dan) > * Used module_init() instead of subsys_init() for peci module > initialization (Dan) > * Removed redundant struct peci_device member (Dan) > * Improved PECI Kconfig help (Randy/Dan) > * Fixed/removed log messages (Dan, Guenter) > * Refactored peci-cputemp and peci-dimmtemp and added missing locks > (Guenter) > * Removed unused dev_set_drvdata() in peci-cputemp and peci-dimmtemp > (Guenter) > * Fixed used types, names, fixed broken and added additional comments > to peci-hwmon (Guenter, Zev) > * Refactored peci-dimmtemp to not return -ETIMEDOUT (Guenter) > * Added sanity check for min_peci_revision in peci-hwmon drivers (Zev) > * Added assert for DIMM_NUMS_MAX and additional warning in peci-dimmtemp > (Zev) > * Fixed macro names in peci-aspeed (Zev) > * Refactored peci-aspeed sanitizing properties to a single helper function > (Zev) > * Fixed peci_cpu_device_ids definition for Broadwell Xeon D (David) > * Refactor peci_request to use a single allocation (Zev) > * Used min_t() to improve code readability (Zev) > * Added macro for PECI_RDENDPTCFG_MMIO_WR_LEN_BASE and fixed adev type > array name to more descriptive (Zev) > * Fixed peci-hwmon commit-msg and documentation (Zev) > > Thanks > -Iwona > > Iwona Winiarska (11): > 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 sysfs interface for PECI bus > 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 > > Documentation/ABI/testing/sysfs-bus-peci | 16 + > .../devicetree/bindings/peci/peci-aspeed.yaml | 109 +++ > .../bindings/peci/peci-controller.yaml | 33 + > Documentation/hwmon/index.rst | 2 + > Documentation/hwmon/peci-cputemp.rst | 90 +++ > Documentation/hwmon/peci-dimmtemp.rst | 57 ++ > Documentation/index.rst | 1 + > Documentation/peci/index.rst | 16 + > Documentation/peci/peci.rst | 51 ++ > MAINTAINERS | 26 + > arch/arm/boot/dts/aspeed-g4.dtsi | 14 + > arch/arm/boot/dts/aspeed-g5.dtsi | 14 + > arch/arm/boot/dts/aspeed-g6.dtsi | 14 + > drivers/Kconfig | 3 + > drivers/Makefile | 1 + > drivers/hwmon/Kconfig | 2 + > drivers/hwmon/Makefile | 1 + > drivers/hwmon/peci/Kconfig | 31 + > drivers/hwmon/peci/Makefile | 7 + > drivers/hwmon/peci/common.h | 58 ++ > drivers/hwmon/peci/cputemp.c | 592 ++++++++++++++++ > drivers/hwmon/peci/dimmtemp.c | 630 ++++++++++++++++++ > drivers/peci/Kconfig | 36 + > drivers/peci/Makefile | 10 + > drivers/peci/controller/Kconfig | 17 + > drivers/peci/controller/Makefile | 3 + > drivers/peci/controller/peci-aspeed.c | 429 ++++++++++++ > drivers/peci/core.c | 236 +++++++ > drivers/peci/cpu.c | 343 ++++++++++ > drivers/peci/device.c | 252 +++++++ > drivers/peci/internal.h | 136 ++++ > drivers/peci/request.c | 482 ++++++++++++++ > drivers/peci/sysfs.c | 82 +++ > include/linux/peci-cpu.h | 40 ++ > include/linux/peci.h | 112 ++++ > 35 files changed, 3946 insertions(+) > create mode 100644 Documentation/ABI/testing/sysfs-bus-peci > 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 > > -- > 2.31.1 > >