summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev
diff options
context:
space:
mode:
authornjl <njl@FreeBSD.org>2008-01-12 22:13:12 +0000
committernjl <njl@FreeBSD.org>2008-01-12 22:13:12 +0000
commit5c93ec4f5c145977a979a171fbeec496adea1d4c (patch)
tree5f94fc13c19f2f5b0b9732fd7dde2ad89277fb37 /sys/contrib/dev
parent74b2511ef1200c90d852be6ec896e0196ae28f8c (diff)
parentcec3f46f5f61173a687aa7e171b0ac680707a164 (diff)
downloadFreeBSD-src-5c93ec4f5c145977a979a171fbeec496adea1d4c.zip
FreeBSD-src-5c93ec4f5c145977a979a171fbeec496adea1d4c.tar.gz
This commit was generated by cvs2svn to compensate for changes in r175256,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'sys/contrib/dev')
-rw-r--r--sys/contrib/dev/acpica/evgpe.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/sys/contrib/dev/acpica/evgpe.c b/sys/contrib/dev/acpica/evgpe.c
index e470eae..d18a1d7 100644
--- a/sys/contrib/dev/acpica/evgpe.c
+++ b/sys/contrib/dev/acpica/evgpe.c
@@ -123,6 +123,10 @@
/* Local prototypes */
+static void
+AcpiEvAsynchEnableGpe (
+ void *Context);
+
static void ACPI_SYSTEM_XFACE
AcpiEvAsynchExecuteGpeMethod (
void *Context);
@@ -684,14 +688,26 @@ AcpiEvAsynchExecuteGpeMethod (
}
}
- if ((LocalGpeEventInfo.Flags & ACPI_GPE_XRUPT_TYPE_MASK) ==
+ /* Defer enabling of GPE until all notify handlers are done */
+ AcpiOsExecute(OSL_NOTIFY_HANDLER, AcpiEvAsynchEnableGpe, GpeEventInfo);
+ return_VOID;
+}
+
+static void
+AcpiEvAsynchEnableGpe (
+ void *Context)
+{
+ ACPI_GPE_EVENT_INFO *GpeEventInfo = (void *) Context;
+ ACPI_STATUS Status;
+
+ if ((GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK) ==
ACPI_GPE_LEVEL_TRIGGERED)
{
/*
* GPE is level-triggered, we clear the GPE status bit after
* handling the event.
*/
- Status = AcpiHwClearGpe (&LocalGpeEventInfo);
+ Status = AcpiHwClearGpe (GpeEventInfo);
if (ACPI_FAILURE (Status))
{
return_VOID;
@@ -700,7 +716,7 @@ AcpiEvAsynchExecuteGpeMethod (
/* Enable this GPE */
- (void) AcpiHwWriteGpeEnableReg (&LocalGpeEventInfo);
+ (void) AcpiHwWriteGpeEnableReg (GpeEventInfo);
return_VOID;
}
OpenPOWER on IntegriCloud