aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/lparcfg.c20
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
412static 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
412static int pseries_lparcfg_data(struct seq_file *m, void *v) 431static 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 */