diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/setup.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/setup.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index 59e69f085cb4..f0b7146a110f 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -320,8 +320,6 @@ static void __init pSeries_init_early(void) | |||
320 | { | 320 | { |
321 | DBG(" -> pSeries_init_early()\n"); | 321 | DBG(" -> pSeries_init_early()\n"); |
322 | 322 | ||
323 | fw_feature_init(); | ||
324 | |||
325 | if (firmware_has_feature(FW_FEATURE_LPAR)) | 323 | if (firmware_has_feature(FW_FEATURE_LPAR)) |
326 | find_udbg_vterm(); | 324 | find_udbg_vterm(); |
327 | 325 | ||
@@ -343,14 +341,21 @@ static int __init pSeries_probe_hypertas(unsigned long node, | |||
343 | const char *uname, int depth, | 341 | const char *uname, int depth, |
344 | void *data) | 342 | void *data) |
345 | { | 343 | { |
344 | const char *hypertas; | ||
345 | unsigned long len; | ||
346 | |||
346 | if (depth != 1 || | 347 | if (depth != 1 || |
347 | (strcmp(uname, "rtas") != 0 && strcmp(uname, "rtas@0") != 0)) | 348 | (strcmp(uname, "rtas") != 0 && strcmp(uname, "rtas@0") != 0)) |
348 | return 0; | 349 | return 0; |
350 | |||
351 | hypertas = of_get_flat_dt_prop(node, "ibm,hypertas-functions", &len); | ||
352 | if (!hypertas) | ||
353 | return 1; | ||
349 | 354 | ||
350 | if (of_get_flat_dt_prop(node, "ibm,hypertas-functions", NULL) != NULL) | 355 | powerpc_firmware_features |= FW_FEATURE_LPAR; |
351 | powerpc_firmware_features |= FW_FEATURE_LPAR; | 356 | fw_feature_init(hypertas, len); |
352 | 357 | ||
353 | return 1; | 358 | return 1; |
354 | } | 359 | } |
355 | 360 | ||
356 | static int __init pSeries_probe(void) | 361 | static int __init pSeries_probe(void) |