Alternative Viridian interface support was checked in. When enabled, it
ought to be sufficient to disable these bugchecks. Œviridian=1¹ needs to be
specified in the domain config file.
Hmm... In order for the Viridian stuff to actually solve this
problem, you need to set the relaxed-timers bit. It doesn't look like
the xen-unstable implementation does so. Something like this might
help:
diff -r f6b92526e916 xen/arch/x86/hvm/viridian.c
--- a/xen/arch/x86/hvm/viridian.c Tue Jan 06 09:14:39 2009 +0000
+++ b/xen/arch/x86/hvm/viridian.c Tue Jan 06 10:32:26 2009 +0000
@@ -37,6 +37,7 @@
/* Viridian CPUID 4000004, Implementation Recommendations. */
#define CPUID4A_MSR_BASED_APIC (1 << 3)
+#define CPUID4A_RELAX_TIMER_INT_HANDLING (1 << 5)
int cpuid_viridian_leaves(unsigned int leaf, unsigned int *eax,
unsigned int *ebx, unsigned int *ecx,
@@ -84,7 +85,7 @@
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_HANDLING;
*ebx = 2047; /* long spin count */
break;
}
But note that I haven't tested this *at all*.