[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1277136847-13266-7-git-send-email-stefano@stabellini.net>
Date: Mon, 21 Jun 2010 17:14:01 +0100
From: stefano@...bellini.net
To: linux-kernel@...r.kernel.org
Cc: xen-devel@...ts.xensource.com, Stefano.Stabellini@...citrix.com,
sheng@...ux.intel.com, ddutile@...hat.com, jeremy@...p.org,
Stefano Stabellini <stefano.stabellini@...citrix.com>
Subject: [PATCH 07/13] Fix find_unbound_irq in presence of ioapic irqs.
From: Stefano Stabellini <stefano.stabellini@...citrix.com>
Don't break the assumption that the first 16 irqs are ISA irqs;
make sure that the irq is actually free before using it.
Signed-off-by: Stefano Stabellini <stefano.stabellini@...citrix.com>
---
drivers/xen/events.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 0f7546e..b029a32 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -340,9 +340,18 @@ static int find_unbound_irq(void)
int irq;
struct irq_desc *desc;
- for (irq = 0; irq < nr_irqs; irq++)
+ for (irq = 0; irq < nr_irqs; irq++) {
+ desc = irq_to_desc(irq);
+ /* only 0->15 have init'd desc; handle irq > 16 */
+ if (desc == NULL)
+ break;
+ if (desc->chip == &no_irq_chip)
+ break;
+ if (desc->chip != &xen_dynamic_chip)
+ continue;
if (irq_info[irq].type == IRQT_UNBOUND)
break;
+ }
if (irq == nr_irqs)
panic("No available IRQ to bind to: increase nr_irqs!\n");
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists