diff options
Diffstat (limited to 'arch/powerpc/kernel/lparcfg.c')
-rw-r--r-- | arch/powerpc/kernel/lparcfg.c | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index 89486b631284..c492cee90e0f 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -130,30 +130,31 @@ static int iseries_lparcfg_data(struct seq_file *m, void *v) | |||
130 | /* | 130 | /* |
131 | * Methods used to fetch LPAR data when running on a pSeries platform. | 131 | * Methods used to fetch LPAR data when running on a pSeries platform. |
132 | */ | 132 | */ |
133 | /* find a better place for this function... */ | ||
134 | static void log_plpar_hcall_return(unsigned long rc, char *tag) | 133 | static void log_plpar_hcall_return(unsigned long rc, char *tag) |
135 | { | 134 | { |
136 | if (rc == 0) /* success, return */ | 135 | switch(rc) { |
136 | case 0: | ||
137 | return; | 137 | return; |
138 | /* check for null tag ? */ | 138 | case H_HARDWARE: |
139 | if (rc == H_HARDWARE) | 139 | printk(KERN_INFO "plpar-hcall (%s) " |
140 | printk(KERN_INFO | 140 | "Hardware fault\n", tag); |
141 | "plpar-hcall (%s) failed with hardware fault\n", tag); | 141 | return; |
142 | else if (rc == H_FUNCTION) | 142 | case H_FUNCTION: |
143 | printk(KERN_INFO | 143 | printk(KERN_INFO "plpar-hcall (%s) " |
144 | "plpar-hcall (%s) failed; function not allowed\n", tag); | 144 | "Function not allowed\n", tag); |
145 | else if (rc == H_AUTHORITY) | 145 | return; |
146 | printk(KERN_INFO | 146 | case H_AUTHORITY: |
147 | "plpar-hcall (%s) failed; not authorized to this" | 147 | printk(KERN_INFO "plpar-hcall (%s) " |
148 | " function\n", tag); | 148 | "Not authorized to this function\n", tag); |
149 | else if (rc == H_PARAMETER) | 149 | return; |
150 | printk(KERN_INFO "plpar-hcall (%s) failed; Bad parameter(s)\n", | 150 | case H_PARAMETER: |
151 | tag); | 151 | printk(KERN_INFO "plpar-hcall (%s) " |
152 | else | 152 | "Bad parameter(s)\n",tag); |
153 | printk(KERN_INFO | 153 | return; |
154 | "plpar-hcall (%s) failed with unexpected rc(0x%lx)\n", | 154 | default: |
155 | tag, rc); | 155 | printk(KERN_INFO "plpar-hcall (%s) " |
156 | 156 | "Unexpected rc(0x%lx)\n", tag, rc); | |
157 | } | ||
157 | } | 158 | } |
158 | 159 | ||
159 | /* | 160 | /* |
@@ -321,15 +322,16 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) | |||
321 | struct device_node *rtas_node; | 322 | struct device_node *rtas_node; |
322 | const int *lrdrp = NULL; | 323 | const int *lrdrp = NULL; |
323 | 324 | ||
324 | rtas_node = find_path_device("/rtas"); | 325 | rtas_node = of_find_node_by_path("/rtas"); |
325 | if (rtas_node) | 326 | if (rtas_node) |
326 | lrdrp = get_property(rtas_node, "ibm,lrdr-capacity", NULL); | 327 | lrdrp = of_get_property(rtas_node, "ibm,lrdr-capacity", NULL); |
327 | 328 | ||
328 | if (lrdrp == NULL) { | 329 | if (lrdrp == NULL) { |
329 | partition_potential_processors = vdso_data->processorCount; | 330 | partition_potential_processors = vdso_data->processorCount; |
330 | } else { | 331 | } else { |
331 | partition_potential_processors = *(lrdrp + 4); | 332 | partition_potential_processors = *(lrdrp + 4); |
332 | } | 333 | } |
334 | of_node_put(rtas_node); | ||
333 | 335 | ||
334 | partition_active_processors = lparcfg_count_active_processors(); | 336 | partition_active_processors = lparcfg_count_active_processors(); |
335 | 337 | ||
@@ -537,25 +539,27 @@ static int lparcfg_data(struct seq_file *m, void *v) | |||
537 | 539 | ||
538 | seq_printf(m, "%s %s \n", MODULE_NAME, MODULE_VERS); | 540 | seq_printf(m, "%s %s \n", MODULE_NAME, MODULE_VERS); |
539 | 541 | ||
540 | rootdn = find_path_device("/"); | 542 | rootdn = of_find_node_by_path("/"); |
541 | if (rootdn) { | 543 | if (rootdn) { |
542 | tmp = get_property(rootdn, "model", NULL); | 544 | tmp = of_get_property(rootdn, "model", NULL); |
543 | if (tmp) { | 545 | if (tmp) { |
544 | model = tmp; | 546 | model = tmp; |
545 | /* Skip "IBM," - see platforms/iseries/dt.c */ | 547 | /* Skip "IBM," - see platforms/iseries/dt.c */ |
546 | if (firmware_has_feature(FW_FEATURE_ISERIES)) | 548 | if (firmware_has_feature(FW_FEATURE_ISERIES)) |
547 | model += 4; | 549 | model += 4; |
548 | } | 550 | } |
549 | tmp = get_property(rootdn, "system-id", NULL); | 551 | tmp = of_get_property(rootdn, "system-id", NULL); |
550 | if (tmp) { | 552 | if (tmp) { |
551 | system_id = tmp; | 553 | system_id = tmp; |
552 | /* Skip "IBM," - see platforms/iseries/dt.c */ | 554 | /* Skip "IBM," - see platforms/iseries/dt.c */ |
553 | if (firmware_has_feature(FW_FEATURE_ISERIES)) | 555 | if (firmware_has_feature(FW_FEATURE_ISERIES)) |
554 | system_id += 4; | 556 | system_id += 4; |
555 | } | 557 | } |
556 | lp_index_ptr = get_property(rootdn, "ibm,partition-no", NULL); | 558 | lp_index_ptr = of_get_property(rootdn, "ibm,partition-no", |
559 | NULL); | ||
557 | if (lp_index_ptr) | 560 | if (lp_index_ptr) |
558 | lp_index = *lp_index_ptr; | 561 | lp_index = *lp_index_ptr; |
562 | of_node_put(rootdn); | ||
559 | } | 563 | } |
560 | seq_printf(m, "serial_number=%s\n", system_id); | 564 | seq_printf(m, "serial_number=%s\n", system_id); |
561 | seq_printf(m, "system_type=%s\n", model); | 565 | seq_printf(m, "system_type=%s\n", model); |