All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] pci: Don't deliver MSI/MSI-X messages if bus master support is off
Date: Tue, 22 Jul 2014 22:06:12 +0300	[thread overview]
Message-ID: <20140722190612.GC9881@redhat.com> (raw)
In-Reply-To: <53CC3CE6.7020004@web.de>

On Mon, Jul 21, 2014 at 12:04:22AM +0200, Jan Kiszka wrote:
> On 2014-07-20 23:03, Michael S. Tsirkin wrote:
> > On Sun, Jul 20, 2014 at 11:45:10PM +0200, Jan Kiszka wrote:
> >> On 2014-07-20 21:48, Michael S. Tsirkin wrote:
> >>> On Sat, Jul 19, 2014 at 06:55:48PM +0200, Jan Kiszka wrote:
> >>>> From: Jan Kiszka <jan.kiszka@siemens.com>
> >>>>
> >>>> The spec says (and real HW confirms this) that, if the bus master bit
> >>>> is 0, the device will not generate any PCI accesses. MSI and MSI-X
> >>>> messages fall among these.
> >>>>
> >>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> >>>
> >>> I guess an alternative is for callers to check before
> >>> invoking msi_notify. Please note is this is only option
> >>> when using e.g. irqfd, so this has some advantages.
> >>> Is there a specific device that is affected by this?
> >>> I would expect drivers to disable msi before clearing
> >>> bus master bit ...
> >>
> >> This is about emulating conforming behaviour without touching each and
> >> every device. I stumbled over this while playing with emulated vs. real
> >> Intel HDA.
> > 
> > Right so that's my question.
> > How did you hit it? With a custom driver?
> 
> So to say: with a hand full lines of code to tickle some MSI event out
> of that device for testing purposes.
> 
> > Doesn't regulat driver disable MSI?
> 
> Sure. This is not fixing a regular's driver problem. It's a behavioral
> correction for faulty corner cases.
> 
> Jan

OK based on this I think this is not 2.1 material. Agree?

> > 
> > 
> >> It may not be complete, but I think it's a step forward. Irqfd users
> >> apparently have to do this themselves then, I didn't look into this. But
> >> all the rest should not open-code this logic.
> >>
> >> Jan
> >>
> >>>
> >>>> ---
> >>>>  hw/pci/msi.c  | 4 ++++
> >>>>  hw/pci/msix.c | 4 ++++
> >>>>  2 files changed, 8 insertions(+)
> >>>>
> >>>> diff --git a/hw/pci/msi.c b/hw/pci/msi.c
> >>>> index a4a3040..36b651b 100644
> >>>> --- a/hw/pci/msi.c
> >>>> +++ b/hw/pci/msi.c
> >>>> @@ -285,6 +285,10 @@ void msi_notify(PCIDevice *dev, unsigned int vector)
> >>>>          return;
> >>>>      }
> >>>>  
> >>>> +    if (!(pci_get_word(dev->config + PCI_COMMAND) & PCI_COMMAND_MASTER)) {
> >>>> +        return;
> >>>> +    }
> >>>> +
> >>>>      msg = msi_get_message(dev, vector);
> >>>>  
> >>>>      MSI_DEV_PRINTF(dev,
> >>>> diff --git a/hw/pci/msix.c b/hw/pci/msix.c
> >>>> index 5c49bfc..c77ae7d 100644
> >>>> --- a/hw/pci/msix.c
> >>>> +++ b/hw/pci/msix.c
> >>>> @@ -437,6 +437,10 @@ void msix_notify(PCIDevice *dev, unsigned vector)
> >>>>          return;
> >>>>      }
> >>>>  
> >>>> +    if (!(pci_get_word(dev->config + PCI_COMMAND) & PCI_COMMAND_MASTER)) {
> >>>> +        return;
> >>>> +    }
> >>>> +
> >>>>      msg = msix_get_message(dev, vector);
> >>>>  
> >>>>      stl_le_phys(&address_space_memory, msg.address, msg.data);
> >>>> -- 
> >>>> 1.8.1.1.298.ge7eed54
> >>>>
> >>>
> >>>
> >>
> >>
> > 
> > 
> 
> 

  reply	other threads:[~2014-07-22 20:03 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-19 16:55 [Qemu-devel] [PATCH] pci: Don't deliver MSI/MSI-X messages if bus master support is off Jan Kiszka
2014-07-20 19:48 ` Michael S. Tsirkin
2014-07-20 21:45   ` Jan Kiszka
2014-07-20 21:03     ` Michael S. Tsirkin
2014-07-20 22:04       ` Jan Kiszka
2014-07-22 19:06         ` Michael S. Tsirkin [this message]
2014-07-23  7:55           ` Jan Kiszka
2014-07-21  9:31   ` Paolo Bonzini

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=20140722190612.GC9881@redhat.com \
    --to=mst@redhat.com \
    --cc=jan.kiszka@web.de \
    --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.