Messages in this thread | | | From | Noah Goldstein <> | Date | Tue, 16 Nov 2021 10:49:16 -0600 | Subject | Re: [PATCH] x86/fpu: Correct AVX512 state tracking |
| |
On Tue, Nov 16, 2021 at 10:21 AM Borislav Petkov <bp@alien8.de> wrote: > > Does that still work with your test case? (Ontop of -rc1)
This should work.
> > --- > From: Noah Goldstein <goldstein.w.n@gmail.com> > Date: Tue, 16 Nov 2021 17:14:21 +0100 > Subject: [PATCH] x86/fpu: Correct AVX512 state tracking > > Add a separate, local mask for tracking AVX512 usage which does not > include the opmask xfeature set. Opmask registers usage does not cause > frequency throttling so it is a completely unnecessary false positive. > > While at it, carve it out into a separate function to keep that > abomination extracted out. > > [ bp: Rediff and cleanup ontop of 5.16-rc1. ] > > Signed-off-by: Noah Goldstein <goldstein.w.n@gmail.com> > Signed-off-by: Borislav Petkov <bp@suse.de> > Link: https://lore.kernel.org/r/20210920053951.4093668-1-goldstein.w.n@gmail.com > --- > arch/x86/kernel/fpu/core.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c > index 8ea306b1bf8e..dd3777ac0443 100644 > --- a/arch/x86/kernel/fpu/core.c > +++ b/arch/x86/kernel/fpu/core.c > @@ -98,6 +98,19 @@ bool irq_fpu_usable(void) > } > EXPORT_SYMBOL(irq_fpu_usable); > > +/* > + * Track AVX512 state use because it is known to slow the max clock > + * speed of the core. > + */ > +static void update_avx_timestamp(struct fpu *fpu) > +{ > + > +#define AVX512_TRACKING_MASK (XFEATURE_MASK_ZMM_Hi256 | XFEATURE_MASK_Hi16_ZMM) > + > + if (fpu->fpstate->regs.xsave.header.xfeatures & AVX512_TRACKING_MASK) > + fpu->avx512_timestamp = jiffies; > +} > + > /* > * Save the FPU register state in fpu->fpstate->regs. The register state is > * preserved. > @@ -116,13 +129,7 @@ void save_fpregs_to_fpstate(struct fpu *fpu) > { > if (likely(use_xsave())) { > os_xsave(fpu->fpstate); > - > - /* > - * AVX512 state is tracked here because its use is > - * known to slow the max clock speed of the core. > - */ > - if (fpu->fpstate->regs.xsave.header.xfeatures & XFEATURE_MASK_AVX512) > - fpu->avx512_timestamp = jiffies; > + update_avx_timestamp(fpu); > return; > } > > -- > 2.29.2 > > > -- > Regards/Gruss, > Boris. > > https://people.kernel.org/tglx/notes-about-netiquette
| |