Skip to content

MacPro7,1 powers back on after ACPI S5 when Titan Ridge PCI wake is enabled #748

Description

@xxlukexx

Summary

On a 2019 Mac Pro (MacPro7,1), Linux completes an orderly ACPI S5 shutdown and logs reboot: Power down, but the machine then powers itself back on within a few seconds. Controlled testing isolated this to the PCI wake settings on the two Thunderbolt/Titan Ridge chains.

Disabling power/wakeup on all seven relevant PCI functions makes shutdown remain off. Disabling Ethernet WOL, or disabling only the Thunderbolt parent, does not. d3cold_allowed can remain enabled.

The attached Thunderbolt DAS continues to work normally with the workaround; only wake capability is disabled.

System

  • Apple Mac Pro 2019, MacPro7,1
  • Ubuntu 24.04.4 LTS with Kubuntu/KDE
  • Kernel: 7.1.5-1-t2-noble
  • AMD Radeon Pro 580X used for display; amdgpu.dpm=0 is required on this machine
  • NVIDIA RTX PRO 6000 installed headlessly
  • Noontec D2 Thunderbolt 3 dual-SATA enclosure, exposing an ASMedia SATA/AHCI controller
  • Thunderbolt device enrolled in boltd with automatic authorization

Behaviour

A normal systemctl poweroff performs complete userspace, filesystem, md RAID and disk teardown. EFI pstore preserves the end of the shutdown, including:

pcieport 0000:12:00.0: AER: Uncorrectable (Non-Fatal) error received: 0000:16:02.0
...
xhci_hcd 0000:18:00.0: AER: can't recover
...
device recovery failed
...
ACPI: PM: Preparing to enter system sleep state S5
...
reboot: Power down

The 16:02.0 event reports Unsupported Request and ACS violation status. The downstream Titan Ridge USB controller at 18:00.0 cannot recover, and the Thunderbolt device disconnects during the shutdown sequence.

External smart-plug measurements confirm a genuine power transition rather than a warm reboot: approximately 133 W -> 56 W -> 4 W, followed about two seconds later by 6/8/10 W and then the normal POST ramp to over 200 W. A successful shutdown settles at 0-1 W.

macOS shuts down and remains off with the same Thunderbolt hardware attached.

Relevant PCI functions

0000:12:00.0  Intel [8086:203f] MCP0 parent
0000:16:02.0  Intel Titan Ridge bridge [8086:15ea]
0000:17:00.0  Intel Titan Ridge NHI    [8086:15eb]
0000:18:00.0  Intel Titan Ridge USB    [8086:15ec]
0000:8a:02.0  Intel Titan Ridge bridge [8086:15ea]
0000:8b:00.0  Intel Titan Ridge NHI    [8086:15eb]
0000:8c:00.0  Intel Titan Ridge USB    [8086:15ec]

Controlled tests

Test Ethernet WOL PCI wake disabled D3cold allowed Result
1 Both Aquantia interfaces disabled None Yes Powered back on
2 Disabled Only 12:00.0 parent Yes Powered back on
3 Disabled All seven functions above Yes Stayed off
4 Enabled (Wake-on: g) All seven functions above Yes Stayed off

The important incremental change is therefore disabling wake on the Thunderbolt child functions. Ethernet WOL is not required for the unwanted restart, and disabling D3cold is not required for the workaround.

Workaround

The live test was equivalent to:

for dev in 0000:12:00.0 0000:16:02.0 0000:17:00.0 0000:18:00.0 \
           0000:8a:02.0 0000:8b:00.0 0000:8c:00.0; do
    echo disabled | sudo tee "/sys/bus/pci/devices/$dev/power/wakeup"
done
sudo systemctl poweroff

It is now made persistent with exact-address ACTION=="add|bind" udev rules in /etc/udev/rules.d/80-bertha-thunderbolt-no-wake.rules. The rules change only power/wakeup; they do not alter d3cold_allowed, Thunderbolt authorization, Ethernet WOL, or normal enclosure operation.

Possible interpretation

The evidence suggests that the shutdown-time AER/recovery failure on the Titan Ridge USB branch generates or leaves a wake event asserted while that branch is armed. The system does reach S5, but firmware/SMC then responds to the wake event by starting a new boot.

Would a MacPro7,1 DMI/platform quirk disabling wake on these Thunderbolt functions be appropriate, or should shutdown handling quiesce/clear the Titan Ridge branch differently?

Possibly separate T2/BCE incident

After several rapid shutdown/boot experiments, three early Linux boots looped around 35-41 seconds into boot with console messages including:

t2bce_vhci: Possible desync, cmd cancel timed out
usb 7-1: hub failed to enable device, error -5
usb usb7-port1: cannot disable device (err = -110)
usb usb7-port1: cannot reset device (err = -110)

A one-time boot using nomodeset systemd.unit=multi-user.target still looped, so this was not avoided by bypassing the graphical AMD path. Halting from GRUB and removing mains power for 60 seconds restored a normal boot. The failed-boot journals ended before capturing the console messages, and I do not know whether this incident was caused by the shutdown testing or Thunderbolt workaround.

A similar BCE desynchronisation signature appears in t2linux/T2-Ubuntu#195, although that report has a different suspend/AMD trigger. I am including this as a clearly separate observation in case the persistent controller state is useful context; it should not be treated as the diagnosed cause of the S5 restart.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions