From dbedcc169f70c924a680e02bc86d7419682a70ac Mon Sep 17 00:00:00 2001 From: Andrew Turner Date: Mon, 13 Jan 2025 05:37:52 +0000 Subject: [PATCH] acpi: Mark the GED ithread as sleepable We need to complete calling the ACPI method before marking the interrupt as complete. If two threads are inspecting the ACPI tables at the same time they may both try to lock the ACPI mutex causing one to sleep. If this is the ithread it will panic the kernel as this is not allowed. Update the ged ithread to allow sleeping as it is expected this lock will be uncommon enough any sleep will be short. PR: 283103 Reviewed by: markj (earlier version) Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48284 --- sys/dev/acpica/acpi_ged.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/dev/acpica/acpi_ged.c b/sys/dev/acpica/acpi_ged.c index 23e125f277c..caf911758ed 100644 --- a/sys/dev/acpica/acpi_ged.c +++ b/sys/dev/acpica/acpi_ged.c @@ -244,8 +244,9 @@ acpi_ged_attach(device_t dev) } if (bus_setup_intr(dev, sc->evts[i].r, - INTR_TYPE_MISC | INTR_MPSAFE, NULL, acpi_ged_intr, - &sc->evts[i], &sc->evts[i].cookie) != 0) { + INTR_TYPE_MISC | INTR_MPSAFE | INTR_SLEEPABLE | + INTR_EXCL, NULL, acpi_ged_intr, &sc->evts[i], + &sc->evts[i].cookie) != 0) { device_printf(dev, "Failed to setup intr %d\n", i); } }