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
|
#ifdef SMP
|
||||||
cpuset_t wakeup_cpus;
|
cpuset_t wakeup_cpus;
|
||||||
#endif
|
#endif
|
||||||
|
register_t rf;
|
||||||
ACPI_STATUS status;
|
ACPI_STATUS status;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -241,8 +242,8 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
|
|||||||
|
|
||||||
AcpiSetFirmwareWakingVector(WAKECODE_PADDR(sc));
|
AcpiSetFirmwareWakingVector(WAKECODE_PADDR(sc));
|
||||||
|
|
||||||
|
rf = intr_disable();
|
||||||
intr_suspend();
|
intr_suspend();
|
||||||
spinlock_enter();
|
|
||||||
|
|
||||||
if (savectx(susppcbs[0])) {
|
if (savectx(susppcbs[0])) {
|
||||||
ctx_fpusave(suspfpusave[0]);
|
ctx_fpusave(suspfpusave[0]);
|
||||||
@ -299,8 +300,8 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
mca_resume();
|
mca_resume();
|
||||||
spinlock_exit();
|
|
||||||
intr_resume();
|
intr_resume();
|
||||||
|
intr_restore(rf);
|
||||||
|
|
||||||
AcpiSetFirmwareWakingVector(0);
|
AcpiSetFirmwareWakingVector(0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user