@@ -7,6 +7,7 @@ enum perf_msr_id {
7
7
PERF_MSR_PPERF = 3 ,
8
8
PERF_MSR_SMI = 4 ,
9
9
PERF_MSR_PTSC = 5 ,
10
+ PERF_MSR_IRPERF = 6 ,
10
11
11
12
PERF_MSR_EVENT_MAX ,
12
13
};
@@ -21,6 +22,11 @@ static bool test_ptsc(int idx)
21
22
return boot_cpu_has (X86_FEATURE_PTSC );
22
23
}
23
24
25
+ static bool test_irperf (int idx )
26
+ {
27
+ return boot_cpu_has (X86_FEATURE_IRPERF );
28
+ }
29
+
24
30
static bool test_intel (int idx )
25
31
{
26
32
if (boot_cpu_data .x86_vendor != X86_VENDOR_INTEL ||
@@ -75,20 +81,22 @@ struct perf_msr {
75
81
bool (* test )(int idx );
76
82
};
77
83
78
- PMU_EVENT_ATTR_STRING (tsc , evattr_tsc , "event=0x00" );
79
- PMU_EVENT_ATTR_STRING (aperf , evattr_aperf , "event=0x01" );
80
- PMU_EVENT_ATTR_STRING (mperf , evattr_mperf , "event=0x02" );
81
- PMU_EVENT_ATTR_STRING (pperf , evattr_pperf , "event=0x03" );
82
- PMU_EVENT_ATTR_STRING (smi , evattr_smi , "event=0x04" );
83
- PMU_EVENT_ATTR_STRING (ptsc , evattr_ptsc , "event=0x05" );
84
+ PMU_EVENT_ATTR_STRING (tsc , evattr_tsc , "event=0x00" );
85
+ PMU_EVENT_ATTR_STRING (aperf , evattr_aperf , "event=0x01" );
86
+ PMU_EVENT_ATTR_STRING (mperf , evattr_mperf , "event=0x02" );
87
+ PMU_EVENT_ATTR_STRING (pperf , evattr_pperf , "event=0x03" );
88
+ PMU_EVENT_ATTR_STRING (smi , evattr_smi , "event=0x04" );
89
+ PMU_EVENT_ATTR_STRING (ptsc , evattr_ptsc , "event=0x05" );
90
+ PMU_EVENT_ATTR_STRING (irperf , evattr_irperf , "event=0x06" );
84
91
85
92
static struct perf_msr msr [] = {
86
- [PERF_MSR_TSC ] = { 0 , & evattr_tsc , NULL , },
87
- [PERF_MSR_APERF ] = { MSR_IA32_APERF , & evattr_aperf , test_aperfmperf , },
88
- [PERF_MSR_MPERF ] = { MSR_IA32_MPERF , & evattr_mperf , test_aperfmperf , },
89
- [PERF_MSR_PPERF ] = { MSR_PPERF , & evattr_pperf , test_intel , },
90
- [PERF_MSR_SMI ] = { MSR_SMI_COUNT , & evattr_smi , test_intel , },
93
+ [PERF_MSR_TSC ] = { 0 , & evattr_tsc , NULL , },
94
+ [PERF_MSR_APERF ] = { MSR_IA32_APERF , & evattr_aperf , test_aperfmperf , },
95
+ [PERF_MSR_MPERF ] = { MSR_IA32_MPERF , & evattr_mperf , test_aperfmperf , },
96
+ [PERF_MSR_PPERF ] = { MSR_PPERF , & evattr_pperf , test_intel , },
97
+ [PERF_MSR_SMI ] = { MSR_SMI_COUNT , & evattr_smi , test_intel , },
91
98
[PERF_MSR_PTSC ] = { MSR_F15H_PTSC , & evattr_ptsc , test_ptsc , },
99
+ [PERF_MSR_IRPERF ] = { MSR_F17H_IRPERF , & evattr_irperf , test_irperf , },
92
100
};
93
101
94
102
static struct attribute * events_attrs [PERF_MSR_EVENT_MAX + 1 ] = {
0 commit comments