Lines Matching +full:operating +full:- +full:range +full:- +full:celsius
1 // SPDX-License-Identifier: GPL-2.0-only
3 * turbostat -- show CPU frequency and C-state residency
44 * 1. built-in only, the sysfs counters are not here -- we learn of those at run-time
46 * matching on them for --show and --hide.
51 * Usually truncated to 7 characters, but also handles 18 columns for raw 64-bit counters
293 …bool has_per_core_rapl; /* Indicates cores energy collection is per-core, not per-package. AMD spe…
934 /* MSRs that are not yet in the kernel-provided header. */
975 unsigned long long mc6_us; /* duplicate as per-core for now, even though per module */
1050 /* get_msr_sum() = sum + (get_msr() - last) */
1068 if (platform->rapl_msrs & RAPL_AMD_F17H) in idx_to_offset()
1089 offset = -1; in idx_to_offset()
1119 idx = -1; in offset_to_idx()
1128 return platform->rapl_msrs & (RAPL_PKG | RAPL_AMD_F17H); in idx_valid()
1130 return platform->rapl_msrs & RAPL_DRAM; in idx_valid()
1132 return platform->rapl_msrs & RAPL_CORE_ENERGY_STATUS; in idx_valid()
1134 return platform->rapl_msrs & RAPL_GFX; in idx_valid()
1136 return platform->rapl_msrs & RAPL_PKG_PERF_STATUS; in idx_valid()
1138 return platform->rapl_msrs & RAPL_DRAM_PERF_STATUS; in idx_valid()
1164 int logical_node_id; /* 0-based count within the package */
1208 * skip non-present cpus
1225 if (cpu_is_not_allowed(t->cpu_id)) in for_all_cpus()
1245 return ((int)t->cpu_id == c->base_cpu || c->base_cpu < 0); in is_cpu_first_thread_in_core()
1252 return ((int)t->cpu_id == p->base_cpu || p->base_cpu < 0); in is_cpu_first_core_in_package()
1264 if (sched_setaffinity(0, cpu_affinity_setsize, cpu_affinity_set) == -1) in cpu_migrate()
1265 return -1; in cpu_migrate()
1283 err(-1, "%s open failed, try chown or chmod +r /dev/cpu/*/msr, or run as root", pathname); in get_msr_fd()
1306 fd = perf_event_open(&pea, -1, cpu_num, -1, 0); in perf_instr_count_open()
1307 if (fd == -1) { in perf_instr_count_open()
1332 err(-1, "cpu%d: msr offset 0x%llx read failed", cpu, (unsigned long long)offset); in get_msr()
1344 * HIDE_LIST - hide this list of counters, show the rest [default]
1345 * SHOW_LIST - show this list of counters, hide the rest
1352 "Usage: turbostat [OPTIONS][(--interval seconds) | COMMAND ...]\n" in help()
1356 "If no COMMAND is specified, turbostat wakes every 5-seconds\n" in help()
1358 " -a, --add add a counter\n" in help()
1359 " eg. --add msr0x10,u64,cpu,delta,MY_TSC\n" in help()
1360 " -c, --cpu cpu-set limit output to summary plus cpu-set:\n" in help()
1361 " {core | package | j,k,l..m,n-p }\n" in help()
1362 " -d, --debug displays usec, Time_Of_Day_Seconds and more debugging\n" in help()
1363 " -D, --Dump displays the raw counter values\n" in help()
1364 " -e, --enable [all | column]\n" in help()
1366 " -H, --hide [column|column,column,...]\n" in help()
1368 " -i, --interval sec.subsec\n" in help()
1369 " Override default 5-second measurement interval\n" in help()
1370 " -J, --Joules displays energy in Joules instead of Watts\n" in help()
1371 " -l, --list list column headers only\n" in help()
1372 " -n, --num_iterations num\n" in help()
1374 " -N, --header_iterations num\n" in help()
1376 " -o, --out file\n" in help()
1378 " -q, --quiet skip decoding system configuration header\n" in help()
1379 " -s, --show [column|column,column,...]\n" in help()
1381 " -S, --Summary\n" in help()
1382 " limits output to 1-line system summary per interval\n" in help()
1383 " -T, --TCC temperature\n" in help()
1385 " degrees Celsius\n" in help()
1386 " -h, --help print this help message\n" in help()
1387 " -v, --version print version information\n" "\n" "For more help, run \"man turbostat\"\n"); in help()
1438 fprintf(stderr, "More than max %d un-recognized --add options '%s'\n", in bic_lookup()
1448 fprintf(stderr, "More than max %d un-recognized --skip options '%s'\n", in bic_lookup()
1509 for (mp = sys.tp; mp; mp = mp->next) { in print_header()
1511 if (mp->format == FORMAT_RAW) { in print_header()
1512 if (mp->width == 64) in print_header()
1513 outp += sprintf(outp, "%s%18.18s", (printed++ ? delim : ""), mp->name); in print_header()
1515 outp += sprintf(outp, "%s%10.10s", (printed++ ? delim : ""), mp->name); in print_header()
1517 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) in print_header()
1518 outp += sprintf(outp, "%s%8s", (printed++ ? delim : ""), mp->name); in print_header()
1520 outp += sprintf(outp, "%s%s", (printed++ ? delim : ""), mp->name); in print_header()
1542 if (platform->rapl_msrs && !rapl_joules) { in print_header()
1543 if (DO_BIC(BIC_CorWatt) && platform->has_per_core_rapl) in print_header()
1545 } else if (platform->rapl_msrs && rapl_joules) { in print_header()
1546 if (DO_BIC(BIC_Cor_J) && platform->has_per_core_rapl) in print_header()
1550 for (mp = sys.cp; mp; mp = mp->next) { in print_header()
1551 if (mp->format == FORMAT_RAW) { in print_header()
1552 if (mp->width == 64) in print_header()
1553 outp += sprintf(outp, "%s%18.18s", delim, mp->name); in print_header()
1555 outp += sprintf(outp, "%s%10.10s", delim, mp->name); in print_header()
1557 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) in print_header()
1558 outp += sprintf(outp, "%s%8s", delim, mp->name); in print_header()
1560 outp += sprintf(outp, "%s%s", delim, mp->name); in print_header()
1604 if (platform->rapl_msrs && !rapl_joules) { in print_header()
1607 if (DO_BIC(BIC_CorWatt) && !platform->has_per_core_rapl) in print_header()
1617 } else if (platform->rapl_msrs && rapl_joules) { in print_header()
1620 if (DO_BIC(BIC_Cor_J) && !platform->has_per_core_rapl) in print_header()
1634 for (mp = sys.pp; mp; mp = mp->next) { in print_header()
1635 if (mp->format == FORMAT_RAW) { in print_header()
1636 if (mp->width == 64) in print_header()
1637 outp += sprintf(outp, "%s%18.18s", delim, mp->name); in print_header()
1639 outp += sprintf(outp, "%s%10.10s", delim, mp->name); in print_header()
1641 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) in print_header()
1642 outp += sprintf(outp, "%s%8s", delim, mp->name); in print_header()
1644 outp += sprintf(outp, "%s%s", delim, mp->name); in print_header()
1659 outp += sprintf(outp, "CPU: %d flags 0x%x\n", t->cpu_id, t->flags); in dump_counters()
1660 outp += sprintf(outp, "TSC: %016llX\n", t->tsc); in dump_counters()
1661 outp += sprintf(outp, "aperf: %016llX\n", t->aperf); in dump_counters()
1662 outp += sprintf(outp, "mperf: %016llX\n", t->mperf); in dump_counters()
1663 outp += sprintf(outp, "c1: %016llX\n", t->c1); in dump_counters()
1666 outp += sprintf(outp, "IPC: %lld\n", t->instr_count); in dump_counters()
1669 outp += sprintf(outp, "IRQ: %lld\n", t->irq_count); in dump_counters()
1671 outp += sprintf(outp, "SMI: %d\n", t->smi_count); in dump_counters()
1673 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in dump_counters()
1674 outp += sprintf(outp, "tADDED [%d] msr0x%x: %08llX\n", i, mp->msr_num, t->counter[i]); in dump_counters()
1679 outp += sprintf(outp, "core: %d\n", c->core_id); in dump_counters()
1680 outp += sprintf(outp, "c3: %016llX\n", c->c3); in dump_counters()
1681 outp += sprintf(outp, "c6: %016llX\n", c->c6); in dump_counters()
1682 outp += sprintf(outp, "c7: %016llX\n", c->c7); in dump_counters()
1683 outp += sprintf(outp, "DTS: %dC\n", c->core_temp_c); in dump_counters()
1684 outp += sprintf(outp, "cpu_throt_count: %016llX\n", c->core_throt_cnt); in dump_counters()
1685 outp += sprintf(outp, "Joules: %0X\n", c->core_energy); in dump_counters()
1687 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in dump_counters()
1688 outp += sprintf(outp, "cADDED [%d] msr0x%x: %08llX\n", i, mp->msr_num, c->counter[i]); in dump_counters()
1690 outp += sprintf(outp, "mc6_us: %016llX\n", c->mc6_us); in dump_counters()
1694 outp += sprintf(outp, "package: %d\n", p->package_id); in dump_counters()
1696 outp += sprintf(outp, "Weighted cores: %016llX\n", p->pkg_wtd_core_c0); in dump_counters()
1697 outp += sprintf(outp, "Any cores: %016llX\n", p->pkg_any_core_c0); in dump_counters()
1698 outp += sprintf(outp, "Any GFX: %016llX\n", p->pkg_any_gfxe_c0); in dump_counters()
1699 outp += sprintf(outp, "CPU + GFX: %016llX\n", p->pkg_both_core_gfxe_c0); in dump_counters()
1701 outp += sprintf(outp, "pc2: %016llX\n", p->pc2); in dump_counters()
1703 outp += sprintf(outp, "pc3: %016llX\n", p->pc3); in dump_counters()
1705 outp += sprintf(outp, "pc6: %016llX\n", p->pc6); in dump_counters()
1707 outp += sprintf(outp, "pc7: %016llX\n", p->pc7); in dump_counters()
1708 outp += sprintf(outp, "pc8: %016llX\n", p->pc8); in dump_counters()
1709 outp += sprintf(outp, "pc9: %016llX\n", p->pc9); in dump_counters()
1710 outp += sprintf(outp, "pc10: %016llX\n", p->pc10); in dump_counters()
1711 outp += sprintf(outp, "cpu_lpi: %016llX\n", p->cpu_lpi); in dump_counters()
1712 outp += sprintf(outp, "sys_lpi: %016llX\n", p->sys_lpi); in dump_counters()
1713 outp += sprintf(outp, "Joules PKG: %0llX\n", p->energy_pkg); in dump_counters()
1714 outp += sprintf(outp, "Joules COR: %0llX\n", p->energy_cores); in dump_counters()
1715 outp += sprintf(outp, "Joules GFX: %0llX\n", p->energy_gfx); in dump_counters()
1716 outp += sprintf(outp, "Joules RAM: %0llX\n", p->energy_dram); in dump_counters()
1717 outp += sprintf(outp, "Throttle PKG: %0llX\n", p->rapl_pkg_perf_status); in dump_counters()
1718 outp += sprintf(outp, "Throttle RAM: %0llX\n", p->rapl_dram_perf_status); in dump_counters()
1719 outp += sprintf(outp, "PTM: %dC\n", p->pkg_temp_c); in dump_counters()
1721 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in dump_counters()
1722 outp += sprintf(outp, "pADDED [%d] msr0x%x: %08llX\n", i, mp->msr_num, p->counter[i]); in dump_counters()
1751 /*if not summary line and --cpu is used */ in format_counters()
1752 …if ((t != &average.threads) && (cpu_subset && !CPU_ISSET_S(t->cpu_id, cpu_subset_size, cpu_subset)… in format_counters()
1759 timersub(&t->tv_end, &t->tv_begin, &tv); in format_counters()
1765 outp += sprintf(outp, "%10ld.%06ld\t", t->tv_end.tv_sec, t->tv_end.tv_usec); in format_counters()
1767 interval_float = t->tv_delta.tv_sec + t->tv_delta.tv_usec / 1000000.0; in format_counters()
1769 tsc = t->tsc * tsc_tweak; in format_counters()
1774 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1776 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1778 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1780 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1782 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1784 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1786 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1790 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), p->package_id); in format_counters()
1792 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1796 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), cpus[t->cpu_id].die_id); in format_counters()
1798 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1803 (printed++ ? delim : ""), cpus[t->cpu_id].physical_node_id); in format_counters()
1805 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1809 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), c->core_id); in format_counters()
1811 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); in format_counters()
1814 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), t->cpu_id); in format_counters()
1816 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), t->apic_id); in format_counters()
1818 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), t->x2apic_id); in format_counters()
1822 …outp += sprintf(outp, "%s%.0f", (printed++ ? delim : ""), 1.0 / units * t->aperf / interval_float); in format_counters()
1825 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * t->mperf / tsc); in format_counters()
1830 sprintf(outp, "%s%.0f", (printed++ ? delim : ""), base_hz / units * t->aperf / t->mperf); in format_counters()
1833 tsc / units * t->aperf / t->mperf / interval_float); in format_counters()
1837 outp += sprintf(outp, "%s%.0f", (printed++ ? delim : ""), 1.0 * t->tsc / units / interval_float); in format_counters()
1840 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 1.0 * t->instr_count / t->aperf); in format_counters()
1845 outp += sprintf(outp, "%s%8lld", (printed++ ? delim : ""), t->irq_count); in format_counters()
1847 outp += sprintf(outp, "%s%lld", (printed++ ? delim : ""), t->irq_count); in format_counters()
1852 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), t->smi_count); in format_counters()
1855 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in format_counters()
1856 if (mp->format == FORMAT_RAW) { in format_counters()
1857 if (mp->width == 32) in format_counters()
1859 sprintf(outp, "%s0x%08x", (printed++ ? delim : ""), (unsigned int)t->counter[i]); in format_counters()
1861 outp += sprintf(outp, "%s0x%016llx", (printed++ ? delim : ""), t->counter[i]); in format_counters()
1862 } else if (mp->format == FORMAT_DELTA) { in format_counters()
1863 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) in format_counters()
1864 outp += sprintf(outp, "%s%8lld", (printed++ ? delim : ""), t->counter[i]); in format_counters()
1866 outp += sprintf(outp, "%s%lld", (printed++ ? delim : ""), t->counter[i]); in format_counters()
1867 } else if (mp->format == FORMAT_PERCENT) { in format_counters()
1868 if (mp->type == COUNTER_USEC) in format_counters()
1871 t->counter[i] / interval_float / 10000); in format_counters()
1873 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * t->counter[i] / tsc); in format_counters()
1879 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * t->c1 / tsc); in format_counters()
1881 /* print per-core data only for 1st thread in core */ in format_counters()
1886 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * c->c3 / tsc); in format_counters()
1888 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * c->c6 / tsc); in format_counters()
1890 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * c->c7 / tsc); in format_counters()
1894 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * c->mc6_us / tsc); in format_counters()
1897 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), c->core_temp_c); in format_counters()
1901 outp += sprintf(outp, "%s%lld", (printed++ ? delim : ""), c->core_throt_cnt); in format_counters()
1903 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in format_counters()
1904 if (mp->format == FORMAT_RAW) { in format_counters()
1905 if (mp->width == 32) in format_counters()
1907 sprintf(outp, "%s0x%08x", (printed++ ? delim : ""), (unsigned int)c->counter[i]); in format_counters()
1909 outp += sprintf(outp, "%s0x%016llx", (printed++ ? delim : ""), c->counter[i]); in format_counters()
1910 } else if (mp->format == FORMAT_DELTA) { in format_counters()
1911 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) in format_counters()
1912 outp += sprintf(outp, "%s%8lld", (printed++ ? delim : ""), c->counter[i]); in format_counters()
1914 outp += sprintf(outp, "%s%lld", (printed++ ? delim : ""), c->counter[i]); in format_counters()
1915 } else if (mp->format == FORMAT_PERCENT) { in format_counters()
1916 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * c->counter[i] / tsc); in format_counters()
1922 if (DO_BIC(BIC_CorWatt) && platform->has_per_core_rapl) in format_counters()
1924 …sprintf(outp, fmt8, (printed++ ? delim : ""), c->core_energy * rapl_energy_units / interval_float); in format_counters()
1925 if (DO_BIC(BIC_Cor_J) && platform->has_per_core_rapl) in format_counters()
1926 outp += sprintf(outp, fmt8, (printed++ ? delim : ""), c->core_energy * rapl_energy_units); in format_counters()
1928 /* print per-package data only for 1st core in package */ in format_counters()
1934 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), p->pkg_temp_c); in format_counters()
1938 if (p->gfx_rc6_ms == -1) { /* detect GFX counter reset */ in format_counters()
1942 p->gfx_rc6_ms / 10.0 / interval_float); in format_counters()
1948 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), p->gfx_mhz); in format_counters()
1952 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), p->gfx_act_mhz); in format_counters()
1956 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pkg_wtd_core_c0 / tsc); in format_counters()
1958 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pkg_any_core_c0 / tsc); in format_counters()
1960 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pkg_any_gfxe_c0 / tsc); in format_counters()
1962 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pkg_both_core_gfxe_c0 / tsc); in format_counters()
1965 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pc2 / tsc); in format_counters()
1967 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pc3 / tsc); in format_counters()
1969 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pc6 / tsc); in format_counters()
1971 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pc7 / tsc); in format_counters()
1973 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pc8 / tsc); in format_counters()
1975 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pc9 / tsc); in format_counters()
1977 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->pc10 / tsc); in format_counters()
1981 …sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->cpu_lpi / 1000000.0 / interval_float); in format_counters()
1984 …sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->sys_lpi / 1000000.0 / interval_float); in format_counters()
1988 … sprintf(outp, fmt8, (printed++ ? delim : ""), p->energy_pkg * rapl_energy_units / interval_float); in format_counters()
1990 if (DO_BIC(BIC_CorWatt) && !platform->has_per_core_rapl) in format_counters()
1992 …sprintf(outp, fmt8, (printed++ ? delim : ""), p->energy_cores * rapl_energy_units / interval_float… in format_counters()
1995 … sprintf(outp, fmt8, (printed++ ? delim : ""), p->energy_gfx * rapl_energy_units / interval_float); in format_counters()
1999 p->energy_dram * rapl_dram_energy_units / interval_float); in format_counters()
2001 outp += sprintf(outp, fmt8, (printed++ ? delim : ""), p->energy_pkg * rapl_energy_units); in format_counters()
2002 if (DO_BIC(BIC_Cor_J) && !platform->has_per_core_rapl) in format_counters()
2003 outp += sprintf(outp, fmt8, (printed++ ? delim : ""), p->energy_cores * rapl_energy_units); in format_counters()
2005 outp += sprintf(outp, fmt8, (printed++ ? delim : ""), p->energy_gfx * rapl_energy_units); in format_counters()
2007 outp += sprintf(outp, fmt8, (printed++ ? delim : ""), p->energy_dram * rapl_dram_energy_units); in format_counters()
2011 100.0 * p->rapl_pkg_perf_status * rapl_time_units / interval_float); in format_counters()
2015 100.0 * p->rapl_dram_perf_status * rapl_time_units / interval_float); in format_counters()
2018 outp += sprintf(outp, "%s%d", (printed++ ? delim : ""), p->uncore_mhz); in format_counters()
2020 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in format_counters()
2021 if (mp->format == FORMAT_RAW) { in format_counters()
2022 if (mp->width == 32) in format_counters()
2024 sprintf(outp, "%s0x%08x", (printed++ ? delim : ""), (unsigned int)p->counter[i]); in format_counters()
2026 outp += sprintf(outp, "%s0x%016llx", (printed++ ? delim : ""), p->counter[i]); in format_counters()
2027 } else if (mp->format == FORMAT_DELTA) { in format_counters()
2028 if ((mp->type == COUNTER_ITEMS) && sums_need_wide_columns) in format_counters()
2029 outp += sprintf(outp, "%s%8lld", (printed++ ? delim : ""), p->counter[i]); in format_counters()
2031 outp += sprintf(outp, "%s%lld", (printed++ ? delim : ""), p->counter[i]); in format_counters()
2032 } else if (mp->format == FORMAT_PERCENT) { in format_counters()
2033 outp += sprintf(outp, "%s%.2f", (printed++ ? delim : ""), 100.0 * p->counter[i] / tsc); in format_counters()
2038 if (*(outp - 1) != '\n') in format_counters()
2084 old = ((((unsigned long long)new << 32) - ((unsigned long long)old << 32)) >> 32);
2092 old->pkg_wtd_core_c0 = new->pkg_wtd_core_c0 - old->pkg_wtd_core_c0; in delta_package()
2094 old->pkg_any_core_c0 = new->pkg_any_core_c0 - old->pkg_any_core_c0; in delta_package()
2096 old->pkg_any_gfxe_c0 = new->pkg_any_gfxe_c0 - old->pkg_any_gfxe_c0; in delta_package()
2098 old->pkg_both_core_gfxe_c0 = new->pkg_both_core_gfxe_c0 - old->pkg_both_core_gfxe_c0; in delta_package()
2100 old->pc2 = new->pc2 - old->pc2; in delta_package()
2102 old->pc3 = new->pc3 - old->pc3; in delta_package()
2104 old->pc6 = new->pc6 - old->pc6; in delta_package()
2106 old->pc7 = new->pc7 - old->pc7; in delta_package()
2107 old->pc8 = new->pc8 - old->pc8; in delta_package()
2108 old->pc9 = new->pc9 - old->pc9; in delta_package()
2109 old->pc10 = new->pc10 - old->pc10; in delta_package()
2110 old->cpu_lpi = new->cpu_lpi - old->cpu_lpi; in delta_package()
2111 old->sys_lpi = new->sys_lpi - old->sys_lpi; in delta_package()
2112 old->pkg_temp_c = new->pkg_temp_c; in delta_package()
2115 if (old->gfx_rc6_ms > new->gfx_rc6_ms) in delta_package()
2116 old->gfx_rc6_ms = -1; in delta_package()
2118 old->gfx_rc6_ms = new->gfx_rc6_ms - old->gfx_rc6_ms; in delta_package()
2120 old->uncore_mhz = new->uncore_mhz; in delta_package()
2121 old->gfx_mhz = new->gfx_mhz; in delta_package()
2122 old->gfx_act_mhz = new->gfx_act_mhz; in delta_package()
2124 old->energy_pkg = new->energy_pkg - old->energy_pkg; in delta_package()
2125 old->energy_cores = new->energy_cores - old->energy_cores; in delta_package()
2126 old->energy_gfx = new->energy_gfx - old->energy_gfx; in delta_package()
2127 old->energy_dram = new->energy_dram - old->energy_dram; in delta_package()
2128 old->rapl_pkg_perf_status = new->rapl_pkg_perf_status - old->rapl_pkg_perf_status; in delta_package()
2129 old->rapl_dram_perf_status = new->rapl_dram_perf_status - old->rapl_dram_perf_status; in delta_package()
2131 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in delta_package()
2132 if (mp->format == FORMAT_RAW) in delta_package()
2133 old->counter[i] = new->counter[i]; in delta_package()
2135 old->counter[i] = new->counter[i] - old->counter[i]; in delta_package()
2146 old->c3 = new->c3 - old->c3; in delta_core()
2147 old->c6 = new->c6 - old->c6; in delta_core()
2148 old->c7 = new->c7 - old->c7; in delta_core()
2149 old->core_temp_c = new->core_temp_c; in delta_core()
2150 old->core_throt_cnt = new->core_throt_cnt; in delta_core()
2151 old->mc6_us = new->mc6_us - old->mc6_us; in delta_core()
2153 DELTA_WRAP32(new->core_energy, old->core_energy); in delta_core()
2155 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in delta_core()
2156 if (mp->format == FORMAT_RAW) in delta_core()
2157 old->counter[i] = new->counter[i]; in delta_core()
2159 old->counter[i] = new->counter[i] - old->counter[i]; in delta_core()
2165 if (!DO_BIC(BIC_CPU_c1) || platform->has_msr_core_c1_res) in soft_c1_residency_display()
2172 * old = new - old
2181 new->apic_id = old->apic_id; in delta_thread()
2183 new->x2apic_id = old->x2apic_id; in delta_thread()
2188 * over-write old w/ new so we can print end of interval values in delta_thread()
2191 timersub(&new->tv_begin, &old->tv_begin, &old->tv_delta); in delta_thread()
2192 old->tv_begin = new->tv_begin; in delta_thread()
2193 old->tv_end = new->tv_end; in delta_thread()
2195 old->tsc = new->tsc - old->tsc; in delta_thread()
2198 if (old->tsc < (1000 * 1000)) in delta_thread()
2199 errx(-3, "Insanely slow TSC rate, TSC stops in idle?\n" in delta_thread()
2200 "You can disable all c-states by booting with \"idle=poll\"\n" in delta_thread()
2203 old->c1 = new->c1 - old->c1; in delta_thread()
2207 if ((new->aperf > old->aperf) && (new->mperf > old->mperf)) { in delta_thread()
2208 old->aperf = new->aperf - old->aperf; in delta_thread()
2209 old->mperf = new->mperf - old->mperf; in delta_thread()
2211 return -1; in delta_thread()
2215 if (platform->has_msr_core_c1_res) { in delta_thread()
2223 * it is possible for mperf's non-halted cycles + idle states in delta_thread()
2226 if ((old->mperf + core_delta->c3 + core_delta->c6 + core_delta->c7) > (old->tsc * tsc_tweak)) in delta_thread()
2227 old->c1 = 0; in delta_thread()
2230 old->c1 = (old->tsc * tsc_tweak) - old->mperf - core_delta->c3 in delta_thread()
2231 - core_delta->c6 - core_delta->c7; in delta_thread()
2235 if (old->mperf == 0) { in delta_thread()
2237 fprintf(outf, "cpu%d MPERF 0!\n", old->cpu_id); in delta_thread()
2238 old->mperf = 1; /* divide by 0 protection */ in delta_thread()
2242 old->instr_count = new->instr_count - old->instr_count; in delta_thread()
2245 old->irq_count = new->irq_count - old->irq_count; in delta_thread()
2248 old->smi_count = new->smi_count - old->smi_count; in delta_thread()
2250 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in delta_thread()
2251 if (mp->format == FORMAT_RAW) in delta_thread()
2252 old->counter[i] = new->counter[i]; in delta_thread()
2254 old->counter[i] = new->counter[i] - old->counter[i]; in delta_thread()
2285 t->tv_begin.tv_sec = 0; in clear_counters()
2286 t->tv_begin.tv_usec = 0; in clear_counters()
2287 t->tv_end.tv_sec = 0; in clear_counters()
2288 t->tv_end.tv_usec = 0; in clear_counters()
2289 t->tv_delta.tv_sec = 0; in clear_counters()
2290 t->tv_delta.tv_usec = 0; in clear_counters()
2292 t->tsc = 0; in clear_counters()
2293 t->aperf = 0; in clear_counters()
2294 t->mperf = 0; in clear_counters()
2295 t->c1 = 0; in clear_counters()
2297 t->instr_count = 0; in clear_counters()
2299 t->irq_count = 0; in clear_counters()
2300 t->smi_count = 0; in clear_counters()
2302 c->c3 = 0; in clear_counters()
2303 c->c6 = 0; in clear_counters()
2304 c->c7 = 0; in clear_counters()
2305 c->mc6_us = 0; in clear_counters()
2306 c->core_temp_c = 0; in clear_counters()
2307 c->core_energy = 0; in clear_counters()
2308 c->core_throt_cnt = 0; in clear_counters()
2310 p->pkg_wtd_core_c0 = 0; in clear_counters()
2311 p->pkg_any_core_c0 = 0; in clear_counters()
2312 p->pkg_any_gfxe_c0 = 0; in clear_counters()
2313 p->pkg_both_core_gfxe_c0 = 0; in clear_counters()
2315 p->pc2 = 0; in clear_counters()
2317 p->pc3 = 0; in clear_counters()
2319 p->pc6 = 0; in clear_counters()
2321 p->pc7 = 0; in clear_counters()
2322 p->pc8 = 0; in clear_counters()
2323 p->pc9 = 0; in clear_counters()
2324 p->pc10 = 0; in clear_counters()
2325 p->cpu_lpi = 0; in clear_counters()
2326 p->sys_lpi = 0; in clear_counters()
2328 p->energy_pkg = 0; in clear_counters()
2329 p->energy_dram = 0; in clear_counters()
2330 p->energy_cores = 0; in clear_counters()
2331 p->energy_gfx = 0; in clear_counters()
2332 p->rapl_pkg_perf_status = 0; in clear_counters()
2333 p->rapl_dram_perf_status = 0; in clear_counters()
2334 p->pkg_temp_c = 0; in clear_counters()
2336 p->gfx_rc6_ms = 0; in clear_counters()
2337 p->uncore_mhz = 0; in clear_counters()
2338 p->gfx_mhz = 0; in clear_counters()
2339 p->gfx_act_mhz = 0; in clear_counters()
2340 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) in clear_counters()
2341 t->counter[i] = 0; in clear_counters()
2343 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) in clear_counters()
2344 c->counter[i] = 0; in clear_counters()
2346 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) in clear_counters()
2347 p->counter[i] = 0; in clear_counters()
2355 /* copy un-changing apic_id's */ in sum_counters()
2357 average.threads.apic_id = t->apic_id; in sum_counters()
2359 average.threads.x2apic_id = t->x2apic_id; in sum_counters()
2363 average.threads.tv_begin = t->tv_begin; in sum_counters()
2366 average.threads.tv_end = t->tv_end; in sum_counters()
2368 average.threads.tsc += t->tsc; in sum_counters()
2369 average.threads.aperf += t->aperf; in sum_counters()
2370 average.threads.mperf += t->mperf; in sum_counters()
2371 average.threads.c1 += t->c1; in sum_counters()
2373 average.threads.instr_count += t->instr_count; in sum_counters()
2375 average.threads.irq_count += t->irq_count; in sum_counters()
2376 average.threads.smi_count += t->smi_count; in sum_counters()
2378 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in sum_counters()
2379 if (mp->format == FORMAT_RAW) in sum_counters()
2381 average.threads.counter[i] += t->counter[i]; in sum_counters()
2384 /* sum per-core values only for 1st thread in core */ in sum_counters()
2388 average.cores.c3 += c->c3; in sum_counters()
2389 average.cores.c6 += c->c6; in sum_counters()
2390 average.cores.c7 += c->c7; in sum_counters()
2391 average.cores.mc6_us += c->mc6_us; in sum_counters()
2393 average.cores.core_temp_c = MAX(average.cores.core_temp_c, c->core_temp_c); in sum_counters()
2394 average.cores.core_throt_cnt = MAX(average.cores.core_throt_cnt, c->core_throt_cnt); in sum_counters()
2396 average.cores.core_energy += c->core_energy; in sum_counters()
2398 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in sum_counters()
2399 if (mp->format == FORMAT_RAW) in sum_counters()
2401 average.cores.counter[i] += c->counter[i]; in sum_counters()
2404 /* sum per-pkg values only for 1st core in pkg */ in sum_counters()
2409 average.packages.pkg_wtd_core_c0 += p->pkg_wtd_core_c0; in sum_counters()
2411 average.packages.pkg_any_core_c0 += p->pkg_any_core_c0; in sum_counters()
2413 average.packages.pkg_any_gfxe_c0 += p->pkg_any_gfxe_c0; in sum_counters()
2415 average.packages.pkg_both_core_gfxe_c0 += p->pkg_both_core_gfxe_c0; in sum_counters()
2417 average.packages.pc2 += p->pc2; in sum_counters()
2419 average.packages.pc3 += p->pc3; in sum_counters()
2421 average.packages.pc6 += p->pc6; in sum_counters()
2423 average.packages.pc7 += p->pc7; in sum_counters()
2424 average.packages.pc8 += p->pc8; in sum_counters()
2425 average.packages.pc9 += p->pc9; in sum_counters()
2426 average.packages.pc10 += p->pc10; in sum_counters()
2428 average.packages.cpu_lpi = p->cpu_lpi; in sum_counters()
2429 average.packages.sys_lpi = p->sys_lpi; in sum_counters()
2431 average.packages.energy_pkg += p->energy_pkg; in sum_counters()
2432 average.packages.energy_dram += p->energy_dram; in sum_counters()
2433 average.packages.energy_cores += p->energy_cores; in sum_counters()
2434 average.packages.energy_gfx += p->energy_gfx; in sum_counters()
2436 average.packages.gfx_rc6_ms = p->gfx_rc6_ms; in sum_counters()
2437 average.packages.uncore_mhz = p->uncore_mhz; in sum_counters()
2438 average.packages.gfx_mhz = p->gfx_mhz; in sum_counters()
2439 average.packages.gfx_act_mhz = p->gfx_act_mhz; in sum_counters()
2441 average.packages.pkg_temp_c = MAX(average.packages.pkg_temp_c, p->pkg_temp_c); in sum_counters()
2443 average.packages.rapl_pkg_perf_status += p->rapl_pkg_perf_status; in sum_counters()
2444 average.packages.rapl_dram_perf_status += p->rapl_dram_perf_status; in sum_counters()
2446 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in sum_counters()
2447 if (mp->format == FORMAT_RAW) in sum_counters()
2449 average.packages.counter[i] += p->counter[i]; in sum_counters()
2505 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in compute_average()
2506 if (mp->format == FORMAT_RAW) in compute_average()
2508 if (mp->type == COUNTER_ITEMS) { in compute_average()
2515 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in compute_average()
2516 if (mp->format == FORMAT_RAW) in compute_average()
2518 if (mp->type == COUNTER_ITEMS) { in compute_average()
2524 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in compute_average()
2525 if (mp->format == FORMAT_RAW) in compute_average()
2527 if (mp->type == COUNTER_ITEMS) { in compute_average()
2580 if (mp->msr_num != 0) { in get_mp()
2581 if (get_msr(cpu, mp->msr_num, counterp)) in get_mp()
2582 return -1; in get_mp()
2586 if (mp->flags & SYSFS_PERCPU) { in get_mp()
2587 sprintf(path, "/sys/devices/system/cpu/cpu%d/%s", cpu, mp->path); in get_mp()
2591 *counterp = snapshot_sysfs_counter(mp->path); in get_mp()
2612 int ret, epb = -1; in get_epb()
2643 t->apic_id = (ebx >> 24) & 0xff; in get_apic_id()
2665 t->x2apic_id = eax; in get_apic_id()
2677 t->x2apic_id = edx; in get_apic_id()
2679 if (debug && (t->apic_id != (t->x2apic_id & 0xff))) in get_apic_id()
2680 fprintf(outf, "cpu%d: BIOS BUG: apic 0x%x x2apic 0x%x\n", t->cpu_id, t->apic_id, t->x2apic_id); in get_apic_id()
2693 return -1; in get_core_throt_cnt()
2697 return -1; in get_core_throt_cnt()
2710 int cpu = t->cpu_id; in get_counters()
2718 return -1; in get_counters()
2721 gettimeofday(&t->tv_begin, (struct timezone *)NULL); in get_counters()
2726 t->tsc = rdtsc(); /* we are running on local CPU of interest */ in get_counters()
2739 * varies by a large amount, we re-read them. in get_counters()
2747 if (get_msr(cpu, MSR_IA32_APERF, &t->aperf)) in get_counters()
2748 return -3; in get_counters()
2750 t->tsc = rdtsc(); /* re-read close to APERF */ in get_counters()
2752 tsc_before = t->tsc; in get_counters()
2754 if (get_msr(cpu, MSR_IA32_APERF, &t->aperf)) in get_counters()
2755 return -3; in get_counters()
2759 if (get_msr(cpu, MSR_IA32_MPERF, &t->mperf)) in get_counters()
2760 return -4; in get_counters()
2764 aperf_time = tsc_between - tsc_before; in get_counters()
2765 mperf_time = tsc_after - tsc_between; in get_counters()
2780 t->aperf = t->aperf * aperf_mperf_multiplier; in get_counters()
2781 t->mperf = t->mperf * aperf_mperf_multiplier; in get_counters()
2785 if (read(get_instr_count_fd(cpu), &t->instr_count, sizeof(long long)) != sizeof(long long)) in get_counters()
2786 return -4; in get_counters()
2789 t->irq_count = irqs_per_cpu[cpu]; in get_counters()
2792 return -5; in get_counters()
2793 t->smi_count = msr & 0xFFFFFFFF; in get_counters()
2795 if (DO_BIC(BIC_CPU_c1) && platform->has_msr_core_c1_res) { in get_counters()
2796 if (get_msr(cpu, MSR_CORE_C1_RES, &t->c1)) in get_counters()
2797 return -6; in get_counters()
2800 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in get_counters()
2801 if (get_mp(cpu, mp, &t->counter[i])) in get_counters()
2802 return -10; in get_counters()
2810 if (get_msr(cpu, MSR_CORE_C3_RESIDENCY, &c->c3)) in get_counters()
2811 return -6; in get_counters()
2814 …if ((DO_BIC(BIC_CPU_c6) || soft_c1_residency_display(BIC_CPU_c6)) && !platform->has_msr_knl_core_c… in get_counters()
2815 if (get_msr(cpu, MSR_CORE_C6_RESIDENCY, &c->c6)) in get_counters()
2816 return -7; in get_counters()
2817 } else if (platform->has_msr_knl_core_c6_residency && soft_c1_residency_display(BIC_CPU_c6)) { in get_counters()
2818 if (get_msr(cpu, MSR_KNL_CORE_C6_RESIDENCY, &c->c6)) in get_counters()
2819 return -7; in get_counters()
2823 if (get_msr(cpu, MSR_CORE_C7_RESIDENCY, &c->c7)) in get_counters()
2824 return -8; in get_counters()
2825 else if (t->is_atom) { in get_counters()
2832 c->c6 -= c->c7; in get_counters()
2837 if (get_msr(cpu, MSR_MODULE_C6_RES_MS, &c->mc6_us)) in get_counters()
2838 return -8; in get_counters()
2842 return -9; in get_counters()
2843 c->core_temp_c = tj_max - ((msr >> 16) & 0x7F); in get_counters()
2847 get_core_throt_cnt(cpu, &c->core_throt_cnt); in get_counters()
2849 if (platform->rapl_msrs & RAPL_AMD_F17H) { in get_counters()
2851 return -14; in get_counters()
2852 c->core_energy = msr & 0xFFFFFFFF; in get_counters()
2855 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in get_counters()
2856 if (get_mp(cpu, mp, &c->counter[i])) in get_counters()
2857 return -10; in get_counters()
2865 if (get_msr(cpu, MSR_PKG_WEIGHTED_CORE_C0_RES, &p->pkg_wtd_core_c0)) in get_counters()
2866 return -10; in get_counters()
2869 if (get_msr(cpu, MSR_PKG_ANY_CORE_C0_RES, &p->pkg_any_core_c0)) in get_counters()
2870 return -11; in get_counters()
2873 if (get_msr(cpu, MSR_PKG_ANY_GFXE_C0_RES, &p->pkg_any_gfxe_c0)) in get_counters()
2874 return -12; in get_counters()
2877 if (get_msr(cpu, MSR_PKG_BOTH_CORE_GFXE_C0_RES, &p->pkg_both_core_gfxe_c0)) in get_counters()
2878 return -13; in get_counters()
2881 if (get_msr(cpu, MSR_PKG_C3_RESIDENCY, &p->pc3)) in get_counters()
2882 return -9; in get_counters()
2884 if (platform->has_msr_atom_pkg_c6_residency) { in get_counters()
2885 if (get_msr(cpu, MSR_ATOM_PKG_C6_RESIDENCY, &p->pc6)) in get_counters()
2886 return -10; in get_counters()
2888 if (get_msr(cpu, MSR_PKG_C6_RESIDENCY, &p->pc6)) in get_counters()
2889 return -10; in get_counters()
2894 if (get_msr(cpu, MSR_PKG_C2_RESIDENCY, &p->pc2)) in get_counters()
2895 return -11; in get_counters()
2897 if (get_msr(cpu, MSR_PKG_C7_RESIDENCY, &p->pc7)) in get_counters()
2898 return -12; in get_counters()
2900 if (get_msr(cpu, MSR_PKG_C8_RESIDENCY, &p->pc8)) in get_counters()
2901 return -13; in get_counters()
2903 if (get_msr(cpu, MSR_PKG_C9_RESIDENCY, &p->pc9)) in get_counters()
2904 return -13; in get_counters()
2906 if (get_msr(cpu, MSR_PKG_C10_RESIDENCY, &p->pc10)) in get_counters()
2907 return -13; in get_counters()
2910 p->cpu_lpi = cpuidle_cur_cpu_lpi_us; in get_counters()
2912 p->sys_lpi = cpuidle_cur_sys_lpi_us; in get_counters()
2914 if (platform->rapl_msrs & RAPL_PKG) { in get_counters()
2916 return -13; in get_counters()
2917 p->energy_pkg = msr; in get_counters()
2919 if (platform->rapl_msrs & RAPL_CORE_ENERGY_STATUS) { in get_counters()
2921 return -14; in get_counters()
2922 p->energy_cores = msr; in get_counters()
2924 if (platform->rapl_msrs & RAPL_DRAM) { in get_counters()
2926 return -15; in get_counters()
2927 p->energy_dram = msr; in get_counters()
2929 if (platform->rapl_msrs & RAPL_GFX) { in get_counters()
2931 return -16; in get_counters()
2932 p->energy_gfx = msr; in get_counters()
2934 if (platform->rapl_msrs & RAPL_PKG_PERF_STATUS) { in get_counters()
2936 return -16; in get_counters()
2937 p->rapl_pkg_perf_status = msr; in get_counters()
2939 if (platform->rapl_msrs & RAPL_DRAM_PERF_STATUS) { in get_counters()
2941 return -16; in get_counters()
2942 p->rapl_dram_perf_status = msr; in get_counters()
2944 if (platform->rapl_msrs & RAPL_AMD_F17H) { in get_counters()
2946 return -13; in get_counters()
2947 p->energy_pkg = msr; in get_counters()
2951 return -17; in get_counters()
2952 p->pkg_temp_c = tj_max - ((msr >> 16) & 0x7F); in get_counters()
2956 p->gfx_rc6_ms = gfx_cur_rc6_ms; in get_counters()
2960 p->uncore_mhz = get_uncore_mhz(p->package_id, 0); in get_counters()
2963 p->gfx_mhz = gfx_cur_mhz; in get_counters()
2966 p->gfx_act_mhz = gfx_act_mhz; in get_counters()
2968 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in get_counters()
2969 if (get_mp(cpu, mp, &p->counter[i])) in get_counters()
2970 return -10; in get_counters()
2973 gettimeofday(&t->tv_end, (struct timezone *)NULL); in get_counters()
3056 if (!platform->has_nhm_msrs) in probe_cst_limit()
3059 switch (platform->cst_limit) { in probe_cst_limit()
3100 if (!platform->has_nhm_msrs) in dump_platform_info()
3118 if (!platform->has_nhm_msrs) in dump_power_ctl()
3122 fprintf(outf, "cpu%d: MSR_IA32_POWER_CTL: 0x%08llx (C1E auto-promotion: %sabled)\n", in dump_power_ctl()
3125 /* C-state Pre-wake Disable (CSTATE_PREWAKE_DISABLE) */ in dump_power_ctl()
3126 if (platform->has_cst_prewake_bit) in dump_power_ctl()
3127 fprintf(outf, "C-state Pre-wake: %sabled\n", msr & 0x40000000 ? "DIS" : "EN"); in dump_power_ctl()
3203 if (platform->trl_msrs & TRL_CORECOUNT) { in dump_turbo_ratio_limits()
3210 for (shift = 56; shift >= 0; shift -= 8) { in dump_turbo_ratio_limits()
3233 fprintf(outf, "%d * %.1f = %.1f MHz minimum operating frequency\n", ratio, bclk, ratio * bclk); in dump_atom_turbo_ratio_limits()
3279 * [0] -- Reserved in dump_knl_turbo_ratio_limits()
3280 * [7:1] -- Base value of number of active cores of bucket 1. in dump_knl_turbo_ratio_limits()
3281 * [15:8] -- Base value of freq ratio of bucket 1. in dump_knl_turbo_ratio_limits()
3282 * [20:16] -- +ve delta of number of active cores of bucket 2. in dump_knl_turbo_ratio_limits()
3285 * [23:21] -- Negative delta of freq ratio of bucket 2. in dump_knl_turbo_ratio_limits()
3287 * freq ratio of bucket 1 - delta in dump_knl_turbo_ratio_limits()
3288 * [28:24]-- +ve delta of number of active cores of bucket 3. in dump_knl_turbo_ratio_limits()
3289 * [31:29]-- -ve delta of freq ratio of bucket 3. in dump_knl_turbo_ratio_limits()
3290 * [36:32]-- +ve delta of number of active cores of bucket 4. in dump_knl_turbo_ratio_limits()
3291 * [39:37]-- -ve delta of freq ratio of bucket 4. in dump_knl_turbo_ratio_limits()
3292 * [44:40]-- +ve delta of number of active cores of bucket 5. in dump_knl_turbo_ratio_limits()
3293 * [47:45]-- -ve delta of freq ratio of bucket 5. in dump_knl_turbo_ratio_limits()
3294 * [52:48]-- +ve delta of number of active cores of bucket 6. in dump_knl_turbo_ratio_limits()
3295 * [55:53]-- -ve delta of freq ratio of bucket 6. in dump_knl_turbo_ratio_limits()
3296 * [60:56]-- +ve delta of number of active cores of bucket 7. in dump_knl_turbo_ratio_limits()
3297 * [63:61]-- -ve delta of freq ratio of bucket 7. in dump_knl_turbo_ratio_limits()
3309 ratio[b_nr + 1] = ratio[b_nr] - delta_ratio; in dump_knl_turbo_ratio_limits()
3313 for (i = buckets_no - 1; i >= 0; i--) in dump_knl_turbo_ratio_limits()
3314 if (i > 0 ? ratio[i] != ratio[i - 1] : 1) in dump_knl_turbo_ratio_limits()
3324 if (!platform->has_nhm_msrs) in dump_cst_cfg()
3331 fprintf(outf, " (%s%s%s%s%slocked, pkg-cstate-limit=%d (%s)", in dump_cst_cfg()
3332 (msr & SNB_C3_AUTO_UNDEMOTE) ? "UNdemote-C3, " : "", in dump_cst_cfg()
3333 (msr & SNB_C1_AUTO_UNDEMOTE) ? "UNdemote-C1, " : "", in dump_cst_cfg()
3334 (msr & NHM_C3_AUTO_DEMOTE) ? "demote-C3, " : "", in dump_cst_cfg()
3335 (msr & NHM_C1_AUTO_DEMOTE) ? "demote-C1, " : "", in dump_cst_cfg()
3339 if (platform->has_cst_auto_convension) { in dump_cst_cfg()
3340 …fprintf(outf, ", automatic c-state conversion=%s", (msr & AUTOMATIC_CSTATE_CONVERSION) ? "on" : "o… in dump_cst_cfg()
3396 if (!platform->has_irtl_msrs) in print_irtl()
3399 if (platform->supported_cstates & PC3) { in print_irtl()
3406 if (platform->supported_cstates & PC6) { in print_irtl()
3413 if (platform->supported_cstates & PC7) { in print_irtl()
3420 if (platform->supported_cstates & PC8) { in print_irtl()
3427 if (platform->supported_cstates & PC9) { in print_irtl()
3434 if (platform->supported_cstates & PC10) { in print_irtl()
3561 cpus[cpu].logical_node_id = -1; in set_node_data()
3570 if (cpus[cpu].logical_node_id != -1) in set_node_data()
3599 int cpu = thiscpu->logical_cpu_id; in get_physical_node_id()
3609 return -1; in get_physical_node_id()
3619 if (*next == '-') /* no negative cpu numbers */ in parse_cpu_str()
3636 if (*next == '-') { in parse_cpu_str()
3637 next += 1; /* start range */ in parse_cpu_str()
3641 next += 1; /* start range */ in parse_cpu_str()
3671 int cpu = thiscpu->logical_cpu_id; in get_thread_siblings()
3676 thiscpu->put_ids = CPU_ALLOC((topo.max_cpu_num + 1)); in get_thread_siblings()
3677 if (thiscpu->thread_id < 0) in get_thread_siblings()
3678 thiscpu->thread_id = thread_id++; in get_thread_siblings()
3679 if (!thiscpu->put_ids) in get_thread_siblings()
3680 return -1; in get_thread_siblings()
3683 CPU_ZERO_S(size, thiscpu->put_ids); in get_thread_siblings()
3690 return -1; in get_thread_siblings()
3693 offset -= BITMASK_SIZE; in get_thread_siblings()
3700 if (sib_core == thiscpu->physical_core_id) { in get_thread_siblings()
3701 CPU_SET_S(so, size, thiscpu->put_ids); in get_thread_siblings()
3710 return CPU_COUNT_S(size, thiscpu->put_ids); in get_thread_siblings()
3715 * skip non-present cpus
3736 if (cpu_is_not_allowed(t->cpu_id)) in for_all_cpus_2()
3832 …fprintf(outf, "turbostat: re-initialized with num_cpus %d, allowed_cpus %d\n", topo.num_cpus, topo… in re_initialize()
3852 topo.max_cpu_num--; /* 0 based */ in set_max_cpu_num()
3875 cpus[cpu].thread_id = -1; in init_thread_id()
4042 return -1; in snapshot_cpu_lpi_us()
4067 return -1; in snapshot_sys_lpi_us()
4182 /* get_msr_sum() = sum + (get_msr() - last) */ in get_msr_sum()
4199 int cpu = t->cpu_id; in update_msr_sum()
4253 if (timer_create(CLOCK_REALTIME, &sev, &timerid) == -1) { in msr_sum_record()
4269 if (timer_settime(timerid, 0, &its, NULL) == -1) { in msr_sum_record()
4292 if (errno && (original_priority == -1)) in set_my_sched_priority()
4318 set_my_sched_priority(-20); in turbostat_loop()
4326 if (retval < -1) { in turbostat_loop()
4328 } else if (retval == -1) { in turbostat_loop()
4352 if (retval < -1) { in turbostat_loop()
4354 } else if (retval == -1) { in turbostat_loop()
4375 if (retval < -1) { in turbostat_loop()
4377 } else if (retval == -1) { in turbostat_loop()
4405 err(-5, "no /dev/cpu/0/msr, Try \"# modprobe msr\" "); in check_dev_msr()
4420 err(-6, "cap_get_proc\n"); in check_for_cap_sys_rawio()
4423 err(-6, "cap_get\n"); in check_for_cap_sys_rawio()
4430 if (cap_free(caps) == -1) in check_for_cap_sys_rawio()
4431 err(-6, "cap_free\n"); in check_for_cap_sys_rawio()
4457 exit(-6); in check_permissions()
4465 if (!platform->has_nhm_msrs) in probe_bclk()
4468 if (platform->bclk_freq == BCLK_100MHZ) in probe_bclk()
4470 else if (platform->bclk_freq == BCLK_133MHZ) in probe_bclk()
4472 else if (platform->bclk_freq == BCLK_SLV) in probe_bclk()
4483 if (platform->enable_tsc_tweak) in probe_bclk()
4505 if (!platform->has_nhm_msrs) in dump_turbo_ratio_info()
4508 if (platform->trl_msrs & TRL_LIMIT2) in dump_turbo_ratio_info()
4511 if (platform->trl_msrs & TRL_LIMIT1) in dump_turbo_ratio_info()
4514 if (platform->trl_msrs & TRL_BASE) { in dump_turbo_ratio_info()
4521 if (platform->trl_msrs & TRL_ATOM) in dump_turbo_ratio_info()
4524 if (platform->trl_msrs & TRL_KNL) in dump_turbo_ratio_info()
4527 if (platform->has_config_tdp) in dump_turbo_ratio_info()
4534 int retval = -1; in read_sysfs_int()
4540 return (-1); in read_sysfs_int()
4598 fprintf(outf, "Uncore Frequency pkg%d die%d: %d - %d MHz ", i, j, k / 1000, l / 1000); in probe_intel_uncore_frequency()
4608 fprintf(outf, "(%d - %d MHz)\n", k / 1000, l / 1000); in probe_intel_uncore_frequency()
4654 /* truncate "C1-HSW\n" to "C1", or truncate "C1\n" to "C1" */ in dump_sysfs_cstate_config()
4655 sp = strchr(name_buf, '-'); in dump_sysfs_cstate_config()
4740 cpu = t->cpu_id; in print_epb()
4742 /* EPB is per-package */ in print_epb()
4748 return -1; in print_epb()
4789 cpu = t->cpu_id; in print_hwp()
4791 /* MSR_HWP_CAPABILITIES is per-package */ in print_hwp()
4797 return -1; in print_hwp()
4803 fprintf(outf, "cpu%d: MSR_PM_ENABLE: 0x%08llx (%sHWP)\n", cpu, msr, (msr & (1 << 0)) ? "" : "No-"); in print_hwp()
4856 cpu, msr, ((msr) & 0x1) ? "" : "No-", ((msr) & 0x4) ? "" : "No-"); in print_hwp()
4872 cpu = t->cpu_id; in print_perf_limit()
4874 /* per-package */ in print_perf_limit()
4880 return -1; in print_perf_limit()
4883 if (platform->plr_msrs & PLR_CORE) { in print_perf_limit()
4895 (msr & 1 << 6) ? "VR-Therm, " : "", in print_perf_limit()
4896 (msr & 1 << 5) ? "Auto-HWP, " : "", in print_perf_limit()
4909 (msr & 1 << 22) ? "VR-Therm, " : "", in print_perf_limit()
4910 (msr & 1 << 21) ? "Auto-HWP, " : "", in print_perf_limit()
4916 if (platform->plr_msrs & PLR_GFX) { in print_perf_limit()
4923 (msr & 1 << 6) ? "VR-Therm, " : "", in print_perf_limit()
4931 (msr & 1 << 22) ? "VR-Therm, " : "", in print_perf_limit()
4936 if (platform->plr_msrs & PLR_RING) { in print_perf_limit()
4942 (msr & 1 << 6) ? "VR-Therm, " : "", in print_perf_limit()
4948 (msr & 1 << 22) ? "VR-Therm, " : "", in print_perf_limit()
4960 if (platform->rapl_quirk_tdp) in get_quirk_tdp()
4961 return platform->rapl_quirk_tdp; in get_quirk_tdp()
4970 if (platform->rapl_msrs & RAPL_PKG_POWER_INFO) in get_tdp_intel()
4988 if (platform->rapl_msrs & RAPL_PKG_ENERGY_STATUS) in rapl_probe_intel()
4990 if (platform->rapl_msrs & RAPL_CORE_ENERGY_STATUS) in rapl_probe_intel()
4992 if (platform->rapl_msrs & RAPL_DRAM_ENERGY_STATUS) in rapl_probe_intel()
4994 if (platform->rapl_msrs & RAPL_GFX_ENERGY_STATUS) in rapl_probe_intel()
4997 if (platform->rapl_msrs & RAPL_PKG_ENERGY_STATUS) in rapl_probe_intel()
4999 if (platform->rapl_msrs & RAPL_CORE_ENERGY_STATUS) in rapl_probe_intel()
5001 if (platform->rapl_msrs & RAPL_DRAM_ENERGY_STATUS) in rapl_probe_intel()
5003 if (platform->rapl_msrs & RAPL_GFX_ENERGY_STATUS) in rapl_probe_intel()
5007 if (platform->rapl_msrs & RAPL_PKG_PERF_STATUS) in rapl_probe_intel()
5009 if (platform->rapl_msrs & RAPL_DRAM_PERF_STATUS) in rapl_probe_intel()
5017 if (platform->has_rapl_divisor) in rapl_probe_intel()
5022 if (platform->has_fixed_rapl_unit) in rapl_probe_intel()
5037 …fprintf(outf, "RAPL: %.0f sec. Joule Counter Range, at %.0f Watts\n", rapl_joule_counter_range, td… in rapl_probe_intel()
5056 rapl_time_units = ldexp(1.0, -(msr >> 16 & 0xf)); in rapl_probe_amd()
5057 rapl_energy_units = ldexp(1.0, -(msr >> 8 & 0x1f)); in rapl_probe_amd()
5058 rapl_power_units = ldexp(1.0, -(msr & 0xf)); in rapl_probe_amd()
5064 …fprintf(outf, "RAPL: %.0f sec. Joule Counter Range, at %.0f Watts\n", rapl_joule_counter_range, td… in rapl_probe_amd()
5088 if (!platform->rapl_msrs) in print_rapl()
5095 cpu = t->cpu_id; in print_rapl()
5098 return -1; in print_rapl()
5101 if (platform->rapl_msrs & RAPL_AMD_F17H) { in print_rapl()
5104 return -1; in print_rapl()
5108 return -1; in print_rapl()
5114 if (platform->rapl_msrs & RAPL_PKG_POWER_INFO) { in print_rapl()
5117 return -5; in print_rapl()
5119 fprintf(outf, "cpu%d: MSR_PKG_POWER_INFO: 0x%08llx (%.0f W TDP, RAPL %.0f - %.0f W, %f sec.)\n", in print_rapl()
5127 if (platform->rapl_msrs & RAPL_PKG) { in print_rapl()
5130 return -9; in print_rapl()
5144 return -9; in print_rapl()
5151 if (platform->rapl_msrs & RAPL_DRAM_POWER_INFO) { in print_rapl()
5153 return -6; in print_rapl()
5155 fprintf(outf, "cpu%d: MSR_DRAM_POWER_INFO,: 0x%08llx (%.0f W TDP, RAPL %.0f - %.0f W, %f sec.)\n", in print_rapl()
5162 if (platform->rapl_msrs & RAPL_DRAM) { in print_rapl()
5164 return -9; in print_rapl()
5170 if (platform->rapl_msrs & RAPL_CORE_POLICY) { in print_rapl()
5172 return -7; in print_rapl()
5176 if (platform->rapl_msrs & RAPL_CORE_POWER_LIMIT) { in print_rapl()
5178 return -9; in print_rapl()
5183 if (platform->rapl_msrs & RAPL_GFX) { in print_rapl()
5185 return -8; in print_rapl()
5190 return -9; in print_rapl()
5205 if (!platform->rapl_msrs) in probe_rapl()
5225 * but also allow cmdline over-ride with -T.
5227 * Several MSR temperature values are in units of degrees-C
5244 /* this is a per-package concept */ in set_temperature_target()
5248 cpu = t->cpu_id; in set_temperature_target()
5251 return -1; in set_temperature_target()
5261 if (!platform->has_nhm_msrs) in set_temperature_target()
5270 int bits = platform->tcc_offset_bits; in set_temperature_target()
5277 tcc_offset = (msr >> 24) & GENMASK(bits - 1, 0); in set_temperature_target()
5278 fprintf(outf, "cpu%d: MSR_IA32_TEMPERATURE_TARGET: 0x%08llx (%d C) (%d default - %d offset)\n", in set_temperature_target()
5279 cpu, msr, tcc_default - tcc_offset, tcc_default, tcc_offset); in set_temperature_target()
5294 fprintf(outf, "cpu%d: Guessing tjMax %d C, Please use -T to specify\n", cpu, tj_max); in set_temperature_target()
5311 cpu = t->cpu_id; in print_thermal()
5313 /* DTS is per-core, no need to print for each thread */ in print_thermal()
5319 return -1; in print_thermal()
5327 fprintf(outf, "cpu%d: MSR_IA32_PACKAGE_THERM_STATUS: 0x%08llx (%d C)\n", cpu, msr, tj_max - dts); in print_thermal()
5335 cpu, msr, tj_max - dts, tj_max - dts2); in print_thermal()
5346 fprintf(outf, "cpu%d: MSR_IA32_THERM_STATUS: 0x%08llx (%d C +/- %d)\n", in print_thermal()
5347 cpu, msr, tj_max - dts, resolution); in print_thermal()
5355 cpu, msr, tj_max - dts, tj_max - dts2); in print_thermal()
5386 if (cpu_migrate(t->cpu_id)) { in get_cpu_type()
5387 fprintf(outf, "Could not migrate to CPU %d\n", t->cpu_id); in get_cpu_type()
5388 return -1; in get_cpu_type()
5397 t->is_atom = true; in get_cpu_type()
5407 base_cpu, msr, msr & FEAT_CTL_LOCKED ? "" : "UN-", msr & (1 << 18) ? "SGX" : ""); in decode_feature_control_msr()
5420 msr & MSR_IA32_MISC_ENABLE_TM1 ? "" : "No-", in decode_misc_enable_msr()
5421 msr & MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP ? "" : "No-", in decode_misc_enable_msr()
5422 msr & MSR_IA32_MISC_ENABLE_MWAIT ? "" : "No-", in decode_misc_enable_msr()
5423 msr & MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE ? "No-" : "", in decode_misc_enable_msr()
5424 msr & MSR_IA32_MISC_ENABLE_TURBO_DISABLE ? "No-" : ""); in decode_misc_enable_msr()
5431 if (!platform->has_msr_misc_feature_control) in decode_misc_feature_control()
5436 …"cpu%d: MSR_MISC_FEATURE_CONTROL: 0x%08llx (%sL2-Prefetch %sL2-Prefetch-pair %sL1-Prefetch %sL1-IP… in decode_misc_feature_control()
5437 base_cpu, msr, msr & (0 << 0) ? "No-" : "", msr & (1 << 0) ? "No-" : "", in decode_misc_feature_control()
5438 msr & (2 << 0) ? "No-" : "", msr & (3 << 0) ? "No-" : ""); in decode_misc_feature_control()
5452 if (!platform->has_msr_misc_pwr_mgmt) in decode_misc_pwr_mgmt_msr()
5456 …fprintf(outf, "cpu%d: MSR_MISC_PWR_MGMT: 0x%08llx (%sable-EIST_Coordination %sable-EPB %sable-OOB)… in decode_misc_pwr_mgmt_msr()
5471 if (!platform->has_msr_c6_demotion_policy_config) in decode_c6_demotion_policy_msr()
5475 fprintf(outf, "cpu%d: MSR_CC6_DEMOTION_POLICY_CONFIG: 0x%08llx (%sable-CC6-Demotion)\n", in decode_c6_demotion_policy_msr()
5479 fprintf(outf, "cpu%d: MSR_MC6_DEMOTION_POLICY_CONFIG: 0x%08llx (%sable-MC6-Demotion)\n", in decode_c6_demotion_policy_msr()
5508 * Linux-perf manages the HW instructions-retired counter
5521 err(-1, "calloc fd_instr_count_percpu"); in linux_perf_init()
5530 if (platform->supported_cstates & CC1) in probe_cstates()
5533 if (platform->supported_cstates & CC3) in probe_cstates()
5536 if (platform->supported_cstates & CC6) in probe_cstates()
5539 if (platform->supported_cstates & CC7) in probe_cstates()
5542 if (platform->supported_cstates & PC2 && (pkg_cstate_limit >= PCL__2)) in probe_cstates()
5545 if (platform->supported_cstates & PC3 && (pkg_cstate_limit >= PCL__3)) in probe_cstates()
5548 if (platform->supported_cstates & PC6 && (pkg_cstate_limit >= PCL__6)) in probe_cstates()
5551 if (platform->supported_cstates & PC7 && (pkg_cstate_limit >= PCL__7)) in probe_cstates()
5554 if (platform->supported_cstates & PC8 && (pkg_cstate_limit >= PCL__8)) in probe_cstates()
5557 if (platform->supported_cstates & PC9 && (pkg_cstate_limit >= PCL__9)) in probe_cstates()
5560 if (platform->supported_cstates & PC10 && (pkg_cstate_limit >= PCL_10)) in probe_cstates()
5563 if (platform->has_msr_module_c6_res_ms) in probe_cstates()
5566 if (platform->has_ext_cst_msrs) { in probe_cstates()
5670 ecx_flags & (1 << 0) ? "SSE3" : "-", in process_cpuid()
5671 ecx_flags & (1 << 3) ? "MONITOR" : "-", in process_cpuid()
5672 ecx_flags & (1 << 6) ? "SMX" : "-", in process_cpuid()
5673 ecx_flags & (1 << 7) ? "EIST" : "-", in process_cpuid()
5674 ecx_flags & (1 << 8) ? "TM2" : "-", in process_cpuid()
5675 edx_flags & (1 << 4) ? "TSC" : "-", in process_cpuid()
5676 edx_flags & (1 << 5) ? "MSR" : "-", in process_cpuid()
5677 edx_flags & (1 << 22) ? "ACPI-TM" : "-", in process_cpuid()
5678 edx_flags & (1 << 28) ? "HT" : "-", edx_flags & (1 << 29) ? "TM" : "-"); in process_cpuid()
5689 * Non-Stop TSC is advertised by CPUID.EAX=0x80000007: EDX.bit8 in process_cpuid()
5725 has_aperf ? "" : "No-", in process_cpuid()
5726 has_turbo ? "" : "No-", in process_cpuid()
5727 do_dts ? "" : "No-", in process_cpuid()
5728 do_ptm ? "" : "No-", in process_cpuid()
5729 has_hwp ? "" : "No-", in process_cpuid()
5730 has_hwp_notify ? "" : "No-", in process_cpuid()
5731 has_hwp_activity_window ? "" : "No-", in process_cpuid()
5732 has_hwp_epp ? "" : "No-", has_hwp_pkg ? "" : "No-", has_epb ? "" : "No-"); in process_cpuid()
5748 fprintf(outf, "CPUID(7): %sSGX %sHybrid\n", has_sgx ? "" : "No-", is_hybrid ? "" : "No-"); in process_cpuid()
5770 crystal_hz = platform->crystal_freq; in process_cpuid()
5795 aperf_mperf_multiplier = platform->need_perf_multiplier ? 1024 : 1; in process_cpuid()
5817 if (platform->has_nhm_msrs) in probe_pm_features()
5830 if (isdigit(dirp->d_name[0])) in dir_filter()
5922 err(-ENODEV, "No valid cpus found"); in topology_probe()
6032 (*t)[i].cpu_id = -1; in allocate_counters()
6039 (*c)[i].core_id = -1; in allocate_counters()
6040 (*c)[i].base_cpu = -1; in allocate_counters()
6049 (*p)[i].base_cpu = -1; in allocate_counters()
6072 /* Workaround for systems where physical_node_id==-1 in init_counter()
6073 * and logical_node_id==(-1 - topo.num_cpus) in init_counter()
6082 t->cpu_id = cpu_id; in init_counter()
6084 if (c->base_cpu < 0) in init_counter()
6085 c->base_cpu = t->cpu_id; in init_counter()
6086 if (p->base_cpu < 0) in init_counter()
6087 p->base_cpu = t->cpu_id; in init_counter()
6090 c->core_id = core_id; in init_counter()
6091 p->package_id = pkg_id; in init_counter()
6106 err(-1, "calloc output buffer"); in allocate_output_buffer()
6113 err(-1, "calloc fd_percpu"); in allocate_fd_percpu()
6120 err(-1, "calloc %d", topo.num_cpus); in allocate_irq_buffers()
6124 err(-1, "calloc %d", topo.max_cpu_num + 1); in allocate_irq_buffers()
6130 if ((int)t->cpu_id == c->base_cpu) in update_topo()
6132 if ((int)t->cpu_id == p->base_cpu) in update_topo()
6169 err(-ENODEV, "No valid cpus found"); in set_base_cpu()
6209 if (child_pid == -1) in fork_it()
6214 if (waitpid(child_pid, &status, 0) == -1) in fork_it()
6222 * because re-starting is problematic when forking in fork_it()
6262 fprintf(outf, "turbostat version 2023.11.07 - Len Brown <lenb@kernel.org>\n"); in print_version()
6278 ret = fread(bootcmd, sizeof(char), COMMAND_LINE_SIZE - 1, fp); in print_bootcmd()
6300 msrp->msr_num = msr_num; in add_counter()
6301 strncpy(msrp->name, name, NAME_BYTES - 1); in add_counter()
6303 strncpy(msrp->path, path, PATH_BYTES - 1); in add_counter()
6304 msrp->width = width; in add_counter()
6305 msrp->type = type; in add_counter()
6306 msrp->format = format; in add_counter()
6307 msrp->flags = flags; in add_counter()
6312 msrp->next = sys.tp; in add_counter()
6317 exit(-1); in add_counter()
6322 msrp->next = sys.cp; in add_counter()
6327 exit(-1); in add_counter()
6332 msrp->next = sys.pp; in add_counter()
6337 exit(-1); in add_counter()
6429 fprintf(stderr, "--add: (msrDDD | msr0xXXX | /path_to_counter ) required\n"); in parse_add_command()
6478 for (state = 10; state >= 0; --state) { in probe_sysfs()
6487 /* truncate "C1-HSW\n" to "C1", or truncate "C1\n" to "C1" */ in probe_sysfs()
6488 sp = strchr(name_buf, '-'); in probe_sysfs()
6509 for (state = 10; state >= 0; --state) { in probe_sysfs()
6517 /* truncate "C1-HSW\n" to "C1", or truncate "C1\n" to "C1" */ in probe_sysfs()
6518 sp = strchr(name_buf, '-'); in probe_sysfs()
6541 * 1,2,4..6,8-10 and set bits in cpu_subset
6573 fprintf(stderr, "\"--cpu %s\" malformed\n", optarg); in parse_cpu_command()
6575 exit(-1); in parse_cpu_command()
6593 { "hide", required_argument, 0, 'H' }, // meh, -h taken by --help in cmdline()
6607 …opt = getopt_long_only(argc, argv, "+C:c:Dde:hi:Jn:o:qST:v", long_options, &option_index)) != -1) { in cmdline()
6619 /* --enable specified counter */ in cmdline()
6628 * --hide: do not show those specified in cmdline()
6647 interval_tv.tv_usec = (interval - interval_tv.tv_sec) * 1000000; in cmdline()
6648 interval_ts.tv_nsec = (interval - interval_ts.tv_sec) * 1000000000; in cmdline()
6683 * --show: show only those specified in cmdline()
6716 if (ret == -1) in main()
6750 if (argc - optind) in main()