amd-pstate: Cezanne data fabric sync flood on DC gated by CPPC max_perf

David Smith <[email protected]>
Newsgroups org.kernel.vger.linux-pm
Message-ID <CAJVKnz-nj2rk33U9pNMaxzKDOvqZNaQBE5otdCc8Znt8m97anw@mail.gmail.com>
Hi,

I have a reproducible AMD data fabric sync flood (reset code 0x08000800) on
an HP ProBook 445 G8 (Ryzen 7 5800U, Cezanne, family 25 model 80 stepping 0)
that appears to be gated by the CPPC max_perf value in combination with EPP,
and not by any physical operating point. 13 confirmed hard resets.

Bugzilla, with full data and a 770 KB evidence attachment:
https://www.google.com/url?q=https://bugzilla.kernel.org/show_bug.cgi?id%3D221909&source=gmail&ust=1787484988593000&sa=E

x86/amd: Previous system reset reason [0x08000800]: an uncorrected error
caused a data fabric sync flood event

Summary of the controlling experiment. All rows are on battery, same pack,
same charge range, same workload (llama.cpp 128-token prefill, ~6.7GB model,
CPU only, held warm). Peaks are from amdgpu hwmon plus RAPL:

EPP / governor smax_freq max_perf fmax vddgfx tctl steps deaths
balance_performance / powersave 4508086 166 3617 1175mV 63.8C 12 4
balance_performance / powersave 4500000 165 - - - 1 1
balance_performance / powersave 4100000 ~151 4017 - 84.9C 8 0
balance_performance / powersave 3800000 140 3748 1275mV 71.5C 33 0
performance / performance 4508086 166 4374 1462mV 85.8C 8 0
balance_power / powersave (AC) 4508086 166 4117 1431mV 84.0C 8 0

Rows 1 and 5 are the interesting pair: identical scaling_max_freq, identical
power source, identical workload, differing only in EPP and governor. Row 5
runs 757 MHz faster, 287 mV higher and 22 C hotter than row 1 and survives
8/8, while row 1 dies about 14 seconds into a step.

So: pinning perf high is safe, clamping the range low is safe, and lethal is
the wide range with autonomous SMU ramping - balance_performance + powersave
across max_perf 166 on DC. This looks to me like autonomous perf-state
transition handling on DC rather than any operating point the part reaches.
Consistent with that, scaling_max_freq=3800000 prevents it even though the
workload never exceeds ~2.9 GHz uncapped; the cap narrows the range rather
than lowering the ceiling.

Never reproduced on AC. Reproduced on 7.1.8 and 6.18.44-lts, and on BIOS
01.21.00 and 01.22.00. amd-pstate-epp, status active, prefcore enabled.
Microcode 0xa500014, verified loaded.

Ruled out: memtest86+ 7.20 five passes clean; HP preboot diagnostics all
pass; thermal (dies at 63.8C, survives at 85.8C); NVMe HMB (AER is OS-owned
and clean, ASPM disabled by FADT); OOM. Also the battery pack, which is worn
(~430 mOhm, sags to 9.48V under load) and was my leading hypothesis until the
row-1-vs-row-5 control above rejected it - no battery model fails at
3617 MHz / 1175 mV and succeeds at 4374 MHz / 1462 mV on the same charge.

Note this is a single machine. I have not been able to confirm it on another
445 G8 or another 5800U, so I cannot rule out that it is specific to this
unit.

Questions:

1. Is there a known Cezanne erratum covering data fabric sync floods
triggered by autonomous CPPC perf-state transitions on DC?

2. Is the DC vs AC asymmetry expected - does the SMU run a materially
different perf-state transition policy on DC that could expose this?

3. Would a DMI-matched amd_pstate quirk clamping max_perf on DC be
acceptable upstream for affected platforms, or is this strictly an
AGESA/PMFW fix to route through the OEM? I am happy to write and test
the patch if you tell me the shape you would accept - I did not want to
send one cold given amd_pstate has no AC/DC awareness today.

4. Is there any way to get a fabric-side error record on a platform with no
APEI tables (no BERT/HEST/ERST here), to identify which agent flooded?

Current workaround, if useful to anyone hitting this: cap scaling_max_freq
to 3800000 on DC only. 33 ladder steps plus a 35 minute mixed-load soak at
load average 29-34 with zero resets, against 5 deaths in 13 uncapped steps.

Happy to run further tests on this machine - it reproduces in under a minute
and I have it instrumented at 5 ms resolution. I have the full boot ledger of
all 13 resets, per-crash triage, and the 5 ms RAPL/hwmon sample sets for every
row above; the bugzilla attachment has all of it.

Thanks,
Dave Smith
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.