[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] Fixing mwait usage when doing cpu offline


  • To: Keir Fraser <keir@xxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: Haitao Shan <maillists.shan@xxxxxxxxx>
  • Date: Wed, 23 Feb 2011 17:05:25 +0800
  • Cc:
  • Delivery-date: Wed, 23 Feb 2011 01:06:17 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=VRzcr6UrKnB3p+pmi+SxnXz97KxastuiNLtX9MrMBnn19GYFGBwB/LQxR/O3xa8IWz lWVhuDp1vMe1LIO6rG34EgBcNS3SvdcINFe6O2L5p+uY0S02PUHuXIjprjuOKFr5yv67 W6UcNfJw4g0gw0DKaETzfwXSkFo35wRAhvcis=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

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
Description: Binary data

_______________________________________________
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®.