static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
 
-static __read_mostly unsigned int cpuid_leaf1_ecx_set_mask;
 static __read_mostly unsigned int cpuid_leaf5_ecx_val;
 static __read_mostly unsigned int cpuid_leaf5_edx_val;
 
 {
        unsigned maskebx = ~0;
        unsigned maskecx = ~0;
-       unsigned setecx = 0;
        /*
         * Mask out inconvenient features, to try and disable as many
         * unsupported kernel subsystems as possible.
        switch (*ax) {
        case 1:
                maskecx = cpuid_leaf1_ecx_mask;
-               setecx = cpuid_leaf1_ecx_set_mask;
                break;
 
        case CPUID_MWAIT_LEAF:
 
        *bx &= maskebx;
        *cx &= maskecx;
-       *cx |= setecx;
 }
 STACK_FRAME_NON_STANDARD(xen_cpuid); /* XEN_EMULATE_PREFIX */
 
        /* Xen will set CR4.OSXSAVE if supported and not disabled by force */
        if ((cx & xsave_mask) != xsave_mask)
                cpuid_leaf1_ecx_mask &= ~xsave_mask; /* disable XSAVE & OSXSAVE */
-       if (xen_check_mwait())
-               cpuid_leaf1_ecx_set_mask = (1 << (X86_FEATURE_MWAIT % 32));
 }
 
 static void __init xen_init_capabilities(void)
 
        if (!xen_initial_domain())
                setup_clear_cpu_cap(X86_FEATURE_ACPI);
+
+       if (xen_check_mwait())
+               setup_force_cpu_cap(X86_FEATURE_MWAIT);
+       else
+               setup_clear_cpu_cap(X86_FEATURE_MWAIT);
 }
 
 static void xen_set_debugreg(int reg, unsigned long val)