lkml.org 
[lkml]   [2021]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v4 00/13] Introduce PECI subsystem
    Date
    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

    \
     
     \ /
      Last update: 2021-11-23 15:09    [W:3.139 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site