aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2008-07-23 14:30:58 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2008-07-25 01:44:42 -0400
commitffa5abbd0c399b32fc13a1b4718d87ee7a716999 (patch)
tree79e2136b4de01bee9c5f8f8cee23823a801b8972 /arch/powerpc/kernel
parent84af458bb23bf5f0ba1af4320dd2a57f7c4363e5 (diff)
powerpc/pseries: Add CMO paging statistics
With the addition of Cooperative Memory Overcommitment (CMO) support for IBM Power Systems, two fields have been added to the VPA to report paging statistics. Add support in lparcfg to report them to userspace. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com> Acked-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel')
-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 d82e1fa5ce2a..848c3e5a6370 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 */