diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/elf.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/irq.c | 18 | ||||
-rw-r--r-- | arch/arm/kernel/machine_kexec.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 1 |
4 files changed, 17 insertions, 10 deletions
diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c index 84849098c8e8..d4a0da1e48f4 100644 --- a/arch/arm/kernel/elf.c +++ b/arch/arm/kernel/elf.c | |||
@@ -74,9 +74,9 @@ EXPORT_SYMBOL(elf_set_personality); | |||
74 | */ | 74 | */ |
75 | int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack) | 75 | int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack) |
76 | { | 76 | { |
77 | if (executable_stack != EXSTACK_ENABLE_X) | 77 | if (executable_stack != EXSTACK_DISABLE_X) |
78 | return 1; | 78 | return 1; |
79 | if (cpu_architecture() <= CPU_ARCH_ARMv6) | 79 | if (cpu_architecture() < CPU_ARCH_ARMv6) |
80 | return 1; | 80 | return 1; |
81 | return 0; | 81 | return 0; |
82 | } | 82 | } |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 363db186cb93..45eacb5a2ecd 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -104,6 +104,11 @@ static struct irq_desc bad_irq_desc = { | |||
104 | .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock), | 104 | .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock), |
105 | }; | 105 | }; |
106 | 106 | ||
107 | #ifdef CONFIG_CPUMASK_OFFSTACK | ||
108 | /* We are not allocating bad_irq_desc.affinity or .pending_mask */ | ||
109 | #error "ARM architecture does not support CONFIG_CPUMASK_OFFSTACK." | ||
110 | #endif | ||
111 | |||
107 | /* | 112 | /* |
108 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not | 113 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not |
109 | * come via this function. Instead, they should provide their | 114 | * come via this function. Instead, they should provide their |
@@ -161,7 +166,7 @@ void __init init_IRQ(void) | |||
161 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; | 166 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; |
162 | 167 | ||
163 | #ifdef CONFIG_SMP | 168 | #ifdef CONFIG_SMP |
164 | bad_irq_desc.affinity = CPU_MASK_ALL; | 169 | cpumask_setall(bad_irq_desc.affinity); |
165 | bad_irq_desc.cpu = smp_processor_id(); | 170 | bad_irq_desc.cpu = smp_processor_id(); |
166 | #endif | 171 | #endif |
167 | init_arch_irq(); | 172 | init_arch_irq(); |
@@ -191,15 +196,16 @@ void migrate_irqs(void) | |||
191 | struct irq_desc *desc = irq_desc + i; | 196 | struct irq_desc *desc = irq_desc + i; |
192 | 197 | ||
193 | if (desc->cpu == cpu) { | 198 | if (desc->cpu == cpu) { |
194 | unsigned int newcpu = any_online_cpu(desc->affinity); | 199 | unsigned int newcpu = cpumask_any_and(desc->affinity, |
195 | 200 | cpu_online_mask); | |
196 | if (newcpu == NR_CPUS) { | 201 | if (newcpu >= nr_cpu_ids) { |
197 | if (printk_ratelimit()) | 202 | if (printk_ratelimit()) |
198 | printk(KERN_INFO "IRQ%u no longer affine to CPU%u\n", | 203 | printk(KERN_INFO "IRQ%u no longer affine to CPU%u\n", |
199 | i, cpu); | 204 | i, cpu); |
200 | 205 | ||
201 | cpus_setall(desc->affinity); | 206 | cpumask_setall(desc->affinity); |
202 | newcpu = any_online_cpu(desc->affinity); | 207 | newcpu = cpumask_any_and(desc->affinity, |
208 | cpu_online_mask); | ||
203 | } | 209 | } |
204 | 210 | ||
205 | route_irq(desc, i, newcpu); | 211 | route_irq(desc, i, newcpu); |
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index 440dc62cdc3a..598ca61e7bca 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c | |||
@@ -13,8 +13,8 @@ | |||
13 | #include <asm/cacheflush.h> | 13 | #include <asm/cacheflush.h> |
14 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
15 | 15 | ||
16 | const extern unsigned char relocate_new_kernel[]; | 16 | extern const unsigned char relocate_new_kernel[]; |
17 | const extern unsigned int relocate_new_kernel_size; | 17 | extern const unsigned int relocate_new_kernel_size; |
18 | 18 | ||
19 | extern void setup_mm_for_reboot(char mode); | 19 | extern void setup_mm_for_reboot(char mode); |
20 | 20 | ||
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 00216071eaf7..85598f7da407 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -65,6 +65,7 @@ SECTIONS | |||
65 | #endif | 65 | #endif |
66 | . = ALIGN(4096); | 66 | . = ALIGN(4096); |
67 | __per_cpu_start = .; | 67 | __per_cpu_start = .; |
68 | *(.data.percpu.page_aligned) | ||
68 | *(.data.percpu) | 69 | *(.data.percpu) |
69 | *(.data.percpu.shared_aligned) | 70 | *(.data.percpu.shared_aligned) |
70 | __per_cpu_end = .; | 71 | __per_cpu_end = .; |