turbostat.c (5a63426e2a18775ed05b20e3bc90c68bacb1f68a) | turbostat.c (e4085d543e256aff6606ba99ed257f7c06685f3b) |
---|---|
1/* 2 * turbostat -- show CPU frequency and C-state residency 3 * on modern Intel turbo-capable processors. 4 * 5 * Copyright (c) 2013 Intel Corporation. 6 * Len Brown <len.brown@intel.com> 7 * 8 * This program is free software; you can redistribute it and/or modify it --- 1284 unchanged lines hidden (view full) --- 1293 "pc3", "pc4", "pc6", "pc6n", "pc6r", "pc7", "pc7s", "pc8", "pc9", "unlimited"}; 1294 1295int nhm_pkg_cstate_limits[16] = {PCL__0, PCL__1, PCL__3, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1296int snb_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCL__7, PCL_7S, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1297int hsw_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL__3, PCL__6, PCL__7, PCL_7S, PCL__8, PCL__9, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1298int slv_pkg_cstate_limits[16] = {PCL__0, PCL__1, PCLRSV, PCLRSV, PCL__4, PCLRSV, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1299int amt_pkg_cstate_limits[16] = {PCL__0, PCL__1, PCL__2, PCLRSV, PCLRSV, PCLRSV, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1300int phi_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCLRSV, PCLRSV, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; | 1/* 2 * turbostat -- show CPU frequency and C-state residency 3 * on modern Intel turbo-capable processors. 4 * 5 * Copyright (c) 2013 Intel Corporation. 6 * Len Brown <len.brown@intel.com> 7 * 8 * This program is free software; you can redistribute it and/or modify it --- 1284 unchanged lines hidden (view full) --- 1293 "pc3", "pc4", "pc6", "pc6n", "pc6r", "pc7", "pc7s", "pc8", "pc9", "unlimited"}; 1294 1295int nhm_pkg_cstate_limits[16] = {PCL__0, PCL__1, PCL__3, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1296int snb_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCL__7, PCL_7S, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1297int hsw_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL__3, PCL__6, PCL__7, PCL_7S, PCL__8, PCL__9, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1298int slv_pkg_cstate_limits[16] = {PCL__0, PCL__1, PCLRSV, PCLRSV, PCL__4, PCLRSV, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1299int amt_pkg_cstate_limits[16] = {PCL__0, PCL__1, PCL__2, PCLRSV, PCLRSV, PCLRSV, PCL__6, PCL__7, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; 1300int phi_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCLRSV, PCLRSV, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; |
1301int bxt_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV}; |
|
1301 1302 1303static void 1304calculate_tsc_tweak() 1305{ 1306 tsc_tweak = base_hz / tsc_hz; 1307} 1308 --- 885 unchanged lines hidden (view full) --- 2194 pkg_cstate_limits = slv_pkg_cstate_limits; 2195 break; 2196 case 0x4C: /* AMT */ 2197 pkg_cstate_limits = amt_pkg_cstate_limits; 2198 break; 2199 case 0x57: /* PHI */ 2200 pkg_cstate_limits = phi_pkg_cstate_limits; 2201 break; | 1302 1303 1304static void 1305calculate_tsc_tweak() 1306{ 1307 tsc_tweak = base_hz / tsc_hz; 1308} 1309 --- 885 unchanged lines hidden (view full) --- 2195 pkg_cstate_limits = slv_pkg_cstate_limits; 2196 break; 2197 case 0x4C: /* AMT */ 2198 pkg_cstate_limits = amt_pkg_cstate_limits; 2199 break; 2200 case 0x57: /* PHI */ 2201 pkg_cstate_limits = phi_pkg_cstate_limits; 2202 break; |
2203 case 0x5C: /* BXT */ 2204 pkg_cstate_limits = bxt_pkg_cstate_limits; 2205 break; |
|
2202 default: 2203 return 0; 2204 } 2205 get_msr(base_cpu, MSR_NHM_SNB_PKG_CST_CFG_CTL, &msr); 2206 pkg_cstate_limit = pkg_cstate_limits[msr & 0xF]; 2207 2208 get_msr(base_cpu, MSR_PLATFORM_INFO, &msr); 2209 base_ratio = (msr >> 8) & 0xFF; --- 413 unchanged lines hidden (view full) --- 2623 case 0x3A: 2624 case 0x3C: /* HSW */ 2625 case 0x45: /* HSW */ 2626 case 0x46: /* HSW */ 2627 case 0x3D: /* BDW */ 2628 case 0x47: /* BDW */ 2629 do_rapl = RAPL_PKG | RAPL_CORES | RAPL_CORE_POLICY | RAPL_GFX | RAPL_PKG_POWER_INFO; 2630 break; | 2206 default: 2207 return 0; 2208 } 2209 get_msr(base_cpu, MSR_NHM_SNB_PKG_CST_CFG_CTL, &msr); 2210 pkg_cstate_limit = pkg_cstate_limits[msr & 0xF]; 2211 2212 get_msr(base_cpu, MSR_PLATFORM_INFO, &msr); 2213 base_ratio = (msr >> 8) & 0xFF; --- 413 unchanged lines hidden (view full) --- 2627 case 0x3A: 2628 case 0x3C: /* HSW */ 2629 case 0x45: /* HSW */ 2630 case 0x46: /* HSW */ 2631 case 0x3D: /* BDW */ 2632 case 0x47: /* BDW */ 2633 do_rapl = RAPL_PKG | RAPL_CORES | RAPL_CORE_POLICY | RAPL_GFX | RAPL_PKG_POWER_INFO; 2634 break; |
2635 case 0x5C: /* BXT */ 2636 do_rapl = RAPL_PKG | RAPL_PKG_POWER_INFO; 2637 break; |
|
2631 case 0x4E: /* SKL */ 2632 case 0x5E: /* SKL */ 2633 do_rapl = RAPL_PKG | RAPL_DRAM | RAPL_DRAM_PERF_STATUS | RAPL_PKG_PERF_STATUS | RAPL_PKG_POWER_INFO; 2634 break; 2635 case 0x3F: /* HSX */ 2636 case 0x4F: /* BDX */ 2637 case 0x56: /* BDX-DE */ 2638 case 0x57: /* KNL */ --- 270 unchanged lines hidden (view full) --- 2909 case 0x45: /* HSW */ 2910 case 0x46: /* HSW */ 2911 case 0x3D: /* BDW */ 2912 case 0x47: /* BDW */ 2913 case 0x4F: /* BDX */ 2914 case 0x56: /* BDX-DE */ 2915 case 0x4E: /* SKL */ 2916 case 0x5E: /* SKL */ | 2638 case 0x4E: /* SKL */ 2639 case 0x5E: /* SKL */ 2640 do_rapl = RAPL_PKG | RAPL_DRAM | RAPL_DRAM_PERF_STATUS | RAPL_PKG_PERF_STATUS | RAPL_PKG_POWER_INFO; 2641 break; 2642 case 0x3F: /* HSX */ 2643 case 0x4F: /* BDX */ 2644 case 0x56: /* BDX-DE */ 2645 case 0x57: /* KNL */ --- 270 unchanged lines hidden (view full) --- 2916 case 0x45: /* HSW */ 2917 case 0x46: /* HSW */ 2918 case 0x3D: /* BDW */ 2919 case 0x47: /* BDW */ 2920 case 0x4F: /* BDX */ 2921 case 0x56: /* BDX-DE */ 2922 case 0x4E: /* SKL */ 2923 case 0x5E: /* SKL */ |
2924 case 0x5C: /* BXT */ |
|
2917 return 1; 2918 } 2919 return 0; 2920} 2921 2922/* 2923 * HSW adds support for additional MSRs: 2924 * --- 11 unchanged lines hidden (view full) --- 2936 if (!genuine_intel) 2937 return 0; 2938 2939 switch (model) { 2940 case 0x45: /* HSW */ 2941 case 0x3D: /* BDW */ 2942 case 0x4E: /* SKL */ 2943 case 0x5E: /* SKL */ | 2925 return 1; 2926 } 2927 return 0; 2928} 2929 2930/* 2931 * HSW adds support for additional MSRs: 2932 * --- 11 unchanged lines hidden (view full) --- 2944 if (!genuine_intel) 2945 return 0; 2946 2947 switch (model) { 2948 case 0x45: /* HSW */ 2949 case 0x3D: /* BDW */ 2950 case 0x4E: /* SKL */ 2951 case 0x5E: /* SKL */ |
2952 case 0x5C: /* BXT */ |
|
2944 return 1; 2945 } 2946 return 0; 2947} 2948 2949/* 2950 * SKL adds support for additional MSRS: 2951 * --- 852 unchanged lines hidden --- | 2953 return 1; 2954 } 2955 return 0; 2956} 2957 2958/* 2959 * SKL adds support for additional MSRS: 2960 * --- 852 unchanged lines hidden --- |