Re: [PATCH] HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested

From
Benjamin Tissoires <hidden>
Date
2021-12-03 08:45:57
Also in
lkml
Reply to
Srinivas Pandruvada, 2021-12-01
On Wed, Dec 1, 2021 at 2:35 PM Srinivas Pandruvada
[off-list ref] wrote:
On Tue, 2021-11-30 at 07:01 +0100, Thomas Weißschuh wrote:
quoted
Fixes spurious wakeups from s0ix on Lenovo ThinkPad X1 Cargon Gen 9
on
lid close.

These wakeups are generated by interrupts from the ISH on changes to
the
lid status.

By disabling the wake IRQ from the ISH we inhibit these spurious
wakeups while keeping the resume from LID open through the ACPI
interrupt.

Reports on the Lenovo forums indicate that Lenovo ThinkPad X1 Yoga
Gen6
is also affected.

Fixes: ae02e5d40d5f ("HID: intel-ish-hid: ipc layer")
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214855
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Applied to for-5.16/upstream-fixes in hid.git

thanks

Cheers,
Benjamin
quoted
---
 drivers/hid/intel-ish-hid/ipc/pci-ish.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/hid/intel-ish-hid/ipc/pci-ish.c
b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
index 1c5039081db2..8e9d9450cb83 100644
--- a/drivers/hid/intel-ish-hid/ipc/pci-ish.c
+++ b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
@@ -266,7 +266,8 @@ static void __maybe_unused
ish_resume_handler(struct work_struct *work)

        if (ish_should_leave_d0i3(pdev) && !dev->suspend_flag
                        && IPC_IS_ISH_ILUP(fwsts)) {
-               disable_irq_wake(pdev->irq);
+               if (device_may_wakeup(&pdev->dev))
+                       disable_irq_wake(pdev->irq);

                ish_set_host_ready(dev);
@@ -337,7 +338,8 @@ static int __maybe_unused ish_suspend(struct device
*device)
                         */
                        pci_save_state(pdev);

-                       enable_irq_wake(pdev->irq);
+                       if (device_may_wakeup(&pdev->dev))
+                               enable_irq_wake(pdev->irq);
                }
        } else {
                /*

base-commit: d58071a8a76d779eedab38033ae4c821c30295a5
  
Thread (3 messages) 3 messages, 3 authors, last reply 2021-12-03
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help