On Thu, Dec 30, 2021 at 07:43:22PM +0100, Rafael J. Wysocki wrote: > On Mon, Dec 20, 2021 at 4:23 PM Ricardo Neri > <ricardo.neri-calderon@xxxxxxxxxxxxxxx> wrote: > > > > The Intel Hardware Feedback Interface provides guidance to the operating > > system about the performance and energy efficiency capabilities of each > > CPU in the system. Capabilities are numbers between 0 and 255 where a > > higher number represents a higher capability. For each CPU, energy > > efficiency and performance are reported as separate capabilities. > > > > Hardware computes these capabilities based on the operating conditions of > > the system such as power and thermal limits. These capabilities are shared > > with the operating system in a table resident in memory. Each package in > > the system has its own HFI instance. Every logical CPU in the package is > > represented in the table. More than one logical CPUs may be represented in > > a single table entry. When the hardware updates the table, it generates a > > package-level thermal interrupt. > > > > The size and format of the HFI table depend on the supported features and > > can only be determined at runtime. To minimally initialize the HFI, parse > > its features and allocate one instance per package of a data structure with > > the necessary parameters to read and navigate a local copy (i.e., owned by > > the driver) of individual HFI tables. > > > > A subsequent changeset will provide per-CPU initialization and interrupt > > handling. > > > > Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> > > Cc: Aubrey Li <aubrey.li@xxxxxxxxxxxxxxx> > > Cc: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx> > > Cc: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> > > Cc: "Ravi V. Shankar" <ravi.v.shankar@xxxxxxxxx> > > Reviewed-by: Len Brown <len.brown@xxxxxxxxx> > > Co-developed by: Aubrey Li <aubrey.li@xxxxxxxxxxxxxxx> > > Signed-off-by: Aubrey Li <aubrey.li@xxxxxxxxxxxxxxx> > > Signed-off-by: Ricardo Neri <ricardo.neri-calderon@xxxxxxxxxxxxxxx> > > --- > > Changes since v1: > > * Renamed X86_FEATURE_INTEL_HFI as X86_FEATURE_HFI. (Boris) > > * Reworked parsing of HFI features using bitfields instead of bitmasks. > > (PeterZ). > > * Removed hfi_instance::parsed as hfi_parse_features() is called only > > once via intel_hfi_init() via thermal_throttle_init_device(). > > (Rafael) > > * Converted pr_err() to pr_debug(). (Srinivas, Rafael) > > * Removed unnecessary dependency on CONFIG_SCHED_MC. > > * Renamed hfi_instance::ts_counter as hfi_instance::timestamp. > > * Renamed hfi_instance::table_base as hfi_instance::local_table and > > relocated its definition to this patch. > > * Wrapped hfi_instance::timestamp and hfi_instance:local_table in an > > anonymous union, since both point at the same location. > > --- > > drivers/thermal/intel/Kconfig | 12 ++ > > drivers/thermal/intel/Makefile | 1 + > > drivers/thermal/intel/intel_hfi.c | 175 ++++++++++++++++++++++++++++ > > drivers/thermal/intel/intel_hfi.h | 11 ++ > > drivers/thermal/intel/therm_throt.c | 3 + > > 5 files changed, 202 insertions(+) > > create mode 100644 drivers/thermal/intel/intel_hfi.c > > create mode 100644 drivers/thermal/intel/intel_hfi.h > > > > diff --git a/drivers/thermal/intel/Kconfig b/drivers/thermal/intel/Kconfig > > index c83ea5d04a1d..1a21ff60fdc7 100644 > > --- a/drivers/thermal/intel/Kconfig > > +++ b/drivers/thermal/intel/Kconfig > > @@ -99,3 +99,15 @@ config INTEL_MENLOW > > Intel Menlow platform. > > > > If unsure, say N. > > + > > +config INTEL_HFI > > This looks like it may be too general, because HFI is not a thermal-only thing. > > Maybe cal it INTEL_HFI_THERMAL? True. The *Enhanced* HFI introduces the concept of thread classes [1]. I was planning to wrap this patchset, which parses the HFI table and deals with updates, as INTEL_HFI. The code that deals with classes would be wrapped as INTEL_EHFI. After this comment, so you still think that INTEL_HFI_THERMAL makes more sense? Thanks and BR, Ricardo [1]. https://www.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html , Chapter 13