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 | dump_nhm_cst_cfg(); | 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 | static void | 3523 | static void |
| 3507 | dump_sysfs_cstate_config(void) | 3524 | dump_sysfs_cstate_config(void) |
| 3508 | { | 3525 | { |
| @@ -3516,6 +3533,15 @@ dump_sysfs_cstate_config(void) · 7 unmodified lines | |||
| 3516 | if (!DO_BIC(BIC_sysfs)) | 3533 | if (!DO_BIC(BIC_sysfs)) |
| 3517 | return; | 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 | for (state = 0; state < 10; ++state) { | 3545 | for (state = 0; state < 10; ++state) { |
| 3520 | 3546 | ||
| 3521 | sprintf(path, "/sys/devices/system/cpu/cpu%d/cpuidle/state%d/name", | 3547 | sprintf(path, "/sys/devices/system/cpu/cpu%d/cpuidle/state%d/name", |