Lines Matching +full:0 +full:x80000007
40 struct timeval interval_tv = {5, 0};
41 struct timespec interval_ts = {5, 0};
106 #define RAPL_PKG (1 << 0)
107 /* 0x610 MSR_PKG_POWER_LIMIT */
108 /* 0x611 MSR_PKG_ENERGY_STATUS */
110 /* 0x613 MSR_PKG_PERF_STATUS */
112 /* 0x614 MSR_PKG_POWER_INFO */
115 /* 0x618 MSR_DRAM_POWER_LIMIT */
116 /* 0x619 MSR_DRAM_ENERGY_STATUS */
118 /* 0x61b MSR_DRAM_PERF_STATUS */
120 /* 0x61c MSR_DRAM_POWER_INFO */
123 /* 0x638 MSR_PP0_POWER_LIMIT */
125 /* 0x63a MSR_PP0_POLICY */
128 /* 0x640 MSR_PP1_POWER_LIMIT */
129 /* 0x641 MSR_PP1_ENERGY_STATUS */
130 /* 0x642 MSR_PP1_POLICY */
133 /* 0x639 MSR_PP0_ENERGY_STATUS */
138 /* 0xc0010299 MSR_RAPL_PWR_UNIT */
139 /* 0xc001029a MSR_CORE_ENERGY_STAT */
140 /* 0xc001029b MSR_PKG_ENERGY_STAT */
145 #define MSR_RAPL_PWR_UNIT 0xc0010299
146 #define MSR_CORE_ENERGY_STAT 0xc001029a
147 #define MSR_PKG_ENERGY_STAT 0xc001029b
182 #define CPU_IS_FIRST_THREAD_IN_CORE 0x2
183 #define CPU_IS_FIRST_CORE_IN_PACKAGE 0x4
259 #define FLAGS_HIDE (1 << 0)
372 return 0; in idx_valid()
395 int logical_node_id; /* 0-based count within the package */
438 for (pkg_no = 0; pkg_no < topo.num_packages; ++pkg_no) { in for_all_cpus()
439 for (node_no = 0; node_no < topo.nodes_per_pkg; node_no++) { in for_all_cpus()
440 for (core_no = 0; core_no < topo.cores_per_node; ++core_no) { in for_all_cpus()
441 for (thread_no = 0; thread_no < in for_all_cpus()
465 return 0; in for_all_cpus()
472 if (sched_setaffinity(0, cpu_affinity_setsize, cpu_affinity_set) == -1) in cpu_migrate()
475 return 0; in cpu_migrate()
489 if (fd < 0) in get_msr_fd()
504 err(-1, "cpu%d: msr offset 0x%llx read failed", cpu, (unsigned long long)offset); in get_msr()
506 return 0; in get_msr()
516 { 0x0, "usec" },
517 { 0x0, "Time_Of_Day_Seconds" },
518 { 0x0, "Package" },
519 { 0x0, "Node" },
520 { 0x0, "Avg_MHz" },
521 { 0x0, "Busy%" },
522 { 0x0, "Bzy_MHz" },
523 { 0x0, "TSC_MHz" },
524 { 0x0, "IRQ" },
525 { 0x0, "SMI", "", 32, 0, FORMAT_DELTA, NULL},
526 { 0x0, "sysfs" },
527 { 0x0, "CPU%c1" },
528 { 0x0, "CPU%c3" },
529 { 0x0, "CPU%c6" },
530 { 0x0, "CPU%c7" },
531 { 0x0, "ThreadC" },
532 { 0x0, "CoreTmp" },
533 { 0x0, "CoreCnt" },
534 { 0x0, "PkgTmp" },
535 { 0x0, "GFX%rc6" },
536 { 0x0, "GFXMHz" },
537 { 0x0, "Pkg%pc2" },
538 { 0x0, "Pkg%pc3" },
539 { 0x0, "Pkg%pc6" },
540 { 0x0, "Pkg%pc7" },
541 { 0x0, "Pkg%pc8" },
542 { 0x0, "Pkg%pc9" },
543 { 0x0, "Pk%pc10" },
544 { 0x0, "CPU%LPI" },
545 { 0x0, "SYS%LPI" },
546 { 0x0, "PkgWatt" },
547 { 0x0, "CorWatt" },
548 { 0x0, "GFXWatt" },
549 { 0x0, "PkgCnt" },
550 { 0x0, "RAMWatt" },
551 { 0x0, "PKG_%" },
552 { 0x0, "RAM_%" },
553 { 0x0, "Pkg_J" },
554 { 0x0, "Cor_J" },
555 { 0x0, "GFX_J" },
556 { 0x0, "RAM_J" },
557 { 0x0, "Mod%c6" },
558 { 0x0, "Totl%C0" },
559 { 0x0, "Any%C0" },
560 { 0x0, "GFX%C0" },
561 { 0x0, "CPUGFX%" },
562 { 0x0, "Core" },
563 { 0x0, "CPU" },
564 { 0x0, "APIC" },
565 { 0x0, "X2APIC" },
566 { 0x0, "Die" },
567 { 0x0, "GFXAMHz" },
571 #define BIC_USEC (1ULL << 0)
626 unsigned long long bic_enabled = (0xFFFFFFFFFFFFFFFFULL & ~BIC_DISABLED_BY_DEFAULT);
695 unsigned long long retval = 0; in bic_lookup()
703 *comma = '\0'; in bic_lookup()
706 return ~0; in bic_lookup()
708 for (i = 0; i < MAX_BIC; ++i) { in bic_lookup()
742 int printed = 0; in print_header()
926 outp += sprintf(outp, "CPU: %d flags 0x%x\n", in dump_counters()
938 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in dump_counters()
950 outp += sprintf(outp, "Joules: %0X\n", c->core_energy); in dump_counters()
952 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in dump_counters()
979 outp += sprintf(outp, "Joules PKG: %0llX\n", p->energy_pkg); in dump_counters()
980 outp += sprintf(outp, "Joules COR: %0llX\n", p->energy_cores); in dump_counters()
981 outp += sprintf(outp, "Joules GFX: %0llX\n", p->energy_gfx); in dump_counters()
982 outp += sprintf(outp, "Joules RAM: %0llX\n", p->energy_dram); in dump_counters()
983 outp += sprintf(outp, "Throttle PKG: %0llX\n", in dump_counters()
985 outp += sprintf(outp, "Throttle RAM: %0llX\n", in dump_counters()
989 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in dump_counters()
997 return 0; in dump_counters()
1011 int printed = 0; in format_counters()
1015 return 0; in format_counters()
1019 return 0; in format_counters()
1024 return 0; in format_counters()
1095 outp += sprintf(outp, "%s%.0f", (printed++ ? delim : ""), in format_counters()
1103 outp += sprintf(outp, "%s%.0f", (printed++ ? delim : ""), base_hz / units * t->aperf / t->mperf); in format_counters()
1105 outp += sprintf(outp, "%s%.0f", (printed++ ? delim : ""), in format_counters()
1110 outp += sprintf(outp, "%s%.0f", (printed++ ? delim : ""), 1.0 * t->tsc/units/interval_float); in format_counters()
1125 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in format_counters()
1167 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in format_counters()
1267 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in format_counters()
1287 return 0; in format_counters()
1376 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in delta_package()
1383 return 0; in delta_package()
1400 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in delta_core()
1411 return 0; in soft_c1_residency_display()
1472 * to exceed TSC's all cycles: show c1 = 0% in that case. in delta_thread()
1475 old->c1 = 0; in delta_thread()
1483 if (old->mperf == 0) { in delta_thread()
1485 fprintf(outf, "cpu%d MPERF 0!\n", old->cpu_id); in delta_thread()
1486 old->mperf = 1; /* divide by 0 protection */ in delta_thread()
1495 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in delta_thread()
1501 return 0; in delta_thread()
1508 int retval = 0; in delta_cpu()
1531 t->tv_begin.tv_sec = 0; in clear_counters()
1532 t->tv_begin.tv_usec = 0; in clear_counters()
1533 t->tv_end.tv_sec = 0; in clear_counters()
1534 t->tv_end.tv_usec = 0; in clear_counters()
1535 t->tv_delta.tv_sec = 0; in clear_counters()
1536 t->tv_delta.tv_usec = 0; in clear_counters()
1538 t->tsc = 0; in clear_counters()
1539 t->aperf = 0; in clear_counters()
1540 t->mperf = 0; in clear_counters()
1541 t->c1 = 0; in clear_counters()
1543 t->irq_count = 0; in clear_counters()
1544 t->smi_count = 0; in clear_counters()
1549 c->c3 = 0; in clear_counters()
1550 c->c6 = 0; in clear_counters()
1551 c->c7 = 0; in clear_counters()
1552 c->mc6_us = 0; in clear_counters()
1553 c->core_temp_c = 0; in clear_counters()
1554 c->core_energy = 0; in clear_counters()
1556 p->pkg_wtd_core_c0 = 0; in clear_counters()
1557 p->pkg_any_core_c0 = 0; in clear_counters()
1558 p->pkg_any_gfxe_c0 = 0; in clear_counters()
1559 p->pkg_both_core_gfxe_c0 = 0; in clear_counters()
1561 p->pc2 = 0; in clear_counters()
1563 p->pc3 = 0; in clear_counters()
1565 p->pc6 = 0; in clear_counters()
1567 p->pc7 = 0; in clear_counters()
1568 p->pc8 = 0; in clear_counters()
1569 p->pc9 = 0; in clear_counters()
1570 p->pc10 = 0; in clear_counters()
1571 p->cpu_lpi = 0; in clear_counters()
1572 p->sys_lpi = 0; in clear_counters()
1574 p->energy_pkg = 0; in clear_counters()
1575 p->energy_dram = 0; in clear_counters()
1576 p->energy_cores = 0; in clear_counters()
1577 p->energy_gfx = 0; in clear_counters()
1578 p->rapl_pkg_perf_status = 0; in clear_counters()
1579 p->rapl_dram_perf_status = 0; in clear_counters()
1580 p->pkg_temp_c = 0; in clear_counters()
1582 p->gfx_rc6_ms = 0; in clear_counters()
1583 p->gfx_mhz = 0; in clear_counters()
1584 p->gfx_act_mhz = 0; in clear_counters()
1585 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) in clear_counters()
1586 t->counter[i] = 0; in clear_counters()
1588 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) in clear_counters()
1589 c->counter[i] = 0; in clear_counters()
1591 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) in clear_counters()
1592 p->counter[i] = 0; in clear_counters()
1607 if (average.threads.tv_begin.tv_sec == 0) in sum_counters()
1621 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in sum_counters()
1629 return 0; in sum_counters()
1640 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in sum_counters()
1648 return 0; in sum_counters()
1687 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in sum_counters()
1692 return 0; in sum_counters()
1745 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in compute_average()
1755 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in compute_average()
1764 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in compute_average()
1819 if (mp->msr_num != 0) { in get_mp()
1835 return 0; in get_mp()
1843 eax = ebx = ecx = edx = 0; in get_apic_id()
1846 t->apic_id = (ebx >> 24) & 0xff; in get_apic_id()
1855 if (max_extended_level < 0x8000001e) in get_apic_id()
1858 eax = ebx = ecx = edx = 0; in get_apic_id()
1859 __cpuid(0x80000001, eax, ebx, ecx, edx); in get_apic_id()
1862 if (topology_extensions == 0) in get_apic_id()
1865 eax = ebx = ecx = edx = 0; in get_apic_id()
1866 __cpuid(0x8000001e, eax, ebx, ecx, edx); in get_apic_id()
1875 if (max_level < 0xb) in get_apic_id()
1878 ecx = 0; in get_apic_id()
1879 __cpuid(0xb, eax, ebx, ecx, edx); in get_apic_id()
1882 if (debug && (t->apic_id != (t->x2apic_id & 0xff))) in get_apic_id()
1883 fprintf(outf, "cpu%d: BIOS BUG: apic 0x%x x2apic 0x%x\n", in get_apic_id()
1896 int aperf_mperf_retry_count = 0; in get_counters()
1963 aperf_mperf_retry_count = 0; in get_counters()
1974 t->smi_count = msr & 0xFFFFFFFF; in get_counters()
1981 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { in get_counters()
2014 c->core_temp_c = tcc_activation_temp - ((msr >> 16) & 0x7F); in get_counters()
2020 c->core_energy = msr & 0xFFFFFFFF; in get_counters()
2023 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { in get_counters()
2120 p->pkg_temp_c = tcc_activation_temp - ((msr >> 16) & 0x7F); in get_counters()
2132 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { in get_counters()
2139 return 0; in get_counters()
2148 #define PCLUKN 0 /* Unknown */
2193 fprintf(outf, "cpu%d: MSR_PLATFORM_INFO: 0x%08llx\n", base_cpu, msr); in dump_nhm_platform_info()
2195 ratio = (msr >> 40) & 0xFF; in dump_nhm_platform_info()
2199 ratio = (msr >> 8) & 0xFF; in dump_nhm_platform_info()
2204 fprintf(outf, "cpu%d: MSR_IA32_POWER_CTL: 0x%08llx (C1E auto-promotion: %sabled)\n", in dump_nhm_platform_info()
2205 base_cpu, msr, msr & 0x2 ? "EN" : "DIS"); in dump_nhm_platform_info()
2218 fprintf(outf, "cpu%d: MSR_TURBO_RATIO_LIMIT2: 0x%08llx\n", base_cpu, msr); in dump_hsw_turbo_ratio_limits()
2220 ratio = (msr >> 8) & 0xFF; in dump_hsw_turbo_ratio_limits()
2225 ratio = (msr >> 0) & 0xFF; in dump_hsw_turbo_ratio_limits()
2240 fprintf(outf, "cpu%d: MSR_TURBO_RATIO_LIMIT1: 0x%08llx\n", base_cpu, msr); in dump_ivt_turbo_ratio_limits()
2242 ratio = (msr >> 56) & 0xFF; in dump_ivt_turbo_ratio_limits()
2247 ratio = (msr >> 48) & 0xFF; in dump_ivt_turbo_ratio_limits()
2252 ratio = (msr >> 40) & 0xFF; in dump_ivt_turbo_ratio_limits()
2257 ratio = (msr >> 32) & 0xFF; in dump_ivt_turbo_ratio_limits()
2262 ratio = (msr >> 24) & 0xFF; in dump_ivt_turbo_ratio_limits()
2267 ratio = (msr >> 16) & 0xFF; in dump_ivt_turbo_ratio_limits()
2272 ratio = (msr >> 8) & 0xFF; in dump_ivt_turbo_ratio_limits()
2277 ratio = (msr >> 0) & 0xFF; in dump_ivt_turbo_ratio_limits()
2287 return 0; in has_turbo_ratio_group_limits()
2296 return 0; in has_turbo_ratio_group_limits()
2306 fprintf(outf, "cpu%d: MSR_TURBO_RATIO_LIMIT: 0x%08llx\n", base_cpu, msr); in dump_turbo_ratio_limits()
2310 fprintf(outf, "cpu%d: MSR_TURBO_RATIO_LIMIT1: 0x%08llx\n", base_cpu, core_counts); in dump_turbo_ratio_limits()
2312 core_counts = 0x0807060504030201; in dump_turbo_ratio_limits()
2315 ratio = (msr >> 56) & 0xFF; in dump_turbo_ratio_limits()
2316 group_size = (core_counts >> 56) & 0xFF; in dump_turbo_ratio_limits()
2321 ratio = (msr >> 48) & 0xFF; in dump_turbo_ratio_limits()
2322 group_size = (core_counts >> 48) & 0xFF; in dump_turbo_ratio_limits()
2327 ratio = (msr >> 40) & 0xFF; in dump_turbo_ratio_limits()
2328 group_size = (core_counts >> 40) & 0xFF; in dump_turbo_ratio_limits()
2333 ratio = (msr >> 32) & 0xFF; in dump_turbo_ratio_limits()
2334 group_size = (core_counts >> 32) & 0xFF; in dump_turbo_ratio_limits()
2339 ratio = (msr >> 24) & 0xFF; in dump_turbo_ratio_limits()
2340 group_size = (core_counts >> 24) & 0xFF; in dump_turbo_ratio_limits()
2345 ratio = (msr >> 16) & 0xFF; in dump_turbo_ratio_limits()
2346 group_size = (core_counts >> 16) & 0xFF; in dump_turbo_ratio_limits()
2351 ratio = (msr >> 8) & 0xFF; in dump_turbo_ratio_limits()
2352 group_size = (core_counts >> 8) & 0xFF; in dump_turbo_ratio_limits()
2357 ratio = (msr >> 0) & 0xFF; in dump_turbo_ratio_limits()
2358 group_size = (core_counts >> 0) & 0xFF; in dump_turbo_ratio_limits()
2372 fprintf(outf, "cpu%d: MSR_ATOM_CORE_RATIOS: 0x%08llx\n", base_cpu, msr & 0xFFFFFFFF); in dump_atom_turbo_ratio_limits()
2374 ratio = (msr >> 0) & 0x3F; in dump_atom_turbo_ratio_limits()
2379 ratio = (msr >> 8) & 0x3F; in dump_atom_turbo_ratio_limits()
2384 ratio = (msr >> 16) & 0x3F; in dump_atom_turbo_ratio_limits()
2390 fprintf(outf, "cpu%d: MSR_ATOM_CORE_TURBO_RATIOS: 0x%08llx\n", base_cpu, msr & 0xFFFFFFFF); in dump_atom_turbo_ratio_limits()
2392 ratio = (msr >> 24) & 0x3F; in dump_atom_turbo_ratio_limits()
2397 ratio = (msr >> 16) & 0x3F; in dump_atom_turbo_ratio_limits()
2402 ratio = (msr >> 8) & 0x3F; in dump_atom_turbo_ratio_limits()
2407 ratio = (msr >> 0) & 0x3F; in dump_atom_turbo_ratio_limits()
2426 fprintf(outf, "cpu%d: MSR_TURBO_RATIO_LIMIT: 0x%08llx\n", in dump_knl_turbo_ratio_limits()
2431 * [0] -- Reserved in dump_knl_turbo_ratio_limits()
2452 b_nr = 0; in dump_knl_turbo_ratio_limits()
2453 cores[b_nr] = (msr & 0xFF) >> 1; in dump_knl_turbo_ratio_limits()
2454 ratio[b_nr] = (msr >> 8) & 0xFF; in dump_knl_turbo_ratio_limits()
2457 delta_cores = (msr >> i) & 0x1F; in dump_knl_turbo_ratio_limits()
2458 delta_ratio = (msr >> (i + 5)) & 0x7; in dump_knl_turbo_ratio_limits()
2465 for (i = buckets_no - 1; i >= 0; i--) in dump_knl_turbo_ratio_limits()
2466 if (i > 0 ? ratio[i] != ratio[i - 1] : 1) in dump_knl_turbo_ratio_limits()
2479 fprintf(outf, "cpu%d: MSR_PKG_CST_CONFIG_CONTROL: 0x%08llx", base_cpu, msr); in dump_nhm_cst_cfg()
2487 (unsigned int)msr & 0xF, in dump_nhm_cst_cfg()
2507 fprintf(outf, "cpu%d: MSR_CONFIG_TDP_NOMINAL: 0x%08llx", base_cpu, msr); in dump_config_tdp()
2508 fprintf(outf, " (base_ratio=%d)\n", (unsigned int)msr & 0xFF); in dump_config_tdp()
2511 fprintf(outf, "cpu%d: MSR_CONFIG_TDP_LEVEL_1: 0x%08llx (", base_cpu, msr); in dump_config_tdp()
2513 fprintf(outf, "PKG_MIN_PWR_LVL1=%d ", (unsigned int)(msr >> 48) & 0x7FFF); in dump_config_tdp()
2514 fprintf(outf, "PKG_MAX_PWR_LVL1=%d ", (unsigned int)(msr >> 32) & 0x7FFF); in dump_config_tdp()
2515 fprintf(outf, "LVL1_RATIO=%d ", (unsigned int)(msr >> 16) & 0xFF); in dump_config_tdp()
2516 fprintf(outf, "PKG_TDP_LVL1=%d", (unsigned int)(msr) & 0x7FFF); in dump_config_tdp()
2521 fprintf(outf, "cpu%d: MSR_CONFIG_TDP_LEVEL_2: 0x%08llx (", base_cpu, msr); in dump_config_tdp()
2523 fprintf(outf, "PKG_MIN_PWR_LVL2=%d ", (unsigned int)(msr >> 48) & 0x7FFF); in dump_config_tdp()
2524 fprintf(outf, "PKG_MAX_PWR_LVL2=%d ", (unsigned int)(msr >> 32) & 0x7FFF); in dump_config_tdp()
2525 fprintf(outf, "LVL2_RATIO=%d ", (unsigned int)(msr >> 16) & 0xFF); in dump_config_tdp()
2526 fprintf(outf, "PKG_TDP_LVL2=%d", (unsigned int)(msr) & 0x7FFF); in dump_config_tdp()
2531 fprintf(outf, "cpu%d: MSR_CONFIG_TDP_CONTROL: 0x%08llx (", base_cpu, msr); in dump_config_tdp()
2532 if ((msr) & 0x3) in dump_config_tdp()
2533 fprintf(outf, "TDP_LEVEL=%d ", (unsigned int)(msr) & 0x3); in dump_config_tdp()
2538 fprintf(outf, "cpu%d: MSR_TURBO_ACTIVATION_RATIO: 0x%08llx (", base_cpu, msr); in dump_config_tdp()
2539 fprintf(outf, "MAX_NON_TURBO_RATIO=%d", (unsigned int)(msr) & 0xFF); in dump_config_tdp()
2544 unsigned int irtl_time_units[] = {1, 32, 1024, 32768, 1048576, 33554432, 0, 0 };
2551 fprintf(outf, "cpu%d: MSR_PKGC3_IRTL: 0x%08llx (", base_cpu, msr); in print_irtl()
2553 (msr & 0x3FF) * irtl_time_units[(msr >> 10) & 0x3]); in print_irtl()
2556 fprintf(outf, "cpu%d: MSR_PKGC6_IRTL: 0x%08llx (", base_cpu, msr); in print_irtl()
2558 (msr & 0x3FF) * irtl_time_units[(msr >> 10) & 0x3]); in print_irtl()
2561 fprintf(outf, "cpu%d: MSR_PKGC7_IRTL: 0x%08llx (", base_cpu, msr); in print_irtl()
2563 (msr & 0x3FF) * irtl_time_units[(msr >> 10) & 0x3]); in print_irtl()
2569 fprintf(outf, "cpu%d: MSR_PKGC8_IRTL: 0x%08llx (", base_cpu, msr); in print_irtl()
2571 (msr & 0x3FF) * irtl_time_units[(msr >> 10) & 0x3]); in print_irtl()
2574 fprintf(outf, "cpu%d: MSR_PKGC9_IRTL: 0x%08llx (", base_cpu, msr); in print_irtl()
2576 (msr & 0x3FF) * irtl_time_units[(msr >> 10) & 0x3]); in print_irtl()
2579 fprintf(outf, "cpu%d: MSR_PKGC10_IRTL: 0x%08llx (", base_cpu, msr); in print_irtl()
2581 (msr & 0x3FF) * irtl_time_units[(msr >> 10) & 0x3]); in print_irtl()
2588 for (i = 0; i < topo.max_cpu_num + 1; ++i) { in free_fd_percpu()
2589 if (fd_percpu[i] != 0) in free_fd_percpu()
2602 cpu_present_setsize = 0; in free_all_buffers()
2606 cpu_affinity_setsize = 0; in free_all_buffers()
2633 for (i = 0; i <= topo.max_cpu_num; ++i) { in free_all_buffers()
2643 * Return 0 if file can not be opened
2658 return 0; in parse_int_file()
2695 for (cpu = 0; cpu <= topo.max_cpu_num; ++cpu) in set_node_data()
2698 cpu_count = 0; in set_node_data()
2699 for (pkg = 0; pkg < topo.num_packages; pkg++) { in set_node_data()
2700 lnode = 0; in set_node_data()
2701 for (cpu = 0; cpu <= topo.max_cpu_num; ++cpu) { in set_node_data()
2737 for (i = 0; i <= topo.max_cpu_num; i++) { in get_physical_node_id()
2758 int thread_id = 0; in get_thread_siblings()
2761 if (thiscpu->thread_id < 0) in get_thread_siblings()
2781 for (shift = 0; shift < BITMASK_SIZE; shift++) { in get_thread_siblings()
2782 if ((map >> shift) & 0x1) { in get_thread_siblings()
2788 (cpus[so].thread_id < 0)) in get_thread_siblings()
2814 for (pkg_no = 0; pkg_no < topo.num_packages; ++pkg_no) { in for_all_cpus_2()
2815 for (node_no = 0; node_no < topo.nodes_per_pkg; ++node_no) { in for_all_cpus_2()
2816 for (core_no = 0; core_no < topo.cores_per_node; in for_all_cpus_2()
2818 for (thread_no = 0; thread_no < in for_all_cpus_2()
2851 return 0; in for_all_cpus_2()
2867 if (retval != 0) in for_all_proc_cpus()
2882 return 0; in for_all_proc_cpus()
2900 if (base_cpu < 0) in set_max_cpu_num()
2907 topo.max_cpu_num = 0; in set_max_cpu_num()
2911 topo.max_cpu_num--; /* 0 based */ in set_max_cpu_num()
2921 return 0; in count_cpus()
2926 return 0; in mark_cpu_present()
2932 return 0; in init_thread_id()
2940 * return 1 if config change requires a restart, else return 0
2953 for (column = 0; column < topo.num_cpus; ++column) { in snapshot_proc_interrupts()
2966 irqs_per_cpu[cpu_number] = 0; in snapshot_proc_interrupts()
2979 for (column = 0; column < topo.num_cpus; ++column) { in snapshot_proc_interrupts()
2996 return 0; in snapshot_proc_interrupts()
3004 * return 1 if config change requires a restart, else return 0
3019 return 0; in snapshot_gfx_rc6_ms()
3027 * return 1 if config change requires a restart, else return 0
3045 return 0; in snapshot_gfx_mhz()
3054 * return 1 if config change requires a restart, else return 0
3072 return 0; in snapshot_gfx_act_mhz()
3098 return 0; in snapshot_cpu_lpi_us()
3121 return 0; in snapshot_sys_lpi_us()
3126 * return 1 if configuration restart needed, else return 0
3149 return 0; in snapshot_proc_sysfs_files()
3173 memset(&sa, 0, sizeof(sa)); in setup_signal_handler()
3177 if (sigaction(SIGINT, &sa, NULL) < 0) in setup_signal_handler()
3179 if (sigaction(SIGUSR1, &sa, NULL) < 0) in setup_signal_handler()
3191 FD_SET(0, &readfds); in do_sleep()
3229 if (idx < 0) in get_msr_sum()
3239 return 0; in get_msr_sum()
3257 if (offset < 0) in update_msr_sum()
3261 fprintf(outf, "Can not update msr(0x%llx)\n", in update_msr_sum()
3267 per_cpu_msr_sum[cpu].entries[i].last = msr_cur & 0xffffffff; in update_msr_sum()
3272 return 0; in update_msr_sum()
3294 memset(&sev, 0, sizeof(struct sigevent)); in msr_sum_record()
3304 its.it_value.tv_sec = 0; in msr_sum_record()
3313 its.it_interval.tv_nsec = 0; in msr_sum_record()
3315 if (timer_settime(timerid, 0, &its, NULL) == -1) { in msr_sum_record()
3330 int restarted = 0; in turbostat_loop()
3331 int done_iters = 0; in turbostat_loop()
3340 first_counter_read = 0; in turbostat_loop()
3350 restarted = 0; in turbostat_loop()
3351 done_iters = 0; in turbostat_loop()
3416 err(-5, "no /dev/cpu/0/msr, Try \"# modprobe msr\" "); in check_dev_msr()
3421 * return 0 on success
3445 return 0; in check_for_cap_sys_rawio()
3449 int do_exit = 0; in check_permissions()
3459 warn("/dev/cpu/0/msr open failed, try chown or chmod +r /dev/cpu/*/msr"); in check_permissions()
3464 if (getuid() != 0) in check_permissions()
3474 * MSR_SMI_COUNT 0x00000034
3476 * MSR_PLATFORM_INFO 0x000000ce
3477 * MSR_PKG_CST_CONFIG_CONTROL 0x000000e2
3479 * MSR_MISC_PWR_MGMT 0x000001aa
3481 * MSR_PKG_C3_RESIDENCY 0x000003f8
3482 * MSR_PKG_C6_RESIDENCY 0x000003f9
3483 * MSR_CORE_C3_RESIDENCY 0x000003fc
3484 * MSR_CORE_C6_RESIDENCY 0x000003fd
3497 return 0; in probe_nhm_msrs()
3500 return 0; in probe_nhm_msrs()
3552 return 0; in probe_nhm_msrs()
3555 pkg_cstate_limit = pkg_cstate_limits[msr & 0xF]; in probe_nhm_msrs()
3558 base_ratio = (msr >> 8) & 0xFF; in probe_nhm_msrs()
3574 return 0; in has_slv_msrs()
3582 return 0; in has_slv_msrs()
3588 return 0; in is_dnv()
3594 return 0; in is_dnv()
3600 return 0; in is_bdx()
3606 return 0; in is_bdx()
3612 return 0; in is_skx()
3618 return 0; in is_skx()
3623 return 0; in is_ehl()
3629 return 0; in is_ehl()
3634 return 0; in is_jvl()
3640 return 0; in is_jvl()
3646 return 0; in has_turbo_ratio_limit()
3652 return 0; in has_turbo_ratio_limit()
3662 return 0; in has_atom_turbo_ratio_limit()
3667 return 0; in has_ivt_turbo_ratio_limit()
3670 return 0; in has_ivt_turbo_ratio_limit()
3677 return 0; in has_ivt_turbo_ratio_limit()
3683 return 0; in has_hsw_turbo_ratio_limit()
3686 return 0; in has_hsw_turbo_ratio_limit()
3692 return 0; in has_hsw_turbo_ratio_limit()
3699 return 0; in has_knl_turbo_ratio_limit()
3702 return 0; in has_knl_turbo_ratio_limit()
3708 return 0; in has_knl_turbo_ratio_limit()
3714 return 0; in has_glm_turbo_ratio_limit()
3717 return 0; in has_glm_turbo_ratio_limit()
3724 return 0; in has_glm_turbo_ratio_limit()
3730 return 0; in has_config_tdp()
3733 return 0; in has_config_tdp()
3751 return 0; in has_config_tdp()
3766 *to = 0; in remove_underbar()
3834 for (state = 0; state < 10; ++state) { in dump_sysfs_cstate_config()
3848 *sp = '\0'; in dump_sysfs_cstate_config()
3930 return 0; in print_epb()
3936 return 0; in print_epb()
3944 return 0; in print_epb()
3946 switch (msr & 0xF) { in print_epb()
3960 fprintf(outf, "cpu%d: MSR_IA32_ENERGY_PERF_BIAS: 0x%08llx (%s)\n", cpu, msr, epb_string); in print_epb()
3962 return 0; in print_epb()
3974 return 0; in print_hwp()
3980 return 0; in print_hwp()
3988 return 0; in print_hwp()
3990 fprintf(outf, "cpu%d: MSR_PM_ENABLE: 0x%08llx (%sHWP)\n", in print_hwp()
3991 cpu, msr, (msr & (1 << 0)) ? "" : "No-"); in print_hwp()
3994 if ((msr & (1 << 0)) == 0) in print_hwp()
3995 return 0; in print_hwp()
3998 return 0; in print_hwp()
4000 fprintf(outf, "cpu%d: MSR_HWP_CAPABILITIES: 0x%08llx " in print_hwp()
4009 return 0; in print_hwp()
4011 fprintf(outf, "cpu%d: MSR_HWP_REQUEST: 0x%08llx " in print_hwp()
4012 "(min %d max %d des %d epp 0x%x window 0x%x pkg 0x%x)\n", in print_hwp()
4014 (unsigned int)(((msr) >> 0) & 0xff), in print_hwp()
4015 (unsigned int)(((msr) >> 8) & 0xff), in print_hwp()
4016 (unsigned int)(((msr) >> 16) & 0xff), in print_hwp()
4017 (unsigned int)(((msr) >> 24) & 0xff), in print_hwp()
4018 (unsigned int)(((msr) >> 32) & 0xff3), in print_hwp()
4019 (unsigned int)(((msr) >> 42) & 0x1)); in print_hwp()
4023 return 0; in print_hwp()
4025 fprintf(outf, "cpu%d: MSR_HWP_REQUEST_PKG: 0x%08llx " in print_hwp()
4026 "(min %d max %d des %d epp 0x%x window 0x%x)\n", in print_hwp()
4028 (unsigned int)(((msr) >> 0) & 0xff), in print_hwp()
4029 (unsigned int)(((msr) >> 8) & 0xff), in print_hwp()
4030 (unsigned int)(((msr) >> 16) & 0xff), in print_hwp()
4031 (unsigned int)(((msr) >> 24) & 0xff), in print_hwp()
4032 (unsigned int)(((msr) >> 32) & 0xff3)); in print_hwp()
4036 return 0; in print_hwp()
4038 fprintf(outf, "cpu%d: MSR_HWP_INTERRUPT: 0x%08llx " in print_hwp()
4041 ((msr) & 0x1) ? "EN" : "Dis", in print_hwp()
4042 ((msr) & 0x2) ? "EN" : "Dis"); in print_hwp()
4045 return 0; in print_hwp()
4047 fprintf(outf, "cpu%d: MSR_HWP_STATUS: 0x%08llx " in print_hwp()
4050 ((msr) & 0x1) ? "" : "No-", in print_hwp()
4051 ((msr) & 0x2) ? "" : "No-"); in print_hwp()
4053 return 0; in print_hwp()
4068 return 0; in print_perf_limit()
4077 fprintf(outf, "cpu%d: MSR_CORE_PERF_LIMIT_REASONS, 0x%08llx", cpu, msr); in print_perf_limit()
4092 (msr & 1 << 0) ? "PROCHOT, " : ""); in print_perf_limit()
4112 fprintf(outf, "cpu%d: MSR_GFX_PERF_LIMIT_REASONS, 0x%08llx", cpu, msr); in print_perf_limit()
4114 (msr & 1 << 0) ? "PROCHOT, " : "", in print_perf_limit()
4134 fprintf(outf, "cpu%d: MSR_RING_PERF_LIMIT_REASONS, 0x%08llx", cpu, msr); in print_perf_limit()
4136 (msr & 1 << 0) ? "PROCHOT, " : "", in print_perf_limit()
4150 return 0; in print_perf_limit()
4153 #define RAPL_POWER_GRANULARITY 0x7FFF /* 15 bit power granularity */
4154 #define RAPL_TIME_GRANULARITY 0x3F /* 6 bit time granularity */
4162 return ((msr >> 0) & RAPL_POWER_GRANULARITY) * rapl_power_units; in get_tdp_intel()
4332 /* units on package 0, verify later other packages match */ in rapl_probe_intel()
4336 rapl_power_units = 1.0 / (1 << (msr & 0xF)); in rapl_probe_intel()
4338 rapl_energy_units = 1.0 * (1 << (msr >> 8 & 0x1F)) / 1000000; in rapl_probe_intel()
4340 rapl_energy_units = 1.0 / (1 << (msr >> 8 & 0x1F)); in rapl_probe_intel()
4344 time_unit = msr >> 16 & 0xF; in rapl_probe_intel()
4345 if (time_unit == 0) in rapl_probe_intel()
4346 time_unit = 0xA; in rapl_probe_intel()
4352 rapl_joule_counter_range = 0xFFFFFFFF * rapl_energy_units / tdp; in rapl_probe_intel()
4354 …fprintf(outf, "RAPL: %.0f sec. Joule Counter Range, at %.0f Watts\n", rapl_joule_counter_range, td… in rapl_probe_intel()
4361 unsigned int has_rapl = 0; in rapl_probe_amd()
4364 if (max_extended_level >= 0x80000007) { in rapl_probe_amd()
4365 __cpuid(0x80000007, eax, ebx, ecx, edx); in rapl_probe_amd()
4370 if (!has_rapl || family < 0x17) in rapl_probe_amd()
4385 rapl_time_units = ldexp(1.0, -(msr >> 16 & 0xf)); in rapl_probe_amd()
4386 rapl_energy_units = ldexp(1.0, -(msr >> 8 & 0x1f)); in rapl_probe_amd()
4387 rapl_power_units = ldexp(1.0, -(msr & 0xf)); in rapl_probe_amd()
4391 rapl_joule_counter_range = 0xFFFFFFFF * rapl_energy_units / tdp; in rapl_probe_amd()
4393 …fprintf(outf, "RAPL: %.0f sec. Joule Counter Range, at %.0f Watts\n", rapl_joule_counter_range, td… in rapl_probe_amd()
4443 return 0; in print_thermal()
4449 return 0; in print_thermal()
4458 return 0; in print_thermal()
4460 dts = (msr >> 16) & 0x7F; in print_thermal()
4461 fprintf(outf, "cpu%d: MSR_IA32_PACKAGE_THERM_STATUS: 0x%08llx (%d C)\n", in print_thermal()
4465 return 0; in print_thermal()
4467 dts = (msr >> 16) & 0x7F; in print_thermal()
4468 dts2 = (msr >> 8) & 0x7F; in print_thermal()
4469 fprintf(outf, "cpu%d: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x%08llx (%d C, %d C)\n", in print_thermal()
4478 return 0; in print_thermal()
4480 dts = (msr >> 16) & 0x7F; in print_thermal()
4481 resolution = (msr >> 27) & 0xF; in print_thermal()
4482 fprintf(outf, "cpu%d: MSR_IA32_THERM_STATUS: 0x%08llx (%d C +/- %d)\n", in print_thermal()
4486 return 0; in print_thermal()
4488 dts = (msr >> 16) & 0x7F; in print_thermal()
4489 dts2 = (msr >> 8) & 0x7F; in print_thermal()
4490 fprintf(outf, "cpu%d: MSR_IA32_THERM_INTERRUPT: 0x%08llx (%d C, %d C)\n", in print_thermal()
4494 return 0; in print_thermal()
4502 ((msr >> 0) & 0x7FFF) * rapl_power_units, in print_power_limit_msr()
4503 (1.0 + (((msr >> 22) & 0x3)/4.0)) * (1 << ((msr >> 17) & 0x1F)) * rapl_time_units, in print_power_limit_msr()
4516 return 0; in print_rapl()
4520 return 0; in print_rapl()
4538 fprintf(outf, "cpu%d: %s: 0x%08llx (%f Watts, %f Joules, %f sec.)\n", cpu, msr_name, msr, in print_rapl()
4547 fprintf(outf, "cpu%d: MSR_PKG_POWER_INFO: 0x%08llx (%.0f W TDP, RAPL %.0f - %.0f W, %f sec.)\n", in print_rapl()
4549 ((msr >> 0) & RAPL_POWER_GRANULARITY) * rapl_power_units, in print_rapl()
4560 fprintf(outf, "cpu%d: MSR_PKG_POWER_LIMIT: 0x%08llx (%slocked)\n", in print_rapl()
4567 ((msr >> 32) & 0x7FFF) * rapl_power_units, in print_rapl()
4568 (1.0 + (((msr >> 54) & 0x3)/4.0)) * (1 << ((msr >> 49) & 0x1F)) * rapl_time_units, in print_rapl()
4576 fprintf(outf, "cpu%d: MSR_DRAM_POWER_INFO,: 0x%08llx (%.0f W TDP, RAPL %.0f - %.0f W, %f sec.)\n", in print_rapl()
4578 ((msr >> 0) & RAPL_POWER_GRANULARITY) * rapl_power_units, in print_rapl()
4586 fprintf(outf, "cpu%d: MSR_DRAM_POWER_LIMIT: 0x%08llx (%slocked)\n", in print_rapl()
4595 fprintf(outf, "cpu%d: MSR_PP0_POLICY: %lld\n", cpu, msr & 0xF); in print_rapl()
4600 fprintf(outf, "cpu%d: MSR_PP0_POWER_LIMIT: 0x%08llx (%slocked)\n", in print_rapl()
4608 fprintf(outf, "cpu%d: MSR_PP1_POLICY: %lld\n", cpu, msr & 0xF); in print_rapl()
4612 fprintf(outf, "cpu%d: MSR_PP1_POWER_LIMIT: 0x%08llx (%slocked)\n", in print_rapl()
4616 return 0; in print_rapl()
4622 * MSR_PKG_C7_RESIDENCY 0x000003fa
4623 * MSR_CORE_C7_RESIDENCY 0x000003fe
4624 * MSR_PKG_C2_RESIDENCY 0x0000060d
4630 return 0; in has_snb_msrs()
4654 return 0; in has_snb_msrs()
4660 * MSR_PKG_C8_RESIDENCY 0x00000630
4661 * MSR_PKG_C9_RESIDENCY 0x00000631
4662 * MSR_PKG_C10_RESIDENCY 0x00000632
4664 * MSR_PKGC8_IRTL 0x00000633
4665 * MSR_PKGC9_IRTL 0x00000634
4666 * MSR_PKGC10_IRTL 0x00000635
4672 return 0; in has_c8910_msrs()
4684 return 0; in has_c8910_msrs()
4690 * MSR_PKG_WEIGHTED_CORE_C0_RES 0x00000658
4691 * MSR_PKG_ANY_CORE_C0_RES 0x00000659
4692 * MSR_PKG_ANY_GFXE_C0_RES 0x0000065A
4693 * MSR_PKG_BOTH_CORE_GFXE_C0_RES 0x0000065B
4698 return 0; in has_skl_msrs()
4705 return 0; in has_skl_msrs()
4711 return 0; in is_slm()
4717 return 0; in is_slm()
4723 return 0; in is_knl()
4728 return 0; in is_knl()
4734 return 0; in is_cnl()
4741 return 0; in is_cnl()
4763 i = msr & 0xf; in slm_bclk()
4806 return 0; in set_temperature_target()
4810 return 0; in set_temperature_target()
4818 if (tcc_activation_temp_override != 0) { in set_temperature_target()
4822 return 0; in set_temperature_target()
4832 target_c_local = (msr >> 16) & 0xFF; in set_temperature_target()
4835 fprintf(outf, "cpu%d: MSR_IA32_TEMPERATURE_TARGET: 0x%08llx (%d C)\n", in set_temperature_target()
4843 return 0; in set_temperature_target()
4850 return 0; in set_temperature_target()
4858 fprintf(outf, "cpu%d: MSR_IA32_FEATURE_CONTROL: 0x%08llx (%sLocked %s)\n", in decode_feature_control_msr()
4872 fprintf(outf, "cpu%d: MSR_IA32_MISC_ENABLE: 0x%08llx (%sTCC %sEIST %sMWAIT %sPREFETCH %sTURBO)\n", in decode_misc_enable_msr()
4889 …fprintf(outf, "cpu%d: MSR_MISC_FEATURE_CONTROL: 0x%08llx (%sL2-Prefetch %sL2-Prefetch-pair %sL1-Pr… in decode_misc_feature_control()
4891 msr & (0 << 0) ? "No-" : "", in decode_misc_feature_control()
4892 msr & (1 << 0) ? "No-" : "", in decode_misc_feature_control()
4893 msr & (2 << 0) ? "No-" : "", in decode_misc_feature_control()
4894 msr & (3 << 0) ? "No-" : ""); in decode_misc_feature_control()
4900 * bit[0] seems to continue to have same meaning going forward
4914 …fprintf(outf, "cpu%d: MSR_MISC_PWR_MGMT: 0x%08llx (%sable-EIST_Coordination %sable-EPB %sable-OOB)… in decode_misc_pwr_mgmt_msr()
4916 msr & (1 << 0) ? "DIS" : "EN", in decode_misc_pwr_mgmt_msr()
4931 fprintf(outf, "cpu%d: MSR_CC6_DEMOTION_POLICY_CONFIG: 0x%08llx (%sable-CC6-Demotion)\n", in decode_c6_demotion_policy_msr()
4932 base_cpu, msr, msr & (1 << 0) ? "EN" : "DIS"); in decode_c6_demotion_policy_msr()
4935 fprintf(outf, "cpu%d: MSR_MC6_DEMOTION_POLICY_CONFIG: 0x%08llx (%sable-MC6-Demotion)\n", in decode_c6_demotion_policy_msr()
4936 base_cpu, msr, msr & (1 << 0) ? "EN" : "DIS"); in decode_c6_demotion_policy_msr()
4948 case 0x1F: /* Core i7 and i5 Processor - Nehalem */ in intel_model_duplicates()
4999 if (fd < 0) { in print_dev_latency()
5022 eax = ebx = ecx = edx = 0; in process_cpuid()
5024 __cpuid(0, max_level, ebx, ecx, edx); in process_cpuid()
5026 if (ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69) in process_cpuid()
5028 else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65) in process_cpuid()
5030 else if (ebx == 0x6f677948 && ecx == 0x656e6975 && edx == 0x6e65476e) in process_cpuid()
5034 fprintf(outf, "CPUID(0): %.4s%.4s%.4s ", in process_cpuid()
5038 family = (fms >> 8) & 0xf; in process_cpuid()
5039 model = (fms >> 4) & 0xf; in process_cpuid()
5040 stepping = fms & 0xf; in process_cpuid()
5041 if (family == 0xf) in process_cpuid()
5042 family += (fms >> 20) & 0xff; in process_cpuid()
5044 model += ((fms >> 16) & 0xf) << 4; in process_cpuid()
5053 ebx = ecx = edx = 0; in process_cpuid()
5054 __cpuid(0x80000000, max_extended_level, ebx, ecx, edx); in process_cpuid()
5057 fprintf(outf, "0x%x CPUID levels; 0x%x xlevels; family:model:stepping 0x%x:%x:%x (%d:%d:%d)\n", in process_cpuid()
5060 ecx_flags & (1 << 0) ? "SSE3" : "-", in process_cpuid()
5077 if (max_extended_level >= 0x80000007) { in process_cpuid()
5080 * Non-Stop TSC is advertised by CPUID.EAX=0x80000007: EDX.bit8 in process_cpuid()
5083 __cpuid(0x80000007, eax, ebx, ecx, edx); in process_cpuid()
5088 * APERF/MPERF is advertised by CPUID.EAX=0x6: ECX.bit0 in process_cpuid()
5092 __cpuid(0x6, eax, ebx, ecx, edx); in process_cpuid()
5093 has_aperf = ecx & (1 << 0); in process_cpuid()
5099 do_dts = eax & (1 << 0); in process_cpuid()
5131 if (max_level >= 0x7 && !quiet) { in process_cpuid()
5134 ecx = 0; in process_cpuid()
5136 __cpuid_count(0x7, 0, eax, ebx, ecx, edx); in process_cpuid()
5145 if (max_level >= 0x15) { in process_cpuid()
5152 eax_crystal = ebx_tsc = crystal_hz = edx = 0; in process_cpuid()
5153 __cpuid(0x15, eax_crystal, ebx_tsc, crystal_hz, edx); in process_cpuid()
5155 if (ebx_tsc != 0) { in process_cpuid()
5157 if (!quiet && (ebx != 0)) in process_cpuid()
5158 fprintf(outf, "CPUID(0x15): eax_crystal: %d ebx_tsc: %d ecx_crystal_hz: %d\n", in process_cpuid()
5161 if (crystal_hz == 0) in process_cpuid()
5174 crystal_hz = 0; in process_cpuid()
5185 if (max_level >= 0x16) { in process_cpuid()
5191 base_mhz = max_mhz = bus_mhz = edx = 0; in process_cpuid()
5193 __cpuid(0x16, base_mhz, max_mhz, bus_mhz, edx); in process_cpuid()
5195 fprintf(outf, "CPUID(0x16): base_mhz: %d max_mhz: %d bus_mhz: %d\n", in process_cpuid()
5342 if (isdigit(dirp->d_name[0])) in dir_filter()
5345 return 0; in dir_filter()
5350 return 0; in open_dev_cpu_msr()
5356 int max_core_id = 0; in topology_probe()
5357 int max_package_id = 0; in topology_probe()
5358 int max_die_id = 0; in topology_probe()
5359 int max_siblings = 0; in topology_probe()
5363 topo.num_cpus = 0; in topology_probe()
5388 for (i = 0; i < CPU_SUBSET_MAXCPUS; ++i) { in topology_probe()
5409 for (i = 0; i <= topo.max_cpu_num; ++i) { in topology_probe()
5444 if (cpus[i].thread_id == 0) in topology_probe()
5482 for (i = 0; i <= topo.max_cpu_num; ++i) { in topology_probe()
5509 for (i = 0; i < num_threads; i++) in allocate_counters()
5516 for (i = 0; i < num_cores; i++) in allocate_counters()
5523 for (i = 0; i < topo.num_packages; i++) in allocate_counters()
5550 if (node_id < 0) in init_counter()
5551 node_id = 0; in init_counter()
5558 if (thread_id == 0) { in init_counter()
5573 return 0; in initialize_counters()
5613 if (base_cpu < 0) in set_base_cpu()
5657 first_counter_read = 0; in fork_it()
5661 sched_setaffinity(0, cpu_present_setsize, cpu_present_set); in fork_it()
5667 execvp(argv[0], argv); in fork_it()
5668 err(errno, "exec %s", argv[0]); in fork_it()
5677 if (waitpid(child_pid, &status, 0) == -1) in fork_it()
5785 return 0; in add_counter()
5790 int msr_num = 0; in parse_add_command()
5794 int fail = 0; in parse_add_command()
5859 *eos = '\0'; in parse_add_command()
5866 *add_command = '\0'; in parse_add_command()
5871 if ((msr_num == 0) && (path == NULL)) { in parse_add_command()
5877 if (*name_buffer == '\0') { in parse_add_command()
5884 if (add_counter(msr_num, path, name_buffer, width, scope, type, format, 0)) in parse_add_command()
5897 for (i = 0; i < deferred_skip_index; ++i) in is_deferred_skip()
5900 return 0; in is_deferred_skip()
5914 for (state = 10; state >= 0; --state) { in probe_sysfs()
5929 *(sp + 1) = '\0'; in probe_sysfs()
5940 add_counter(0, path, name_buf, 64, SCOPE_CPU, COUNTER_USEC, in probe_sysfs()
5944 for (state = 10; state >= 0; --state) { in probe_sysfs()
5957 *sp = '\0'; in probe_sysfs()
5967 add_counter(0, path, name_buf, 64, SCOPE_CPU, COUNTER_ITEMS, in probe_sysfs()
6018 if (*next == '\0') in parse_cpu_command()
6048 else if (*next != '\0') in parse_cpu_command()
6064 int option_index = 0; in cmdline()
6066 {"add", required_argument, 0, 'a'}, in cmdline()
6067 {"cpu", required_argument, 0, 'c'}, in cmdline()
6068 {"Dump", no_argument, 0, 'D'}, in cmdline()
6069 {"debug", no_argument, 0, 'd'}, /* internal, not documented */ in cmdline()
6070 {"enable", required_argument, 0, 'e'}, in cmdline()
6071 {"interval", required_argument, 0, 'i'}, in cmdline()
6072 {"num_iterations", required_argument, 0, 'n'}, in cmdline()
6073 {"help", no_argument, 0, 'h'}, in cmdline()
6074 {"hide", required_argument, 0, 'H'}, // meh, -h taken by --help in cmdline()
6075 {"Joules", no_argument, 0, 'J'}, in cmdline()
6076 {"list", no_argument, 0, 'l'}, in cmdline()
6077 {"out", required_argument, 0, 'o'}, in cmdline()
6078 {"quiet", no_argument, 0, 'q'}, in cmdline()
6079 {"show", required_argument, 0, 's'}, in cmdline()
6080 {"Summary", no_argument, 0, 'S'}, in cmdline()
6081 {"TCC", required_argument, 0, 'T'}, in cmdline()
6082 {"version", no_argument, 0, 'v' }, in cmdline()
6083 {0, 0, 0, 0 } in cmdline()
6086 progname = argv[0]; in cmdline()
6151 if (num_iterations <= 0) { in cmdline()
6163 if (shown == 0) in cmdline()
6177 exit(0); in cmdline()
6203 return 0; in main()
6215 return 0; in main()