[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.