From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60717) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ScfrK-00080f-2b for qemu-devel@nongnu.org; Thu, 07 Jun 2012 12:46:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ScfrD-0004QW-5J for qemu-devel@nongnu.org; Thu, 07 Jun 2012 12:46:53 -0400 Received: from mout.web.de ([212.227.17.12]:58444) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ScfrC-0004Q7-Ql for qemu-devel@nongnu.org; Thu, 07 Jun 2012 12:46:47 -0400 Message-ID: <4FD0DAEE.2040405@web.de> Date: Thu, 07 Jun 2012 18:46:38 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <20120607143216.GA12638@redhat.com> <4FD0C459.7070104@web.de> <20120607162850.GA12884@redhat.com> In-Reply-To: <20120607162850.GA12884@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig624AB27BE0E5C919B122A05B" 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: "Michael S. Tsirkin" Cc: Alex Williamson , qemu-devel This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig624AB27BE0E5C919B122A05B Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 2012-06-07 18:28, Michael S. Tsirkin wrote: > On Thu, Jun 07, 2012 at 05:10:17PM +0200, Jan Kiszka wrote: >> On 2012-06-07 16:32, Michael S. Tsirkin wrote: >>> 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); >>>> } >>>> =20 >>>> +PCIINTxRoute pci_device_route_intx_to_irq(PCIDevice *dev, int pin) >>>> +{ >>>> + PCIBus *bus =3D dev->host_bus; >>>> + >>>> + assert(bus->route_intx_to_irq); >>>> + return bus->route_intx_to_irq(bus->irq_opaque, dev->host_intx_p= in[pin]); >>>> +} >>>> + >>>> /***********************************************************/ >>>> /* monitor info on PCI */ >>>> =20 >>> >>> Just an idea: can devices cache this result, bypassing the >>> intx to irq lookup on data path? >> >> That lookup is part of set_irq which we don't bypass so far and where >> this is generally trivial. If we want to cache the effects of set_irq = as >> well, I guess things would become pretty complex (e.g. due to vmstate >> compatibility), and I'm unsure if it would buy us much. >=20 > This is less for performance but more for making > everyone use the same infrastructure rather than > assigned devices being the weird case. Device assignment is weird. It bypasses all state updates as it does not have to bother about migratability. Well, of course we could cache the host bridge routing result as well, for every device. It would have to be in addition to host_intx_pin. But the result would look pretty strange to me. In any case, I would prefer to do this, if at all, on top of this series, specifically as it will require to touch all host bridges. >=20 >>> >>>> 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) >>>> =20 >>>> +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. >> >> This should be considered as "the route *of* an INTx", not "to some >> IRQ". I could call it PCIINTxToIRQRoute if you prefer, but it's a bit >> lengthy. >> >> Jan >=20 > Yes but the polarity is in apic? Or is it in host bridge? >=20 Nope (then we would not have to bother). At least one host bridge (bonito) is apparently able to invert the polarity. Jan --------------enig624AB27BE0E5C919B122A05B Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk/Q2vEACgkQitSsb3rl5xQZzgCghiV5ecZLaTYa1QQsGbdAluBj i9UAnjBFHcwHG5LiuFj3tZbgP0qNV0oS =vffg -----END PGP SIGNATURE----- --------------enig624AB27BE0E5C919B122A05B--