diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-07-18 06:19:57 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-07-18 06:20:01 -0400 |
| commit | 45bceffc3013bda7d2ebc7802e9b153b674e2d44 (patch) | |
| tree | 222d7dd8fd300925cbf12cdc0fba5bee2528997e /arch/arm/kernel | |
| parent | 6f2f3cf00ee32f75ba007a46bab88a54d68a5deb (diff) | |
| parent | 78af08d90b8f745044b1274430bc4bc6b2b27aca (diff) | |
Merge branch 'linus' into tracing/core
Merge reason: tracing/core was on an older, pre-rc1 base.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/irq.c | 24 | ||||
| -rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 15 |
2 files changed, 14 insertions, 25 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 096f600dc8d8..b7c3490eaa24 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
| @@ -98,17 +98,6 @@ unlock: | |||
| 98 | return 0; | 98 | return 0; |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | /* Handle bad interrupts */ | ||
| 102 | static struct irq_desc bad_irq_desc = { | ||
| 103 | .handle_irq = handle_bad_irq, | ||
| 104 | .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock), | ||
| 105 | }; | ||
| 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 | |||
| 112 | /* | 101 | /* |
| 113 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not | 102 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not |
| 114 | * come via this function. Instead, they should provide their | 103 | * come via this function. Instead, they should provide their |
| @@ -124,10 +113,13 @@ asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
| 124 | * Some hardware gives randomly wrong interrupts. Rather | 113 | * Some hardware gives randomly wrong interrupts. Rather |
| 125 | * than crashing, do something sensible. | 114 | * than crashing, do something sensible. |
| 126 | */ | 115 | */ |
| 127 | if (irq >= NR_IRQS) | 116 | if (unlikely(irq >= NR_IRQS)) { |
| 128 | handle_bad_irq(irq, &bad_irq_desc); | 117 | if (printk_ratelimit()) |
| 129 | else | 118 | printk(KERN_WARNING "Bad IRQ%u\n", irq); |
| 119 | ack_bad_irq(irq); | ||
| 120 | } else { | ||
| 130 | generic_handle_irq(irq); | 121 | generic_handle_irq(irq); |
| 122 | } | ||
| 131 | 123 | ||
| 132 | /* AT91 specific workaround */ | 124 | /* AT91 specific workaround */ |
| 133 | irq_finish(irq); | 125 | irq_finish(irq); |
| @@ -165,10 +157,6 @@ void __init init_IRQ(void) | |||
| 165 | for (irq = 0; irq < NR_IRQS; irq++) | 157 | for (irq = 0; irq < NR_IRQS; irq++) |
| 166 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; | 158 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; |
| 167 | 159 | ||
| 168 | #ifdef CONFIG_SMP | ||
| 169 | cpumask_setall(bad_irq_desc.affinity); | ||
| 170 | bad_irq_desc.node = smp_processor_id(); | ||
| 171 | #endif | ||
| 172 | init_arch_irq(); | 160 | init_arch_irq(); |
| 173 | } | 161 | } |
| 174 | 162 | ||
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 4340bf3d2c84..69371028a202 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include <asm-generic/vmlinux.lds.h> | 6 | #include <asm-generic/vmlinux.lds.h> |
| 7 | #include <asm/thread_info.h> | 7 | #include <asm/thread_info.h> |
| 8 | #include <asm/memory.h> | 8 | #include <asm/memory.h> |
| 9 | #include <asm/page.h> | ||
| 9 | 10 | ||
| 10 | OUTPUT_ARCH(arm) | 11 | OUTPUT_ARCH(arm) |
| 11 | ENTRY(stext) | 12 | ENTRY(stext) |
| @@ -63,7 +64,7 @@ SECTIONS | |||
| 63 | usr/built-in.o(.init.ramfs) | 64 | usr/built-in.o(.init.ramfs) |
| 64 | __initramfs_end = .; | 65 | __initramfs_end = .; |
| 65 | #endif | 66 | #endif |
| 66 | . = ALIGN(4096); | 67 | . = ALIGN(PAGE_SIZE); |
| 67 | __per_cpu_load = .; | 68 | __per_cpu_load = .; |
| 68 | __per_cpu_start = .; | 69 | __per_cpu_start = .; |
| 69 | *(.data.percpu.page_aligned) | 70 | *(.data.percpu.page_aligned) |
| @@ -73,7 +74,7 @@ SECTIONS | |||
| 73 | #ifndef CONFIG_XIP_KERNEL | 74 | #ifndef CONFIG_XIP_KERNEL |
| 74 | __init_begin = _stext; | 75 | __init_begin = _stext; |
| 75 | INIT_DATA | 76 | INIT_DATA |
| 76 | . = ALIGN(4096); | 77 | . = ALIGN(PAGE_SIZE); |
| 77 | __init_end = .; | 78 | __init_end = .; |
| 78 | #endif | 79 | #endif |
| 79 | } | 80 | } |
| @@ -118,7 +119,7 @@ SECTIONS | |||
| 118 | *(.got) /* Global offset table */ | 119 | *(.got) /* Global offset table */ |
| 119 | } | 120 | } |
| 120 | 121 | ||
| 121 | RODATA | 122 | RO_DATA(PAGE_SIZE) |
| 122 | 123 | ||
| 123 | _etext = .; /* End of text and rodata section */ | 124 | _etext = .; /* End of text and rodata section */ |
| 124 | 125 | ||
| @@ -158,17 +159,17 @@ SECTIONS | |||
| 158 | *(.data.init_task) | 159 | *(.data.init_task) |
| 159 | 160 | ||
| 160 | #ifdef CONFIG_XIP_KERNEL | 161 | #ifdef CONFIG_XIP_KERNEL |
| 161 | . = ALIGN(4096); | 162 | . = ALIGN(PAGE_SIZE); |
| 162 | __init_begin = .; | 163 | __init_begin = .; |
| 163 | INIT_DATA | 164 | INIT_DATA |
| 164 | . = ALIGN(4096); | 165 | . = ALIGN(PAGE_SIZE); |
| 165 | __init_end = .; | 166 | __init_end = .; |
| 166 | #endif | 167 | #endif |
| 167 | 168 | ||
| 168 | . = ALIGN(4096); | 169 | . = ALIGN(PAGE_SIZE); |
| 169 | __nosave_begin = .; | 170 | __nosave_begin = .; |
| 170 | *(.data.nosave) | 171 | *(.data.nosave) |
| 171 | . = ALIGN(4096); | 172 | . = ALIGN(PAGE_SIZE); |
| 172 | __nosave_end = .; | 173 | __nosave_end = .; |
| 173 | 174 | ||
| 174 | /* | 175 | /* |
