Message ID | 20230914063325.85503-6-weijiang.yang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enable CET Virtualization | expand |
On 9/13/23 23:33, Yang Weijiang wrote: > --- a/arch/x86/kernel/fpu/xstate.c > +++ b/arch/x86/kernel/fpu/xstate.c > @@ -845,6 +845,7 @@ void __init fpu__init_system_xstate(unsigned int legacy_size) > /* Clean out dynamic features from default */ > fpu_kernel_cfg.default_features = fpu_kernel_cfg.max_features; > fpu_kernel_cfg.default_features &= ~XFEATURE_MASK_USER_DYNAMIC; > + fpu_kernel_cfg.default_features &= ~fpu_kernel_dynamic_xfeatures; I'd much rather that this be a closer analog to XFEATURE_MASK_USER_DYNAMIC. Please define a XFEATURE_MASK_KERNEL_DYNAMIC value and use it here. Don't use a dynamically generated one.
On 9/15/2023 12:22 AM, Dave Hansen wrote: > On 9/13/23 23:33, Yang Weijiang wrote: >> --- a/arch/x86/kernel/fpu/xstate.c >> +++ b/arch/x86/kernel/fpu/xstate.c >> @@ -845,6 +845,7 @@ void __init fpu__init_system_xstate(unsigned int legacy_size) >> /* Clean out dynamic features from default */ >> fpu_kernel_cfg.default_features = fpu_kernel_cfg.max_features; >> fpu_kernel_cfg.default_features &= ~XFEATURE_MASK_USER_DYNAMIC; >> + fpu_kernel_cfg.default_features &= ~fpu_kernel_dynamic_xfeatures; > I'd much rather that this be a closer analog to XFEATURE_MASK_USER_DYNAMIC. > > Please define a XFEATURE_MASK_KERNEL_DYNAMIC value and use it here. > Don't use a dynamically generated one. OK, I will change it, thanks!
On Thu, 2023-09-14 at 09:22 -0700, Dave Hansen wrote: > On 9/13/23 23:33, Yang Weijiang wrote: > > --- a/arch/x86/kernel/fpu/xstate.c > > +++ b/arch/x86/kernel/fpu/xstate.c > > @@ -845,6 +845,7 @@ void __init fpu__init_system_xstate(unsigned int legacy_size) > > /* Clean out dynamic features from default */ > > fpu_kernel_cfg.default_features = fpu_kernel_cfg.max_features; > > fpu_kernel_cfg.default_features &= ~XFEATURE_MASK_USER_DYNAMIC; > > + fpu_kernel_cfg.default_features &= ~fpu_kernel_dynamic_xfeatures; > > I'd much rather that this be a closer analog to XFEATURE_MASK_USER_DYNAMIC. > > Please define a XFEATURE_MASK_KERNEL_DYNAMIC value and use it here. > Don't use a dynamically generated one. > I also think so. Best regards, Maxim Levitsky
diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c index eaec05bc1b3c..4753c677e2e1 100644 --- a/arch/x86/kernel/fpu/xstate.c +++ b/arch/x86/kernel/fpu/xstate.c @@ -845,6 +845,7 @@ void __init fpu__init_system_xstate(unsigned int legacy_size) /* Clean out dynamic features from default */ fpu_kernel_cfg.default_features = fpu_kernel_cfg.max_features; fpu_kernel_cfg.default_features &= ~XFEATURE_MASK_USER_DYNAMIC; + fpu_kernel_cfg.default_features &= ~fpu_kernel_dynamic_xfeatures; fpu_user_cfg.default_features = fpu_user_cfg.max_features; fpu_user_cfg.default_features &= ~XFEATURE_MASK_USER_DYNAMIC;
The kernel dynamic xfeatures are supported by host, i.e., they're enabled in xsaves/xrstors operating xfeature set (XCR0 | XSS), but the corresponding CPU features are disabled for the time-being in host kernel so the bits are not necessarily set by default. Remove the bits from fpu_kernel_cfg.default_features so that the bits in xstate_bv and xcomp_bv are cleared and xsaves/xrstors can be optimized by HW for normal fpstate. Signed-off-by: Yang Weijiang <weijiang.yang@intel.com> --- arch/x86/kernel/fpu/xstate.c | 1 + 1 file changed, 1 insertion(+)