diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/setup.c')
| -rw-r--r-- | arch/powerpc/platforms/pseries/setup.c | 30 |
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 | } |
| 348 | arch_initcall(pSeries_init_panel); | 348 | arch_initcall(pSeries_init_panel); |
| 349 | 349 | ||
| 350 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 351 | static 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 | |||
| 365 | static int pseries_set_dabr(unsigned long dabr) | 350 | static 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 | ||
| 448 | static int __init pSeries_probe(void) | 428 | static 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, |
