From c00efeff372b55a04119ac65e34aed1f65eb22d6 Mon Sep 17 00:00:00 2001 From: Stefano Stabellini Date: Fri, 14 May 2010 12:41:20 +0100 Subject: [PATCH] --- yaml --- r: 204783 b: refs/heads/master c: 99ad198c4978036bb9f7ebd11618b225b77046da h: refs/heads/master i: 204781: 97527dc0e41e24773f0c41df60a5dbb5a3f7f51e 204779: 9ee08d3d784377a58a84011710580db3812b9db3 204775: 43ad2fb0bcd61cbb6dace01e55f56f00a685a984 204767: c0e3599724c752fce84605fa7873592198b5c73c v: v3 --- [refs] | 2 +- trunk/drivers/xen/events.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index ebbca4c9ea46..21b0292486b1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 016b6f5fe8398b0291cece60b749d7c930a2e09c +refs/heads/master: 99ad198c4978036bb9f7ebd11618b225b77046da diff --git a/trunk/drivers/xen/events.c b/trunk/drivers/xen/events.c index 7c64473c9f3f..b5a254e9aebe 100644 --- a/trunk/drivers/xen/events.c +++ b/trunk/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"); @@ -351,7 +360,7 @@ static int find_unbound_irq(void) if (WARN_ON(desc == NULL)) return -1; - dynamic_irq_init(irq); + dynamic_irq_init_keep_chip_data(irq); return irq; }