|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-changelog
[Xen-changelog] [xen-4.1-testing] x86/hvm: Don't expose CPUID time	leaf 
 
# HG changeset patch
# User Paul Durrant <paul.durrant@xxxxxxxxxx>
# Date 1310111802 -3600
# Node ID e3a23d2edce4e7a85e8b54e2812416ec31efcee7
# Parent  7a991bdebac60fea93a09f5303394220f03f5cc5
x86/hvm: Don't expose CPUID time leaf when not using PVRDTSCP
Some versions of Oracle's Solaris PV drivers make a check that the
maximal Xen hypervisor CPUID leaf is <= base leaf + 2 and refuse to
work if this is not the case.  The addition of the time leaf makes the
maximal leaf == base leaf + 3 so this patch introduces a workaround
that obscures the time leaf unless PVRDTSCP is in operation.
Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
xen-unstable changeset:   23661:8fe6f4be18aa
xen-unstable date:        Fri Jul 08 08:31:10 2011 +0100
---
diff -r 7a991bdebac6 -r e3a23d2edce4 xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c      Fri Jul 08 08:56:15 2011 +0100
+++ b/xen/arch/x86/traps.c      Fri Jul 08 08:56:42 2011 +0100
@@ -671,15 +671,23 @@
     struct domain *d = current->domain;
     /* Optionally shift out of the way of Viridian architectural leaves. */
     uint32_t base = is_viridian_domain(d) ? 0x40000100 : 0x40000000;
+    uint32_t limit;
 
     idx -= base;
-    if ( idx > 3 ) 
+
+    /*
+     * Some Solaris PV drivers fail if max > base + 2. Help them out by
+     * hiding the PVRDTSCP leaf if PVRDTSCP is disabled.
+     */
+    limit = (d->arch.tsc_mode < TSC_MODE_PVRDTSCP) ? 2 : 3;
+
+    if ( idx > limit ) 
         return 0;
 
     switch ( idx )
     {
     case 0:
-        *eax = base + 3; /* Largest leaf */
+        *eax = base + limit; /* Largest leaf */
         *ebx = XEN_CPUID_SIGNATURE_EBX;
         *ecx = XEN_CPUID_SIGNATURE_ECX;
         *edx = XEN_CPUID_SIGNATURE_EDX;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread> |  
- [Xen-changelog] [xen-4.1-testing] x86/hvm: Don't expose CPUID time	leaf when not using PVRDTSCP,
Xen patchbot-4 . 1-testing <=
  
 |  
  
 | 
    | 
  
  
    |   | 
    |