Module Name: src
Committed By: jruoho
Date: Fri Jun 3 09:15:02 UTC 2011
Modified Files:
src/sys/dev/acpi: acpi.c
Log Message:
Flush CPU caches before entering S1, as noted in the specifications.
To generate a diff of this commit:
cvs rdiff -u -r1.241 -r1.242 src/sys/dev/acpi/acpi.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/acpi/acpi.c
diff -u src/sys/dev/acpi/acpi.c:1.241 src/sys/dev/acpi/acpi.c:1.242
--- src/sys/dev/acpi/acpi.c:1.241 Tue May 31 14:27:44 2011
+++ src/sys/dev/acpi/acpi.c Fri Jun 3 09:15:02 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi.c,v 1.241 2011/05/31 14:27:44 jruoho Exp $ */
+/* $NetBSD: acpi.c,v 1.242 2011/06/03 09:15:02 jruoho Exp $ */
/*-
* Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
@@ -100,7 +100,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.241 2011/05/31 14:27:44 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.242 2011/06/03 09:15:02 jruoho Exp $");
#include "opt_acpi.h"
#include "opt_pcifixup.h"
@@ -1301,12 +1301,17 @@
if (state == ACPI_STATE_S1) {
/*
- * Enter the state. Note that interrupts must
- * be off before calling AcpiEnterSleepState().
- * Conversely, AcpiLeaveSleepState() should
- * always be called with interrupts enabled.
+ * Before the transition to S1, CPU caches
+ * must be flushed (see ACPI 4.0, 7.3.4.2).
+ *
+ * Note that interrupts must be off before
+ * calling AcpiEnterSleepState(). Conversely,
+ * AcpiLeaveSleepState() should always be
+ * called with interrupts enabled.
*/
acpi_md_OsDisableInterrupt();
+
+ ACPI_FLUSH_CPU_CACHE();
rv = AcpiEnterSleepState(state);
if (ACPI_FAILURE(rv))