Public bug reported:
Hardware: ASRock X870E Taichi Lite (AMD AM5, FCH SMBus 1022:790b rev 71), DDR5.
Kernel: Ubuntu 24.04 HWE 7.0.0-42-generic. The same code is in 6.8.
Symptom: intermittently (1 of 2 boots), a udev worker probing the DDR5
SPD hub hangs forever in D state:
INFO: task (udev-worker):862 blocked for more than 122 seconds.
schedule
__request_region_locked
__request_region
piix4_sb800_region_request [i2c_piix4]
piix4_access_sb800 [i2c_piix4]
i2c_smbus_read_byte_data
spd5118_i2c_probe [spd5118]
systemd-udev-settle then times out (anything requiring it fails, here
the ZFS pool import), and a later reboot hangs in device_shutdown() on
the stuck device. The sp5100_tco watchdog does not rescue it, because it
is stopped in the reboot notifier before device_shutdown().
Cause: i2c-piix4 and sp5100_tco both take request_mem_region_muxed() on
the same 8 bytes of the FCH PM window (0xFED80300). i2c-piix4 releases
with release_mem_region(), which wakes waiters on muxed_resource_wait.
sp5100_tco's MMIO setup (sp5100_tco_setupdevice_mmio) releases with
release_resource() plus kfree(), which never wakes them; only
__release_region() calls wake_up(&muxed_resource_wait). An SMBus
transaction that arrives while sp5100_tco holds the window sleeps
uninterruptibly forever. Since 6.11 i2c-piix4 registers DDR5 SPD clients
at probe time, so coldplug transactions overlap a sp5100_tco module load
and the race shows at boot.
Kernel stamps from the hung boot: SPD clients created at 4.738 s,
"sp5100-tco: initialized" at 4.912 s. On a good boot sp5100_tco finished
before i2c-piix4 probed.
Suggested fix: in sp5100_tco, release the region with
release_mem_region() on the same address and size it was requested with,
instead of release_resource() + kfree().
Workaround in use: load sp5100_tco before udev coldplug (a unit ordered
Before=systemd-udev-trigger.service). With that, 3 of 3 boots were
clean.
** 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/2173072
Title:
sp5100_tco: release_resource() on the muxed FCH PM region never wakes
i2c-piix4 waiters; SPD probe hangs at boot (AM5, DDR5, 7.0)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2173072/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs