summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornjl <njl@FreeBSD.org>2004-08-19 18:48:17 +0000
committernjl <njl@FreeBSD.org>2004-08-19 18:48:17 +0000
commit50a2c589ee6face70d113d78809e88afe21c617f (patch)
tree2dbc80a05316cd2ecd618dc4ba492ee5fb172267
parent5f83f24499d31424d8c4cb2da78a2005d97db566 (diff)
downloadFreeBSD-src-50a2c589ee6face70d113d78809e88afe21c617f.zip
FreeBSD-src-50a2c589ee6face70d113d78809e88afe21c617f.tar.gz
Disable interrupts after using pmap_enter() to add the identity mapping.
Since pmap_enter() calls pmap_invalidate_page(), which needs interrupts enabled in the SMP case, we defer the disable to right before saving the register context. This has been incorrect for about a year but caused no real problems because the identity page never actually replaces a previously mapped page and suspend/resume on SMP systems has been uncommon. Tested by: sos MFC after: 3 days
-rw-r--r--sys/i386/acpica/acpi_wakeup.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/i386/acpica/acpi_wakeup.c b/sys/i386/acpica/acpi_wakeup.c
index 4a2e64f..400d9f1 100644
--- a/sys/i386/acpica/acpi_wakeup.c
+++ b/sys/i386/acpica/acpi_wakeup.c
@@ -189,7 +189,6 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
AcpiSetFirmwareWakingVector(sc->acpi_wakephys);
ef = read_eflags();
- ACPI_DISABLE_IRQS();
/* Create Identity Mapping */
if ((p = curproc) == NULL)
@@ -207,6 +206,7 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE, 1);
ret_addr = 0;
+ ACPI_DISABLE_IRQS();
if (acpi_savecpu()) {
/* Execute Sleep */
intr_suspend();
OpenPOWER on IntegriCloud