Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69807a63 authored by Len Brown's avatar Len Brown
Browse files

tools/power turbostat: decode more CPUID fields



for debugging, dump a few more fields:

CPUID(1): SSE3 MONITOR EIST TM2 TSC MSR ACPI-TM TM

cpu0: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MONITOR)

Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent afd2ff9b
Loading
Loading
Loading
Loading
+27 −1
Original line number Original line Diff line number Diff line
@@ -2673,6 +2673,19 @@ int set_temperature_target(struct thread_data *t, struct core_data *c, struct pk


	return 0;
	return 0;
}
}

void decode_misc_enable_msr(void)
{
	unsigned long long msr;

	if (!get_msr(base_cpu, MSR_IA32_MISC_ENABLE, &msr))
		fprintf(stderr, "cpu%d: MSR_IA32_MISC_ENABLE: 0x%08llx (%s %s %s)\n",
			base_cpu, msr,
			msr & (1 << 3) ? "TCC" : "",
			msr & (1 << 16) ? "EIST" : "",
			msr & (1 << 18) ? "MONITOR" : "");
}

void process_cpuid()
void process_cpuid()
{
{
	unsigned int eax, ebx, ecx, edx, max_level;
	unsigned int eax, ebx, ecx, edx, max_level;
@@ -2696,9 +2709,19 @@ void process_cpuid()
	if (family == 6 || family == 0xf)
	if (family == 6 || family == 0xf)
		model += ((fms >> 16) & 0xf) << 4;
		model += ((fms >> 16) & 0xf) << 4;


	if (debug)
	if (debug) {
		fprintf(stderr, "%d CPUID levels; family:model:stepping 0x%x:%x:%x (%d:%d:%d)\n",
		fprintf(stderr, "%d CPUID levels; family:model:stepping 0x%x:%x:%x (%d:%d:%d)\n",
			max_level, family, model, stepping, family, model, stepping);
			max_level, family, model, stepping, family, model, stepping);
		fprintf(stderr, "CPUID(1): %s %s %s %s %s %s %s %s\n",
			ecx & (1 << 0) ? "SSE3" : "-",
			ecx & (1 << 3) ? "MONITOR" : "-",
			ecx & (1 << 7) ? "EIST" : "-",
			ecx & (1 << 8) ? "TM2" : "-",
			edx & (1 << 4) ? "TSC" : "-",
			edx & (1 << 5) ? "MSR" : "-",
			edx & (1 << 22) ? "ACPI-TM" : "-",
			edx & (1 << 29) ? "TM" : "-");
	}


	if (!(edx & (1 << 5)))
	if (!(edx & (1 << 5)))
		errx(1, "CPUID: no MSR");
		errx(1, "CPUID: no MSR");
@@ -2739,6 +2762,9 @@ void process_cpuid()
			do_ptm ? "" : "No ",
			do_ptm ? "" : "No ",
			has_epb ? "" : "No ");
			has_epb ? "" : "No ");


	if (debug)
		decode_misc_enable_msr();

	if (max_level > 0x15) {
	if (max_level > 0x15) {
		unsigned int eax_crystal;
		unsigned int eax_crystal;
		unsigned int ebx_tsc;
		unsigned int ebx_tsc;