@@ -216,33 +216,6 @@ static int rapl_msr_write_raw(int cpu, struct reg_action *ra)
216216 return ra -> err ;
217217}
218218
219- /* List of verified CPUs. */
220- static const struct x86_cpu_id pl4_support_ids [] = {
221- X86_MATCH_VFM (INTEL_ICELAKE_L , NULL ),
222- X86_MATCH_VFM (INTEL_TIGERLAKE_L , NULL ),
223- X86_MATCH_VFM (INTEL_ALDERLAKE , NULL ),
224- X86_MATCH_VFM (INTEL_ALDERLAKE_L , NULL ),
225- X86_MATCH_VFM (INTEL_ATOM_GRACEMONT , NULL ),
226- X86_MATCH_VFM (INTEL_RAPTORLAKE , NULL ),
227- X86_MATCH_VFM (INTEL_RAPTORLAKE_P , NULL ),
228- X86_MATCH_VFM (INTEL_METEORLAKE , NULL ),
229- X86_MATCH_VFM (INTEL_METEORLAKE_L , NULL ),
230- X86_MATCH_VFM (INTEL_ARROWLAKE_U , NULL ),
231- X86_MATCH_VFM (INTEL_ARROWLAKE_H , NULL ),
232- X86_MATCH_VFM (INTEL_PANTHERLAKE_L , NULL ),
233- X86_MATCH_VFM (INTEL_WILDCATLAKE_L , NULL ),
234- X86_MATCH_VFM (INTEL_NOVALAKE , NULL ),
235- X86_MATCH_VFM (INTEL_NOVALAKE_L , NULL ),
236- {}
237- };
238-
239- /* List of MSR-based RAPL PMU support CPUs */
240- static const struct x86_cpu_id pmu_support_ids [] = {
241- X86_MATCH_VFM (INTEL_PANTHERLAKE_L , NULL ),
242- X86_MATCH_VFM (INTEL_WILDCATLAKE_L , NULL ),
243- {}
244- };
245-
246219static int rapl_check_unit_atom (struct rapl_domain * rd )
247220{
248221 struct reg_action ra ;
@@ -420,6 +393,23 @@ static const struct rapl_defaults rapl_defaults_amd = {
420393 .check_unit = rapl_default_check_unit ,
421394};
422395
396+ static const struct rapl_defaults rapl_defaults_core_pl4 = {
397+ .floor_freq_reg_addr = 0 ,
398+ .check_unit = rapl_default_check_unit ,
399+ .set_floor_freq = rapl_default_set_floor_freq ,
400+ .compute_time_window = rapl_default_compute_time_window ,
401+ .msr_pl4_support = 1 ,
402+ };
403+
404+ static const struct rapl_defaults rapl_defaults_core_pl4_pmu = {
405+ .floor_freq_reg_addr = 0 ,
406+ .check_unit = rapl_default_check_unit ,
407+ .set_floor_freq = rapl_default_set_floor_freq ,
408+ .compute_time_window = rapl_default_compute_time_window ,
409+ .msr_pl4_support = 1 ,
410+ .msr_pmu_support = 1 ,
411+ };
412+
423413static const struct x86_cpu_id rapl_ids [] = {
424414 X86_MATCH_VFM (INTEL_SANDYBRIDGE , & rapl_defaults_core ),
425415 X86_MATCH_VFM (INTEL_SANDYBRIDGE_X , & rapl_defaults_core ),
@@ -443,35 +433,35 @@ static const struct x86_cpu_id rapl_ids[] = {
443433 X86_MATCH_VFM (INTEL_KABYLAKE_L , & rapl_defaults_core ),
444434 X86_MATCH_VFM (INTEL_KABYLAKE , & rapl_defaults_core ),
445435 X86_MATCH_VFM (INTEL_CANNONLAKE_L , & rapl_defaults_core ),
446- X86_MATCH_VFM (INTEL_ICELAKE_L , & rapl_defaults_core ),
436+ X86_MATCH_VFM (INTEL_ICELAKE_L , & rapl_defaults_core_pl4 ),
447437 X86_MATCH_VFM (INTEL_ICELAKE , & rapl_defaults_core ),
448438 X86_MATCH_VFM (INTEL_ICELAKE_NNPI , & rapl_defaults_core ),
449439 X86_MATCH_VFM (INTEL_ICELAKE_X , & rapl_defaults_hsw_server ),
450440 X86_MATCH_VFM (INTEL_ICELAKE_D , & rapl_defaults_hsw_server ),
451441 X86_MATCH_VFM (INTEL_COMETLAKE_L , & rapl_defaults_core ),
452442 X86_MATCH_VFM (INTEL_COMETLAKE , & rapl_defaults_core ),
453- X86_MATCH_VFM (INTEL_TIGERLAKE_L , & rapl_defaults_core ),
443+ X86_MATCH_VFM (INTEL_TIGERLAKE_L , & rapl_defaults_core_pl4 ),
454444 X86_MATCH_VFM (INTEL_TIGERLAKE , & rapl_defaults_core ),
455445 X86_MATCH_VFM (INTEL_ROCKETLAKE , & rapl_defaults_core ),
456- X86_MATCH_VFM (INTEL_ALDERLAKE , & rapl_defaults_core ),
457- X86_MATCH_VFM (INTEL_ALDERLAKE_L , & rapl_defaults_core ),
458- X86_MATCH_VFM (INTEL_ATOM_GRACEMONT , & rapl_defaults_core ),
459- X86_MATCH_VFM (INTEL_RAPTORLAKE , & rapl_defaults_core ),
460- X86_MATCH_VFM (INTEL_RAPTORLAKE_P , & rapl_defaults_core ),
446+ X86_MATCH_VFM (INTEL_ALDERLAKE , & rapl_defaults_core_pl4 ),
447+ X86_MATCH_VFM (INTEL_ALDERLAKE_L , & rapl_defaults_core_pl4 ),
448+ X86_MATCH_VFM (INTEL_ATOM_GRACEMONT , & rapl_defaults_core_pl4 ),
449+ X86_MATCH_VFM (INTEL_RAPTORLAKE , & rapl_defaults_core_pl4 ),
450+ X86_MATCH_VFM (INTEL_RAPTORLAKE_P , & rapl_defaults_core_pl4 ),
461451 X86_MATCH_VFM (INTEL_RAPTORLAKE_S , & rapl_defaults_core ),
462452 X86_MATCH_VFM (INTEL_BARTLETTLAKE , & rapl_defaults_core ),
463- X86_MATCH_VFM (INTEL_METEORLAKE , & rapl_defaults_core ),
464- X86_MATCH_VFM (INTEL_METEORLAKE_L , & rapl_defaults_core ),
453+ X86_MATCH_VFM (INTEL_METEORLAKE , & rapl_defaults_core_pl4 ),
454+ X86_MATCH_VFM (INTEL_METEORLAKE_L , & rapl_defaults_core_pl4 ),
465455 X86_MATCH_VFM (INTEL_SAPPHIRERAPIDS_X , & rapl_defaults_spr_server ),
466456 X86_MATCH_VFM (INTEL_EMERALDRAPIDS_X , & rapl_defaults_spr_server ),
467457 X86_MATCH_VFM (INTEL_LUNARLAKE_M , & rapl_defaults_core ),
468- X86_MATCH_VFM (INTEL_PANTHERLAKE_L , & rapl_defaults_core ),
469- X86_MATCH_VFM (INTEL_WILDCATLAKE_L , & rapl_defaults_core ),
470- X86_MATCH_VFM (INTEL_NOVALAKE , & rapl_defaults_core ),
471- X86_MATCH_VFM (INTEL_NOVALAKE_L , & rapl_defaults_core ),
472- X86_MATCH_VFM (INTEL_ARROWLAKE_H , & rapl_defaults_core ),
458+ X86_MATCH_VFM (INTEL_PANTHERLAKE_L , & rapl_defaults_core_pl4_pmu ),
459+ X86_MATCH_VFM (INTEL_WILDCATLAKE_L , & rapl_defaults_core_pl4_pmu ),
460+ X86_MATCH_VFM (INTEL_NOVALAKE , & rapl_defaults_core_pl4 ),
461+ X86_MATCH_VFM (INTEL_NOVALAKE_L , & rapl_defaults_core_pl4 ),
462+ X86_MATCH_VFM (INTEL_ARROWLAKE_H , & rapl_defaults_core_pl4 ),
473463 X86_MATCH_VFM (INTEL_ARROWLAKE , & rapl_defaults_core ),
474- X86_MATCH_VFM (INTEL_ARROWLAKE_U , & rapl_defaults_core ),
464+ X86_MATCH_VFM (INTEL_ARROWLAKE_U , & rapl_defaults_core_pl4 ),
475465 X86_MATCH_VFM (INTEL_LAKEFIELD , & rapl_defaults_core ),
476466
477467 X86_MATCH_VFM (INTEL_ATOM_SILVERMONT , & rapl_defaults_byt ),
@@ -498,7 +488,6 @@ MODULE_DEVICE_TABLE(x86cpu, rapl_ids);
498488
499489static int rapl_msr_probe (struct platform_device * pdev )
500490{
501- const struct x86_cpu_id * id = x86_match_cpu (pl4_support_ids );
502491 int ret ;
503492
504493 switch (boot_cpu_data .x86_vendor ) {
@@ -518,16 +507,16 @@ static int rapl_msr_probe(struct platform_device *pdev)
518507 rapl_msr_priv -> defaults = (const struct rapl_defaults * )pdev -> dev .platform_data ;
519508 rapl_msr_priv -> rpi = rpi_msr ;
520509
521- if (id ) {
510+ if (rapl_msr_priv -> defaults -> msr_pl4_support ) {
522511 rapl_msr_priv -> limits [RAPL_DOMAIN_PACKAGE ] |= BIT (POWER_LIMIT4 );
523512 rapl_msr_priv -> regs [RAPL_DOMAIN_PACKAGE ][RAPL_DOMAIN_REG_PL4 ].msr =
524513 MSR_VR_CURRENT_CONFIG ;
525- pr_info ("PL4 support detected.\n" );
514+ pr_info ("PL4 support detected (updated) .\n" );
526515 }
527516
528- if (x86_match_cpu ( pmu_support_ids ) ) {
517+ if (rapl_msr_priv -> defaults -> msr_pmu_support ) {
529518 rapl_msr_pmu = true;
530- pr_info ("MSR-based RAPL PMU support enabled\n" );
519+ pr_info ("MSR-based RAPL PMU support enabled (updated) \n" );
531520 }
532521
533522 rapl_msr_priv -> control_type = powercap_register_control_type (NULL , "intel-rapl" , NULL );
0 commit comments