| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86/mwait-idle: Tweak reporting when MONITOR is not available
 Currently, booting Xen as a PVH guest yields:
  (d10) (XEN) mwait-idle: does not run on family 6 model 60
which is inaccurate.
The problem is the lack of monitor, rather than the family/model.  Combine the
two CPUID checks and skip the list search in the case that is is going to fail
for feature reasons.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
 xen/arch/x86/cpu/mwait-idle.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/xen/arch/x86/cpu/mwait-idle.c b/xen/arch/x86/cpu/mwait-idle.c
index 77fc3dd..e3b5334 100644
--- a/xen/arch/x86/cpu/mwait-idle.c
+++ b/xen/arch/x86/cpu/mwait-idle.c
@@ -1113,17 +1113,17 @@ static void __init mwait_idle_state_table_update(void)
 static int __init mwait_idle_probe(void)
 {
        unsigned int eax, ebx, ecx;
-       const struct x86_cpu_id *id = x86_match_cpu(intel_idle_ids);
+       const struct x86_cpu_id *id;
 
-       if (!id) {
+       if (!cpu_has_monitor || boot_cpu_data.cpuid_level < CPUID_MWAIT_LEAF)
+               return -ENODEV;
+
+       if (!(id = x86_match_cpu(intel_idle_ids))) {
                pr_debug(PREFIX "does not run on family %d model %d\n",
                         boot_cpu_data.x86, boot_cpu_data.x86_model);
                return -ENODEV;
        }
 
-       if (boot_cpu_data.cpuid_level < CPUID_MWAIT_LEAF)
-               return -ENODEV;
-
        cpuid(CPUID_MWAIT_LEAF, &eax, &ebx, &ecx, &mwait_substates);
 
        if (!(ecx & CPUID5_ECX_EXTENSIONS_SUPPORTED) ||
-- 
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |