Impact: helps expose unexpected issues
Since we have seen one case where an unexpected -EBUSY
return from __assign_irq_vector() was included in the
series of events that caused a serious problem
re: http://lkml.org/lkml/2009/6/2/377
we should warn to help expose similar unexpected issues
in the future.
Signed-off-by: Gary Hade <[email protected]>
---
arch/x86/kernel/apic/io_apic.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index: linux-2.6.30-rc8/arch/x86/kernel/apic/io_apic.c
===================================================================
--- linux-2.6.30-rc8.orig/arch/x86/kernel/apic/io_apic.c 2009-06-08 09:56:15.000000000 -0700
+++ linux-2.6.30-rc8/arch/x86/kernel/apic/io_apic.c 2009-06-08 09:56:27.000000000 -0700
@@ -1330,8 +1330,10 @@ __assign_irq_vector(int irq, struct irq_
int cpu, err;
cpumask_var_t tmp_mask;
- if ((cfg->move_in_progress) || cfg->move_cleanup_count)
+ if ((cfg->move_in_progress) || cfg->move_cleanup_count) {
+ WARN_ON_ONCE(1);
return -EBUSY;
+ }
if (!alloc_cpumask_var(&tmp_mask, GFP_ATOMIC))
return -ENOMEM;
Gary Hade <[email protected]> writes:
> Impact: helps expose unexpected issues
>
> Since we have seen one case where an unexpected -EBUSY
> return from __assign_irq_vector() was included in the
> series of events that caused a serious problem
> re: http://lkml.org/lkml/2009/6/2/377
> we should warn to help expose similar unexpected issues
> in the future.
>
> Signed-off-by: Gary Hade <[email protected]>
Gary again can you make the case that this is not a problem
with fixup_irqs?
Changing the rest of the code to match the always broken
assumptions in fixup_irqs is the tail wagging the dog.
Eric