From: bugzilla-daemon@kernel.org
To: linux-pm@vger.kernel.org
Subject: [Bug 221909] amd-pstate: Cezanne (Ryzen 7 5800U) data fabric sync flood on DC gated by CPPC max_perf
Date: Fri, 28 Aug 2026 01:39:57 +0000 [thread overview]
Message-ID: <bug-221909-137361-OhXiiiydyb@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-221909-137361@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=221909
--- Comment #5 from David Smith (smithd98@gmail.com) ---
UPDATE 2026-08-27. ONE CLEAN NEW RESULT, AND TWO MECHANISMS EXCLUDED -
INCLUDING THE ONE I WAS ABOUT TO PROPOSE.
This follows comment #4 and does not repeat it. Comment #4's withdrawals all
still stand. What is new here is a single-variable A/B pair that isolates the
frequency cap, and which also falsifies the voltage mechanism I had been
building toward. I am reporting the exclusions because a falsified mechanism
seems more useful than the confounded correlation I would otherwise have
published.
=====================================================
1. THE ONE CLEAN RESULT: A SINGLE-VARIABLE PAIR
=====================================================
Everything in comment #0, and most of comment #4, is confounded in some way.
This is not. It is the only experiment in this investigation in which exactly
one variable moves.
Both arms: same boot, same machine, same battery, same workload (llama.cpp
128-token prefill, ~6.7 GB model, verified resident, CPU only), 27 minutes
apart. Both with amdgpu power_dpm_force_performance_level=high, which pins
FCLK at its top DPM state. CPU VDD plane sampled at 492 Hz.
LETHAL SURVIVOR
scaling_max_freq 4508086 3800000
FCLK 1333 MHz, 100% 1333 MHz, 100%
FCLK transitions 0 in 23864 samples 0 in 66913 samples
VDDNB (SoC rail) 818 mV 84.5% 818 mV 94.0%
CPU VDD plane, peak 1250 mV 1281 mV
CPU VDD plane, % >=1300 mV 0.00% 0.00%
CPU VDD plane, % 1100-1300 25.6% 33.0%
exposure died at 20.9 s survived 318 s, 9/9 steps
outcome 0x08000800 clean
scaling_max_freq is the only thing that differs. Prior cap-efficacy evidence
in this bug was confounded: the compared runs differed in the cap AND in the
power source. This pair is not.
Note how harsh the survivor's configuration is. FCLK pinned at 1333 MHz is the
modifier that kills this machine FASTEST at stock max_perf - 11.6 s in one
arm, 21 s in another. Under the cap it ran 318 s clean.
=====================================================
2. EXCLUDED: CPU-PLANE VOLTAGE IS NOT THE MECHANISM
=====================================================
I had built a voltage story and was about to publish it: on DC at low thread
counts the plane sits at 1.37-1.39 V for ~99% of the time, and I believed the
cap protects by removing that operating point.
The pair above kills it, in the awkward direction:
the run that SURVIVED sat at a HIGHER peak plane voltage (1281 vs 1250 mV)
and spent MORE time in the 1100-1300 mV band (33.0% vs 25.6%), for 15x
longer exposure - and lived.
So CPU-plane voltage is not the discriminator: not as a peak, not as
residency, not as dose. Withdrawn before publication rather than after.
PROVENANCE CORRECTION, which anyone reading my hwmon numbers needs: the
"vddgfx" column in comment #0's gating table is NOT a GPU rail. On this part
it is the shared VDDCR_VDD plane and it tracks the CPU V/F point. Verified
directly: 1 thread -> cores 4574 MHz, plane 1393 mV; 16 threads -> cores
2761 MHz, plane 931 mV, i.e. the plane follows the CPU down while the iGPU
clock also falls. Any reading of that column as GPU behaviour, mine included,
was wrong.
SECOND INSTRUMENTATION CAVEAT: I sampled that plane at 4 Hz for most of this
investigation, while it updates about every 2.7 ms - roughly 1 value in 92.
Any voltage conclusion in comment #0 or comment #4 was drawn from aliased
data. The 492 Hz figures above are the first honest measurements I have of
that rail.
=====================================================
3. EXCLUDED: FABRIC DPM TRANSITIONS ARE NOT NECESSARY
=====================================================
Since the failure is a fabric sync flood, the obvious question is whether the
fabric's own DPM transitions are involved. They are not:
FCLK pinned at 1333 MHz, 100% residency, ZERO transitions across 23864
samples at 492 Hz - and the machine sync-flooded anyway, 21 s in.
I had also observed FCLK thrash (400<->1200, 13 transitions in 888 ms) in an
earlier death captured at 50 Hz, and wondered whether it was causal. In this
death the thrash is not merely downstream - it is entirely absent.
Combined with section 2, and with VDDNB identical at 818 mV on both sides of
the pair, that leaves:
EXCLUDED: fabric DPM transitions, SoC-rail level, CPU-plane voltage
REMAINING: peak core frequency itself, or core current / di-dt at the top
P-states
i.e. the fault lives in the top ~700 MHz, between 3.8 and 4.5 GHz, and is not
reachable through the plane voltage, the fabric clock, or the SoC rail.
I cannot narrow it further from here. There is no writable PPT interface on
this part - amdgpu hwmon exposes only power1_input, read-only - so I cannot
hold frequency at stock and lower the power budget independently.
The band 3.83-4.45 GHz is entirely untested. My coverage is <=3.80 GHz (0
deaths, 52 steps), 4.48 GHz (1/1 dead), and 4.51 GHz stock (dies reliably). A
cap at ~4.1 GHz bisects it. I will run that bisection if it is useful to
anyone.
=====================================================
4. INSTRUMENTATION WARNING: journald UNDER-REPORTS THE MOMENT OF DEATH
=====================================================
Relevant to anyone else triaging these resets from logs. In the death I
captured at 492 Hz:
journald's last write 09:42:52
my sampler's last write 09:43:00.907 (fsync'd every 0.25 s)
journald stops being flushed 8.0 seconds before the part actually resets. So
the last line in your journal is NOT the moment of death, and "the machine was
idle when it died, because the last log line is idle" is an unsafe inference.
=====================================================
5. CORRECTIONS TO COMMENT #4
=====================================================
(a) TIMING CLAIM WITHDRAWN. Comment #4 section 7 says the compute load
collapses to idle "0.3-2.8 s BEFORE" the reset, and treats that as cutting
against a simple di/dt story. Withdraw that. Those gaps were computed
against journald's last write, which section 4 above shows is up to 8.0 s
early, so they are not trustworthy. In the one death measured against a
reliable clock the collapse precedes the reset by under 0.4 s: last busy
sample 09:43:00.510 at 3065 MHz mean, first collapsed sample .758 at
498 MHz, reset at .907 - bounded between 0.15 and 0.40 s by the 250 ms
sampler. I am no longer claiming a long quiet interval before the flood.
(b) UPDATED TALLIES.
At stock max_perf on DC: 14 deaths in 15 valid arms
At smax <= 3800000 on DC: 52 ladder steps + a 35-min mixed soak
+ a 20-min integrity soak, 0 deaths
The 52 now includes the 9 steps from section 1, run with FCLK pinned at
1333 MHz. The ledger since 2026-08-21 now records 23 data-fabric sync
floods plus one hard hang.
(c) The userspace-fault control in comment #4 section 7 becomes: two faults in
~15 valid stock-max_perf arms, zero across 52 capped ladder steps and two
capped soaks.
=====================================================
6. WHERE IT STANDS
=====================================================
Still mitigated but not root-caused, and the mitigation is unchanged in form:
cap scaling_max_freq to 3800000 on DC only.
What is now closed: BIOS (three versions), C6 (both directions), EPP,
governor, min_perf pinning, fabric clock pinning, three kernels, and - new
here - CPU-plane voltage and SoC-rail level as mechanisms.
What remains is peak core frequency itself, or core current / di-dt at the top
P-states in the 3.8-4.5 GHz band, plus the DC power path, which I cannot close
without a replacement pack I am not able to test. I cannot separate those two
from userspace: there is no writable PPT interface here, and every voltage and
power number available to me from hwmon is an SMU self-report, while the one
independent instrument - the battery EC - refreshes about every 9 s against an
event lasting under a second.
ADDITIONAL QUESTIONS
====================
These are in addition to the four in comment #4.
5. Is there any Cezanne rail telemetry that is NOT an SMU self-report? If the
SMU is the suspect and also the only witness, I cannot distinguish "the SMU
commanded a bad V/F point" from "the rail sagged and the SMU did not see
it".
6. Is there a debug interface to set a PPT limit on this part? amdgpu exposes
only power1_input read-only here, so I cannot separate frequency from power
budget - which is exactly the separation section 3 now needs.
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are the assignee for the bug.
prev parent reply other threads:[~2026-08-28 1:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-22 11:35 [Bug 221909] New: amd-pstate: Cezanne (Ryzen 7 5800U) data fabric sync flood on DC gated by CPPC max_perf bugzilla-daemon
2026-08-22 11:35 ` [Bug 221909] " bugzilla-daemon
2026-08-23 16:40 ` bugzilla-daemon
2026-08-23 16:45 ` bugzilla-daemon
2026-08-27 1:29 ` bugzilla-daemon
2026-08-28 1:39 ` bugzilla-daemon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-221909-137361-OhXiiiydyb@https.bugzilla.kernel.org/ \
--to=bugzilla-daemon@kernel.org \
--cc=linux-pm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox