[PATCH 0/7] Thermal: Introduce the Hardware Feedback Interface for thermal and performance management

From: Ricardo Neri
Date: Fri Nov 05 2021 - 21:34:11 EST


The Intel Hardware Feedback Interface (HFI) [1] provides information about
the performance and energy efficiency of each CPU in the system. It uses a
table that is shared between hardware and the operating system. The
contents of the table may be updated as a result of changes in the
operating conditions of the system (e.g., reaching a thermal limit) or the
action of external factors (e.g., changes in the thermal design power).

The information that HFI provides are specified as numeric, unit-less
capabilities relative to other CPUs in the system. These capabilities have
a range of [0-255] where higher numbers represent higher capabilities.
Energy efficiency and performance are reported in separate capabilities.
If either the performance or energy capabilities efficiency of a CPU are 0,
the hardware recommends to not schedule any tasks on such CPU for
performance, energy efficiency or thermal reasons, respectively.

The kernel or user space may use the information from the HFI to modify
task placement and/or adjust power limits. This patchset focuses on the
user space. The thermal notification framework is extended to relay
updates of CPU capacity. Thus, a userspace daemon can affinitize workloads
to certain CPUs and/or offline CPUs whose capabilities are zero.

The frequency of HFI updates is specific to each processor model. On some
systems, there is just a single HFI update at boot. On other systems, there
may be updates every tens of milliseconds. In order to not overwhelm
userspace with too many updates, they are limited to one update every
CONFIG_HZ jiffies.

Thanks and BR,
Ricardo

[1]. https://www.intel.com/sdm

Ricardo Neri (5):
x86/Documentation: Describe the Intel Hardware Feedback Interface
x86: Add definitions for the Intel Hardware Feedback Interface
thermal: intel: hfi: Minimally initialize the Hardware Feedback
Interface
thermal: intel: hfi: Handle CPU hotplug events
thermal: intel: hfi: Enable notification interrupt

Srinivas Pandruvada (2):
thermal: netlink: Add a new event to notify CPU capabilities change
thermal: intel: hfi: Notify user space for HFI events

Documentation/x86/index.rst | 1 +
Documentation/x86/intel-hfi.rst | 68 ++++
arch/x86/include/asm/cpufeatures.h | 1 +
arch/x86/include/asm/msr-index.h | 6 +
drivers/thermal/intel/Kconfig | 13 +
drivers/thermal/intel/Makefile | 1 +
drivers/thermal/intel/intel_hfi.c | 508 ++++++++++++++++++++++++++++
drivers/thermal/intel/intel_hfi.h | 40 +++
drivers/thermal/intel/therm_throt.c | 21 ++
drivers/thermal/thermal_netlink.c | 52 +++
drivers/thermal/thermal_netlink.h | 13 +
include/uapi/linux/thermal.h | 6 +-
12 files changed, 729 insertions(+), 1 deletion(-)
create mode 100644 Documentation/x86/intel-hfi.rst
create mode 100644 drivers/thermal/intel/intel_hfi.c
create mode 100644 drivers/thermal/intel/intel_hfi.h

--
2.17.1