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
This commit is contained in:
Andrew Turner 2025-01-13 05:37:52 +00:00
parent 0863dc1035
commit dbedcc169f

View file

@ -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);
}
}