2009-06-08 17:39:30

by Gary Hade

[permalink] [raw]
Subject: [PATCH] x86/x86_64: warn of -EBUSY returns from __assign_irq_vector()


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;


2009-06-08 18:31:44

by Eric W. Biederman

[permalink] [raw]
Subject: Re: [PATCH] x86/x86_64: warn of -EBUSY returns from __assign_irq_vector()

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