hvm: Tell Viridian-enabled OS to relax timer interrupt checks.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 6 Jan 2009 13:58:13 +0000 (13:58 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 6 Jan 2009 13:58:13 +0000 (13:58 +0000)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/hvm/viridian.c

index b6389e6c47d998a6d720df22e17de21c75c66c99..a18ea9e3d14bfa0fe728d9b62e46a88da2a6ac81 100644 (file)
@@ -37,6 +37,7 @@
 
 /* Viridian CPUID 4000004, Implementation Recommendations. */
 #define CPUID4A_MSR_BASED_APIC  (1 << 3)
+#define CPUID4A_RELAX_TIMER_INT (1 << 5)
 
 int cpuid_viridian_leaves(unsigned int leaf, unsigned int *eax,
                           unsigned int *ebx, unsigned int *ecx,
@@ -84,7 +85,8 @@ int cpuid_viridian_leaves(unsigned int leaf, unsigned int *eax,
         if ( (d->arch.hvm_domain.viridian.guest_os_id.raw == 0) ||
              (d->arch.hvm_domain.viridian.guest_os_id.fields.os < 4) )
             break;
-        *eax = CPUID4A_MSR_BASED_APIC;
+        *eax = (CPUID4A_MSR_BASED_APIC |
+                CPUID4A_RELAX_TIMER_INT);
         *ebx = 2047; /* long spin count */
         break;
     }