Skip to content

Commit 91a91d3

Browse files
zhang-ruilenb
authored andcommitted
tools/power/turbostat: Add support for Xe sysfs knobs
Xe graphics driver uses different graphics sysfs knobs including /sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms /sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq /sys/class/drm/card0/device/tile0/gt0/freq0/act_freq /sys/class/drm/card0/device/tile0/gt1/gtidle/idle_residency_ms /sys/class/drm/card0/device/tile0/gt1/freq0/cur_freq /sys/class/drm/card0/device/tile0/gt1/freq0/act_freq Plus that, /sys/class/drm/card0/device/tile0/gt<n>/gtidle/name returns either gt<n>-rc or gt<n>-mc. rc is for GFX and mc is SA Media. Enhance turbostat to prefer the Xe sysfs knobs when they are available. Export gt<n>-rc via BIC_GFX_rc6/BIC_GFXMHz/BIC_GFXACTMHz. Export gt<n>-mc via BIC_SMA_mc6/BIC_SMAMHz/BIC_SMAACTMHz. Signed-off-by: Zhang Rui <[email protected]>
1 parent dc02dc9 commit 91a91d3

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

tools/power/x86/turbostat/turbostat.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5380,6 +5380,57 @@ static void probe_intel_uncore_frequency(void)
53805380

53815381
static void probe_graphics(void)
53825382
{
5383+
/* Xe graphics sysfs knobs */
5384+
if (!access("/sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms", R_OK)) {
5385+
FILE *fp;
5386+
char buf[8];
5387+
bool gt0_is_gt;
5388+
int idx;
5389+
5390+
fp = fopen("/sys/class/drm/card0/device/tile0/gt0/gtidle/name", "r");
5391+
if (!fp)
5392+
goto next;
5393+
5394+
if (!fread(buf, sizeof(char), 7, fp)) {
5395+
fclose(fp);
5396+
goto next;
5397+
}
5398+
fclose(fp);
5399+
5400+
if (!strncmp(buf, "gt0-rc", strlen("gt0-rc")))
5401+
gt0_is_gt = true;
5402+
else if (!strncmp(buf, "gt0-mc", strlen("gt0-mc")))
5403+
gt0_is_gt = false;
5404+
else
5405+
goto next;
5406+
5407+
idx = gt0_is_gt ? GFX_rc6 : SAM_mc6;
5408+
gfx_info[idx].path = "/sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms";
5409+
5410+
idx = gt0_is_gt ? GFX_MHz : SAM_MHz;
5411+
if (!access("/sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq", R_OK))
5412+
gfx_info[idx].path = "/sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq";
5413+
5414+
idx = gt0_is_gt ? GFX_ACTMHz : SAM_ACTMHz;
5415+
if (!access("/sys/class/drm/card0/device/tile0/gt0/freq0/act_freq", R_OK))
5416+
gfx_info[idx].path = "/sys/class/drm/card0/device/tile0/gt0/freq0/act_freq";
5417+
5418+
idx = gt0_is_gt ? SAM_mc6 : GFX_rc6;
5419+
if (!access("/sys/class/drm/card0/device/tile0/gt1/gtidle/idle_residency_ms", R_OK))
5420+
gfx_info[idx].path = "/sys/class/drm/card0/device/tile0/gt1/gtidle/idle_residency_ms";
5421+
5422+
idx = gt0_is_gt ? SAM_MHz : GFX_MHz;
5423+
if (!access("/sys/class/drm/card0/device/tile0/gt1/freq0/cur_freq", R_OK))
5424+
gfx_info[idx].path = "/sys/class/drm/card0/device/tile0/gt1/freq0/cur_freq";
5425+
5426+
idx = gt0_is_gt ? SAM_ACTMHz : GFX_ACTMHz;
5427+
if (!access("/sys/class/drm/card0/device/tile0/gt1/freq0/act_freq", R_OK))
5428+
gfx_info[idx].path = "/sys/class/drm/card0/device/tile0/gt1/freq0/act_freq";
5429+
5430+
goto end;
5431+
}
5432+
5433+
next:
53835434
/* New i915 graphics sysfs knobs */
53845435
if (!access("/sys/class/drm/card0/gt/gt0/rc6_residency_ms", R_OK)) {
53855436
gfx_info[GFX_rc6].path = "/sys/class/drm/card0/gt/gt0/rc6_residency_ms";

0 commit comments

Comments
 (0)