WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] x86/hvm: Don't expose CPUID time leaf whe

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86/hvm: Don't expose CPUID time leaf when not using PVRDTSCP
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Sun, 10 Jul 2011 08:44:10 +0100
Delivery-date: Sun, 10 Jul 2011 00:44:41 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Paul Durrant <paul.durrant@xxxxxxxxxx>
# Date 1310110270 -3600
# Node ID 8fe6f4be18aa8a36aee52cca160bc53eda9cad15
# Parent  c86b78b44b32cf2e3690e93bc5e93217ccf312a2
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>
---


diff -r c86b78b44b32 -r 8fe6f4be18aa xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c      Fri Jul 08 08:30:56 2011 +0100
+++ b/xen/arch/x86/traps.c      Fri Jul 08 08:31:10 2011 +0100
@@ -704,15 +704,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-unstable] x86/hvm: Don't expose CPUID time leaf when not using PVRDTSCP, Xen patchbot-unstable <=