From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59906) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ykdvj-0004S6-UZ for qemu-devel@nongnu.org; Tue, 21 Apr 2015 15:34:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ykdve-0002Fg-NM for qemu-devel@nongnu.org; Tue, 21 Apr 2015 15:33:59 -0400 Received: from cantor2.suse.de ([195.135.220.15]:59003 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ykdve-0002FZ-GZ for qemu-devel@nongnu.org; Tue, 21 Apr 2015 15:33:54 -0400 Message-ID: <5536A5B7.1040704@suse.de> Date: Tue, 21 Apr 2015 21:32:07 +0200 From: Alexander Graf MIME-Version: 1.0 References: <1429260911-24021-1-git-send-email-pranavkumar@linaro.org> <1429260911-24021-3-git-send-email-pranavkumar@linaro.org> In-Reply-To: <1429260911-24021-3-git-send-email-pranavkumar@linaro.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/2] pci: GPEX: Add support to route legacy interrupts List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pranavkumar Sawargaonkar , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, patches@apm.com, Tushar Jagad , christoffer.dall@linaro.org, pbonzini@redhat.com On 04/17/2015 10:55 AM, Pranavkumar Sawargaonkar wrote: > This patch adds routine to route legacy interrupts to VM. > > Signed-off-by: Pranavkumar Sawargaonkar > Signed-off-by: Tushar Jagad I don't think the device model should have awareness of any global irq number spaces. Can you move this into the board model instead? Then you also don't need the first patch. Alex > --- > hw/pci-host/gpex.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c > index 9d8fb5a..35842e4 100644 > --- a/hw/pci-host/gpex.c > +++ b/hw/pci-host/gpex.c > @@ -42,6 +42,17 @@ static void gpex_set_irq(void *opaque, int irq_num, int level) > qemu_set_irq(s->irq[irq_num], level); > } > > +static PCIINTxRoute gpex_route_intx_pin_to_irq(void *opaque, int pin) > +{ > + PCIINTxRoute route; > + GPEXHost *s = opaque; > + > + route.mode = PCI_INTX_ENABLED; > + route.irq = qemu_get_irq_num(s->irq[pin]); > + > + return route; > +} > + > static void gpex_host_realize(DeviceState *dev, Error **errp) > { > PCIHostState *pci = PCI_HOST_BRIDGE(dev); > @@ -66,6 +77,7 @@ static void gpex_host_realize(DeviceState *dev, Error **errp) > &s->io_ioport, 0, 4, TYPE_PCIE_BUS); > > qdev_set_parent_bus(DEVICE(&s->gpex_root), BUS(pci->bus)); > + pci_bus_set_route_irq_fn(pci->bus, gpex_route_intx_pin_to_irq); > qdev_init_nofail(DEVICE(&s->gpex_root)); > } >