From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [GIT PULL] pv/pcifront-2.6.32 Date: Tue, 2 Mar 2010 08:55:21 -0500 Message-ID: <20100302135521.GB25893@phenom.dumpdata.com> References: <20100302031217.GB881@phenom.dumpdata.com> <1267521715.11737.23106.camel@zakaz.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <1267521715.11737.23106.camel@zakaz.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Campbell Cc: Jeremy Fitzhardinge , "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On Tue, Mar 02, 2010 at 09:21:55AM +0000, Ian Campbell wrote: > On Tue, 2010-03-02 at 03:12 +0000, Konrad Rzeszutek Wilk wrote: > > > > Ian Campbell (1): > > xen: fix off-by-one error in find_unbound_irq > > You need to add this commit if you include the above: I merged both patches and joined the description. This is what I have (I hope this is OK?): commit bfbc226dc3473b49d6a8721ca8f6457e6fa1c690 Author: Ian Campbell Date: Mon Mar 1 13:07:18 2010 +0000 xen: fix off-by-one error in find_unbound_irq 68458a36 "fix off-by-one error in find_unbound_irq" introduced an issue with the error handling in this function. It incorrectly assumed that exiting the searhc loop with irq == nr_irqs - 1 was an error case when in fact it is prefectly possible for irq == nr_irqs - 1 to be an available IRQ. The actual error condition which 68458a36 tried to fix is when start == nr_irqs, IOW when there is literaly no interrupts which aren't already h/w interrupts. Signed-off-by: Ian Campbell drivers/xen/events.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/xen/events.c b/drivers/xen/events.c index c75614b..be9ad7f 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c @@ -363,13 +363,16 @@ static int find_unbound_irq(void) struct irq_desc *desc; int start = get_nr_hw_irqs(); + if (start == nr_irqs) + goto no_irqs; + /* nr_irqs is a magic value. Must not use it.*/ for (irq = nr_irqs-1; irq > start; irq--) if (irq_info[irq].type == IRQT_UNBOUND) break; - if (irq == start || irq == nr_irqs) - panic("No available IRQ to bind to: increase nr_irqs!\n"); + if (irq == start) + goto no_irqs; desc = irq_to_desc_alloc_node(irq, 0); if (WARN_ON(desc == NULL)) @@ -378,6 +381,9 @@ static int find_unbound_irq(void) dynamic_irq_init(irq); return irq; + +no_irqs: + panic("No available IRQ to bind to: increase nr_irqs!\n"); } static bool identity_mapped_irq(unsigned irq) > > commit 716645983e03118d11924cc245cd63fd67c6bfa8 > Author: Ian Campbell > Date: Mon Mar 1 12:06:15 2010 +0000 > > xen: fix error handling in in find_unbound_irq > > 68458a36 "fix off-by-one error in find_unbound_irq" introduced an issue with > the error handling in this function. It incorrectly assumed that exiting the > searhc loop with irq == nr_irqs - 1 was an error case when in fact it is > prefectly possible for irq == nr_irqs - 1 to be an available IRQ. > > The actual error condition which 68458a36 tried to fix is when start == > nr_irqs, IOW when there is literaly no interrupts which aren't already h/w > interrupts. > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel