Skip to content

Commit 03109e2

Browse files
zhang-ruilenb
authored andcommitted
tools/power turbostat: Add support for /sys/class/drm/card1
On some machines, the graphics device is enumerated as /sys/class/drm/card1 instead of /sys/class/drm/card0. The current implementation does not handle this scenario, resulting in the loss of graphics C6 residency and frequency information. Add support for /sys/class/drm/card1, ensuring that turbostat can retrieve and display the graphics columns for these platforms. Signed-off-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
1 parent c7538f3 commit 03109e2

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

tools/power/x86/turbostat/turbostat.c

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6476,8 +6476,14 @@ static void set_graphics_fp(char *path, int idx)
64766476
gfx_info[idx].fp = fopen_or_die(path, "r");
64776477
}
64786478

6479+
/* Enlarge this if there are /sys/class/drm/card2 ... */
6480+
#define GFX_MAX_CARDS 2
6481+
64796482
static void probe_graphics(void)
64806483
{
6484+
char path[PATH_MAX];
6485+
int i;
6486+
64816487
/* Xe graphics sysfs knobs */
64826488
if (!access("/sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms", R_OK)) {
64836489
FILE *fp;
@@ -6518,22 +6524,36 @@ static void probe_graphics(void)
65186524

65196525
next:
65206526
/* New i915 graphics sysfs knobs */
6521-
if (!access("/sys/class/drm/card0/gt/gt0/rc6_residency_ms", R_OK)) {
6522-
set_graphics_fp("/sys/class/drm/card0/gt/gt0/rc6_residency_ms", GFX_rc6);
6527+
for (i = 0; i < GFX_MAX_CARDS; i++) {
6528+
snprintf(path, PATH_MAX, "/sys/class/drm/card%d/gt/gt0/rc6_residency_ms", i);
6529+
if (!access(path, R_OK))
6530+
break;
6531+
}
65236532

6524-
set_graphics_fp("/sys/class/drm/card0/gt/gt0/rps_cur_freq_mhz", GFX_MHz);
6533+
if (i == GFX_MAX_CARDS)
6534+
goto legacy_i915;
65256535

6526-
set_graphics_fp("/sys/class/drm/card0/gt/gt0/rps_act_freq_mhz", GFX_ACTMHz);
6536+
snprintf(path, PATH_MAX, "/sys/class/drm/card%d/gt/gt0/rc6_residency_ms", i);
6537+
set_graphics_fp(path, GFX_rc6);
65276538

6528-
set_graphics_fp("/sys/class/drm/card0/gt/gt1/rc6_residency_ms", SAM_mc6);
6539+
snprintf(path, PATH_MAX, "/sys/class/drm/card%d/gt/gt0/rps_cur_freq_mhz", i);
6540+
set_graphics_fp(path, GFX_MHz);
65296541

6530-
set_graphics_fp("/sys/class/drm/card0/gt/gt1/rps_cur_freq_mhz", SAM_MHz);
6542+
snprintf(path, PATH_MAX, "/sys/class/drm/card%d/gt/gt0/rps_act_freq_mhz", i);
6543+
set_graphics_fp(path, GFX_ACTMHz);
65316544

6532-
set_graphics_fp("/sys/class/drm/card0/gt/gt1/rps_act_freq_mhz", SAM_ACTMHz);
6545+
snprintf(path, PATH_MAX, "/sys/class/drm/card%d/gt/gt1/rc6_residency_ms", i);
6546+
set_graphics_fp(path, SAM_mc6);
65336547

6534-
goto end;
6535-
}
6548+
snprintf(path, PATH_MAX, "/sys/class/drm/card%d/gt/gt1/rps_cur_freq_mhz", i);
6549+
set_graphics_fp(path, SAM_MHz);
6550+
6551+
snprintf(path, PATH_MAX, "/sys/class/drm/card%d/gt/gt1/rps_act_freq_mhz", i);
6552+
set_graphics_fp(path, SAM_ACTMHz);
6553+
6554+
goto end;
65366555

6556+
legacy_i915:
65376557
/* Fall back to traditional i915 graphics sysfs knobs */
65386558
set_graphics_fp("/sys/class/drm/card0/power/rc6_residency_ms", GFX_rc6);
65396559

0 commit comments

Comments
 (0)