aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/smpboot.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-28 20:19:27 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-28 20:19:28 -0400
commit532bfc851a7475fb6a36c1e953aa395798a7cca7 (patch)
treea7892e5a31330dd59f31959efbe9fda1803784fd /arch/ia64/kernel/smpboot.c
parent0195c00244dc2e9f522475868fa278c473ba7339 (diff)
parent8da00edc1069f01c34510fa405dc15d96c090a3f (diff)
Merge branch 'akpm' (Andrew's patch-bomb)
Merge third batch of patches from Andrew Morton: - Some MM stragglers - core SMP library cleanups (on_each_cpu_mask) - Some IPI optimisations - kexec - kdump - IPMI - the radix-tree iterator work - various other misc bits. "That'll do for -rc1. I still have ~10 patches for 3.4, will send those along when they've baked a little more." * emailed from Andrew Morton <akpm@linux-foundation.org>: (35 commits) backlight: fix typo in tosa_lcd.c crc32: add help text for the algorithm select option mm: move hugepage test examples to tools/testing/selftests/vm mm: move slabinfo.c to tools/vm mm: move page-types.c from Documentation to tools/vm selftests/Makefile: make `run_tests' depend on `all' selftests: launch individual selftests from the main Makefile radix-tree: use iterators in find_get_pages* functions radix-tree: rewrite gang lookup using iterator radix-tree: introduce bit-optimized iterator fs/proc/namespaces.c: prevent crash when ns_entries[] is empty nbd: rename the nbd_device variable from lo to nbd pidns: add reboot_pid_ns() to handle the reboot syscall sysctl: use bitmap library functions ipmi: use locks on watchdog timeout set on reboot ipmi: simplify locking ipmi: fix message handling during panics ipmi: use a tasklet for handling received messages ipmi: increase KCS timeouts ipmi: decrease the IPMI message transaction time in interrupt mode ...
Diffstat (limited to 'arch/ia64/kernel/smpboot.c')
-rw-r--r--arch/ia64/kernel/smpboot.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index fb7927be75c4..796f6a5b966a 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -400,7 +400,7 @@ smp_callin (void)
400 /* Setup the per cpu irq handling data structures */ 400 /* Setup the per cpu irq handling data structures */
401 __setup_vector_irq(cpuid); 401 __setup_vector_irq(cpuid);
402 notify_cpu_starting(cpuid); 402 notify_cpu_starting(cpuid);
403 cpu_set(cpuid, cpu_online_map); 403 set_cpu_online(cpuid, true);
404 per_cpu(cpu_state, cpuid) = CPU_ONLINE; 404 per_cpu(cpu_state, cpuid) = CPU_ONLINE;
405 spin_unlock(&vector_lock); 405 spin_unlock(&vector_lock);
406 ipi_call_unlock_irq(); 406 ipi_call_unlock_irq();
@@ -547,7 +547,7 @@ do_rest:
547 if (!cpu_isset(cpu, cpu_callin_map)) { 547 if (!cpu_isset(cpu, cpu_callin_map)) {
548 printk(KERN_ERR "Processor 0x%x/0x%x is stuck.\n", cpu, sapicid); 548 printk(KERN_ERR "Processor 0x%x/0x%x is stuck.\n", cpu, sapicid);
549 ia64_cpu_to_sapicid[cpu] = -1; 549 ia64_cpu_to_sapicid[cpu] = -1;
550 cpu_clear(cpu, cpu_online_map); /* was set in smp_callin() */ 550 set_cpu_online(cpu, false); /* was set in smp_callin() */
551 return -EINVAL; 551 return -EINVAL;
552 } 552 }
553 return 0; 553 return 0;
@@ -577,8 +577,7 @@ smp_build_cpu_map (void)
577 } 577 }
578 578
579 ia64_cpu_to_sapicid[0] = boot_cpu_id; 579 ia64_cpu_to_sapicid[0] = boot_cpu_id;
580 cpus_clear(cpu_present_map); 580 init_cpu_present(cpumask_of(0));
581 set_cpu_present(0, true);
582 set_cpu_possible(0, true); 581 set_cpu_possible(0, true);
583 for (cpu = 1, i = 0; i < smp_boot_data.cpu_count; i++) { 582 for (cpu = 1, i = 0; i < smp_boot_data.cpu_count; i++) {
584 sapicid = smp_boot_data.cpu_phys_id[i]; 583 sapicid = smp_boot_data.cpu_phys_id[i];
@@ -605,10 +604,6 @@ smp_prepare_cpus (unsigned int max_cpus)
605 604
606 smp_setup_percpu_timer(); 605 smp_setup_percpu_timer();
607 606
608 /*
609 * We have the boot CPU online for sure.
610 */
611 cpu_set(0, cpu_online_map);
612 cpu_set(0, cpu_callin_map); 607 cpu_set(0, cpu_callin_map);
613 608
614 local_cpu_data->loops_per_jiffy = loops_per_jiffy; 609 local_cpu_data->loops_per_jiffy = loops_per_jiffy;
@@ -632,7 +627,7 @@ smp_prepare_cpus (unsigned int max_cpus)
632 627
633void __devinit smp_prepare_boot_cpu(void) 628void __devinit smp_prepare_boot_cpu(void)
634{ 629{
635 cpu_set(smp_processor_id(), cpu_online_map); 630 set_cpu_online(smp_processor_id(), true);
636 cpu_set(smp_processor_id(), cpu_callin_map); 631 cpu_set(smp_processor_id(), cpu_callin_map);
637 set_numa_node(cpu_to_node_map[smp_processor_id()]); 632 set_numa_node(cpu_to_node_map[smp_processor_id()]);
638 per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; 633 per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
@@ -689,7 +684,7 @@ int migrate_platform_irqs(unsigned int cpu)
689 /* 684 /*
690 * Now re-target the CPEI to a different processor 685 * Now re-target the CPEI to a different processor
691 */ 686 */
692 new_cpei_cpu = any_online_cpu(cpu_online_map); 687 new_cpei_cpu = cpumask_any(cpu_online_mask);
693 mask = cpumask_of(new_cpei_cpu); 688 mask = cpumask_of(new_cpei_cpu);
694 set_cpei_target_cpu(new_cpei_cpu); 689 set_cpei_target_cpu(new_cpei_cpu);
695 data = irq_get_irq_data(ia64_cpe_irq); 690 data = irq_get_irq_data(ia64_cpe_irq);
@@ -731,10 +726,10 @@ int __cpu_disable(void)
731 return -EBUSY; 726 return -EBUSY;
732 } 727 }
733 728
734 cpu_clear(cpu, cpu_online_map); 729 set_cpu_online(cpu, false);
735 730
736 if (migrate_platform_irqs(cpu)) { 731 if (migrate_platform_irqs(cpu)) {
737 cpu_set(cpu, cpu_online_map); 732 set_cpu_online(cpu, true);
738 return -EBUSY; 733 return -EBUSY;
739 } 734 }
740 735