@@ -276,6 +276,19 @@ bool no_msr;
276276bool no_perf ;
277277enum amperf_source amperf_source ;
278278
279+ enum gfx_sysfs_idx {
280+ GFX_rc6 ,
281+ GFX_MHz ,
282+ GFX_ACTMHz ,
283+ GFX_MAX
284+ };
285+
286+ struct gfx_sysfs_info {
287+ const char * path ;
288+ };
289+
290+ static struct gfx_sysfs_info gfx_info [GFX_MAX ];
291+
279292int get_msr (int cpu , off_t offset , unsigned long long * msr );
280293
281294/* Model specific support Start */
@@ -4620,7 +4633,7 @@ int snapshot_gfx_rc6_ms(void)
46204633 FILE * fp ;
46214634 int retval ;
46224635
4623- fp = fopen_or_die ("/sys/class/drm/card0/power/rc6_residency_ms" , "r" );
4636+ fp = fopen_or_die (gfx_info [ GFX_rc6 ]. path , "r" );
46244637
46254638 retval = fscanf (fp , "%lld" , & gfx_cur_rc6_ms );
46264639 if (retval != 1 )
@@ -4645,9 +4658,7 @@ int snapshot_gfx_mhz(void)
46454658 int retval ;
46464659
46474660 if (fp == NULL ) {
4648- fp = fopen ("/sys/class/drm/card0/gt_cur_freq_mhz" , "r" );
4649- if (!fp )
4650- fp = fopen_or_die ("/sys/class/graphics/fb0/device/drm/card0/gt_cur_freq_mhz" , "r" );
4661+ fp = fopen_or_die (gfx_info [GFX_MHz ].path , "r" );
46514662 } else {
46524663 rewind (fp );
46534664 fflush (fp );
@@ -4674,9 +4685,7 @@ int snapshot_gfx_act_mhz(void)
46744685 int retval ;
46754686
46764687 if (fp == NULL ) {
4677- fp = fopen ("/sys/class/drm/card0/gt_act_freq_mhz" , "r" );
4678- if (!fp )
4679- fp = fopen_or_die ("/sys/class/graphics/fb0/device/drm/card0/gt_act_freq_mhz" , "r" );
4688+ fp = fopen_or_die (gfx_info [GFX_ACTMHz ].path , "r" );
46804689 } else {
46814690 rewind (fp );
46824691 fflush (fp );
@@ -5338,14 +5347,24 @@ static void probe_intel_uncore_frequency(void)
53385347static void probe_graphics (void )
53395348{
53405349 if (!access ("/sys/class/drm/card0/power/rc6_residency_ms" , R_OK ))
5341- BIC_PRESENT ( BIC_GFX_rc6 ) ;
5350+ gfx_info [ GFX_rc6 ]. path = "/sys/class/drm/card0/power/rc6_residency_ms" ;
53425351
5343- if (!access ("/sys/class/drm/card0/gt_cur_freq_mhz" , R_OK ) ||
5344- !access ("/sys/class/graphics/fb0/device/drm/card0/gt_cur_freq_mhz" , R_OK ))
5345- BIC_PRESENT (BIC_GFXMHz );
5352+ if (!access ("/sys/class/drm/card0/gt_cur_freq_mhz" , R_OK ))
5353+ gfx_info [GFX_MHz ].path = "/sys/class/drm/card0/gt_cur_freq_mhz" ;
5354+ else if (!access ("/sys/class/graphics/fb0/device/drm/card0/gt_cur_freq_mhz" , R_OK ))
5355+ gfx_info [GFX_MHz ].path = "/sys/class/graphics/fb0/device/drm/card0/gt_cur_freq_mhz" ;
5356+
5357+
5358+ if (!access ("/sys/class/drm/card0/gt_act_freq_mhz" , R_OK ))
5359+ gfx_info [GFX_ACTMHz ].path = "/sys/class/drm/card0/gt_act_freq_mhz" ;
5360+ else if (!access ("/sys/class/graphics/fb0/device/drm/card0/gt_act_freq_mhz" , R_OK ))
5361+ gfx_info [GFX_ACTMHz ].path = "/sys/class/graphics/fb0/device/drm/card0/gt_act_freq_mhz" ;
53465362
5347- if (!access ("/sys/class/drm/card0/gt_act_freq_mhz" , R_OK ) ||
5348- !access ("/sys/class/graphics/fb0/device/drm/card0/gt_act_freq_mhz" , R_OK ))
5363+ if (gfx_info [GFX_rc6 ].path )
5364+ BIC_PRESENT (BIC_GFX_rc6 );
5365+ if (gfx_info [GFX_MHz ].path )
5366+ BIC_PRESENT (BIC_GFXMHz );
5367+ if (gfx_info [GFX_ACTMHz ].path )
53495368 BIC_PRESENT (BIC_GFXACTMHz );
53505369}
53515370
0 commit comments