turbostat.c (5e5fd36c58d6c820f7292ee492c3731c9a104a41) turbostat.c (a5c6d65d06ebd09251fc3ff43f600d4d70966a4d)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * turbostat -- show CPU frequency and C-state residency
4 * on modern Intel and AMD processors.
5 *
6 * Copyright (c) 2022 Intel Corporation.
7 * Len Brown <len.brown@intel.com>
8 */

--- 112 unchanged lines hidden (view full) ---

121 { 0x0, "Core", "", 0, 0, 0, NULL, 0 },
122 { 0x0, "CPU", "", 0, 0, 0, NULL, 0 },
123 { 0x0, "APIC", "", 0, 0, 0, NULL, 0 },
124 { 0x0, "X2APIC", "", 0, 0, 0, NULL, 0 },
125 { 0x0, "Die", "", 0, 0, 0, NULL, 0 },
126 { 0x0, "GFXAMHz", "", 0, 0, 0, NULL, 0 },
127 { 0x0, "IPC", "", 0, 0, 0, NULL, 0 },
128 { 0x0, "CoreThr", "", 0, 0, 0, NULL, 0 },
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * turbostat -- show CPU frequency and C-state residency
4 * on modern Intel and AMD processors.
5 *
6 * Copyright (c) 2022 Intel Corporation.
7 * Len Brown <len.brown@intel.com>
8 */

--- 112 unchanged lines hidden (view full) ---

121 { 0x0, "Core", "", 0, 0, 0, NULL, 0 },
122 { 0x0, "CPU", "", 0, 0, 0, NULL, 0 },
123 { 0x0, "APIC", "", 0, 0, 0, NULL, 0 },
124 { 0x0, "X2APIC", "", 0, 0, 0, NULL, 0 },
125 { 0x0, "Die", "", 0, 0, 0, NULL, 0 },
126 { 0x0, "GFXAMHz", "", 0, 0, 0, NULL, 0 },
127 { 0x0, "IPC", "", 0, 0, 0, NULL, 0 },
128 { 0x0, "CoreThr", "", 0, 0, 0, NULL, 0 },
129 { 0x0, "UncMHz", "", 0, 0, 0, NULL, 0 },
129};
130
131#define MAX_BIC (sizeof(bic) / sizeof(struct msr_counter))
132#define BIC_USEC (1ULL << 0)
133#define BIC_TOD (1ULL << 1)
134#define BIC_Package (1ULL << 2)
135#define BIC_Node (1ULL << 3)
136#define BIC_Avg_MHz (1ULL << 4)

--- 41 unchanged lines hidden (view full) ---

178#define BIC_Core (1ULL << 46)
179#define BIC_CPU (1ULL << 47)
180#define BIC_APIC (1ULL << 48)
181#define BIC_X2APIC (1ULL << 49)
182#define BIC_Die (1ULL << 50)
183#define BIC_GFXACTMHz (1ULL << 51)
184#define BIC_IPC (1ULL << 52)
185#define BIC_CORE_THROT_CNT (1ULL << 53)
130};
131
132#define MAX_BIC (sizeof(bic) / sizeof(struct msr_counter))
133#define BIC_USEC (1ULL << 0)
134#define BIC_TOD (1ULL << 1)
135#define BIC_Package (1ULL << 2)
136#define BIC_Node (1ULL << 3)
137#define BIC_Avg_MHz (1ULL << 4)

--- 41 unchanged lines hidden (view full) ---

179#define BIC_Core (1ULL << 46)
180#define BIC_CPU (1ULL << 47)
181#define BIC_APIC (1ULL << 48)
182#define BIC_X2APIC (1ULL << 49)
183#define BIC_Die (1ULL << 50)
184#define BIC_GFXACTMHz (1ULL << 51)
185#define BIC_IPC (1ULL << 52)
186#define BIC_CORE_THROT_CNT (1ULL << 53)
187#define BIC_UNCORE_MHZ (1ULL << 54)
186
187#define BIC_TOPOLOGY (BIC_Package | BIC_Node | BIC_CoreCnt | BIC_PkgCnt | BIC_Core | BIC_CPU | BIC_Die )
188#define BIC_THERMAL_PWR ( BIC_CoreTmp | BIC_PkgTmp | BIC_PkgWatt | BIC_CorWatt | BIC_GFXWatt | BIC_RAMWatt | BIC_PKG__ | BIC_RAM__)
188
189#define BIC_TOPOLOGY (BIC_Package | BIC_Node | BIC_CoreCnt | BIC_PkgCnt | BIC_Core | BIC_CPU | BIC_Die )
190#define BIC_THERMAL_PWR ( BIC_CoreTmp | BIC_PkgTmp | BIC_PkgWatt | BIC_CorWatt | BIC_GFXWatt | BIC_RAMWatt | BIC_PKG__ | BIC_RAM__)
189#define BIC_FREQUENCY ( BIC_Avg_MHz | BIC_Busy | BIC_Bzy_MHz | BIC_TSC_MHz | BIC_GFXMHz | BIC_GFXACTMHz )
191#define BIC_FREQUENCY ( BIC_Avg_MHz | BIC_Busy | BIC_Bzy_MHz | BIC_TSC_MHz | BIC_GFXMHz | BIC_GFXACTMHz | BIC_UNCORE_MHZ)
190#define BIC_IDLE ( BIC_sysfs | BIC_CPU_c1 | BIC_CPU_c3 | BIC_CPU_c6 | BIC_CPU_c7 | BIC_GFX_rc6 | BIC_Pkgpc2 | BIC_Pkgpc3 | BIC_Pkgpc6 | BIC_Pkgpc7 | BIC_Pkgpc8 | BIC_Pkgpc9 | BIC_Pkgpc10 | BIC_CPU_LPI | BIC_SYS_LPI | BIC_Mod_c6 | BIC_Totl_c0 | BIC_Any_c0 | BIC_GFX_c0 | BIC_CPUGFX)
191#define BIC_OTHER ( BIC_IRQ | BIC_SMI | BIC_ThreadC | BIC_CoreTmp | BIC_IPC)
192
193#define BIC_DISABLED_BY_DEFAULT (BIC_USEC | BIC_TOD | BIC_APIC | BIC_X2APIC)
194
195unsigned long long bic_enabled = (0xFFFFFFFFFFFFFFFFULL & ~BIC_DISABLED_BY_DEFAULT);
196unsigned long long bic_present = BIC_USEC | BIC_TOD | BIC_sysfs | BIC_APIC | BIC_X2APIC;
197

--- 190 unchanged lines hidden (view full) ---

388 unsigned int package_id;
389 unsigned long long energy_pkg; /* MSR_PKG_ENERGY_STATUS */
390 unsigned long long energy_dram; /* MSR_DRAM_ENERGY_STATUS */
391 unsigned long long energy_cores; /* MSR_PP0_ENERGY_STATUS */
392 unsigned long long energy_gfx; /* MSR_PP1_ENERGY_STATUS */
393 unsigned long long rapl_pkg_perf_status; /* MSR_PKG_PERF_STATUS */
394 unsigned long long rapl_dram_perf_status; /* MSR_DRAM_PERF_STATUS */
395 unsigned int pkg_temp_c;
192#define BIC_IDLE ( BIC_sysfs | BIC_CPU_c1 | BIC_CPU_c3 | BIC_CPU_c6 | BIC_CPU_c7 | BIC_GFX_rc6 | BIC_Pkgpc2 | BIC_Pkgpc3 | BIC_Pkgpc6 | BIC_Pkgpc7 | BIC_Pkgpc8 | BIC_Pkgpc9 | BIC_Pkgpc10 | BIC_CPU_LPI | BIC_SYS_LPI | BIC_Mod_c6 | BIC_Totl_c0 | BIC_Any_c0 | BIC_GFX_c0 | BIC_CPUGFX)
193#define BIC_OTHER ( BIC_IRQ | BIC_SMI | BIC_ThreadC | BIC_CoreTmp | BIC_IPC)
194
195#define BIC_DISABLED_BY_DEFAULT (BIC_USEC | BIC_TOD | BIC_APIC | BIC_X2APIC)
196
197unsigned long long bic_enabled = (0xFFFFFFFFFFFFFFFFULL & ~BIC_DISABLED_BY_DEFAULT);
198unsigned long long bic_present = BIC_USEC | BIC_TOD | BIC_sysfs | BIC_APIC | BIC_X2APIC;
199

--- 190 unchanged lines hidden (view full) ---

390 unsigned int package_id;
391 unsigned long long energy_pkg; /* MSR_PKG_ENERGY_STATUS */
392 unsigned long long energy_dram; /* MSR_DRAM_ENERGY_STATUS */
393 unsigned long long energy_cores; /* MSR_PP0_ENERGY_STATUS */
394 unsigned long long energy_gfx; /* MSR_PP1_ENERGY_STATUS */
395 unsigned long long rapl_pkg_perf_status; /* MSR_PKG_PERF_STATUS */
396 unsigned long long rapl_dram_perf_status; /* MSR_DRAM_PERF_STATUS */
397 unsigned int pkg_temp_c;
398 unsigned int uncore_mhz;
396 unsigned long long counter[MAX_ADDED_COUNTERS];
397} *package_even, *package_odd;
398
399#define ODD_COUNTERS thread_odd, core_odd, package_odd
400#define EVEN_COUNTERS thread_even, core_even, package_even
401
402#define GET_THREAD(thread_base, thread_no, core_no, node_no, pkg_no) \
403 ((thread_base) + \

--- 579 unchanged lines hidden (view full) ---

983 outp += sprintf(outp, "%sGFX_J", (printed++ ? delim : ""));
984 if (DO_BIC(BIC_RAM_J))
985 outp += sprintf(outp, "%sRAM_J", (printed++ ? delim : ""));
986 if (DO_BIC(BIC_PKG__))
987 outp += sprintf(outp, "%sPKG_%%", (printed++ ? delim : ""));
988 if (DO_BIC(BIC_RAM__))
989 outp += sprintf(outp, "%sRAM_%%", (printed++ ? delim : ""));
990 }
399 unsigned long long counter[MAX_ADDED_COUNTERS];
400} *package_even, *package_odd;
401
402#define ODD_COUNTERS thread_odd, core_odd, package_odd
403#define EVEN_COUNTERS thread_even, core_even, package_even
404
405#define GET_THREAD(thread_base, thread_no, core_no, node_no, pkg_no) \
406 ((thread_base) + \

--- 579 unchanged lines hidden (view full) ---

986 outp += sprintf(outp, "%sGFX_J", (printed++ ? delim : ""));
987 if (DO_BIC(BIC_RAM_J))
988 outp += sprintf(outp, "%sRAM_J", (printed++ ? delim : ""));
989 if (DO_BIC(BIC_PKG__))
990 outp += sprintf(outp, "%sPKG_%%", (printed++ ? delim : ""));
991 if (DO_BIC(BIC_RAM__))
992 outp += sprintf(outp, "%sRAM_%%", (printed++ ? delim : ""));
993 }
994 if (DO_BIC(BIC_UNCORE_MHZ))
995 outp += sprintf(outp, "%sUncMHz", (printed++ ? delim : ""));
996
991 for (mp = sys.pp; mp; mp = mp->next) {
992 if (mp->format == FORMAT_RAW) {
993 if (mp->width == 64)
994 outp += sprintf(outp, "%s%18.18s", delim, mp->name);
995 else
996 outp += sprintf(outp, "%s%10.10s", delim, mp->name);
997 } else {
998 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns)

--- 366 unchanged lines hidden (view full) ---

1365 if (DO_BIC(BIC_PKG__))
1366 outp +=
1367 sprintf(outp, fmt8, (printed++ ? delim : ""),
1368 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float);
1369 if (DO_BIC(BIC_RAM__))
1370 outp +=
1371 sprintf(outp, fmt8, (printed++ ? delim : ""),
1372 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float);
997 for (mp = sys.pp; mp; mp = mp->next) {
998 if (mp->format == FORMAT_RAW) {
999 if (mp->width == 64)
1000 outp += sprintf(outp, "%s%18.18s", delim, mp->name);
1001 else
1002 outp += sprintf(outp, "%s%10.10s", delim, mp->name);
1003 } else {
1004 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns)

--- 366 unchanged lines hidden (view full) ---

1371 if (DO_BIC(BIC_PKG__))
1372 outp +=
1373 sprintf(outp, fmt8, (printed++ ? delim : ""),
1374 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float);
1375 if (DO_BIC(BIC_RAM__))
1376 outp +=
1377 sprintf(outp, fmt8, (printed++ ? delim : ""),
1378 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float);
1379 /* UncMHz */
1380 if (DO_BIC(BIC_UNCORE_MHZ))
1381 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), p->uncore_mhz);
1373
1374 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) {
1375 if (mp->format == FORMAT_RAW) {
1376 if (mp->width == 32)
1377 outp +=
1378 sprintf(outp, "%s0x%08x", (printed++ ? delim : ""), (unsigned int)p->counter[i]);
1379 else
1380 outp += sprintf(outp, "%s0x%016llx", (printed++ ? delim : ""), p->counter[i]);

--- 85 unchanged lines hidden (view full) ---

1466 old->pkg_temp_c = new->pkg_temp_c;
1467
1468 /* flag an error when rc6 counter resets/wraps */
1469 if (old->gfx_rc6_ms > new->gfx_rc6_ms)
1470 old->gfx_rc6_ms = -1;
1471 else
1472 old->gfx_rc6_ms = new->gfx_rc6_ms - old->gfx_rc6_ms;
1473
1382
1383 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) {
1384 if (mp->format == FORMAT_RAW) {
1385 if (mp->width == 32)
1386 outp +=
1387 sprintf(outp, "%s0x%08x", (printed++ ? delim : ""), (unsigned int)p->counter[i]);
1388 else
1389 outp += sprintf(outp, "%s0x%016llx", (printed++ ? delim : ""), p->counter[i]);

--- 85 unchanged lines hidden (view full) ---

1475 old->pkg_temp_c = new->pkg_temp_c;
1476
1477 /* flag an error when rc6 counter resets/wraps */
1478 if (old->gfx_rc6_ms > new->gfx_rc6_ms)
1479 old->gfx_rc6_ms = -1;
1480 else
1481 old->gfx_rc6_ms = new->gfx_rc6_ms - old->gfx_rc6_ms;
1482
1483 old->uncore_mhz = new->uncore_mhz;
1474 old->gfx_mhz = new->gfx_mhz;
1475 old->gfx_act_mhz = new->gfx_act_mhz;
1476
1477 old->energy_pkg = new->energy_pkg - old->energy_pkg;
1478 old->energy_cores = new->energy_cores - old->energy_cores;
1479 old->energy_gfx = new->energy_gfx - old->energy_gfx;
1480 old->energy_dram = new->energy_dram - old->energy_dram;
1481 old->rapl_pkg_perf_status = new->rapl_pkg_perf_status - old->rapl_pkg_perf_status;

--- 202 unchanged lines hidden (view full) ---

1684 p->energy_dram = 0;
1685 p->energy_cores = 0;
1686 p->energy_gfx = 0;
1687 p->rapl_pkg_perf_status = 0;
1688 p->rapl_dram_perf_status = 0;
1689 p->pkg_temp_c = 0;
1690
1691 p->gfx_rc6_ms = 0;
1484 old->gfx_mhz = new->gfx_mhz;
1485 old->gfx_act_mhz = new->gfx_act_mhz;
1486
1487 old->energy_pkg = new->energy_pkg - old->energy_pkg;
1488 old->energy_cores = new->energy_cores - old->energy_cores;
1489 old->energy_gfx = new->energy_gfx - old->energy_gfx;
1490 old->energy_dram = new->energy_dram - old->energy_dram;
1491 old->rapl_pkg_perf_status = new->rapl_pkg_perf_status - old->rapl_pkg_perf_status;

--- 202 unchanged lines hidden (view full) ---

1694 p->energy_dram = 0;
1695 p->energy_cores = 0;
1696 p->energy_gfx = 0;
1697 p->rapl_pkg_perf_status = 0;
1698 p->rapl_dram_perf_status = 0;
1699 p->pkg_temp_c = 0;
1700
1701 p->gfx_rc6_ms = 0;
1702 p->uncore_mhz = 0;
1692 p->gfx_mhz = 0;
1693 p->gfx_act_mhz = 0;
1694 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next)
1695 t->counter[i] = 0;
1696
1697 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next)
1698 c->counter[i] = 0;
1699

--- 83 unchanged lines hidden (view full) ---

1783 average.packages.sys_lpi = p->sys_lpi;
1784
1785 average.packages.energy_pkg += p->energy_pkg;
1786 average.packages.energy_dram += p->energy_dram;
1787 average.packages.energy_cores += p->energy_cores;
1788 average.packages.energy_gfx += p->energy_gfx;
1789
1790 average.packages.gfx_rc6_ms = p->gfx_rc6_ms;
1703 p->gfx_mhz = 0;
1704 p->gfx_act_mhz = 0;
1705 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next)
1706 t->counter[i] = 0;
1707
1708 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next)
1709 c->counter[i] = 0;
1710

--- 83 unchanged lines hidden (view full) ---

1794 average.packages.sys_lpi = p->sys_lpi;
1795
1796 average.packages.energy_pkg += p->energy_pkg;
1797 average.packages.energy_dram += p->energy_dram;
1798 average.packages.energy_cores += p->energy_cores;
1799 average.packages.energy_gfx += p->energy_gfx;
1800
1801 average.packages.gfx_rc6_ms = p->gfx_rc6_ms;
1802 average.packages.uncore_mhz = p->uncore_mhz;
1791 average.packages.gfx_mhz = p->gfx_mhz;
1792 average.packages.gfx_act_mhz = p->gfx_act_mhz;
1793
1794 average.packages.pkg_temp_c = MAX(average.packages.pkg_temp_c, p->pkg_temp_c);
1795
1796 average.packages.rapl_pkg_perf_status += p->rapl_pkg_perf_status;
1797 average.packages.rapl_dram_perf_status += p->rapl_dram_perf_status;
1798

--- 144 unchanged lines hidden (view full) ---

1943 } else {
1944 *counterp = snapshot_sysfs_counter(mp->path);
1945 }
1946 }
1947
1948 return 0;
1949}
1950
1803 average.packages.gfx_mhz = p->gfx_mhz;
1804 average.packages.gfx_act_mhz = p->gfx_act_mhz;
1805
1806 average.packages.pkg_temp_c = MAX(average.packages.pkg_temp_c, p->pkg_temp_c);
1807
1808 average.packages.rapl_pkg_perf_status += p->rapl_pkg_perf_status;
1809 average.packages.rapl_dram_perf_status += p->rapl_dram_perf_status;
1810

--- 144 unchanged lines hidden (view full) ---

1955 } else {
1956 *counterp = snapshot_sysfs_counter(mp->path);
1957 }
1958 }
1959
1960 return 0;
1961}
1962
1963unsigned long long get_uncore_mhz(int package, int die)
1964{
1965 char path[128];
1966
1967 sprintf(path, "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/current_freq_khz", package,
1968 die);
1969
1970 return (snapshot_sysfs_counter(path) / 1000);
1971}
1972
1951int get_epb(int cpu)
1952{
1953 char path[128 + PATH_BYTES];
1954 unsigned long long msr;
1955 int ret, epb = -1;
1956 FILE *fp;
1957
1958 sprintf(path, "/sys/devices/system/cpu/cpu%d/power/energy_perf_bias", cpu);

--- 333 unchanged lines hidden (view full) ---

2292 if (get_msr(cpu, MSR_IA32_PACKAGE_THERM_STATUS, &msr))
2293 return -17;
2294 p->pkg_temp_c = tj_max - ((msr >> 16) & 0x7F);
2295 }
2296
2297 if (DO_BIC(BIC_GFX_rc6))
2298 p->gfx_rc6_ms = gfx_cur_rc6_ms;
2299
1973int get_epb(int cpu)
1974{
1975 char path[128 + PATH_BYTES];
1976 unsigned long long msr;
1977 int ret, epb = -1;
1978 FILE *fp;
1979
1980 sprintf(path, "/sys/devices/system/cpu/cpu%d/power/energy_perf_bias", cpu);

--- 333 unchanged lines hidden (view full) ---

2314 if (get_msr(cpu, MSR_IA32_PACKAGE_THERM_STATUS, &msr))
2315 return -17;
2316 p->pkg_temp_c = tj_max - ((msr >> 16) & 0x7F);
2317 }
2318
2319 if (DO_BIC(BIC_GFX_rc6))
2320 p->gfx_rc6_ms = gfx_cur_rc6_ms;
2321
2322 /* n.b. assume die0 uncore frequency applies to whole package */
2323 if (DO_BIC(BIC_UNCORE_MHZ))
2324 p->uncore_mhz = get_uncore_mhz(p->package_id, 0);
2325
2300 if (DO_BIC(BIC_GFXMHz))
2301 p->gfx_mhz = gfx_cur_mhz;
2302
2303 if (DO_BIC(BIC_GFXACTMHz))
2304 p->gfx_act_mhz = gfx_act_mhz;
2305
2306 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) {
2307 if (get_mp(cpu, mp, &p->counter[i]))

--- 1785 unchanged lines hidden (view full) ---

4093 dump_knl_turbo_ratio_limits();
4094
4095 if (has_config_tdp(family, model))
4096 dump_config_tdp();
4097
4098 dump_nhm_cst_cfg();
4099}
4100
2326 if (DO_BIC(BIC_GFXMHz))
2327 p->gfx_mhz = gfx_cur_mhz;
2328
2329 if (DO_BIC(BIC_GFXACTMHz))
2330 p->gfx_act_mhz = gfx_act_mhz;
2331
2332 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) {
2333 if (get_mp(cpu, mp, &p->counter[i]))

--- 1785 unchanged lines hidden (view full) ---

4119 dump_knl_turbo_ratio_limits();
4120
4121 if (has_config_tdp(family, model))
4122 dump_config_tdp();
4123
4124 dump_nhm_cst_cfg();
4125}
4126
4127static int read_sysfs_int(char *path)
4128{
4129 FILE *input;
4130 int retval = -1;
4131
4132 input = fopen(path, "r");
4133 if (input == NULL) {
4134 if (debug)
4135 fprintf(outf, "NSFOD %s\n", path);
4136 return (-1);
4137 }
4138 if (fscanf(input, "%d", &retval) != 1)
4139 err(1, "%s: failed to read int from file", path);
4140 fclose(input);
4141
4142 return (retval);
4143}
4144
4101static void dump_sysfs_file(char *path)
4102{
4103 FILE *input;
4104 char cpuidle_buf[64];
4105
4106 input = fopen(path, "r");
4107 if (input == NULL) {
4108 if (debug)
4109 fprintf(outf, "NSFOD %s\n", path);
4110 return;
4111 }
4112 if (!fgets(cpuidle_buf, sizeof(cpuidle_buf), input))
4113 err(1, "%s: failed to read file", path);
4114 fclose(input);
4115
4116 fprintf(outf, "%s: %s", strrchr(path, '/') + 1, cpuidle_buf);
4117}
4118
4145static void dump_sysfs_file(char *path)
4146{
4147 FILE *input;
4148 char cpuidle_buf[64];
4149
4150 input = fopen(path, "r");
4151 if (input == NULL) {
4152 if (debug)
4153 fprintf(outf, "NSFOD %s\n", path);
4154 return;
4155 }
4156 if (!fgets(cpuidle_buf, sizeof(cpuidle_buf), input))
4157 err(1, "%s: failed to read file", path);
4158 fclose(input);
4159
4160 fprintf(outf, "%s: %s", strrchr(path, '/') + 1, cpuidle_buf);
4161}
4162
4163static void intel_uncore_frequency_probe(void)
4164{
4165 int i, j;
4166 char path[128];
4167
4168 if (!genuine_intel)
4169 return;
4170
4171 if (access("/sys/devices/system/cpu/intel_uncore_frequency/package_00_die_00", R_OK))
4172 return;
4173
4174 if (!access("/sys/devices/system/cpu/intel_uncore_frequency/package_00_die_00/current_freq_khz", R_OK))
4175 BIC_PRESENT(BIC_UNCORE_MHZ);
4176
4177 if (quiet)
4178 return;
4179
4180 for (i = 0; i < topo.num_packages; ++i) {
4181 for (j = 0; j < topo.num_die; ++j) {
4182 int k, l;
4183
4184 sprintf(path, "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/min_freq_khz",
4185 i, j);
4186 k = read_sysfs_int(path);
4187 sprintf(path, "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/max_freq_khz",
4188 i, j);
4189 l = read_sysfs_int(path);
4190 fprintf(outf, "Uncore Frequency pkg%d die%d: %d - %d MHz ", i, j, k / 1000, l / 1000);
4191
4192 sprintf(path,
4193 "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/initial_min_freq_khz",
4194 i, j);
4195 k = read_sysfs_int(path);
4196 sprintf(path,
4197 "/sys/devices/system/cpu/intel_uncore_frequency/package_0%d_die_0%d/initial_max_freq_khz",
4198 i, j);
4199 l = read_sysfs_int(path);
4200 fprintf(outf, "(%d - %d MHz)\n", k / 1000, l / 1000);
4201 }
4202 }
4203}
4204
4119static void dump_sysfs_cstate_config(void)
4120{
4121 char path[64];
4122 char name_buf[16];
4123 char desc[64];
4124 FILE *input;
4125 int state;
4126 char *sp;

--- 1568 unchanged lines hidden (view full) ---

5695 rapl_probe(family, model);
5696 perf_limit_reasons_probe(family, model);
5697 automatic_cstate_conversion_probe(family, model);
5698
5699 check_tcc_offset(model_orig);
5700
5701 if (!quiet)
5702 dump_cstate_pstate_config_info(family, model);
4205static void dump_sysfs_cstate_config(void)
4206{
4207 char path[64];
4208 char name_buf[16];
4209 char desc[64];
4210 FILE *input;
4211 int state;
4212 char *sp;

--- 1568 unchanged lines hidden (view full) ---

5781 rapl_probe(family, model);
5782 perf_limit_reasons_probe(family, model);
5783 automatic_cstate_conversion_probe(family, model);
5784
5785 check_tcc_offset(model_orig);
5786
5787 if (!quiet)
5788 dump_cstate_pstate_config_info(family, model);
5789 intel_uncore_frequency_probe();
5703
5704 if (!quiet)
5705 print_dev_latency();
5706 if (!quiet)
5707 dump_sysfs_cstate_config();
5708 if (!quiet)
5709 dump_sysfs_pstate_config();
5710

--- 950 unchanged lines hidden ---
5790
5791 if (!quiet)
5792 print_dev_latency();
5793 if (!quiet)
5794 dump_sysfs_cstate_config();
5795 if (!quiet)
5796 dump_sysfs_pstate_config();
5797

--- 950 unchanged lines hidden ---