Page MenuHomeFreeBSD

D42158.id.diff
No OneTemporary

D42158.id.diff

diff --git a/sys/dev/acpica/acpi_ged.c b/sys/dev/acpica/acpi_ged.c
--- a/sys/dev/acpica/acpi_ged.c
+++ b/sys/dev/acpica/acpi_ged.c
@@ -81,6 +81,11 @@
DRIVER_MODULE(acpi_ged, acpi, acpi_ged_driver, 0, 0);
MODULE_DEPEND(acpi_ged, acpi, 1, 1, 1);
+static int acpi_ged_defer;
+SYSCTL_INT(_debug_acpi, OID_AUTO, ged_defer, CTLFLAG_RWTUN,
+ &acpi_ged_defer, 0,
+ "Handle ACPI GED via a task, rather than in the ISR");
+
static void
acpi_ged_evt(void *arg)
{
@@ -92,7 +97,12 @@
static void
acpi_ged_intr(void *arg)
{
- AcpiOsExecute(OSL_GPE_HANDLER, acpi_ged_evt, arg);
+ struct acpi_ged_event *evt = arg;
+
+ if (acpi_ged_defer)
+ AcpiOsExecute(OSL_GPE_HANDLER, acpi_ged_evt, arg);
+ else
+ AcpiEvaluateObject(evt->ah, NULL, &evt->args, NULL);
}
static int
acpi_ged_probe(device_t dev)

File Metadata

Mime Type
text/plain
Expires
Thu, May 21, 9:18 AM (3 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33383916
Default Alt Text
D42158.id.diff (802 B)

Event Timeline