|
@@ -2979,6 +2979,54 @@ dump_sysfs_cstate_config(void)
|
|
|
fclose(input);
|
|
|
}
|
|
|
}
|
|
|
+static void
|
|
|
+dump_sysfs_pstate_config(void)
|
|
|
+{
|
|
|
+ char path[64];
|
|
|
+ char driver_buf[64];
|
|
|
+ char governor_buf[64];
|
|
|
+ FILE *input;
|
|
|
+ int turbo;
|
|
|
+
|
|
|
+ sprintf(path, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_driver",
|
|
|
+ base_cpu);
|
|
|
+ input = fopen(path, "r");
|
|
|
+ if (input == NULL) {
|
|
|
+ fprintf(stderr, "NSFOD %s\n", path);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ fgets(driver_buf, sizeof(driver_buf), input);
|
|
|
+ fclose(input);
|
|
|
+
|
|
|
+ sprintf(path, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor",
|
|
|
+ base_cpu);
|
|
|
+ input = fopen(path, "r");
|
|
|
+ if (input == NULL) {
|
|
|
+ fprintf(stderr, "NSFOD %s\n", path);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ fgets(governor_buf, sizeof(governor_buf), input);
|
|
|
+ fclose(input);
|
|
|
+
|
|
|
+ fprintf(outf, "cpu%d: cpufreq driver: %s", base_cpu, driver_buf);
|
|
|
+ fprintf(outf, "cpu%d: cpufreq governor: %s", base_cpu, governor_buf);
|
|
|
+
|
|
|
+ sprintf(path, "/sys/devices/system/cpu/cpufreq/boost");
|
|
|
+ input = fopen(path, "r");
|
|
|
+ if (input != NULL) {
|
|
|
+ fscanf(input, "%d", &turbo);
|
|
|
+ fprintf(outf, "cpufreq boost: %d\n", turbo);
|
|
|
+ fclose(input);
|
|
|
+ }
|
|
|
+
|
|
|
+ sprintf(path, "/sys/devices/system/cpu/intel_pstate/no_turbo");
|
|
|
+ input = fopen(path, "r");
|
|
|
+ if (input != NULL) {
|
|
|
+ fscanf(input, "%d", &turbo);
|
|
|
+ fprintf(outf, "cpufreq intel_pstate no_turbo: %d\n", turbo);
|
|
|
+ fclose(input);
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
|
|
|
/*
|
|
@@ -4168,6 +4216,8 @@ void process_cpuid()
|
|
|
|
|
|
if (!quiet)
|
|
|
dump_sysfs_cstate_config();
|
|
|
+ if (!quiet)
|
|
|
+ dump_sysfs_pstate_config();
|
|
|
|
|
|
if (has_skl_msrs(family, model))
|
|
|
calculate_tsc_tweak();
|