Print cpuidle driver and governor.
Unified · Split
| @@ -3503,6 +3503,23 @@ dump_cstate_pstate_config_info(unsigned int family, unsigned int model) · 3502 unmodified lines | ||
| 3503 | 3503 | dump_nhm_cst_cfg(); |
| 3504 | 3504 | } |
| 3505 | 3505 | |
| 3506 | +static void dump_sysfs_file(char *path) | |
| 3507 | +{ | |
| 3508 | + FILE *input; | |
| 3509 | + char cpuidle_buf[64]; | |
| 3510 | + | |
| 3511 | + input = fopen(path, "r"); | |
| 3512 | + if (input == NULL) { | |
| 3513 | + if (debug) | |
| 3514 | + fprintf(outf, "NSFOD %s\n", path); | |
| 3515 | + return; | |
| 3516 | + } | |
| 3517 | + if (!fgets(cpuidle_buf, sizeof(cpuidle_buf), input)) | |
| 3518 | + err(1, "%s: failed to read file", path); | |
| 3519 | + fclose(input); | |
| 3520 | + | |
| 3521 | + fprintf(outf, "%s: %s", strrchr(path, '/') + 1, cpuidle_buf); | |
| 3522 | +} | |
| 3506 | 3523 | static void |
| 3507 | 3524 | dump_sysfs_cstate_config(void) |
| 3508 | 3525 | { |
| @@ -3516,6 +3533,15 @@ dump_sysfs_cstate_config(void) · 7 unmodified lines | ||
| 3516 | 3533 | if (!DO_BIC(BIC_sysfs)) |
| 3517 | 3534 | return; |
| 3518 | 3535 | |
| 3536 | + if (access("/sys/devices/system/cpu/cpuidle", R_OK)) { | |
| 3537 | + fprintf(outf, "cpuidle not loaded\n"); | |
| 3538 | + return; | |
| 3539 | + } | |
| 3540 | + | |
| 3541 | + dump_sysfs_file("/sys/devices/system/cpu/cpuidle/current_driver"); | |
| 3542 | + dump_sysfs_file("/sys/devices/system/cpu/cpuidle/current_governor"); | |
| 3543 | + dump_sysfs_file("/sys/devices/system/cpu/cpuidle/current_governor_ro"); | |
| 3544 | + | |
| 3519 | 3545 | for (state = 0; state < 10; ++state) { |
| 3520 | 3546 | |
| 3521 | 3547 | sprintf(path, "/sys/devices/system/cpu/cpu%d/cpuidle/state%d/name", |