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:
parent
46c57c8d2b
commit
038de96387
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user