On Tue, 2021-11-30 at 07:01 +0100, Thomas Weißschuh wrote: > 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@xxxxxxxxxxxxxx> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx> > --- > 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