From: Ian Campbell <Ian.Campbell@eu.citrix.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Jeremy Fitzhardinge" <jeremy@goop.org>,
Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>
Subject: Re: [PATCH 12/14] xen: events: remove use of nr_irqs as upper bound on number of pirqs
Date: Thu, 10 Mar 2011 08:57:36 +0000 [thread overview]
Message-ID: <1299747456.17339.734.camel@zakaz.uk.xensource.com> (raw)
In-Reply-To: <20110310053305.GD10574@dumpdata.com>
On Thu, 2011-03-10 at 05:33 +0000, Konrad Rzeszutek Wilk wrote:
> > int xen_irq_from_pirq(unsigned pirq)
> > {
> > - return pirq_to_irq[pirq];
> > + int irq;
> > +
> > + struct irq_info *info;
> > +
> > + spin_lock(&irq_mapping_update_lock);
> > +
> > + list_for_each_entry(info, &xen_irq_list_head, list) {
> > + if (info == NULL || info->type != IRQT_PIRQ)
> > + continue;
> > + irq = info->irq;
> > + if (info->u.pirq.pirq == pirq)
> > + goto out;
> > + }
> > + irq = -1;
> > +out:
> > + spin_lock(&irq_mapping_update_lock);
> > +
> > + return -1;
>
> Shouldn't this be:
>
> return irq
Yes. The impact of not doing so is that xen_hvm_setup_msi_irqs would
allocate a fresh PIRQ each time an MSI was reused, instead of resuing
the old one -- i.e. it's a leak. I retested PVHVM PCI hotplug with the
following patch.
> How come you are using the spin_lock here, but not
> in other places when iterating over the xen_irq_list_head?
Those other places already hold the lock in their caller (or are known
to be single threaded -- e.g. resume). Callers of xen_irq_from_pirq do
not hold the lock.
Ian.
8<------------------------
>From 9b1686b874c4893a3b014e400185940dcba43676 Mon Sep 17 00:00:00 2001
From: Ian Campbell <ian.campbell@citrix.com>
Date: Thu, 10 Mar 2011 08:54:06 +0000
Subject: [PATCH] xen: events: fix return value from xen_irq_from_pirq
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
drivers/xen/events.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 77c2b43..dc5b575 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -765,7 +765,7 @@ int xen_irq_from_pirq(unsigned pirq)
out:
spin_lock(&irq_mapping_update_lock);
- return -1;
+ return irq;
}
--
1.5.6.5
next prev parent reply other threads:[~2011-03-10 8:57 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-09 17:40 [GIT PATCH 0/14] xen: events: cleanups + ween off nr_irqs Ian Campbell
2011-03-09 17:41 ` [PATCH 01/14] xen: events: separate two unrelated halves of if condition Ian Campbell
2011-03-09 17:41 ` [PATCH 02/14] xen: events: fix xen_map_pirq_gsi error return Ian Campbell
2011-03-09 17:41 ` [PATCH 03/14] xen: events: simplify comment Ian Campbell
2011-03-09 17:41 ` [PATCH 04/14] xen: events: remove unused public functions Ian Campbell
2011-03-09 17:41 ` [PATCH 05/14] xen: events: rename restore_cpu_pirqs -> restore_pirqs Ian Campbell
2011-03-09 17:41 ` [PATCH 06/14] xen: events: refactor GSI pirq bindings functions Ian Campbell
2011-03-10 4:00 ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-03-10 8:37 ` Ian Campbell
2011-03-09 17:41 ` [PATCH 07/14] xen: events: use per-cpu variable for cpu_evtchn_mask Ian Campbell
2011-03-09 17:41 ` [PATCH 08/14] xen: events: turn irq_info constructors into initialiser functions Ian Campbell
2011-03-09 17:41 ` [PATCH 09/14] xen: events: push setup of irq<->{evtchn,ipi,virq,pirq} maps into irq_info init functions Ian Campbell
2011-03-10 4:56 ` Konrad Rzeszutek Wilk
2011-03-10 8:42 ` Ian Campbell
2011-03-09 17:41 ` [PATCH 10/14] xen: events: maintain a list of Xen interrupts Ian Campbell
2011-03-10 5:22 ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-03-10 8:43 ` Ian Campbell
2011-03-09 17:41 ` [PATCH 11/14] xen: events: dynamically allocate irq info structures Ian Campbell
2011-03-10 5:27 ` Konrad Rzeszutek Wilk
2011-03-10 8:51 ` Ian Campbell
2011-03-09 17:41 ` [PATCH 12/14] xen: events: remove use of nr_irqs as upper bound on number of pirqs Ian Campbell
2011-03-10 5:33 ` Konrad Rzeszutek Wilk
2011-03-10 8:57 ` Ian Campbell [this message]
2011-03-09 17:41 ` [PATCH 13/14] xen: events: do not workaround too-small nr_irqs Ian Campbell
2011-03-10 5:40 ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-03-10 9:02 ` Ian Campbell
2011-03-09 17:41 ` [PATCH 14/14] xen: events: propagate irq allocation failure instead of panicking Ian Campbell
2011-03-10 5:38 ` Konrad Rzeszutek Wilk
2011-03-10 8:58 ` Ian Campbell
2011-03-10 16:07 [GIT PATCH v2 0/14] xen: events: cleanups + ween off nr_irqs Ian Campbell
2011-03-10 16:08 ` [PATCH 12/14] xen: events: remove use of nr_irqs as upper bound on number of pirqs Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1299747456.17339.734.camel@zakaz.uk.xensource.com \
--to=ian.campbell@eu.citrix.com \
--cc=Stefano.Stabellini@eu.citrix.com \
--cc=jeremy@goop.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®