@@ -133,6 +133,7 @@ struct rapl_pmus {
133
133
enum rapl_unit_quirk {
134
134
RAPL_UNIT_QUIRK_NONE ,
135
135
RAPL_UNIT_QUIRK_INTEL_HSW ,
136
+ RAPL_UNIT_QUIRK_INTEL_SPR ,
136
137
};
137
138
138
139
struct rapl_model {
@@ -627,6 +628,14 @@ static int rapl_check_hw_unit(struct rapl_model *rm)
627
628
case RAPL_UNIT_QUIRK_INTEL_HSW :
628
629
rapl_hw_unit [PERF_RAPL_RAM ] = 16 ;
629
630
break ;
631
+ /*
632
+ * SPR shares the same DRAM domain energy unit as HSW, plus it
633
+ * also has a fixed energy unit for Psys domain.
634
+ */
635
+ case RAPL_UNIT_QUIRK_INTEL_SPR :
636
+ rapl_hw_unit [PERF_RAPL_RAM ] = 16 ;
637
+ rapl_hw_unit [PERF_RAPL_PSYS ] = 0 ;
638
+ break ;
630
639
default :
631
640
break ;
632
641
}
@@ -757,6 +766,16 @@ static struct rapl_model model_skl = {
757
766
.rapl_msrs = intel_rapl_msrs ,
758
767
};
759
768
769
+ static struct rapl_model model_spr = {
770
+ .events = BIT (PERF_RAPL_PP0 ) |
771
+ BIT (PERF_RAPL_PKG ) |
772
+ BIT (PERF_RAPL_RAM ) |
773
+ BIT (PERF_RAPL_PSYS ),
774
+ .unit_quirk = RAPL_UNIT_QUIRK_INTEL_SPR ,
775
+ .msr_power_unit = MSR_RAPL_POWER_UNIT ,
776
+ .rapl_msrs = intel_rapl_msrs ,
777
+ };
778
+
760
779
static struct rapl_model model_amd_fam17h = {
761
780
.events = BIT (PERF_RAPL_PKG ),
762
781
.msr_power_unit = MSR_AMD_RAPL_POWER_UNIT ,
@@ -793,6 +812,7 @@ static const struct x86_cpu_id rapl_model_match[] __initconst = {
793
812
X86_MATCH_INTEL_FAM6_MODEL (ICELAKE_X , & model_hsx ),
794
813
X86_MATCH_INTEL_FAM6_MODEL (COMETLAKE_L , & model_skl ),
795
814
X86_MATCH_INTEL_FAM6_MODEL (COMETLAKE , & model_skl ),
815
+ X86_MATCH_INTEL_FAM6_MODEL (SAPPHIRERAPIDS_X , & model_spr ),
796
816
X86_MATCH_VENDOR_FAM (AMD , 0x17 , & model_amd_fam17h ),
797
817
X86_MATCH_VENDOR_FAM (HYGON , 0x18 , & model_amd_fam17h ),
798
818
{},
0 commit comments