diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/kernel/lparcfg.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index d82e1fa5ce2..848c3e5a637 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -409,6 +409,25 @@ static int lparcfg_count_active_processors(void) | |||
409 | return count; | 409 | return count; |
410 | } | 410 | } |
411 | 411 | ||
412 | static void pseries_cmo_data(struct seq_file *m) | ||
413 | { | ||
414 | int cpu; | ||
415 | unsigned long cmo_faults = 0; | ||
416 | unsigned long cmo_fault_time = 0; | ||
417 | |||
418 | if (!firmware_has_feature(FW_FEATURE_CMO)) | ||
419 | return; | ||
420 | |||
421 | for_each_possible_cpu(cpu) { | ||
422 | cmo_faults += lppaca[cpu].cmo_faults; | ||
423 | cmo_fault_time += lppaca[cpu].cmo_fault_time; | ||
424 | } | ||
425 | |||
426 | seq_printf(m, "cmo_faults=%lu\n", cmo_faults); | ||
427 | seq_printf(m, "cmo_fault_time_usec=%lu\n", | ||
428 | cmo_fault_time / tb_ticks_per_usec); | ||
429 | } | ||
430 | |||
412 | static int pseries_lparcfg_data(struct seq_file *m, void *v) | 431 | static int pseries_lparcfg_data(struct seq_file *m, void *v) |
413 | { | 432 | { |
414 | int partition_potential_processors; | 433 | int partition_potential_processors; |
@@ -434,6 +453,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) | |||
434 | parse_system_parameter_string(m); | 453 | parse_system_parameter_string(m); |
435 | parse_ppp_data(m); | 454 | parse_ppp_data(m); |
436 | parse_mpp_data(m); | 455 | parse_mpp_data(m); |
456 | pseries_cmo_data(m); | ||
437 | 457 | ||
438 | seq_printf(m, "purr=%ld\n", get_purr()); | 458 | seq_printf(m, "purr=%ld\n", get_purr()); |
439 | } else { /* non SPLPAR case */ | 459 | } else { /* non SPLPAR case */ |