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*.