From: Jan Kiszka <jan.kiszka@web.de>
To: "Michael S. Tsirkin" <mst@redhat.com>
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: Sun, 20 Jul 2014 23:45:10 +0200 [thread overview]
Message-ID: <53CC3866.3010605@web.de> (raw)
In-Reply-To: <20140720194842.GA2536@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2145 bytes --]
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.
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
>>
>
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
next prev parent reply other threads:[~2014-07-20 21:45 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 [this message]
2014-07-20 21:03 ` Michael S. Tsirkin
2014-07-20 22:04 ` Jan Kiszka
2014-07-22 19:06 ` Michael S. Tsirkin
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=53CC3866.3010605@web.de \
--to=jan.kiszka@web.de \
--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.