diff options
author | Ben Guthro <ben@guthro.net> | 2012-09-25 08:38:14 +0200 |
---|---|---|
committer | Ben Guthro <ben@guthro.net> | 2012-09-25 08:38:14 +0200 |
commit | ca71bdf62e7e96579415fce6b562f3a956d94cc9 (patch) | |
tree | e8f461d93e466a4d4935b14373642c4fb278ded2 /xen/arch/x86/acpi | |
parent | 797b603c7e32459c782ec2738fa6a30b4fbbcb83 (diff) | |
download | xen-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.c | 3 |
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) |