From d3bdd24ea9577d293cf2a9bba8a7640479b41ab3 Mon Sep 17 00:00:00 2001 From: Nate Lawson Date: Thu, 19 Aug 2004 18:48:17 +0000 Subject: [PATCH] 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 --- sys/i386/acpica/acpi_wakeup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/i386/acpica/acpi_wakeup.c b/sys/i386/acpica/acpi_wakeup.c index 4a2e64fa5c0..400d9f15388 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();