summaryrefslogtreecommitdiff
path: root/source/include/acevents.h
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2019-06-20 16:20:46 -0700
committerErik Schmauss <erik.schmauss@intel.com>2019-06-20 16:20:46 -0700
commit7ef6f75cc2e20b9dd25ef2fe88717d8a1e0e67ad (patch)
tree753608c5002fb44d404c63c8f51814e9858227a7 /source/include/acevents.h
parentc7ef9f3526765bed8930825dda1eed1a274b9668 (diff)
downloadacpica-7ef6f75cc2e20b9dd25ef2fe88717d8a1e0e67ad.tar.gz
ACPICA: Clear status of GPEs on first direct enable
ACPI GPEs (other than the EC one) can be enabled in two situations. First, the GPEs with existing _Lxx and _Exx methods are enabled implicitly by ACPICA during system initialization. Second, the GPEs without these methods (like GPEs listed by _PRW objects for wakeup devices) need to be enabled directly by the code that is going to use them (e.g. ACPI power management or device drivers). In the former case, if the status of a given GPE is set to start with, its handler method (either _Lxx or _Exx) needs to be invoked to take care of the events (possibly) signaled before the GPE was enabled. In the latter case, however, the first caller of acpi_enable_gpe() for a given GPE should not be expected to care about any events that might be signaled through it earlier. In that case, it is better to clear the status of the GPE before enabling it, to prevent stale events from triggering unwanted actions (like spurious system resume, for example). For this reason, modify acpi_ev_add_gpe_reference() to take an additional boolean argument indicating whether or not the GPE status needs to be cleared when its reference counter changes from zero to one and make acpi_enable_gpe() pass TRUE to it through that new argument. Fixes: 18996f2db918 ("ACPICA: Events: Stop unconditionally clearing ACPI IRQs during suspend/resume") Reported-by: Furquan Shaikh <furquan@google.com> Tested-by: Furquan Shaikh <furquan@google.com> Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Diffstat (limited to 'source/include/acevents.h')
-rw-r--r--source/include/acevents.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/source/include/acevents.h b/source/include/acevents.h
index f10923421..c2eb7324b 100644
--- a/source/include/acevents.h
+++ b/source/include/acevents.h
@@ -245,7 +245,8 @@ AcpiEvMaskGpe (
ACPI_STATUS
AcpiEvAddGpeReference (
- ACPI_GPE_EVENT_INFO *GpeEventInfo);
+ ACPI_GPE_EVENT_INFO *GpeEventInfo,
+ BOOLEAN ClearOnEnable);
ACPI_STATUS
AcpiEvRemoveGpeReference (