[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/boot: Further simplify CR4 handling in dom0_construct_pv()
The logic would be more robust disabling SMAP based on its precense in CR4, rather than SMAP's accociation with a synthetic feature. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> v2: * Strip LASS changes back out. --- xen/arch/x86/pv/dom0_build.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c index 262edb6bf2f0..ee9ecdc2abbf 100644 --- a/xen/arch/x86/pv/dom0_build.c +++ b/xen/arch/x86/pv/dom0_build.c @@ -1057,6 +1057,7 @@ int __init dom0_construct_pv(struct domain *d, module_t *initrd, const char *cmdline) { + unsigned long cr4 = read_cr4(); int rc; /* @@ -1064,19 +1065,19 @@ int __init dom0_construct_pv(struct domain *d, * prevents us needing to write construct_dom0() in terms of * copy_{to,from}_user(). */ - if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) ) + if ( cr4 & X86_CR4_SMAP ) { if ( IS_ENABLED(CONFIG_PV32) ) cr4_pv32_mask &= ~X86_CR4_SMAP; - write_cr4(read_cr4() & ~X86_CR4_SMAP); + write_cr4(cr4 & ~X86_CR4_SMAP); } rc = dom0_construct(d, image, image_headroom, initrd, cmdline); - if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) ) + if ( cr4 & X86_CR4_SMAP ) { - write_cr4(read_cr4() | X86_CR4_SMAP); + write_cr4(cr4); if ( IS_ENABLED(CONFIG_PV32) ) cr4_pv32_mask |= X86_CR4_SMAP; -- 2.39.5
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |