diff options
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/kernel/irq.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vmlinux.lds.S | 8 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/xics.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/mpic.c | 3 |
4 files changed, 7 insertions, 11 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 17efb7118db1..1b55ffdf0026 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
| @@ -231,7 +231,7 @@ void fixup_irqs(cpumask_t map) | |||
| 231 | if (irq_desc[irq].status & IRQ_PER_CPU) | 231 | if (irq_desc[irq].status & IRQ_PER_CPU) |
| 232 | continue; | 232 | continue; |
| 233 | 233 | ||
| 234 | cpus_and(mask, irq_desc[irq].affinity, map); | 234 | cpumask_and(&mask, irq_desc[irq].affinity, &map); |
| 235 | if (any_online_cpu(mask) == NR_CPUS) { | 235 | if (any_online_cpu(mask) == NR_CPUS) { |
| 236 | printk("Breaking affinity for irq %i\n", irq); | 236 | printk("Breaking affinity for irq %i\n", irq); |
| 237 | mask = map; | 237 | mask = map; |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index 161b9b9691f0..67f07f453385 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
| @@ -181,13 +181,7 @@ SECTIONS | |||
| 181 | __initramfs_end = .; | 181 | __initramfs_end = .; |
| 182 | } | 182 | } |
| 183 | #endif | 183 | #endif |
| 184 | . = ALIGN(PAGE_SIZE); | 184 | PERCPU(PAGE_SIZE) |
| 185 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { | ||
| 186 | __per_cpu_start = .; | ||
| 187 | *(.data.percpu) | ||
| 188 | *(.data.percpu.shared_aligned) | ||
| 189 | __per_cpu_end = .; | ||
| 190 | } | ||
| 191 | 185 | ||
| 192 | . = ALIGN(8); | 186 | . = ALIGN(8); |
| 193 | .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { | 187 | .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { |
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index 84e058f1e1cc..80b513449f4c 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
| @@ -153,9 +153,10 @@ static int get_irq_server(unsigned int virq, unsigned int strict_check) | |||
| 153 | { | 153 | { |
| 154 | int server; | 154 | int server; |
| 155 | /* For the moment only implement delivery to all cpus or one cpu */ | 155 | /* For the moment only implement delivery to all cpus or one cpu */ |
| 156 | cpumask_t cpumask = irq_desc[virq].affinity; | 156 | cpumask_t cpumask; |
| 157 | cpumask_t tmp = CPU_MASK_NONE; | 157 | cpumask_t tmp = CPU_MASK_NONE; |
| 158 | 158 | ||
| 159 | cpumask_copy(&cpumask, irq_desc[virq].affinity); | ||
| 159 | if (!distribute_irqs) | 160 | if (!distribute_irqs) |
| 160 | return default_server; | 161 | return default_server; |
| 161 | 162 | ||
| @@ -869,7 +870,7 @@ void xics_migrate_irqs_away(void) | |||
| 869 | virq, cpu); | 870 | virq, cpu); |
| 870 | 871 | ||
| 871 | /* Reset affinity to all cpus */ | 872 | /* Reset affinity to all cpus */ |
| 872 | irq_desc[virq].affinity = CPU_MASK_ALL; | 873 | cpumask_setall(irq_desc[virq].affinity); |
| 873 | desc->chip->set_affinity(virq, cpu_all_mask); | 874 | desc->chip->set_affinity(virq, cpu_all_mask); |
| 874 | unlock: | 875 | unlock: |
| 875 | spin_unlock_irqrestore(&desc->lock, flags); | 876 | spin_unlock_irqrestore(&desc->lock, flags); |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index a35297dbac28..532e205303a2 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
| @@ -566,9 +566,10 @@ static void __init mpic_scan_ht_pics(struct mpic *mpic) | |||
| 566 | #ifdef CONFIG_SMP | 566 | #ifdef CONFIG_SMP |
| 567 | static int irq_choose_cpu(unsigned int virt_irq) | 567 | static int irq_choose_cpu(unsigned int virt_irq) |
| 568 | { | 568 | { |
| 569 | cpumask_t mask = irq_desc[virt_irq].affinity; | 569 | cpumask_t mask; |
| 570 | int cpuid; | 570 | int cpuid; |
| 571 | 571 | ||
| 572 | cpumask_copy(&mask, irq_desc[virt_irq].affinity); | ||
| 572 | if (cpus_equal(mask, CPU_MASK_ALL)) { | 573 | if (cpus_equal(mask, CPU_MASK_ALL)) { |
| 573 | static int irq_rover; | 574 | static int irq_rover; |
| 574 | static DEFINE_SPINLOCK(irq_rover_lock); | 575 | static DEFINE_SPINLOCK(irq_rover_lock); |
