aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/acpi
diff options
context:
space:
mode:
authorBen Guthro <ben@guthro.net>2012-09-25 08:38:14 +0200
committerBen Guthro <ben@guthro.net>2012-09-25 08:38:14 +0200
commitca71bdf62e7e96579415fce6b562f3a956d94cc9 (patch)
treee8f461d93e466a4d4935b14373642c4fb278ded2 /xen/arch/x86/acpi
parent797b603c7e32459c782ec2738fa6a30b4fbbcb83 (diff)
downloadxen-ca71bdf62e7e96579415fce6b562f3a956d94cc9.tar.gz
xen-ca71bdf62e7e96579415fce6b562f3a956d94cc9.tar.bz2
xen-ca71bdf62e7e96579415fce6b562f3a956d94cc9.zip
x86/S3: add cache flush on secondary CPUs before going to sleep
Secondary CPUs, between doing their final memory writes (particularly updating cpu_initialized) and getting a subsequent INIT, may not write back all modified data. The INIT itself then causes those modifications to be lost, so in the cpu_initialized case the CPU would find itself already initialized, (intentionally) entering an infinite loop instead of actually coming online. Signed-off-by: Ben Guthro <ben@guthro.net> Make acpi_dead_idle() call default_dead_idle() rather than duplicating the logic there. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org> Committed-by: Jan Beulich <jbeulich@suse.com>
Diffstat (limited to 'xen/arch/x86/acpi')
-rw-r--r--xen/arch/x86/acpi/cpu_idle.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c
index 45eb603242..fd4c42bfec 100644
--- a/xen/arch/x86/acpi/cpu_idle.c
+++ b/xen/arch/x86/acpi/cpu_idle.c
@@ -659,8 +659,7 @@ void acpi_dead_idle(void)
}
default_halt:
- for ( ; ; )
- halt();
+ default_dead_idle();
}
int cpuidle_init_cpu(unsigned int cpu)