git: dbedcc169f70 - main - acpi: Mark the GED ithread as sleepable

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Fri, 24 Jan 2025 15:08:26 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=dbedcc169f70c924a680e02bc86d7419682a70ac

commit dbedcc169f70c924a680e02bc86d7419682a70ac
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2025-01-13 05:37:52 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2025-01-24 15:08:09 +0000

    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 23e125f277c5..caf911758ed2 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);
 		}
 	}