summaryrefslogtreecommitdiff
path: root/drivers/acpi/sleep.c
diff options
context:
space:
mode:
authorCompostella, Jeremy <jeremy.compostella@intel.com>2023-06-06 09:13:23 -0700
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2023-06-12 19:20:45 +0200
commit896e97bf99ecf0ecb6cc420bc2c9eb268d3edc05 (patch)
treeded77d9cc602dd85d14c000991909db6a96ccc24 /drivers/acpi/sleep.c
parent858fd168a95c5b9669aac8db6c14a9aeab446375 (diff)
ACPI: EC: Clear GPE on interrupt handling only
On multiple devices I work on, we noticed that /sys/firmware/acpi/interrupts/sci_not is non-zero and keeps increasing over time. It turns out that there is a race condition between servicing a GPE interrupt and handling task driven transactions. If a GPE interrupt is received at the same time ec_poll() is running, the advance_transaction() clears the GPE flag and the interrupt is not serviced as acpi_ev_detect_gpe() relies on the GPE flag to call the handler. As a result, `sci_not' is increased. To address this, move the GPE status check and clearing from advance_transaction() directly into acpi_ec_handle_interrupt(), so the EC GPE only gets cleared in the interrupt handling path. Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> [ rjw: Changelog edits ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/sleep.c')
0 files changed, 0 insertions, 0 deletions