Skip to content

Commit 9f3b0e5

Browse files
committed
Merge fix/xsaves-lbr/v6.6 into v6.6.36
* commit 'ea0740024a0f0c7c6b8844492e3fa9eeb1289a83': x86/fpu: Avoid writing LBR bit to IA32_XSS unless supported
2 parents 8ef353c + ea07400 commit 9f3b0e5

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

arch/x86/include/asm/fpu/types.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,13 @@ struct fpu_state_config {
589589
* even without XSAVE support, i.e. legacy features FP + SSE
590590
*/
591591
u64 legacy_features;
592+
/*
593+
* @independent_features:
594+
*
595+
* Features that are supported by XSAVES, but not managed as part of
596+
* the FPU core, such as LBR
597+
*/
598+
u64 independent_features;
592599
};
593600

594601
/* FPU state configuration information */

arch/x86/kernel/fpu/xstate.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,9 @@ void __init fpu__init_system_xstate(unsigned int legacy_size)
788788
goto out_disable;
789789
}
790790

791+
fpu_kernel_cfg.independent_features = fpu_kernel_cfg.max_features &
792+
XFEATURE_MASK_INDEPENDENT;
793+
791794
/*
792795
* Clear XSAVE features that are disabled in the normal CPUID.
793796
*/

arch/x86/kernel/fpu/xstate.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ static inline u64 xfeatures_mask_supervisor(void)
6464
static inline u64 xfeatures_mask_independent(void)
6565
{
6666
if (!cpu_feature_enabled(X86_FEATURE_ARCH_LBR))
67-
return XFEATURE_MASK_INDEPENDENT & ~XFEATURE_MASK_LBR;
67+
return fpu_kernel_cfg.independent_features & ~XFEATURE_MASK_LBR;
6868

69-
return XFEATURE_MASK_INDEPENDENT;
69+
return fpu_kernel_cfg.independent_features;
7070
}
7171

7272
/* XSAVE/XRSTOR wrapper functions */

0 commit comments

Comments
 (0)