[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] Fixing mwait usage when doing cpu offline
Hi, Keir, In debugging the issue "system hang when doing cpu offline", I identified a situation that could cause a dead lock. The scenario is: mwait_idle_with_hint inside play_dead will access per cpu variable, which causes #PF. The #PF handler will use printk, which will schedule a tasklet. In scheduling a tasklet, per cpu variables are needed, otherwise, there will be another #PF. These series of #PF produce a dead lock around tasklet_lock.
This patch avoids using per_cpu variable inside play_dead. Signed-off-by: Shan Haitao <haitao.shan@xxxxxxxxx> Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx>
diff -r dac86c85222e xen/arch/x86/acpi/cpu_idle.c --- a/xen/arch/x86/acpi/cpu_idle.c Fri Feb 18 19:07:11 2011 +0000 +++ b/xen/arch/x86/acpi/cpu_idle.c Wed Feb 23 17:05:32 2011 +0800
@@ -569,7 +569,8 @@ static void acpi_dead_idle(void) { case ACPI_CSTATE_EM_FFH: /* Not treat interrupt as break event */ - mwait_idle_with_hints(cx->address, 0);
+ __monitor((void *)&mwait_wakeup(smp_processor_id()), 0, 0); + __mwait(cx->address, 0); break; case ACPI_CSTATE_EM_SYSIO:
inb(cx->address); Attachment:
cpu_offline_mwait_fix.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |