mbox series

[0/9] thermal: intel: hfi: Prework for the virtualization of HFI

Message ID 20240203040515.23947-1-ricardo.neri-calderon@linux.intel.com
Headers show
Series thermal: intel: hfi: Prework for the virtualization of HFI | expand

Message

Ricardo Neri Feb. 3, 2024, 4:05 a.m. UTC
Zhao Liu will soon post a patchset to virtualize the Hardware Feedback
Interface (HFI) and Intel Thread Director (ITD) for the benefit of virtual
machines that make use of ITD for scheduling. His experiments show up to
14% improvement in performance in some workloads and configurations. This
series lays the foundation for his patchset. I will share Zhao's patchset
when available.

Patches 1-3 reorganize portions of the HFI driver to facilitate the
implementation of virtual HFI tables. In my opinion, this reorganization is
valuable on its own.

Patches 4-6 introduce the concept of ITD classes and enable ITD.

Patches 7-9 add support to reset the ITD classification history of the
current task to be used during context switch.

Several patches of the series were cherry-picked from my last submission
to support IPC classes of tasks for scheduling [1], but this series does
not touch the scheduler. I have kept the Reviewed-by and Acked-by tags of
the cherry-picked patches.

In this iteration, the virtualization of HFI requires that HFI and ITD are
unconditionally enabled in the bare-metal system. This conflicts with a
recent patchset from Stanislaw [2] that only enables HFI if there are
user space entities listening to thermal netlink events. I am not sure
how to resolve this conflict. Please see patch 6 for a discussion.

Patches apply cleanly on Rafael's master and testing branches at the time
of posting.

Thanks and BR,
Ricardo

[1] https://lore.kernel.org/all/20230613042422.5344-1-ricardo.neri-calderon@linux.intel.com/
[2] https://lore.kernel.org/all/20240131120535.933424-1-stanislaw.gruszka@linux.intel.com/
 

Ricardo Neri (6):
  thermal: intel: hfi: Introduce Intel Thread Director classes
  x86/cpufeatures: Add the Intel Thread Director feature definitions
  thermal: intel: hfi: Enable Intel Thread Director
  x86/cpufeatures: Add feature bit for HRESET
  x86/hreset: Configure history reset
  x86/cpu: Introduce interface to reset hardware history

Zhao Liu (2):
  thermal: intel: hfi: Relocate bit definitions of HFI registers
  thermal: intel: hfi: Introduce the hfi_table structure

Zhuocheng Ding (1):
  thermal: intel: hfi: Move selected data structures to a header file

 MAINTAINERS                        |   1 +
 arch/x86/include/asm/cpufeatures.h |   2 +
 arch/x86/include/asm/hfi.h         |  85 +++++++++++++++
 arch/x86/include/asm/hreset.h      |  30 ++++++
 arch/x86/include/asm/msr-index.h   |  13 +++
 arch/x86/kernel/cpu/common.c       |  31 +++++-
 arch/x86/kernel/cpu/cpuid-deps.c   |   1 +
 drivers/thermal/intel/intel_hfi.c  | 165 +++++++++++++++--------------
 8 files changed, 245 insertions(+), 83 deletions(-)
 create mode 100644 arch/x86/include/asm/hfi.h
 create mode 100644 arch/x86/include/asm/hreset.h

Comments

Ricardo Neri Feb. 4, 2024, 3:48 a.m. UTC | #1
On Sat, Feb 03, 2024 at 10:40:14AM +0100, Borislav Petkov wrote:
> On Fri, Feb 02, 2024 at 08:05:15PM -0800, Ricardo Neri wrote:
> > +void reset_hardware_history(void)
> > +{
> > +	asm_inline volatile (ALTERNATIVE("", __ASM_HRESET, X86_FEATURE_HRESET)
> > +			     : : "a" (hardware_history_features) : "memory");
> > +}
> 
> This thing belongs in the header too, and it should be __always_inline.

Thanks a lot for your feedback Boris!

Sure, I can move this code to the header ad use __always_inline.

BR,
Ricardo
Ricardo Neri Feb. 4, 2024, 3:49 a.m. UTC | #2
On Sat, Feb 03, 2024 at 10:36:22AM +0100, Borislav Petkov wrote:
> On Fri, Feb 02, 2024 at 08:05:13PM -0800, Ricardo Neri wrote:
> > diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
> > index 8104f4791abd..3b42479c049d 100644
> > --- a/arch/x86/include/asm/cpufeatures.h
> > +++ b/arch/x86/include/asm/cpufeatures.h
> > @@ -326,6 +326,7 @@
> >  #define X86_FEATURE_FSRC		(12*32+12) /* "" Fast short REP {CMPSB,SCASB} */
> >  #define X86_FEATURE_LKGS		(12*32+18) /* "" Load "kernel" (userspace) GS */
> >  #define X86_FEATURE_AMX_FP16		(12*32+21) /* "" AMX fp16 Support */
> > +#define X86_FEATURE_HRESET		(12*32+22) /* Hardware history reset instruction */
> 
>   #define X86_FEATURE_HRESET		(12*32+22) /* "" Hardware history reset instruction */
> 
> unless this really needs to be visible in /proc/cpuinfo:
> 
> Documentation/arch/x86/cpuinfo.rst

Good point. There is no need to expose HRESET in /proc/cpuinfo. I will
implement this change.
Ricardo Neri Feb. 6, 2024, 2:59 a.m. UTC | #3
On Fri, Feb 02, 2024 at 08:05:06PM -0800, Ricardo Neri wrote:
> Zhao Liu will soon post a patchset to virtualize the Hardware Feedback
> Interface (HFI) and Intel Thread Director (ITD) for the benefit of virtual
> machines that make use of ITD for scheduling. His experiments show up to
> 14% improvement in performance in some workloads and configurations. This
> series lays the foundation for his patchset. I will share Zhao's patchset
> when available.

Here are Zhao and Zhuocheng's patches:

https://lore.kernel.org/lkml/20240203091214.411862-1-zhao1.liu@linux.intel.com/