Fix another witness panic. We cannot enter critical section at all because

AcpiEnterSleepState() executes (optional) _GTS method since ACPICA 20120215
(r231844).  To evaluate the method, we need malloc(9), which may sleep.

Reported by:	bschmidt
MFC after:	3 days
This commit is contained in:
Jung-uk Kim 2012-03-20 20:37:23 +00:00
parent 46c57c8d2b
commit 038de96387

View File

@ -223,6 +223,7 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
#ifdef SMP
cpuset_t wakeup_cpus;
#endif
register_t rf;
ACPI_STATUS status;
int ret;
@ -241,8 +242,8 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
AcpiSetFirmwareWakingVector(WAKECODE_PADDR(sc));
rf = intr_disable();
intr_suspend();
spinlock_enter();
if (savectx(susppcbs[0])) {
ctx_fpusave(suspfpusave[0]);
@ -299,8 +300,8 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
#endif
mca_resume();
spinlock_exit();
intr_resume();
intr_restore(rf);
AcpiSetFirmwareWakingVector(0);