[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-4.2-testing] x86/S3: add cache flush on secondary CPUs before going to sleep
# HG changeset patch # User Ben Guthro <ben@xxxxxxxxxx> # Date 1349338363 -7200 # Node ID b0aed9cadf103ac44d82f46eacd8b056c604fbc0 # Parent ffabc1ebd9131870e0dd66baa835ee49cfd4aaa9 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@xxxxxxxxxx> Make acpi_dead_idle() call default_dead_idle() rather than duplicating the logic there. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Keir Fraser <keir@xxxxxxx> xen-unstable changeset: 25940:c8d65d91a6f2 xen-unstable date: Tue Sep 25 06:38:14 UTC 2012 --- diff -r ffabc1ebd913 -r b0aed9cadf10 xen/arch/x86/acpi/cpu_idle.c --- a/xen/arch/x86/acpi/cpu_idle.c Thu Oct 04 10:11:11 2012 +0200 +++ b/xen/arch/x86/acpi/cpu_idle.c Thu Oct 04 10:12:43 2012 +0200 @@ -647,6 +647,12 @@ static void acpi_dead_idle(void) } default_halt: + /* + * When going into S3, without flushing caches modified data may be + * held by the CPUs spinning here indefinitely, and get discarded by + * a subsequent INIT. + */ + wbinvd(); for ( ; ; ) halt(); } diff -r ffabc1ebd913 -r b0aed9cadf10 xen/arch/x86/domain.c --- a/xen/arch/x86/domain.c Thu Oct 04 10:11:11 2012 +0200 +++ b/xen/arch/x86/domain.c Thu Oct 04 10:12:43 2012 +0200 @@ -86,6 +86,12 @@ static void default_idle(void) static void default_dead_idle(void) { + /* + * When going into S3, without flushing caches modified data may be + * held by the CPUs spinning here indefinitely, and get discarded by + * a subsequent INIT. + */ + wbinvd(); for ( ; ; ) halt(); } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |