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))