Message ID | 878r1tpd6u.fsf_-_@gmail.com (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | [v2] platform/x86/intel/hid: Don't wake on 5-button releases | expand |
Hi, On 4/4/24 1:41 PM, David McFarland wrote: > If, for example, the power button is configured to suspend, holding it > and releasing it after the machine has suspended, will wake the machine. > > Also on some machines, power button release events are sent during > hibernation, even if the button wasn't used to hibernate the machine. > This causes hibernation to be aborted. > > Fixes: 0c4cae1bc00d ("PM: hibernate: Avoid missing wakeup events during hibernation") > Signed-off-by: David McFarland <corngood@gmail.com> > Tested-by: Enrik Berkhan <Enrik.Berkhan@inka.de> > Reviewed-by: Hans de Goede <hdegoede@redhat.com> Thank you, this version looks good to me. Ilpo, can you pick this up as a bug-fix for the 6.9 cycle please? Regards, Hans > --- > v2: Added tags and fixed whitespace, as requested by Hans. > > drivers/platform/x86/intel/hid.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/x86/intel/hid.c b/drivers/platform/x86/intel/hid.c > index 7457ca2b27a6..9ffbdc988fe5 100644 > --- a/drivers/platform/x86/intel/hid.c > +++ b/drivers/platform/x86/intel/hid.c > @@ -504,6 +504,7 @@ static void notify_handler(acpi_handle handle, u32 event, void *context) > struct platform_device *device = context; > struct intel_hid_priv *priv = dev_get_drvdata(&device->dev); > unsigned long long ev_index; > + struct key_entry *ke; > int err; > > /* > @@ -545,11 +546,15 @@ static void notify_handler(acpi_handle handle, u32 event, void *context) > if (event == 0xc0 || !priv->array) > return; > > - if (!sparse_keymap_entry_from_scancode(priv->array, event)) { > + ke = sparse_keymap_entry_from_scancode(priv->array, event); > + if (!ke) { > dev_info(&device->dev, "unknown event 0x%x\n", event); > return; > } > > + if (ke->type == KE_IGNORE) > + return; > + > wakeup: > pm_wakeup_hard_event(&device->dev); >
On Thu, 04 Apr 2024 08:41:45 -0300, David McFarland wrote: > If, for example, the power button is configured to suspend, holding it > and releasing it after the machine has suspended, will wake the machine. > > Also on some machines, power button release events are sent during > hibernation, even if the button wasn't used to hibernate the machine. > This causes hibernation to be aborted. > > [...] Thank you for your contribution, it has been applied to my local review-ilpo branch. Note it will show up in the public platform-drivers-x86/review-ilpo branch only once I've pushed my local branch there, which might take a while. The list of commits applied: [1/1] platform/x86/intel/hid: Don't wake on 5-button releases commit: 5864e479ca4344f3a5df8074524da24c960f440b -- i.
diff --git a/drivers/platform/x86/intel/hid.c b/drivers/platform/x86/intel/hid.c index 7457ca2b27a6..9ffbdc988fe5 100644 --- a/drivers/platform/x86/intel/hid.c +++ b/drivers/platform/x86/intel/hid.c @@ -504,6 +504,7 @@ static void notify_handler(acpi_handle handle, u32 event, void *context) struct platform_device *device = context; struct intel_hid_priv *priv = dev_get_drvdata(&device->dev); unsigned long long ev_index; + struct key_entry *ke; int err; /* @@ -545,11 +546,15 @@ static void notify_handler(acpi_handle handle, u32 event, void *context) if (event == 0xc0 || !priv->array) return; - if (!sparse_keymap_entry_from_scancode(priv->array, event)) { + ke = sparse_keymap_entry_from_scancode(priv->array, event); + if (!ke) { dev_info(&device->dev, "unknown event 0x%x\n", event); return; } + if (ke->type == KE_IGNORE) + return; + wakeup: pm_wakeup_hard_event(&device->dev);