aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/handle.c
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2008-12-26 05:05:47 -0500
committerIngo Molnar <mingo@elte.hu>2008-12-27 07:24:00 -0500
commit13a0c3c269b223f60abfac8a9811d77111a8b4ba (patch)
treeb57a92eb9eb7c8c1de30bbe29b6a461289e75c62 /kernel/irq/handle.c
parent793f7b12a0c95e7bfec1badf9628043fb78fd440 (diff)
sparseirq: work around compiler optimizing away __weak functions
Impact: fix panic on null pointer with sparseirq Some GCC versions seem to inline the weak global function, when that function is empty. Work it around, by making the functions return a (dummy) integer. Signed-off-by: Yinghai <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/irq/handle.c')
-rw-r--r--kernel/irq/handle.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 893da67b7781..0bef3ecb7a0e 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -86,8 +86,9 @@ void init_kstat_irqs(struct irq_desc *desc, int cpu, int nr)
86 desc->kstat_irqs = (unsigned int *)ptr; 86 desc->kstat_irqs = (unsigned int *)ptr;
87} 87}
88 88
89void __attribute__((weak)) arch_init_chip_data(struct irq_desc *desc, int cpu) 89int __weak arch_init_chip_data(struct irq_desc *desc, int cpu)
90{ 90{
91 return 0;
91} 92}
92 93
93static void init_one_irq_desc(int irq, struct irq_desc *desc, int cpu) 94static void init_one_irq_desc(int irq, struct irq_desc *desc, int cpu)
@@ -132,7 +133,7 @@ static struct irq_desc irq_desc_legacy[NR_IRQS_LEGACY] __cacheline_aligned_in_sm
132/* FIXME: use bootmem alloc ...*/ 133/* FIXME: use bootmem alloc ...*/
133static unsigned int kstat_irqs_legacy[NR_IRQS_LEGACY][NR_CPUS]; 134static unsigned int kstat_irqs_legacy[NR_IRQS_LEGACY][NR_CPUS];
134 135
135void __init early_irq_init(void) 136int __init early_irq_init(void)
136{ 137{
137 struct irq_desc *desc; 138 struct irq_desc *desc;
138 int legacy_count; 139 int legacy_count;
@@ -151,7 +152,7 @@ void __init early_irq_init(void)
151 for (i = legacy_count; i < NR_IRQS; i++) 152 for (i = legacy_count; i < NR_IRQS; i++)
152 irq_desc_ptrs[i] = NULL; 153 irq_desc_ptrs[i] = NULL;
153 154
154 arch_early_irq_init(); 155 return arch_early_irq_init();
155} 156}
156 157
157struct irq_desc *irq_to_desc(unsigned int irq) 158struct irq_desc *irq_to_desc(unsigned int irq)