[PATCH v2 0/1] ACPI: button: Report wakeup key only for power button wakeups

From: Baorui . Liu

Date: Wed Aug 19 2026 - 04:59:34 EST


This v2 addresses the review feedback on v1 by documenting the
practical impact and by avoiding KEY_WAKEUP reporting from generic ACPI
sleep resume paths.

Problem reproduced on an AMD Android 15 Xen guest.

Input device mapping:

event0: LNXPWRBN Power Button, KEY_POWER + KEY_WAKEUP
event1: LNXSLPBN Sleep Button, KEY_SLEEP

Runtime trigger mapping:

xl trigger android power -> event0 KEY_POWER
xl trigger android sleep -> event1 KEY_SLEEP

without-fix kernel:

6.6.118-android15-14-maybe-dirty-gc3c82a22502d

echo mem > /sys/power/state
xl trigger android s3resume

/dev/input/event0 reports KEY_WAKEUP DOWN/UP.

with-fix v2 kernel:

6.6.118-android15-14-maybe-dirty-g5b231ece911d

The same non-power-button S3 resume path no longer reports KEY_WAKEUP
from /dev/input/event0. This was verified twice; both event0 logs are
empty.

The dmesg log confirms that the test path is S3 suspend/resume:

PM: suspend entry (deep)
ACPI: PM: Preparing to enter system sleep state S3
ACPI: PM: Waking up from system sleep state S3
Resume cause unknown
PM: suspend exit

A positive-control power-button S3 wake was attempted in the Xen guest:

echo mem > /sys/power/state
xl trigger android power

The guest remained suspended/offline and was recovered with:

xl trigger android s3resume

Therefore, xl trigger android power is not a reliable S3 wake source in
this Xen setup. That run is not used as positive-control power-button
wake evidence; it only confirms runtime input-device mapping.

Changes in v2:
- Add test evidence showing the practical impact.
- Track pending wakeup reporting in the ACPI button driver.
- Report KEY_WAKEUP only if a power-button event/notify is observed
while the ACPI button device is suspended.
- Stop synthesizing Power Button KEY_WAKEUP events from generic ACPI
sleep resume paths.

ACPI: button: Report wakeup key only for power button wakeups

drivers/acpi/button.c | 38 ++++++++++++++++-------------
drivers/acpi/sleep.c | 56 +++----------------------------------------
include/acpi/button.h | 5 ----
3 files changed, 24 insertions(+), 75 deletions(-)

--
2.34.1