Module Name: src Committed By: jruoho Date: Sun Jun 6 18:56:10 UTC 2010
Modified Files: src/sys/dev/acpi: acpi_ec.c Log Message: We can no longer explicitly clear a GPE by calling AcpiClearGpe() in the interrupt handler. However, all edge-triggered GPEs should already be cleared before our GPE handler has a chance to run. The reason can be found from the changes in the locking primitives of ACPICA. All GPE operations now use a spin mutex on AcpiGbl_GpeLock, acquired via AcpiOsAcquireLock(). This same lock is now acquired unconditionally in the AcpiClearGpe() function. This causes a deadlock of the following form: ... AcpiEvGpeDetect() : acquire AcpiGbl_GpeLock; -> AcpiEvGpeDispatch(); -> acpiec_gpe_handler(); -> AcpiClearGpe() : acquire AcpiGbl_GpeLock; -> panic. To generate a diff of this commit: cvs rdiff -u -r1.66 -r1.67 src/sys/dev/acpi/acpi_ec.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.