# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1221212419 -3600
# Node ID 34aed15ba9df804ce037c5f691a9b11058fff2b9
# Parent  f125e481d8b65b81dd794d60a99fb0b823eaee2c
x86, cpu hotplug: flush softirq work when going offline

From: Haitao Shan <haitao.shan@intel.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>

Index: xen-3.3.1-testing/xen/arch/x86/domain.c
===================================================================
--- xen-3.3.1-testing.orig/xen/arch/x86/domain.c
+++ xen-3.3.1-testing/xen/arch/x86/domain.c
@@ -86,6 +86,12 @@ static void default_idle(void)
 
 static void play_dead(void)
 {
+    /*
+     * Flush pending softirqs if any. They can be queued up before this CPU
+     * was taken out of cpu_online_map in __cpu_disable().
+     */
+    do_softirq();
+
     /* This must be done before dead CPU ack */
     cpu_exit_clear();
     hvm_cpu_down();