diff options
author | Len Brown <len.brown@intel.com> | 2017-01-27 00:50:45 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2017-03-01 00:14:13 -0500 |
commit | 0f47c08d8ccf8252a5c007502919bdc2126ffb1f (patch) | |
tree | 9bf2ec9195f3dbd96c80cfa3fcec2ec20624daff /tools/power/x86 | |
parent | 008d396eb219ee5a1c98c9ef01c35752d35f0d6c (diff) |
tools/power turbostat: bug fixes to --add, --show/--hide features
Fix a bug with --add, where the title of the column
is un-initialized if not specified by the user.
The initial implementation of --show and --hide
neglected to handle the pc8/pc9/pc10 counters.
Fix a bug where "--show Core" only worked with --debug
Reported-by: Wendy Wang <wendy.wang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'tools/power/x86')
-rw-r--r-- | tools/power/x86/turbostat/turbostat.c | 138 |
1 files changed, 77 insertions, 61 deletions
diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c index bbdf9ba9d41b..4b04ba86e44f 100644 --- a/tools/power/x86/turbostat/turbostat.c +++ b/tools/power/x86/turbostat/turbostat.c | |||
@@ -55,11 +55,6 @@ unsigned int summary_only; | |||
55 | unsigned int dump_only; | 55 | unsigned int dump_only; |
56 | unsigned int do_snb_cstates; | 56 | unsigned int do_snb_cstates; |
57 | unsigned int do_knl_cstates; | 57 | unsigned int do_knl_cstates; |
58 | unsigned int do_pc2; | ||
59 | unsigned int do_pc3; | ||
60 | unsigned int do_pc6; | ||
61 | unsigned int do_pc7; | ||
62 | unsigned int do_c8_c9_c10; | ||
63 | unsigned int do_skl_residency; | 58 | unsigned int do_skl_residency; |
64 | unsigned int do_slm_cstates; | 59 | unsigned int do_slm_cstates; |
65 | unsigned int use_c1_residency_msr; | 60 | unsigned int use_c1_residency_msr; |
@@ -365,6 +360,9 @@ struct msr_counter bic[] = { | |||
365 | { 0x0, "Pkg%pc3" }, | 360 | { 0x0, "Pkg%pc3" }, |
366 | { 0x0, "Pkg%pc6" }, | 361 | { 0x0, "Pkg%pc6" }, |
367 | { 0x0, "Pkg%pc7" }, | 362 | { 0x0, "Pkg%pc7" }, |
363 | { 0x0, "Pkg%pc8" }, | ||
364 | { 0x0, "Pkg%pc9" }, | ||
365 | { 0x0, "Pkg%pc10" }, | ||
368 | { 0x0, "PkgWatt" }, | 366 | { 0x0, "PkgWatt" }, |
369 | { 0x0, "CorWatt" }, | 367 | { 0x0, "CorWatt" }, |
370 | { 0x0, "GFXWatt" }, | 368 | { 0x0, "GFXWatt" }, |
@@ -403,26 +401,30 @@ struct msr_counter bic[] = { | |||
403 | #define BIC_Pkgpc3 (1ULL << 18) | 401 | #define BIC_Pkgpc3 (1ULL << 18) |
404 | #define BIC_Pkgpc6 (1ULL << 19) | 402 | #define BIC_Pkgpc6 (1ULL << 19) |
405 | #define BIC_Pkgpc7 (1ULL << 20) | 403 | #define BIC_Pkgpc7 (1ULL << 20) |
406 | #define BIC_PkgWatt (1ULL << 21) | 404 | #define BIC_Pkgpc8 (1ULL << 21) |
407 | #define BIC_CorWatt (1ULL << 22) | 405 | #define BIC_Pkgpc9 (1ULL << 22) |
408 | #define BIC_GFXWatt (1ULL << 23) | 406 | #define BIC_Pkgpc10 (1ULL << 23) |
409 | #define BIC_PkgCnt (1ULL << 24) | 407 | #define BIC_PkgWatt (1ULL << 24) |
410 | #define BIC_RAMWatt (1ULL << 27) | 408 | #define BIC_CorWatt (1ULL << 25) |
411 | #define BIC_PKG__ (1ULL << 28) | 409 | #define BIC_GFXWatt (1ULL << 26) |
412 | #define BIC_RAM__ (1ULL << 29) | 410 | #define BIC_PkgCnt (1ULL << 27) |
413 | #define BIC_Pkg_J (1ULL << 30) | 411 | #define BIC_RAMWatt (1ULL << 28) |
414 | #define BIC_Cor_J (1ULL << 31) | 412 | #define BIC_PKG__ (1ULL << 29) |
415 | #define BIC_GFX_J (1ULL << 30) | 413 | #define BIC_RAM__ (1ULL << 30) |
416 | #define BIC_RAM_J (1ULL << 31) | 414 | #define BIC_Pkg_J (1ULL << 31) |
417 | #define BIC_Core (1ULL << 32) | 415 | #define BIC_Cor_J (1ULL << 32) |
418 | #define BIC_CPU (1ULL << 33) | 416 | #define BIC_GFX_J (1ULL << 33) |
419 | #define BIC_Mod_c6 (1ULL << 34) | 417 | #define BIC_RAM_J (1ULL << 34) |
418 | #define BIC_Core (1ULL << 35) | ||
419 | #define BIC_CPU (1ULL << 36) | ||
420 | #define BIC_Mod_c6 (1ULL << 37) | ||
420 | 421 | ||
421 | unsigned long long bic_enabled = 0xFFFFFFFFFFFFFFFFULL; | 422 | unsigned long long bic_enabled = 0xFFFFFFFFFFFFFFFFULL; |
422 | unsigned long long bic_present; | 423 | unsigned long long bic_present; |
423 | 424 | ||
424 | #define DO_BIC(COUNTER_NAME) (bic_enabled & bic_present & COUNTER_NAME) | 425 | #define DO_BIC(COUNTER_NAME) (bic_enabled & bic_present & COUNTER_NAME) |
425 | #define BIC_PRESENT(COUNTER_BIT) (bic_present |= COUNTER_BIT) | 426 | #define BIC_PRESENT(COUNTER_BIT) (bic_present |= COUNTER_BIT) |
427 | #define BIC_NOT_PRESENT(COUNTER_BIT) (bic_present &= ~COUNTER_BIT) | ||
426 | 428 | ||
427 | /* | 429 | /* |
428 | * bic_lookup | 430 | * bic_lookup |
@@ -539,19 +541,20 @@ void print_header(void) | |||
539 | outp += sprintf(outp, "\tCPUGFX%%"); | 541 | outp += sprintf(outp, "\tCPUGFX%%"); |
540 | } | 542 | } |
541 | 543 | ||
542 | if (do_pc2) | 544 | if (DO_BIC(BIC_Pkgpc2)) |
543 | outp += sprintf(outp, "\tPkg%%pc2"); | 545 | outp += sprintf(outp, "\tPkg%%pc2"); |
544 | if (do_pc3) | 546 | if (DO_BIC(BIC_Pkgpc3)) |
545 | outp += sprintf(outp, "\tPkg%%pc3"); | 547 | outp += sprintf(outp, "\tPkg%%pc3"); |
546 | if (do_pc6) | 548 | if (DO_BIC(BIC_Pkgpc6)) |
547 | outp += sprintf(outp, "\tPkg%%pc6"); | 549 | outp += sprintf(outp, "\tPkg%%pc6"); |
548 | if (do_pc7) | 550 | if (DO_BIC(BIC_Pkgpc7)) |
549 | outp += sprintf(outp, "\tPkg%%pc7"); | 551 | outp += sprintf(outp, "\tPkg%%pc7"); |
550 | if (do_c8_c9_c10) { | 552 | if (DO_BIC(BIC_Pkgpc8)) |
551 | outp += sprintf(outp, "\tPkg%%pc8"); | 553 | outp += sprintf(outp, "\tPkg%%pc8"); |
554 | if (DO_BIC(BIC_Pkgpc9)) | ||
552 | outp += sprintf(outp, "\tPkg%%pc9"); | 555 | outp += sprintf(outp, "\tPkg%%pc9"); |
556 | if (DO_BIC(BIC_Pkgpc10)) | ||
553 | outp += sprintf(outp, "\tPk%%pc10"); | 557 | outp += sprintf(outp, "\tPk%%pc10"); |
554 | } | ||
555 | 558 | ||
556 | if (do_rapl && !rapl_joules) { | 559 | if (do_rapl && !rapl_joules) { |
557 | if (DO_BIC(BIC_PkgWatt)) | 560 | if (DO_BIC(BIC_PkgWatt)) |
@@ -644,11 +647,11 @@ int dump_counters(struct thread_data *t, struct core_data *c, | |||
644 | outp += sprintf(outp, "CPU + GFX: %016llX\n", p->pkg_both_core_gfxe_c0); | 647 | outp += sprintf(outp, "CPU + GFX: %016llX\n", p->pkg_both_core_gfxe_c0); |
645 | 648 | ||
646 | outp += sprintf(outp, "pc2: %016llX\n", p->pc2); | 649 | outp += sprintf(outp, "pc2: %016llX\n", p->pc2); |
647 | if (do_pc3) | 650 | if (DO_BIC(BIC_Pkgpc3)) |
648 | outp += sprintf(outp, "pc3: %016llX\n", p->pc3); | 651 | outp += sprintf(outp, "pc3: %016llX\n", p->pc3); |
649 | if (do_pc6) | 652 | if (DO_BIC(BIC_Pkgpc6)) |
650 | outp += sprintf(outp, "pc6: %016llX\n", p->pc6); | 653 | outp += sprintf(outp, "pc6: %016llX\n", p->pc6); |
651 | if (do_pc7) | 654 | if (DO_BIC(BIC_Pkgpc7)) |
652 | outp += sprintf(outp, "pc7: %016llX\n", p->pc7); | 655 | outp += sprintf(outp, "pc7: %016llX\n", p->pc7); |
653 | outp += sprintf(outp, "pc8: %016llX\n", p->pc8); | 656 | outp += sprintf(outp, "pc8: %016llX\n", p->pc8); |
654 | outp += sprintf(outp, "pc9: %016llX\n", p->pc9); | 657 | outp += sprintf(outp, "pc9: %016llX\n", p->pc9); |
@@ -827,19 +830,20 @@ int format_counters(struct thread_data *t, struct core_data *c, | |||
827 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pkg_both_core_gfxe_c0/tsc); | 830 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pkg_both_core_gfxe_c0/tsc); |
828 | } | 831 | } |
829 | 832 | ||
830 | if (do_pc2) | 833 | if (DO_BIC(BIC_Pkgpc2)) |
831 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc2/tsc); | 834 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc2/tsc); |
832 | if (do_pc3) | 835 | if (DO_BIC(BIC_Pkgpc3)) |
833 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc3/tsc); | 836 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc3/tsc); |
834 | if (do_pc6) | 837 | if (DO_BIC(BIC_Pkgpc6)) |
835 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc6/tsc); | 838 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc6/tsc); |
836 | if (do_pc7) | 839 | if (DO_BIC(BIC_Pkgpc7)) |
837 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc7/tsc); | 840 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc7/tsc); |
838 | if (do_c8_c9_c10) { | 841 | if (DO_BIC(BIC_Pkgpc8)) |
839 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc8/tsc); | 842 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc8/tsc); |
843 | if (DO_BIC(BIC_Pkgpc9)) | ||
840 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc9/tsc); | 844 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc9/tsc); |
845 | if (DO_BIC(BIC_Pkgpc10)) | ||
841 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc10/tsc); | 846 | outp += sprintf(outp, "\t%.2f", 100.0 * p->pc10/tsc); |
842 | } | ||
843 | 847 | ||
844 | /* | 848 | /* |
845 | * If measurement interval exceeds minimum RAPL Joule Counter range, | 849 | * If measurement interval exceeds minimum RAPL Joule Counter range, |
@@ -949,11 +953,11 @@ delta_package(struct pkg_data *new, struct pkg_data *old) | |||
949 | old->pkg_both_core_gfxe_c0 = new->pkg_both_core_gfxe_c0 - old->pkg_both_core_gfxe_c0; | 953 | old->pkg_both_core_gfxe_c0 = new->pkg_both_core_gfxe_c0 - old->pkg_both_core_gfxe_c0; |
950 | } | 954 | } |
951 | old->pc2 = new->pc2 - old->pc2; | 955 | old->pc2 = new->pc2 - old->pc2; |
952 | if (do_pc3) | 956 | if (DO_BIC(BIC_Pkgpc3)) |
953 | old->pc3 = new->pc3 - old->pc3; | 957 | old->pc3 = new->pc3 - old->pc3; |
954 | if (do_pc6) | 958 | if (DO_BIC(BIC_Pkgpc6)) |
955 | old->pc6 = new->pc6 - old->pc6; | 959 | old->pc6 = new->pc6 - old->pc6; |
956 | if (do_pc7) | 960 | if (DO_BIC(BIC_Pkgpc7)) |
957 | old->pc7 = new->pc7 - old->pc7; | 961 | old->pc7 = new->pc7 - old->pc7; |
958 | old->pc8 = new->pc8 - old->pc8; | 962 | old->pc8 = new->pc8 - old->pc8; |
959 | old->pc9 = new->pc9 - old->pc9; | 963 | old->pc9 = new->pc9 - old->pc9; |
@@ -1126,11 +1130,11 @@ void clear_counters(struct thread_data *t, struct core_data *c, struct pkg_data | |||
1126 | p->pkg_both_core_gfxe_c0 = 0; | 1130 | p->pkg_both_core_gfxe_c0 = 0; |
1127 | 1131 | ||
1128 | p->pc2 = 0; | 1132 | p->pc2 = 0; |
1129 | if (do_pc3) | 1133 | if (DO_BIC(BIC_Pkgpc3)) |
1130 | p->pc3 = 0; | 1134 | p->pc3 = 0; |
1131 | if (do_pc6) | 1135 | if (DO_BIC(BIC_Pkgpc6)) |
1132 | p->pc6 = 0; | 1136 | p->pc6 = 0; |
1133 | if (do_pc7) | 1137 | if (DO_BIC(BIC_Pkgpc7)) |
1134 | p->pc7 = 0; | 1138 | p->pc7 = 0; |
1135 | p->pc8 = 0; | 1139 | p->pc8 = 0; |
1136 | p->pc9 = 0; | 1140 | p->pc9 = 0; |
@@ -1204,11 +1208,11 @@ int sum_counters(struct thread_data *t, struct core_data *c, | |||
1204 | } | 1208 | } |
1205 | 1209 | ||
1206 | average.packages.pc2 += p->pc2; | 1210 | average.packages.pc2 += p->pc2; |
1207 | if (do_pc3) | 1211 | if (DO_BIC(BIC_Pkgpc3)) |
1208 | average.packages.pc3 += p->pc3; | 1212 | average.packages.pc3 += p->pc3; |
1209 | if (do_pc6) | 1213 | if (DO_BIC(BIC_Pkgpc6)) |
1210 | average.packages.pc6 += p->pc6; | 1214 | average.packages.pc6 += p->pc6; |
1211 | if (do_pc7) | 1215 | if (DO_BIC(BIC_Pkgpc7)) |
1212 | average.packages.pc7 += p->pc7; | 1216 | average.packages.pc7 += p->pc7; |
1213 | average.packages.pc8 += p->pc8; | 1217 | average.packages.pc8 += p->pc8; |
1214 | average.packages.pc9 += p->pc9; | 1218 | average.packages.pc9 += p->pc9; |
@@ -1266,11 +1270,11 @@ void compute_average(struct thread_data *t, struct core_data *c, | |||
1266 | } | 1270 | } |
1267 | 1271 | ||
1268 | average.packages.pc2 /= topo.num_packages; | 1272 | average.packages.pc2 /= topo.num_packages; |
1269 | if (do_pc3) | 1273 | if (DO_BIC(BIC_Pkgpc3)) |
1270 | average.packages.pc3 /= topo.num_packages; | 1274 | average.packages.pc3 /= topo.num_packages; |
1271 | if (do_pc6) | 1275 | if (DO_BIC(BIC_Pkgpc6)) |
1272 | average.packages.pc6 /= topo.num_packages; | 1276 | average.packages.pc6 /= topo.num_packages; |
1273 | if (do_pc7) | 1277 | if (DO_BIC(BIC_Pkgpc7)) |
1274 | average.packages.pc7 /= topo.num_packages; | 1278 | average.packages.pc7 /= topo.num_packages; |
1275 | 1279 | ||
1276 | average.packages.pc8 /= topo.num_packages; | 1280 | average.packages.pc8 /= topo.num_packages; |
@@ -1448,10 +1452,10 @@ retry: | |||
1448 | if (get_msr(cpu, MSR_PKG_BOTH_CORE_GFXE_C0_RES, &p->pkg_both_core_gfxe_c0)) | 1452 | if (get_msr(cpu, MSR_PKG_BOTH_CORE_GFXE_C0_RES, &p->pkg_both_core_gfxe_c0)) |
1449 | return -13; | 1453 | return -13; |
1450 | } | 1454 | } |
1451 | if (do_pc3) | 1455 | if (DO_BIC(BIC_Pkgpc3)) |
1452 | if (get_msr(cpu, MSR_PKG_C3_RESIDENCY, &p->pc3)) | 1456 | if (get_msr(cpu, MSR_PKG_C3_RESIDENCY, &p->pc3)) |
1453 | return -9; | 1457 | return -9; |
1454 | if (do_pc6) { | 1458 | if (DO_BIC(BIC_Pkgpc6)) { |
1455 | if (do_slm_cstates) { | 1459 | if (do_slm_cstates) { |
1456 | if (get_msr(cpu, MSR_ATOM_PKG_C6_RESIDENCY, &p->pc6)) | 1460 | if (get_msr(cpu, MSR_ATOM_PKG_C6_RESIDENCY, &p->pc6)) |
1457 | return -10; | 1461 | return -10; |
@@ -1461,20 +1465,22 @@ retry: | |||
1461 | } | 1465 | } |
1462 | } | 1466 | } |
1463 | 1467 | ||
1464 | if (do_pc2) | 1468 | if (DO_BIC(BIC_Pkgpc2)) |
1465 | if (get_msr(cpu, MSR_PKG_C2_RESIDENCY, &p->pc2)) | 1469 | if (get_msr(cpu, MSR_PKG_C2_RESIDENCY, &p->pc2)) |
1466 | return -11; | 1470 | return -11; |
1467 | if (do_pc7) | 1471 | if (DO_BIC(BIC_Pkgpc7)) |
1468 | if (get_msr(cpu, MSR_PKG_C7_RESIDENCY, &p->pc7)) | 1472 | if (get_msr(cpu, MSR_PKG_C7_RESIDENCY, &p->pc7)) |
1469 | return -12; | 1473 | return -12; |
1470 | if (do_c8_c9_c10) { | 1474 | if (DO_BIC(BIC_Pkgpc8)) |
1471 | if (get_msr(cpu, MSR_PKG_C8_RESIDENCY, &p->pc8)) | 1475 | if (get_msr(cpu, MSR_PKG_C8_RESIDENCY, &p->pc8)) |
1472 | return -13; | 1476 | return -13; |
1477 | if (DO_BIC(BIC_Pkgpc9)) | ||
1473 | if (get_msr(cpu, MSR_PKG_C9_RESIDENCY, &p->pc9)) | 1478 | if (get_msr(cpu, MSR_PKG_C9_RESIDENCY, &p->pc9)) |
1474 | return -13; | 1479 | return -13; |
1480 | if (DO_BIC(BIC_Pkgpc10)) | ||
1475 | if (get_msr(cpu, MSR_PKG_C10_RESIDENCY, &p->pc10)) | 1481 | if (get_msr(cpu, MSR_PKG_C10_RESIDENCY, &p->pc10)) |
1476 | return -13; | 1482 | return -13; |
1477 | } | 1483 | |
1478 | if (do_rapl & RAPL_PKG) { | 1484 | if (do_rapl & RAPL_PKG) { |
1479 | if (get_msr(cpu, MSR_PKG_ENERGY_STATUS, &msr)) | 1485 | if (get_msr(cpu, MSR_PKG_ENERGY_STATUS, &msr)) |
1480 | return -13; | 1486 | return -13; |
@@ -3824,17 +3830,27 @@ void process_cpuid() | |||
3824 | BIC_PRESENT(BIC_CPU_c7); | 3830 | BIC_PRESENT(BIC_CPU_c7); |
3825 | 3831 | ||
3826 | do_irtl_snb = has_snb_msrs(family, model); | 3832 | do_irtl_snb = has_snb_msrs(family, model); |
3827 | do_pc2 = do_snb_cstates && (pkg_cstate_limit >= PCL__2); | 3833 | if (do_snb_cstates && (pkg_cstate_limit >= PCL__2)) |
3828 | do_pc3 = (pkg_cstate_limit >= PCL__3); | 3834 | BIC_PRESENT(BIC_Pkgpc2); |
3829 | do_pc6 = (pkg_cstate_limit >= PCL__6); | 3835 | if (pkg_cstate_limit >= PCL__3) |
3830 | do_pc7 = do_snb_cstates && (pkg_cstate_limit >= PCL__7); | 3836 | BIC_PRESENT(BIC_Pkgpc3); |
3837 | if (pkg_cstate_limit >= PCL__6) | ||
3838 | BIC_PRESENT(BIC_Pkgpc6); | ||
3839 | if (do_snb_cstates && (pkg_cstate_limit >= PCL__7)) | ||
3840 | BIC_PRESENT(BIC_Pkgpc7); | ||
3831 | if (has_slv_msrs(family, model)) { | 3841 | if (has_slv_msrs(family, model)) { |
3832 | do_pc2 = do_pc3 = do_pc7 = 0; | 3842 | BIC_NOT_PRESENT(BIC_Pkgpc2); |
3833 | do_pc6 = 1; | 3843 | BIC_NOT_PRESENT(BIC_Pkgpc3); |
3844 | BIC_PRESENT(BIC_Pkgpc6); | ||
3845 | BIC_NOT_PRESENT(BIC_Pkgpc7); | ||
3834 | BIC_PRESENT(BIC_Mod_c6); | 3846 | BIC_PRESENT(BIC_Mod_c6); |
3835 | use_c1_residency_msr = 1; | 3847 | use_c1_residency_msr = 1; |
3836 | } | 3848 | } |
3837 | do_c8_c9_c10 = has_hsw_msrs(family, model); | 3849 | if (has_hsw_msrs(family, model)) { |
3850 | BIC_PRESENT(BIC_Pkgpc8); | ||
3851 | BIC_PRESENT(BIC_Pkgpc9); | ||
3852 | BIC_PRESENT(BIC_Pkgpc10); | ||
3853 | } | ||
3838 | do_irtl_hsw = has_hsw_msrs(family, model); | 3854 | do_irtl_hsw = has_hsw_msrs(family, model); |
3839 | do_skl_residency = has_skl_msrs(family, model); | 3855 | do_skl_residency = has_skl_msrs(family, model); |
3840 | do_slm_cstates = is_slm(family, model); | 3856 | do_slm_cstates = is_slm(family, model); |
@@ -3981,7 +3997,7 @@ void topology_probe() | |||
3981 | if (debug > 1) | 3997 | if (debug > 1) |
3982 | fprintf(outf, "max_core_id %d, sizing for %d cores per package\n", | 3998 | fprintf(outf, "max_core_id %d, sizing for %d cores per package\n", |
3983 | max_core_id, topo.num_cores_per_pkg); | 3999 | max_core_id, topo.num_cores_per_pkg); |
3984 | if (debug && !summary_only && topo.num_cores_per_pkg > 1) | 4000 | if (!summary_only && topo.num_cores_per_pkg > 1) |
3985 | BIC_PRESENT(BIC_Core); | 4001 | BIC_PRESENT(BIC_Core); |
3986 | 4002 | ||
3987 | topo.num_packages = max_package_id + 1; | 4003 | topo.num_packages = max_package_id + 1; |
@@ -4282,7 +4298,7 @@ int add_counter(unsigned int msr_num, char *name, unsigned int width, | |||
4282 | void parse_add_command(char *add_command) | 4298 | void parse_add_command(char *add_command) |
4283 | { | 4299 | { |
4284 | int msr_num = 0; | 4300 | int msr_num = 0; |
4285 | char name_buffer[NAME_BYTES]; | 4301 | char name_buffer[NAME_BYTES] = ""; |
4286 | int width = 64; | 4302 | int width = 64; |
4287 | int fail = 0; | 4303 | int fail = 0; |
4288 | enum counter_scope scope = SCOPE_CPU; | 4304 | enum counter_scope scope = SCOPE_CPU; |