aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir@xen.org>2011-02-24 09:32:41 +0000
committerKeir Fraser <keir@xen.org>2011-02-24 09:32:41 +0000
commit0132f2f2fc9b6c1ff6b4ae105a5d5bcdb2755836 (patch)
treea79337ab67702aa23ba3c81ade8d4ac7cd6a767a
parent3af87a7ece7f27a537a006196873ca9fda696616 (diff)
downloadxen-0132f2f2fc9b6c1ff6b4ae105a5d5bcdb2755836.tar.gz
xen-0132f2f2fc9b6c1ff6b4ae105a5d5bcdb2755836.tar.bz2
xen-0132f2f2fc9b6c1ff6b4ae105a5d5bcdb2755836.zip
x86: Fix mwait usage when doing cpu offline
When cpu is offlined, it cannot access per cpu variable at all. This patch avoids using per_cpu variable inside play_dead. Signed-off-by: Shan Haitao <haitao.shan@intel.com> Signed-off-by: Wei Gang <gang.wei@intel.com>
-rw-r--r--xen/arch/x86/acpi/cpu_idle.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c
index a55269fcda..bb2da8926b 100644
--- a/xen/arch/x86/acpi/cpu_idle.c
+++ b/xen/arch/x86/acpi/cpu_idle.c
@@ -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);