aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2015-03-26 00:50:30 -0400
committerLen Brown <len.brown@intel.com>2015-04-18 14:20:51 -0400
commit0b2bb6925eb602eae993a4b5c282a8c18ad1c949 (patch)
tree24367037aecceac63d546eff7dc249871de4ee3a /tools
parentf82263c6989c31ae9b94cecddffb29dcbec38710 (diff)
tools/power turbostat: Initial Skylake support
Skylake adds some additional residency counters. Skylake supports a different mix of RAPL registers from any previous product. In most other ways, Skylake is like Broadwell. Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/power/x86/turbostat/turbostat.c124
1 files changed, 111 insertions, 13 deletions
diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
index 50341a322cb8..ad5688914446 100644
--- a/tools/power/x86/turbostat/turbostat.c
+++ b/tools/power/x86/turbostat/turbostat.c
@@ -57,6 +57,7 @@ unsigned int do_pc3;
57unsigned int do_pc6; 57unsigned int do_pc6;
58unsigned int do_pc7; 58unsigned int do_pc7;
59unsigned int do_c8_c9_c10; 59unsigned int do_c8_c9_c10;
60unsigned int do_skl_residency;
60unsigned int do_slm_cstates; 61unsigned int do_slm_cstates;
61unsigned int use_c1_residency_msr; 62unsigned int use_c1_residency_msr;
62unsigned int has_aperf; 63unsigned int has_aperf;
@@ -99,18 +100,18 @@ unsigned int do_ring_perf_limit_reasons;
99#define RAPL_DRAM (1 << 3) 100#define RAPL_DRAM (1 << 3)
100 /* 0x618 MSR_DRAM_POWER_LIMIT */ 101 /* 0x618 MSR_DRAM_POWER_LIMIT */
101 /* 0x619 MSR_DRAM_ENERGY_STATUS */ 102 /* 0x619 MSR_DRAM_ENERGY_STATUS */
102 /* 0x61c MSR_DRAM_POWER_INFO */
103#define RAPL_DRAM_PERF_STATUS (1 << 4) 103#define RAPL_DRAM_PERF_STATUS (1 << 4)
104 /* 0x61b MSR_DRAM_PERF_STATUS */ 104 /* 0x61b MSR_DRAM_PERF_STATUS */
105#define RAPL_DRAM_POWER_INFO (1 << 5)
106 /* 0x61c MSR_DRAM_POWER_INFO */
105 107
106#define RAPL_CORES (1 << 5) 108#define RAPL_CORES (1 << 6)
107 /* 0x638 MSR_PP0_POWER_LIMIT */ 109 /* 0x638 MSR_PP0_POWER_LIMIT */
108 /* 0x639 MSR_PP0_ENERGY_STATUS */ 110 /* 0x639 MSR_PP0_ENERGY_STATUS */
109#define RAPL_CORE_POLICY (1 << 6) 111#define RAPL_CORE_POLICY (1 << 7)
110 /* 0x63a MSR_PP0_POLICY */ 112 /* 0x63a MSR_PP0_POLICY */
111 113
112 114#define RAPL_GFX (1 << 8)
113#define RAPL_GFX (1 << 7)
114 /* 0x640 MSR_PP1_POWER_LIMIT */ 115 /* 0x640 MSR_PP1_POWER_LIMIT */
115 /* 0x641 MSR_PP1_ENERGY_STATUS */ 116 /* 0x641 MSR_PP1_ENERGY_STATUS */
116 /* 0x642 MSR_PP1_POLICY */ 117 /* 0x642 MSR_PP1_POLICY */
@@ -157,6 +158,10 @@ struct pkg_data {
157 unsigned long long pc8; 158 unsigned long long pc8;
158 unsigned long long pc9; 159 unsigned long long pc9;
159 unsigned long long pc10; 160 unsigned long long pc10;
161 unsigned long long pkg_wtd_core_c0;
162 unsigned long long pkg_any_core_c0;
163 unsigned long long pkg_any_gfxe_c0;
164 unsigned long long pkg_both_core_gfxe_c0;
160 unsigned int package_id; 165 unsigned int package_id;
161 unsigned int energy_pkg; /* MSR_PKG_ENERGY_STATUS */ 166 unsigned int energy_pkg; /* MSR_PKG_ENERGY_STATUS */
162 unsigned int energy_dram; /* MSR_DRAM_ENERGY_STATUS */ 167 unsigned int energy_dram; /* MSR_DRAM_ENERGY_STATUS */
@@ -320,6 +325,13 @@ void print_header(void)
320 if (do_ptm) 325 if (do_ptm)
321 outp += sprintf(outp, " PkgTmp"); 326 outp += sprintf(outp, " PkgTmp");
322 327
328 if (do_skl_residency) {
329 outp += sprintf(outp, " Totl%%C0");
330 outp += sprintf(outp, " Any%%C0");
331 outp += sprintf(outp, " GFX%%C0");
332 outp += sprintf(outp, " CPUGFX%%");
333 }
334
323 if (do_pc2) 335 if (do_pc2)
324 outp += sprintf(outp, " Pkg%%pc2"); 336 outp += sprintf(outp, " Pkg%%pc2");
325 if (do_pc3) 337 if (do_pc3)
@@ -401,6 +413,12 @@ int dump_counters(struct thread_data *t, struct core_data *c,
401 413
402 if (p) { 414 if (p) {
403 outp += sprintf(outp, "package: %d\n", p->package_id); 415 outp += sprintf(outp, "package: %d\n", p->package_id);
416
417 outp += sprintf(outp, "Weighted cores: %016llX\n", p->pkg_wtd_core_c0);
418 outp += sprintf(outp, "Any cores: %016llX\n", p->pkg_any_core_c0);
419 outp += sprintf(outp, "Any GFX: %016llX\n", p->pkg_any_gfxe_c0);
420 outp += sprintf(outp, "CPU + GFX: %016llX\n", p->pkg_both_core_gfxe_c0);
421
404 outp += sprintf(outp, "pc2: %016llX\n", p->pc2); 422 outp += sprintf(outp, "pc2: %016llX\n", p->pc2);
405 if (do_pc3) 423 if (do_pc3)
406 outp += sprintf(outp, "pc3: %016llX\n", p->pc3); 424 outp += sprintf(outp, "pc3: %016llX\n", p->pc3);
@@ -539,9 +557,18 @@ int format_counters(struct thread_data *t, struct core_data *c,
539 if (!(t->flags & CPU_IS_FIRST_CORE_IN_PACKAGE)) 557 if (!(t->flags & CPU_IS_FIRST_CORE_IN_PACKAGE))
540 goto done; 558 goto done;
541 559
560 /* PkgTmp */
542 if (do_ptm) 561 if (do_ptm)
543 outp += sprintf(outp, "%8d", p->pkg_temp_c); 562 outp += sprintf(outp, "%8d", p->pkg_temp_c);
544 563
564 /* Totl%C0, Any%C0 GFX%C0 CPUGFX% */
565 if (do_skl_residency) {
566 outp += sprintf(outp, "%8.2f", 100.0 * p->pkg_wtd_core_c0/t->tsc);
567 outp += sprintf(outp, "%8.2f", 100.0 * p->pkg_any_core_c0/t->tsc);
568 outp += sprintf(outp, "%8.2f", 100.0 * p->pkg_any_gfxe_c0/t->tsc);
569 outp += sprintf(outp, "%8.2f", 100.0 * p->pkg_both_core_gfxe_c0/t->tsc);
570 }
571
545 if (do_pc2) 572 if (do_pc2)
546 outp += sprintf(outp, "%8.2f", 100.0 * p->pc2/t->tsc); 573 outp += sprintf(outp, "%8.2f", 100.0 * p->pc2/t->tsc);
547 if (do_pc3) 574 if (do_pc3)
@@ -644,6 +671,13 @@ void format_all_counters(struct thread_data *t, struct core_data *c, struct pkg_
644void 671void
645delta_package(struct pkg_data *new, struct pkg_data *old) 672delta_package(struct pkg_data *new, struct pkg_data *old)
646{ 673{
674
675 if (do_skl_residency) {
676 old->pkg_wtd_core_c0 = new->pkg_wtd_core_c0 - old->pkg_wtd_core_c0;
677 old->pkg_any_core_c0 = new->pkg_any_core_c0 - old->pkg_any_core_c0;
678 old->pkg_any_gfxe_c0 = new->pkg_any_gfxe_c0 - old->pkg_any_gfxe_c0;
679 old->pkg_both_core_gfxe_c0 = new->pkg_both_core_gfxe_c0 - old->pkg_both_core_gfxe_c0;
680 }
647 old->pc2 = new->pc2 - old->pc2; 681 old->pc2 = new->pc2 - old->pc2;
648 if (do_pc3) 682 if (do_pc3)
649 old->pc3 = new->pc3 - old->pc3; 683 old->pc3 = new->pc3 - old->pc3;
@@ -790,6 +824,11 @@ void clear_counters(struct thread_data *t, struct core_data *c, struct pkg_data
790 c->c7 = 0; 824 c->c7 = 0;
791 c->core_temp_c = 0; 825 c->core_temp_c = 0;
792 826
827 p->pkg_wtd_core_c0 = 0;
828 p->pkg_any_core_c0 = 0;
829 p->pkg_any_gfxe_c0 = 0;
830 p->pkg_both_core_gfxe_c0 = 0;
831
793 p->pc2 = 0; 832 p->pc2 = 0;
794 if (do_pc3) 833 if (do_pc3)
795 p->pc3 = 0; 834 p->pc3 = 0;
@@ -834,6 +873,13 @@ int sum_counters(struct thread_data *t, struct core_data *c,
834 if (!(t->flags & CPU_IS_FIRST_CORE_IN_PACKAGE)) 873 if (!(t->flags & CPU_IS_FIRST_CORE_IN_PACKAGE))
835 return 0; 874 return 0;
836 875
876 if (do_skl_residency) {
877 average.packages.pkg_wtd_core_c0 += p->pkg_wtd_core_c0;
878 average.packages.pkg_any_core_c0 += p->pkg_any_core_c0;
879 average.packages.pkg_any_gfxe_c0 += p->pkg_any_gfxe_c0;
880 average.packages.pkg_both_core_gfxe_c0 += p->pkg_both_core_gfxe_c0;
881 }
882
837 average.packages.pc2 += p->pc2; 883 average.packages.pc2 += p->pc2;
838 if (do_pc3) 884 if (do_pc3)
839 average.packages.pc3 += p->pc3; 885 average.packages.pc3 += p->pc3;
@@ -881,6 +927,13 @@ void compute_average(struct thread_data *t, struct core_data *c,
881 average.cores.c6 /= topo.num_cores; 927 average.cores.c6 /= topo.num_cores;
882 average.cores.c7 /= topo.num_cores; 928 average.cores.c7 /= topo.num_cores;
883 929
930 if (do_skl_residency) {
931 average.packages.pkg_wtd_core_c0 /= topo.num_packages;
932 average.packages.pkg_any_core_c0 /= topo.num_packages;
933 average.packages.pkg_any_gfxe_c0 /= topo.num_packages;
934 average.packages.pkg_both_core_gfxe_c0 /= topo.num_packages;
935 }
936
884 average.packages.pc2 /= topo.num_packages; 937 average.packages.pc2 /= topo.num_packages;
885 if (do_pc3) 938 if (do_pc3)
886 average.packages.pc3 /= topo.num_packages; 939 average.packages.pc3 /= topo.num_packages;
@@ -987,6 +1040,16 @@ int get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
987 if (!(t->flags & CPU_IS_FIRST_CORE_IN_PACKAGE)) 1040 if (!(t->flags & CPU_IS_FIRST_CORE_IN_PACKAGE))
988 return 0; 1041 return 0;
989 1042
1043 if (do_skl_residency) {
1044 if (get_msr(cpu, MSR_PKG_WEIGHTED_CORE_C0_RES, &p->pkg_wtd_core_c0))
1045 return -10;
1046 if (get_msr(cpu, MSR_PKG_ANY_CORE_C0_RES, &p->pkg_any_core_c0))
1047 return -11;
1048 if (get_msr(cpu, MSR_PKG_ANY_GFXE_C0_RES, &p->pkg_any_gfxe_c0))
1049 return -12;
1050 if (get_msr(cpu, MSR_PKG_BOTH_CORE_GFXE_C0_RES, &p->pkg_both_core_gfxe_c0))
1051 return -13;
1052 }
990 if (do_pc3) 1053 if (do_pc3)
991 if (get_msr(cpu, MSR_PKG_C3_RESIDENCY, &p->pc3)) 1054 if (get_msr(cpu, MSR_PKG_C3_RESIDENCY, &p->pc3))
992 return -9; 1055 return -9;
@@ -1063,15 +1126,18 @@ int get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
1063#define PCL_6R 9 /* PC6 Retention */ 1126#define PCL_6R 9 /* PC6 Retention */
1064#define PCL__7 10 /* PC7 */ 1127#define PCL__7 10 /* PC7 */
1065#define PCL_7S 11 /* PC7 Shrink */ 1128#define PCL_7S 11 /* PC7 Shrink */
1066#define PCLUNL 12 /* Unlimited */ 1129#define PCL__8 12 /* PC8 */
1130#define PCL__9 13 /* PC9 */
1131#define PCLUNL 14 /* Unlimited */
1067 1132
1068int pkg_cstate_limit = PCLUKN; 1133int pkg_cstate_limit = PCLUKN;
1069char *pkg_cstate_limit_strings[] = { "reserved", "unknown", "pc0", "pc1", "pc2", 1134char *pkg_cstate_limit_strings[] = { "reserved", "unknown", "pc0", "pc1", "pc2",
1070 "pc3", "pc4", "pc6", "pc6n", "pc6r", "pc7", "pc7s", "unlimited"}; 1135 "pc3", "pc4", "pc6", "pc6n", "pc6r", "pc7", "pc7s", "pc8", "pc9", "unlimited"};
1071 1136
1072int nhm_pkg_cstate_limits[8] = {PCL__0, PCL__1, PCL__3, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLUNL}; 1137int nhm_pkg_cstate_limits[8] = {PCL__0, PCL__1, PCL__3, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLUNL};
1073int snb_pkg_cstate_limits[8] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCL__7, PCL_7S, PCLRSV, PCLUNL}; 1138int snb_pkg_cstate_limits[8] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCL__7, PCL_7S, PCLRSV, PCLUNL};
1074int hsw_pkg_cstate_limits[8] = {PCL__0, PCL__2, PCL__3, PCL__6, PCL__7, PCL_7S, PCLRSV, PCLUNL}; 1139int hsw_pkg_cstate_limits[8] = {PCL__0, PCL__2, PCL__3, PCL__6, PCL__7, PCL_7S, PCLRSV, PCLUNL};
1140int skl_pkg_cstate_limits[8] = {PCL__0, PCL__2, PCL__3, PCL__6, PCL__7, PCL_7S, PCL__8, PCL__9};
1075int slv_pkg_cstate_limits[8] = {PCL__0, PCL__1, PCLRSV, PCLRSV, PCL__4, PCLRSV, PCL__6, PCL__7}; 1141int slv_pkg_cstate_limits[8] = {PCL__0, PCL__1, PCLRSV, PCLRSV, PCL__4, PCLRSV, PCL__6, PCL__7};
1076int amt_pkg_cstate_limits[8] = {PCL__0, PCL__1, PCL__2, PCLRSV, PCLRSV, PCLRSV, PCL__6, PCL__7}; 1142int amt_pkg_cstate_limits[8] = {PCL__0, PCL__1, PCL__2, PCLRSV, PCLRSV, PCLRSV, PCL__6, PCL__7};
1077int phi_pkg_cstate_limits[8] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCLRSV, PCLRSV, PCLRSV, PCLUNL}; 1143int phi_pkg_cstate_limits[8] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCLRSV, PCLRSV, PCLRSV, PCLUNL};
@@ -1619,6 +1685,8 @@ int probe_nhm_msrs(unsigned int family, unsigned int model)
1619 case 0x47: /* BDW */ 1685 case 0x47: /* BDW */
1620 case 0x4F: /* BDX */ 1686 case 0x4F: /* BDX */
1621 case 0x56: /* BDX-DE */ 1687 case 0x56: /* BDX-DE */
1688 case 0x4E: /* SKL */
1689 case 0x5E: /* SKL */
1622 pkg_cstate_limits = hsw_pkg_cstate_limits; 1690 pkg_cstate_limits = hsw_pkg_cstate_limits;
1623 break; 1691 break;
1624 case 0x37: /* BYT */ 1692 case 0x37: /* BYT */
@@ -1895,14 +1963,18 @@ void rapl_probe(unsigned int family, unsigned int model)
1895 case 0x47: /* BDW */ 1963 case 0x47: /* BDW */
1896 do_rapl = RAPL_PKG | RAPL_CORES | RAPL_CORE_POLICY | RAPL_GFX | RAPL_PKG_POWER_INFO; 1964 do_rapl = RAPL_PKG | RAPL_CORES | RAPL_CORE_POLICY | RAPL_GFX | RAPL_PKG_POWER_INFO;
1897 break; 1965 break;
1966 case 0x4E: /* SKL */
1967 case 0x5E: /* SKL */
1968 do_rapl = RAPL_PKG | RAPL_DRAM | RAPL_DRAM_PERF_STATUS | RAPL_PKG_PERF_STATUS | RAPL_PKG_POWER_INFO;
1969 break;
1898 case 0x3F: /* HSX */ 1970 case 0x3F: /* HSX */
1899 case 0x4F: /* BDX */ 1971 case 0x4F: /* BDX */
1900 case 0x56: /* BDX-DE */ 1972 case 0x56: /* BDX-DE */
1901 do_rapl = RAPL_PKG | RAPL_DRAM | RAPL_DRAM_PERF_STATUS | RAPL_PKG_PERF_STATUS | RAPL_PKG_POWER_INFO; 1973 do_rapl = RAPL_PKG | RAPL_DRAM | RAPL_DRAM_POWER_INFO | RAPL_DRAM_PERF_STATUS | RAPL_PKG_PERF_STATUS | RAPL_PKG_POWER_INFO;
1902 break; 1974 break;
1903 case 0x2D: 1975 case 0x2D:
1904 case 0x3E: 1976 case 0x3E:
1905 do_rapl = RAPL_PKG | RAPL_CORES | RAPL_CORE_POLICY | RAPL_DRAM | RAPL_PKG_PERF_STATUS | RAPL_DRAM_PERF_STATUS | RAPL_PKG_POWER_INFO; 1977 do_rapl = RAPL_PKG | RAPL_CORES | RAPL_CORE_POLICY | RAPL_DRAM | RAPL_DRAM_POWER_INFO | RAPL_PKG_PERF_STATUS | RAPL_DRAM_PERF_STATUS | RAPL_PKG_POWER_INFO;
1906 break; 1978 break;
1907 case 0x37: /* BYT */ 1979 case 0x37: /* BYT */
1908 case 0x4D: /* AVN */ 1980 case 0x4D: /* AVN */
@@ -2092,19 +2164,18 @@ int print_rapl(struct thread_data *t, struct core_data *c, struct pkg_data *p)
2092 ((msr >> 48) & 1) ? "EN" : "DIS"); 2164 ((msr >> 48) & 1) ? "EN" : "DIS");
2093 } 2165 }
2094 2166
2095 if (do_rapl & RAPL_DRAM) { 2167 if (do_rapl & RAPL_DRAM_POWER_INFO) {
2096 if (get_msr(cpu, MSR_DRAM_POWER_INFO, &msr)) 2168 if (get_msr(cpu, MSR_DRAM_POWER_INFO, &msr))
2097 return -6; 2169 return -6;
2098 2170
2099
2100 fprintf(stderr, "cpu%d: MSR_DRAM_POWER_INFO,: 0x%08llx (%.0f W TDP, RAPL %.0f - %.0f W, %f sec.)\n", 2171 fprintf(stderr, "cpu%d: MSR_DRAM_POWER_INFO,: 0x%08llx (%.0f W TDP, RAPL %.0f - %.0f W, %f sec.)\n",
2101 cpu, msr, 2172 cpu, msr,
2102 ((msr >> 0) & RAPL_POWER_GRANULARITY) * rapl_power_units, 2173 ((msr >> 0) & RAPL_POWER_GRANULARITY) * rapl_power_units,
2103 ((msr >> 16) & RAPL_POWER_GRANULARITY) * rapl_power_units, 2174 ((msr >> 16) & RAPL_POWER_GRANULARITY) * rapl_power_units,
2104 ((msr >> 32) & RAPL_POWER_GRANULARITY) * rapl_power_units, 2175 ((msr >> 32) & RAPL_POWER_GRANULARITY) * rapl_power_units,
2105 ((msr >> 48) & RAPL_TIME_GRANULARITY) * rapl_time_units); 2176 ((msr >> 48) & RAPL_TIME_GRANULARITY) * rapl_time_units);
2106 2177 }
2107 2178 if (do_rapl & RAPL_DRAM) {
2108 if (get_msr(cpu, MSR_DRAM_POWER_LIMIT, &msr)) 2179 if (get_msr(cpu, MSR_DRAM_POWER_LIMIT, &msr))
2109 return -9; 2180 return -9;
2110 fprintf(stderr, "cpu%d: MSR_DRAM_POWER_LIMIT: 0x%08llx (%slocked)\n", 2181 fprintf(stderr, "cpu%d: MSR_DRAM_POWER_LIMIT: 0x%08llx (%slocked)\n",
@@ -2173,6 +2244,8 @@ int has_snb_msrs(unsigned int family, unsigned int model)
2173 case 0x47: /* BDW */ 2244 case 0x47: /* BDW */
2174 case 0x4F: /* BDX */ 2245 case 0x4F: /* BDX */
2175 case 0x56: /* BDX-DE */ 2246 case 0x56: /* BDX-DE */
2247 case 0x4E: /* SKL */
2248 case 0x5E: /* SKL */
2176 return 1; 2249 return 1;
2177 } 2250 }
2178 return 0; 2251 return 0;
@@ -2193,12 +2266,36 @@ int has_hsw_msrs(unsigned int family, unsigned int model)
2193 switch (model) { 2266 switch (model) {
2194 case 0x45: /* HSW */ 2267 case 0x45: /* HSW */
2195 case 0x3D: /* BDW */ 2268 case 0x3D: /* BDW */
2269 case 0x4E: /* SKL */
2270 case 0x5E: /* SKL */
2271 return 1;
2272 }
2273 return 0;
2274}
2275
2276/*
2277 * SKL adds support for additional MSRS:
2278 *
2279 * MSR_PKG_WEIGHTED_CORE_C0_RES 0x00000658
2280 * MSR_PKG_ANY_CORE_C0_RES 0x00000659
2281 * MSR_PKG_ANY_GFXE_C0_RES 0x0000065A
2282 * MSR_PKG_BOTH_CORE_GFXE_C0_RES 0x0000065B
2283 */
2284int has_skl_msrs(unsigned int family, unsigned int model)
2285{
2286 if (!genuine_intel)
2287 return 0;
2288
2289 switch (model) {
2290 case 0x4E: /* SKL */
2291 case 0x5E: /* SKL */
2196 return 1; 2292 return 1;
2197 } 2293 }
2198 return 0; 2294 return 0;
2199} 2295}
2200 2296
2201 2297
2298
2202int is_slm(unsigned int family, unsigned int model) 2299int is_slm(unsigned int family, unsigned int model)
2203{ 2300{
2204 if (!genuine_intel) 2301 if (!genuine_intel)
@@ -2384,6 +2481,7 @@ void process_cpuid()
2384 do_pc6 = (pkg_cstate_limit >= PCL__6); 2481 do_pc6 = (pkg_cstate_limit >= PCL__6);
2385 do_pc7 = do_snb_cstates && (pkg_cstate_limit >= PCL__7); 2482 do_pc7 = do_snb_cstates && (pkg_cstate_limit >= PCL__7);
2386 do_c8_c9_c10 = has_hsw_msrs(family, model); 2483 do_c8_c9_c10 = has_hsw_msrs(family, model);
2484 do_skl_residency = has_skl_msrs(family, model);
2387 do_slm_cstates = is_slm(family, model); 2485 do_slm_cstates = is_slm(family, model);
2388 bclk = discover_bclk(family, model); 2486 bclk = discover_bclk(family, model);
2389 2487