[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Xen randomly stuck in mdelay() during MP initialization
On 01/11/2012 02:06 PM, Julian Pidancet wrote: Hi, When trying to boot xen 4.1 on new hardware, Xen become stuck in wakeup_secondary_cpu() in the mdelay function. Dprintk("Waiting for send to finish...\n"); timeout = 0; do { Dprintk("+"); udelay(100); if ( !x2apic_enabled ) send_status = apic_read(APIC_ICR)& APIC_ICR_BUSY; } while ( send_status&& (timeout++< 1000) ); printk("before mdelay\n"); mdelay(10); printk("after mdelay\n"); Dprintk("Deasserting INIT.\n"); The hang can happen randomly with any of the CPUs to wake up and sometime doesn't happen at all. Replacing mdelay(10) with udelay(10) seems to fix the issue. Essentially the same issue, check out http://article.gmane.org/gmane.comp.emulators.xen.devel/114776/match=ivy+bridge Problem is that udelay uses 32 bit value from tsc for measuring elapsed time and at early boot stage something steals (most likely SMI) boot cpu with a following wrapping of tsc value in udelay. And in case of mdelay this happens multiple times. Replacing mdelay with udelay or removing it helps but it may break boot on other hardware. I suspect it's a BIOS issue. -- Thanks, Igor _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |