diff options
author | Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> | 2010-03-31 17:39:24 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-04-07 04:00:29 -0400 |
commit | 6fe9d1facb5346a615f9b571df3b91593afb29c3 (patch) | |
tree | acc018141869eb3b7ef8b89eea425d719c2a732b /arch/powerpc/kernel | |
parent | 9c7cc234dc5edf5379fbbab4973f6704f59bc57b (diff) |
powerpc/pseries: Export data from new hcall H_EM_GET_PARMS
Add support for H_EM_GET_PARMS hcall that will return data
related to power modes from the platform. Export the data
directly to user space for administrative tools to interpret
and use.
cat /proc/powerpc/lparcfg will export power mode data
Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/lparcfg.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index c2c70e1b32cd..50362b6ef6e9 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -38,7 +38,7 @@ | |||
38 | #include <asm/vio.h> | 38 | #include <asm/vio.h> |
39 | #include <asm/mmu.h> | 39 | #include <asm/mmu.h> |
40 | 40 | ||
41 | #define MODULE_VERS "1.8" | 41 | #define MODULE_VERS "1.9" |
42 | #define MODULE_NAME "lparcfg" | 42 | #define MODULE_NAME "lparcfg" |
43 | 43 | ||
44 | /* #define LPARCFG_DEBUG */ | 44 | /* #define LPARCFG_DEBUG */ |
@@ -487,6 +487,14 @@ static void splpar_dispatch_data(struct seq_file *m) | |||
487 | seq_printf(m, "dispatch_dispersions=%lu\n", dispatch_dispersions); | 487 | seq_printf(m, "dispatch_dispersions=%lu\n", dispatch_dispersions); |
488 | } | 488 | } |
489 | 489 | ||
490 | static void parse_em_data(struct seq_file *m) | ||
491 | { | ||
492 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; | ||
493 | |||
494 | if (plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS) | ||
495 | seq_printf(m, "power_mode_data=%016lx\n", retbuf[0]); | ||
496 | } | ||
497 | |||
490 | static int pseries_lparcfg_data(struct seq_file *m, void *v) | 498 | static int pseries_lparcfg_data(struct seq_file *m, void *v) |
491 | { | 499 | { |
492 | int partition_potential_processors; | 500 | int partition_potential_processors; |
@@ -541,6 +549,8 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) | |||
541 | 549 | ||
542 | seq_printf(m, "slb_size=%d\n", mmu_slb_size); | 550 | seq_printf(m, "slb_size=%d\n", mmu_slb_size); |
543 | 551 | ||
552 | parse_em_data(m); | ||
553 | |||
544 | return 0; | 554 | return 0; |
545 | } | 555 | } |
546 | 556 | ||