aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2006-12-08 02:22:09 -0500
committerPaul Mackerras <paulus@samba.org>2006-12-08 19:39:06 -0500
commita223535425eb28082a0925b0ce2f02f962936cf4 (patch)
tree37e8ccf0d904fb0836d40fd0f64c35013f41c0d7 /arch/powerpc
parent5773bbcdec54b7258cb9e2aa6f3459b4cbfd9dc5 (diff)
[POWERPC] dont allow pSeries_probe to succeed without initialising MMU
pSeries_probe can decide that we are a pseries but then fail to initialise the MMU. If an rtas node doesnt exist, we continually fall out of pSeries_probe_hypertas early and never get to the MMU init code. While pseries without RTAS is an illegal combination, the way we currently fail is a pain to track down, and can happen if your flattened device tree code has issues (like mine did :). With the following patch we init the MMU, come up and print some warnings about RTAS not existing, instead of looping on 0x400 exceptions. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/platforms/pseries/setup.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index 3e2f7467057d..042ecae107ac 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -422,11 +422,6 @@ static int __init pSeries_probe_hypertas(unsigned long node,
422 if (of_get_flat_dt_prop(node, "ibm,hypertas-functions", NULL) != NULL) 422 if (of_get_flat_dt_prop(node, "ibm,hypertas-functions", NULL) != NULL)
423 powerpc_firmware_features |= FW_FEATURE_LPAR; 423 powerpc_firmware_features |= FW_FEATURE_LPAR;
424 424
425 if (firmware_has_feature(FW_FEATURE_LPAR))
426 hpte_init_lpar();
427 else
428 hpte_init_native();
429
430 return 1; 425 return 1;
431} 426}
432 427
@@ -452,6 +447,11 @@ static int __init pSeries_probe(void)
452 /* Now try to figure out if we are running on LPAR */ 447 /* Now try to figure out if we are running on LPAR */
453 of_scan_flat_dt(pSeries_probe_hypertas, NULL); 448 of_scan_flat_dt(pSeries_probe_hypertas, NULL);
454 449
450 if (firmware_has_feature(FW_FEATURE_LPAR))
451 hpte_init_lpar();
452 else
453 hpte_init_native();
454
455 DBG("Machine is%s LPAR !\n", 455 DBG("Machine is%s LPAR !\n",
456 (powerpc_firmware_features & FW_FEATURE_LPAR) ? "" : " not"); 456 (powerpc_firmware_features & FW_FEATURE_LPAR) ? "" : " not");
457 457