x86: Fix reboot failure after S3
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 29 May 2008 08:42:59 +0000 (09:42 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 29 May 2008 08:42:59 +0000 (09:42 +0100)
"warm reset vector" is used to start APs. At booting time, it is set
by BP, and cleared after all APs have started. When do S3, similar work
need to do. However, when enable non-boot CPUs after S3, Xen just sets
this vector, but forgets to clear it after APs startup.

Signed-off-by: Huacai Chen <huacai.chen@intel.com>
xen/arch/x86/smpboot.c

index 1d7c81a85df4d8ec95fcff543dbf6c41b2e35338..6721b9f6c53de2f173c31d21ccb06118da36df2b 100644 (file)
@@ -1391,6 +1391,11 @@ void enable_nonboot_cpus(void)
                panic("Not enough cpus");
        }
        cpus_clear(frozen_cpus);
+
+       /*
+        * Cleanup possible dangling ends after sleep...
+        */
+       smpboot_restore_warm_reset_vector();
 }
 #else /* ... !CONFIG_HOTPLUG_CPU */
 int __cpu_disable(void)