diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index fd3803e..03bfaf7 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -252,6 +252,13 @@ static __init void xen_init_cpuid_mask(void) (1 << X86_FEATURE_MCA) | /* disable MCA */ (1 << X86_FEATURE_APIC) | /* disable local APIC */ (1 << X86_FEATURE_ACPI)); /* disable ACPI */ + ax = 1; + xen_cpuid(&ax, &bx, &cx, &dx); + + /* Xen will set CR4.OSXSAVE if supported and not disabled by force */ + if ( cx & (1 << (X86_FEATURE_XSAVE % 32)) && + cx & (1 << (X86_FEATURE_OSXSAVE % 32)) ) + return; cpuid_leaf1_ecx_mask &= ~(1 << (X86_FEATURE_XSAVE % 32)); /* disable XSAVE */ }