From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:57598) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Scdl9-0005fa-4H for qemu-devel@nongnu.org; Thu, 07 Jun 2012 10:32:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Scdl4-0007jw-Ba for qemu-devel@nongnu.org; Thu, 07 Jun 2012 10:32:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50321) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Scdl4-0007jj-47 for qemu-devel@nongnu.org; Thu, 07 Jun 2012 10:32:18 -0400 Date: Thu, 7 Jun 2012 17:32:16 +0300 From: "Michael S. Tsirkin" Message-ID: <20120607143216.GA12638@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH 05/13] pci: Add pci_device_route_intx_to_irq List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Alex Williamson , qemu-devel On Mon, Jun 04, 2012 at 10:52:13AM +0200, Jan Kiszka wrote: > @@ -1089,6 +1093,14 @@ static void pci_set_irq(void *opaque, int irq_num, int level) > pci_change_irq_level(pci_dev, irq_num, change); > } > > +PCIINTxRoute pci_device_route_intx_to_irq(PCIDevice *dev, int pin) > +{ > + PCIBus *bus = dev->host_bus; > + > + assert(bus->route_intx_to_irq); > + return bus->route_intx_to_irq(bus->irq_opaque, dev->host_intx_pin[pin]); > +} > + > /***********************************************************/ > /* monitor info on PCI */ > Just an idea: can devices cache this result, bypassing the intx to irq lookup on data path? > diff --git a/hw/pci.h b/hw/pci.h > index 5b54e2d..bbba01e 100644 > --- a/hw/pci.h > +++ b/hw/pci.h > @@ -141,6 +141,15 @@ enum { > #define PCI_DEVICE_GET_CLASS(obj) \ > OBJECT_GET_CLASS(PCIDeviceClass, (obj), TYPE_PCI_DEVICE) > > +typedef struct PCIINTxRoute { > + enum { > + PCI_INTX_ENABLED, > + PCI_INTX_INVERTED, > + PCI_INTX_DISABLED, > + } mode; > + int irq; > +} PCIINTxRoute; Is this INTX route or IRQ route? Is the INTX enabled/disabled/inverted or the IRQ? I have the impression it's the IRQ, in the apic. PCI INTX are never inverted they are always active low.