turbostat.c (f2642888476d7faefa9695bbebb2abbaeb3685d8) turbostat.c (1df2e55abce64e2f3117fac3968a9ac382fbc9c3)
1/*
2 * turbostat -- show CPU frequency and C-state residency
3 * on modern Intel turbo-capable processors.
4 *
5 * Copyright (c) 2013 Intel Corporation.
6 * Len Brown <len.brown@intel.com>
7 *
8 * This program is free software; you can redistribute it and/or modify it

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

1756 ratio[i], bclk, ratio[i] * bclk, cores[i]);
1757}
1758
1759static void
1760dump_nhm_cst_cfg(void)
1761{
1762 unsigned long long msr;
1763
1/*
2 * turbostat -- show CPU frequency and C-state residency
3 * on modern Intel turbo-capable processors.
4 *
5 * Copyright (c) 2013 Intel Corporation.
6 * Len Brown <len.brown@intel.com>
7 *
8 * This program is free software; you can redistribute it and/or modify it

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

1756 ratio[i], bclk, ratio[i] * bclk, cores[i]);
1757}
1758
1759static void
1760dump_nhm_cst_cfg(void)
1761{
1762 unsigned long long msr;
1763
1764 get_msr(base_cpu, MSR_NHM_SNB_PKG_CST_CFG_CTL, &msr);
1764 get_msr(base_cpu, MSR_PKG_CST_CONFIG_CONTROL, &msr);
1765
1766#define SNB_C1_AUTO_UNDEMOTE (1UL << 27)
1767#define SNB_C3_AUTO_UNDEMOTE (1UL << 28)
1768
1765
1766#define SNB_C1_AUTO_UNDEMOTE (1UL << 27)
1767#define SNB_C3_AUTO_UNDEMOTE (1UL << 28)
1768
1769 fprintf(outf, "cpu%d: MSR_NHM_SNB_PKG_CST_CFG_CTL: 0x%08llx", base_cpu, msr);
1769 fprintf(outf, "cpu%d: MSR_PKG_CST_CONFIG_CONTROL: 0x%08llx", base_cpu, msr);
1770
1771 fprintf(outf, " (%s%s%s%s%slocked: pkg-cstate-limit=%d: %s)\n",
1772 (msr & SNB_C3_AUTO_UNDEMOTE) ? "UNdemote-C3, " : "",
1773 (msr & SNB_C1_AUTO_UNDEMOTE) ? "UNdemote-C1, " : "",
1774 (msr & NHM_C3_AUTO_DEMOTE) ? "demote-C3, " : "",
1775 (msr & NHM_C1_AUTO_DEMOTE) ? "demote-C1, " : "",
1776 (msr & (1 << 15)) ? "" : "UN",
1777 (unsigned int)msr & 0xF,

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

2378}
2379
2380/*
2381 * NHM adds support for additional MSRs:
2382 *
2383 * MSR_SMI_COUNT 0x00000034
2384 *
2385 * MSR_PLATFORM_INFO 0x000000ce
1770
1771 fprintf(outf, " (%s%s%s%s%slocked: pkg-cstate-limit=%d: %s)\n",
1772 (msr & SNB_C3_AUTO_UNDEMOTE) ? "UNdemote-C3, " : "",
1773 (msr & SNB_C1_AUTO_UNDEMOTE) ? "UNdemote-C1, " : "",
1774 (msr & NHM_C3_AUTO_DEMOTE) ? "demote-C3, " : "",
1775 (msr & NHM_C1_AUTO_DEMOTE) ? "demote-C1, " : "",
1776 (msr & (1 << 15)) ? "" : "UN",
1777 (unsigned int)msr & 0xF,

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

2378}
2379
2380/*
2381 * NHM adds support for additional MSRs:
2382 *
2383 * MSR_SMI_COUNT 0x00000034
2384 *
2385 * MSR_PLATFORM_INFO 0x000000ce
2386 * MSR_NHM_SNB_PKG_CST_CFG_CTL 0x000000e2
2386 * MSR_PKG_CST_CONFIG_CONTROL 0x000000e2
2387 *
2388 * MSR_MISC_PWR_MGMT 0x000001aa
2389 *
2390 * MSR_PKG_C3_RESIDENCY 0x000003f8
2391 * MSR_PKG_C6_RESIDENCY 0x000003f9
2392 * MSR_CORE_C3_RESIDENCY 0x000003fc
2393 * MSR_CORE_C6_RESIDENCY 0x000003fd
2394 *
2395 * Side effect:
2387 *
2388 * MSR_MISC_PWR_MGMT 0x000001aa
2389 *
2390 * MSR_PKG_C3_RESIDENCY 0x000003f8
2391 * MSR_PKG_C6_RESIDENCY 0x000003f9
2392 * MSR_CORE_C3_RESIDENCY 0x000003fc
2393 * MSR_CORE_C6_RESIDENCY 0x000003fd
2394 *
2395 * Side effect:
2396 * sets global pkg_cstate_limit to decode MSR_NHM_SNB_PKG_CST_CFG_CTL
2396 * sets global pkg_cstate_limit to decode MSR_PKG_CST_CONFIG_CONTROL
2397 */
2398int probe_nhm_msrs(unsigned int family, unsigned int model)
2399{
2400 unsigned long long msr;
2401 unsigned int base_ratio;
2402 int *pkg_cstate_limits;
2403
2404 if (!genuine_intel)

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

2457 break;
2458 case INTEL_FAM6_ATOM_GOLDMONT: /* BXT */
2459 case INTEL_FAM6_ATOM_DENVERTON: /* DNV */
2460 pkg_cstate_limits = bxt_pkg_cstate_limits;
2461 break;
2462 default:
2463 return 0;
2464 }
2397 */
2398int probe_nhm_msrs(unsigned int family, unsigned int model)
2399{
2400 unsigned long long msr;
2401 unsigned int base_ratio;
2402 int *pkg_cstate_limits;
2403
2404 if (!genuine_intel)

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

2457 break;
2458 case INTEL_FAM6_ATOM_GOLDMONT: /* BXT */
2459 case INTEL_FAM6_ATOM_DENVERTON: /* DNV */
2460 pkg_cstate_limits = bxt_pkg_cstate_limits;
2461 break;
2462 default:
2463 return 0;
2464 }
2465 get_msr(base_cpu, MSR_NHM_SNB_PKG_CST_CFG_CTL, &msr);
2465 get_msr(base_cpu, MSR_PKG_CST_CONFIG_CONTROL, &msr);
2466 pkg_cstate_limit = pkg_cstate_limits[msr & 0xF];
2467
2468 get_msr(base_cpu, MSR_PLATFORM_INFO, &msr);
2469 base_ratio = (msr >> 8) & 0xFF;
2470
2471 base_hz = base_ratio * bclk * 1000000;
2472 has_base_hz = 1;
2473 return 1;

--- 1951 unchanged lines hidden ---
2466 pkg_cstate_limit = pkg_cstate_limits[msr & 0xF];
2467
2468 get_msr(base_cpu, MSR_PLATFORM_INFO, &msr);
2469 base_ratio = (msr >> 8) & 0xFF;
2470
2471 base_hz = base_ratio * bclk * 1000000;
2472 has_base_hz = 1;
2473 return 1;

--- 1951 unchanged lines hidden ---