Repository navigation
Conversation
The xe PMU takes GT forcewake when a gt-actual-frequency event is created and only drops it when the event is destroyed (xe_pmu_event_init / xe_pmu_event_destroy). nvtop keeps that event open for its whole run, so the GT never enters RC6 while nvtop is running, and the clock stays wherever it was when nvtop started. Measured on two Arc Pro B70 cards at idle (hwmon card energy): 44-46 W per card with no nvtop and RC6 at 99-100%. With nvtop running: RC6 at 0% and 4-36 W extra per card, depending on the clock the GT was held at (400-2700 MHz). On xe, skip the perf event and read tile0/gt0/freq0/act_freq instead. It reports the actual frequency, 0 while the GT is in RC6, without holding forcewake. With this change, idle power and RC6 residency with nvtop running match having no nvtop at all. i915 keeps using the perf event. Signed-off-by: Bram Stolk <b.stolk@gmail.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Steve-Tech
approved these changes
Sep 30, 2026
Steve-Tech
left a comment
Contributor
There was a problem hiding this comment.
Thanks for finding and working on this!
I had previously (wrongly) thought that a reading of 0 was invalid, but if sysfs works perfectly, then I'm thinking of maybe reverting my two perf commits.
Also, out of curiosity, do you know if i915 is unaffected? (I can also test i915 eventually, if you're unable to)
Contributor
Author
So, nvtop on my laptop with TigerLake-LP GT2 (driver i915) shows: POW N/A in nvtop. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The xe PMU takes GT forcewake when a gt-actual-frequency event is created and only drops it when the event is destroyed (xe_pmu_event_init / xe_pmu_event_destroy). nvtop keeps that event open for its whole run, so the GT never enters RC6 while nvtop is running, and the clock stays wherever it was when nvtop started.
Measured on two Arc Pro B70 cards at idle (hwmon card energy): 44-46 W per card with no nvtop and RC6 at 99-100%. With nvtop running: RC6 at 0% and 4-36 W extra per card, depending on the clock the GT was held at (400-2700 MHz).
On xe, skip the perf event and read tile0/gt0/freq0/act_freq instead. It reports the actual frequency, 0 while the GT is in RC6, without holding forcewake. With this change, idle power and RC6 residency with nvtop running match having no nvtop at all. i915 keeps using the perf event.