mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-03 01:36:52 +09:00
Merge tag 'x86_fpu_for_v5.17_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fpu update from Borislav Petkov:
"A single x86/fpu update for 5.17:
- Exclude AVX opmask registers use from AVX512 state tracking as they
don't contribute to frequency throttling"
* tag 'x86_fpu_for_v5.17_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/fpu: Correct AVX512 state tracking
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user