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-devel

Re: [Xen-devel] Re: BSOD "A clock interrupt was not recevied onasecondar

To: Steven Smith <steven.smith@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Re: BSOD "A clock interrupt was not recevied onasecondary processor within the allocated time interval"
From: Frank van der Linden <Frank.Vanderlinden@xxxxxxx>
Date: Wed, 07 Jan 2009 10:42:08 -0700
Cc: "Xen-Devel \(E-mail\)" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Steve Prochniak <sprochniak@xxxxxxxxxxxxxxx>, Andrew Lyon <andrew.lyon@xxxxxxxxx>, Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, xen-users@xxxxxxxxxxxxxxxxxxx, Ben Guthro <bguthro@xxxxxxxxxxxxxxx>
Delivery-date: Wed, 07 Jan 2009 09:42:44 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20090106103909.GA23206@xxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <49627C6B.7000900@xxxxxxxxxxxxxxx> <C5883149.20C37%keir.fraser@xxxxxxxxxxxxx> <20090106103909.GA23206@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.14 (X11/20080616)
Steven Smith wrote:
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*.

That appears to work. I have a test setup where I can introduce an arbitrary delay in qemu-dm. It's easy to trigger bug check 0x101 in Windows 2008 that way. Using viridian=1, with the relaxed timer bit set, I have been unable to crash Windows 2008.

Looks like a good thing to commit.

- Frank

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>