All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-devel <qemu-devel@nongnu.org>,
	"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 2/2] pci: Add INTx routing notifier
Date: Mon, 02 Jul 2012 16:31:52 +0200	[thread overview]
Message-ID: <4FF1B0D8.50704@siemens.com> (raw)
In-Reply-To: <1341239177.1207.392.camel@bling.home>

On 2012-07-02 16:26, Alex Williamson wrote:
> On Mon, 2012-07-02 at 14:38 +0200, Jan Kiszka wrote:
>> This per-device notifier shall be triggered by any interrupt router
>> along the path of a device's legacy interrupt signal on routing changes.
>> For simplicity reasons and as this is a slow path anyway, no further
>> details on the routing changes are provided. Instead, the callback is
>> expected to use pci_device_route_intx_to_irq to check the effect of the
>> change.
>>
>> Will be used by KVM PCI device assignment and VFIO.
>>
>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>> ---
>>  hw/pci.c      |   23 +++++++++++++++++++++++
>>  hw/pci.h      |    7 +++++++
>>  hw/piix_pci.c |    2 ++
>>  3 files changed, 32 insertions(+), 0 deletions(-)
>>
>> diff --git a/hw/pci.c b/hw/pci.c
>> index 311ba09..772141a 100644
>> --- a/hw/pci.c
>> +++ b/hw/pci.c
>> @@ -1095,6 +1095,29 @@ PCIINTxRoute pci_device_route_intx_to_irq(PCIDevice *dev, int pin)
>>      return bus->route_intx_to_irq(bus->irq_opaque, pin);
>>  }
>>  
>> +void pci_bus_fire_intx_routing_notifier(PCIBus *bus)
>> +{
>> +    PCIDevice *dev;
>> +    PCIBus *sec;
>> +    int i;
>> +
>> +    for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) {
>> +        dev = bus->devices[i];
>> +        if (dev && dev->intx_routing_notifier) {
>> +            dev->intx_routing_notifier(dev);
>> +        }
>> +        QLIST_FOREACH(sec, &bus->child, sibling) {
>> +            pci_bus_fire_intx_routing_notifier(sec);
>> +        }
>> +    }
>> +}
>> +
>> +void pci_device_set_intx_routing_notifier(PCIDevice *dev,
>> +                                          PCIINTxRoutingNotifier notifier)
>> +{
>> +    dev->intx_routing_notifier = notifier;
>> +}
>> +
> 
> nit, wish there was also an unset here too.  If we switch to MSI mode,
> there's not much point in calling the notifier, so the driver could
> unset it.

We could add

static inline pci_device_unset_intx_routing_notifier(PCIDevice *dev)
{
    dev->intx_routing_notifier = NULL;
}

- or simply do pci_device_set_intx_routing_notifier(dev, NULL);.

>  Also nice to have a set in the initfn and matching unset in
> exitfn.  There's potentially a race between the driver freeing data and
> the pci device going away, but I don't know if we can hit it in qemu.

Everything should be synchronized by the BQL, so far. Or not?

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux

  reply	other threads:[~2012-07-02 14:32 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-02 12:38 [Qemu-devel] [PATCH v2 0/2] pci: Preparations for KVM device assignment Jan Kiszka
2012-07-02 12:38 ` [Qemu-devel] [PATCH v2 1/2] pci: Add pci_device_route_intx_to_irq Jan Kiszka
2012-07-02 14:27   ` Alex Williamson
2012-07-19 14:09   ` Michael S. Tsirkin
2012-07-02 12:38 ` [Qemu-devel] [PATCH v2 2/2] pci: Add INTx routing notifier Jan Kiszka
2012-07-02 14:26   ` Alex Williamson
2012-07-02 14:31     ` Jan Kiszka [this message]
2012-07-02 14:49       ` Alex Williamson
2012-07-19 14:16   ` Michael S. Tsirkin
2012-07-04 21:15 ` [Qemu-devel] [PATCH v2 0/2] pci: Preparations for KVM device assignment Michael S. Tsirkin
2012-07-04 22:38   ` Jan Kiszka

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=4FF1B0D8.50704@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=alex.williamson@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.