Date: Tue, 20 Mar 2012 20:37:23 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r233249 - head/sys/amd64/acpica Message-ID: <201203202037.q2KKbNfK037014@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Tue Mar 20 20:37:23 2012 New Revision: 233249 URL: http://svn.freebsd.org/changeset/base/233249 Log: 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 Modified: head/sys/amd64/acpica/acpi_wakeup.c Modified: head/sys/amd64/acpica/acpi_wakeup.c ============================================================================== --- head/sys/amd64/acpica/acpi_wakeup.c Tue Mar 20 19:47:59 2012 (r233248) +++ head/sys/amd64/acpica/acpi_wakeup.c Tue Mar 20 20:37:23 2012 (r233249) @@ -223,6 +223,7 @@ acpi_sleep_machdep(struct acpi_softc *sc #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 AcpiSetFirmwareWakingVector(WAKECODE_PADDR(sc)); + rf = intr_disable(); intr_suspend(); - spinlock_enter(); if (savectx(susppcbs[0])) { ctx_fpusave(suspfpusave[0]); @@ -299,8 +300,8 @@ out: #endif mca_resume(); - spinlock_exit(); intr_resume(); + intr_restore(rf); AcpiSetFirmwareWakingVector(0);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203202037.q2KKbNfK037014>