Linux ACPI
 help / color / mirror / Atom feed
* [REGRESSION] 6.18.57: resume from s2idle triggers poweroff and hangs when tiny_power_button is built as a module
@ 2026-10-21  8:35 Mikkel Sejdelin
  2026-10-21 13:53 ` Thorsten Leemhuis
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Mikkel Sejdelin @ 2026-10-21  8:35 UTC (permalink / raw)
  To: stable@vger.kernel.org
  Cc: regressions@lists.linux.dev, linux-acpi@vger.kernel.org,
	rafael@kernel.org, sashal@kernel.org

Resending as plain text; the previous copy was rejected by the lists for containing HTML.



Hi,

Since 6.18.57, my laptop never comes back from suspend-to-idle: on resume
init receives SIGRTMIN+4 and starts a poweroff, the display stays off, and
the machine hangs until it is forced off. 6.18.56 works fine.

Hardware: Lenovo IdeaPad Pro 5 16AKP10 (83JN), BIOS R1CN59WW, AMD, s2idle only
Distro:   NixOS 26.05 (distro kernel, CONFIG_ACPI_BUTTON=m,
          CONFIG_ACPI_TINY_POWER_BUTTON=m, CONFIG_ACPI_TINY_POWER_BUTTON_SIGNAL=38)

On every resume, the journal on 6.18.57 shows:

  kernel: PM: suspend entry (s2idle)
  systemd[1]: Received SIGRTMIN+4.
  systemd-sleep: System returned from sleep operation 'suspend'.
  kernel: PM: suspend exit
  systemd-sleep: Failed to thaw unit 'user.slice': Unit has a pending job

followed by:

  systemd[1]: Activating special unit System Power Off...
  systemd[1]: Cannot stop frozen unit Session 3 of User mikke.
  ...
  systemd-shutdown[1]: Sending SIGTERM to remaining processes...

after which the journal stops and the machine hangs with the display off
(SIGRTMIN+4 = poweroff.target in systemd). A bpftrace probe on signal
delivery to PID 1 shows the signal comes from a kernel worker, i.e. the
ACPI notify path, not from userspace:

  sig=38 code=128 from pid=296 comm=kworker/6:2

Cause:

6.18.57 contains 38c79dacc806 ("ACPI: button: Convert the driver to a
platform one", upstream 52d864019636), backported as a Stable-dep-of
fe80251152fe ("ACPI: button: Fix ACPI GPE handler leak during removal").
The matching upstream conversion of tiny-power-button, f4203ec64e11
("ACPI: tiny-power-button: Convert the driver to a platform one"), was
not backported.

Before the backport, both drivers were acpi_drivers matching PNP0C0C,
so only one could bind; button wins on this machine and tiny-power-button
stays unbound. After it, button binds to the platform device and
tiny-power-button binds to the ACPI companion of the same device, so both
install notify handlers on PWRB. tiny-power-button calls
kill_cad_pid(SIGRTMIN+4) for any notify, including the wake notification
on s2idle resume, which button itself filters out.

Verification on the same machine:

  6.18.56 (no blacklist):
    /sys/bus/acpi/drivers/button/            -> PNP0C0C:00, PNP0C0D:00
    /sys/bus/acpi/drivers/tiny-power-button/ -> (no devices)
    3/3 suspend/resume cycles OK (systemctl suspend; woken by power
    button and by keyboard). No SIGRTMIN+4.

  6.18.57 (no blacklist):
    button bound to platform device PNP0C0C:00, tiny-power-button
    loaded; 2/2 resumes ended in SIGRTMIN+4, an attempted poweroff
    and a hang.

  6.18.57 with tiny_power_button blacklisted:
    suspend/resume works.

Suggested fix: backport f4203ec64e11 together with 52d864019636, or
revert 38c79dacc806 (and its dependents) from 6.18.y. Note that the same
backport also appears to lose fixed-event power buttons (LNXPWRBN)
without ab06eb920401 ("ACPI: scan: Register platform devices for fixed
event buttons"), reported at
https://github.com/siderolabs/talos/issues/14657

#regzbot introduced: 38c79dacc806

Thanks,Mikkel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-10-28 19:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-21  8:35 [REGRESSION] 6.18.57: resume from s2idle triggers poweroff and hangs when tiny_power_button is built as a module Mikkel Sejdelin
2026-10-21 13:53 ` Thorsten Leemhuis
2026-10-21 16:44   ` Sv: " Mikkel Sejdelin
2026-10-22  2:03 ` Sasha Levin
2026-10-24 14:26 ` Sasha Levin
2026-10-28  9:15   ` Mikkel Sejdelin
2026-10-28  9:30     ` Thorsten Leemhuis
2026-10-28 19:00     ` Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox