Public bug reported:

## Title

Lenovo ThinkCentre M82 powers on about 5 seconds after S5 poweroff
unless firmware DSDT `_PTS(5)` is bypassed

## Description

On a Lenovo ThinkCentre M82 (machine type 2929AB9), a normal Linux
poweroff completes and the machine visibly turns off, but it powers
itself on again about five seconds later. The problem is reproducible
and also occurs with a forced systemd poweroff path.

Powering the machine off with the front-panel button while inside BIOS
setup leaves it off. This isolates the problem to the Linux ACPI S5 path
rather than general hardware, power-loss recovery, or an external wake
event.

The machine is already running Lenovo's latest available BIOS, 9SKT9CAUS
dated 2018-12-11.

An initrd DSDT override that returns immediately from the top-level
`_PTS` method only when `Arg0 == 0x05` fixes the problem. Normal Linux
GUI poweroff then leaves the machine off, and Wake-on-LAN still works.
The kernel confirms that the override is loaded.

## Expected result

After selecting Power Off, the machine should enter S5 and remain
powered off until the power button is pressed or a valid Wake-on-LAN
magic packet is received.

## Actual result

The machine powers off, then powers itself on again after approximately
five seconds without a magic packet or other configured wake event.

## Steps to reproduce

1. Boot Linux normally on a Lenovo ThinkCentre M82 type 2929AB9 without the 
supplied DSDT override.
2. Select Power Off in the desktop, or run `systemctl poweroff`.
3. Observe that shutdown completes and power is removed.
4. Wait approximately five seconds.
5. The machine powers on again by itself.

## System information

- System: Lenovo ThinkCentre M82, type 2929AB9
- Board: LENOVO MAHOBAY
- BIOS: LENOVO 9SKT9CAUS, 2018-12-11 (latest available Lenovo BIOS)
- CPU: Intel Core i5-3470
- Chipset: Intel Q75
- Network adapter: Intel 82579LM, PCI ID 8086:1502
- Distribution: Linux Mint 22.3, Ubuntu 24.04 (noble) base
- Reproduced on Ubuntu kernel package 6.17.0-40-generic (`6.17.13`, package 
`6.17.0-40.40~24.04.1`)
- It was also reproduced with an older installed kernel during diagnosis.

## Isolation already performed

- Updated the BIOS from 9SKT70AUS (2013) to 9SKT9CAUS (2018-12-11): no change.
- BIOS `After Power Loss` is set to `Power Off`.
- RTC, PCI/modem/serial automatic wake and Intel AMT/manageability were 
disabled: no change.
- Disabling Wake-on-LAN and disconnecting the Ethernet cable did not prevent 
the automatic power-on.
- ACPI wake sources including GLAN, EHC, XHC and PWRB were tested/disabled: no 
change.
- Broad service groups, NetworkManager and Cloudflare WARP were 
stopped/disabled for controlled tests: no change.
- A forced poweroff path also reproduced the problem.
- Powering off from BIOS setup using the front-panel button leaves the machine 
off.

## ACPI finding and working workaround

The original firmware table contains:

```asl
Method (_PTS, 1, NotSerialized)
{
    P80D = Zero
    P8XH (Zero, Arg0)
    PTS (Arg0)
    ...
}
```

The effective S5 workaround is:

```asl
Method (_PTS, 1, NotSerialized)
{
    If ((Arg0 == 0x05))
    {
        Return (Zero)
    }

    P80D = Zero
    P8XH (Zero, Arg0)
    PTS (Arg0)
    ...
}
```

A previous experiment removed only the nested `RPOP(Arg0)` call from the
firmware `PTS` method. That did **not** fix S5. Bypassing the complete
top-level firmware `_PTS(5)` path did fix it. The attached working
override still contains the earlier `RPOP` experiment for non-S5 states;
this is not required for the effective S5 bypass and should not be
treated as the proposed upstream change.

The DSDT OEM revision was increased from `0x1620` to `0x1622` so the
initrd override is accepted. Kernel evidence after boot:

```text
ACPI: DSDT ACPI table found in initrd [kernel/firmware/acpi/DSDT.aml][0x12504]
ACPI: Table Upgrade: override [DSDT-LENOVO-TC-9S   ]
ACPI: DSDT ... 012504 (v02 LENOVO TC-9S 00001622 INTL 20230628)
```

SHA-256:

```text
d563d2b026580bedaf49807790448ce7510cf118e3618b6b0aa99669e48ef8e8  
DSDT-original.aml
bee0eba47e0bcdfc66ee826ef008387812306a48c81fd01564fa96a13ca084c4  
DSDT-working-override.aml
```

With the override active, normal GUI poweroff remains off and Wake-on-
LAN still works. This appears suitable for investigation as a DMI-
specific ACPI S5 quirk for this firmware/platform, if bypassing
`_PTS(5)` is considered safe by the ACPI maintainers.

## Attachments

- `DSDT-original.aml`: unmodified firmware DSDT
- `DSDT-original.dsl`: disassembled original DSDT
- `DSDT-working-override.aml`: tested working override
- `DSDT-working-override.dsl`: disassembled working source
- `acpi-s5-effective-change.patch`: concise effective S5 change
- `hardware-summary.txt`: sanitized hardware and kernel details

## Testing limitation

The issue has not yet been retested without the override on the current
newest Ubuntu kernel offered by the repositories. The installed 6.17
kernel has since been superseded in the repository, which prevents
Apport from accepting an automatic report for that package version. A
current-kernel retest can be added as requested by the Ubuntu kernel
team.

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2161196

Title:
  Lenovo ThinkCentre M82 powers on about 5 seconds after S5 poweroff
  unless   firmware DSDT _PTS(5) is bypassed

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2161196/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to