aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/pseries/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/pseries/setup.c')
-rw-r--r--arch/powerpc/platforms/pseries/setup.c30
1 files changed, 7 insertions, 23 deletions
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index 0dc2548ca9bc..042ecae107ac 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -347,21 +347,6 @@ static int __init pSeries_init_panel(void)
347} 347}
348arch_initcall(pSeries_init_panel); 348arch_initcall(pSeries_init_panel);
349 349
350#ifdef CONFIG_HOTPLUG_CPU
351static void pSeries_mach_cpu_die(void)
352{
353 local_irq_disable();
354 idle_task_exit();
355 xics_teardown_cpu(0);
356 rtas_stop_self();
357 /* Should never get here... */
358 BUG();
359 for(;;);
360}
361#else
362#define pSeries_mach_cpu_die NULL
363#endif
364
365static int pseries_set_dabr(unsigned long dabr) 350static int pseries_set_dabr(unsigned long dabr)
366{ 351{
367 return plpar_hcall_norets(H_SET_DABR, dabr); 352 return plpar_hcall_norets(H_SET_DABR, dabr);
@@ -437,19 +422,14 @@ static int __init pSeries_probe_hypertas(unsigned long node,
437 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)
438 powerpc_firmware_features |= FW_FEATURE_LPAR; 423 powerpc_firmware_features |= FW_FEATURE_LPAR;
439 424
440 if (firmware_has_feature(FW_FEATURE_LPAR))
441 hpte_init_lpar();
442 else
443 hpte_init_native();
444
445 return 1; 425 return 1;
446} 426}
447 427
448static int __init pSeries_probe(void) 428static int __init pSeries_probe(void)
449{ 429{
450 unsigned long root = of_get_flat_dt_root(); 430 unsigned long root = of_get_flat_dt_root();
451 char *dtype = of_get_flat_dt_prop(of_get_flat_dt_root(), 431 char *dtype = of_get_flat_dt_prop(root, "device_type", NULL);
452 "device_type", NULL); 432
453 if (dtype == NULL) 433 if (dtype == NULL)
454 return 0; 434 return 0;
455 if (strcmp(dtype, "chrp")) 435 if (strcmp(dtype, "chrp"))
@@ -467,6 +447,11 @@ static int __init pSeries_probe(void)
467 /* Now try to figure out if we are running on LPAR */ 447 /* Now try to figure out if we are running on LPAR */
468 of_scan_flat_dt(pSeries_probe_hypertas, NULL); 448 of_scan_flat_dt(pSeries_probe_hypertas, NULL);
469 449
450 if (firmware_has_feature(FW_FEATURE_LPAR))
451 hpte_init_lpar();
452 else
453 hpte_init_native();
454
470 DBG("Machine is%s LPAR !\n", 455 DBG("Machine is%s LPAR !\n",
471 (powerpc_firmware_features & FW_FEATURE_LPAR) ? "" : " not"); 456 (powerpc_firmware_features & FW_FEATURE_LPAR) ? "" : " not");
472 457
@@ -561,7 +546,6 @@ define_machine(pseries) {
561 .power_off = rtas_power_off, 546 .power_off = rtas_power_off,
562 .halt = rtas_halt, 547 .halt = rtas_halt,
563 .panic = rtas_os_term, 548 .panic = rtas_os_term,
564 .cpu_die = pSeries_mach_cpu_die,
565 .get_boot_time = rtas_get_boot_time, 549 .get_boot_time = rtas_get_boot_time,
566 .get_rtc_time = rtas_get_rtc_time, 550 .get_rtc_time = rtas_get_rtc_time,
567 .set_rtc_time = rtas_set_rtc_time, 551 .set_rtc_time = rtas_set_rtc_time,