[PATCH 00/14] Introduce PECI subsystem

Iwona Winiarska
2021-07-12T22:07:18Z

Note: All changes to arch/x86 are contained within patches 01-02.

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/

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%)

--
2.31.1