From: Thanos Makatos <thanos.makatos@nutanix.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Felipe Franciosi <felipe@nutanix.com>
Subject: RE: question about handling MSI-X by VFIO
Date: Thu, 23 Jan 2020 15:01:28 +0000 [thread overview]
Message-ID: <MN2PR02MB62056D2CC033EA7E9F37AC448B0F0@MN2PR02MB6205.namprd02.prod.outlook.com> (raw)
In-Reply-To: <20200121101911.64701afd@w520.home>
> > I'm passing through a virtual PCI device to a QEMU guest via VFIO/mdev
> and I
> > notice that MSI-X interrupts are disabled in the device (MSIXCAP.MXC.MXE
> is
> > zero) and the BARs containing the table and PBA (4 and 5 in my case) are
> never
> > accessed. However, whenever I fire an MSI-X interrupt from the virtual
> device
> > (although I'm not supposed to do so as they're disabled), the guest seems
> to
> > correctly receive it. I've started looking at hw/vfio/pci.c and it seems that
> > VFIO handles MSI-X interrupts there, including masking etc?
>
> Yes, the vector table and PBA are emulated in QEMU, the latter lazily
> only when vectors are masked, iirc. The backing device vector table
> should never be directly accessed by the user (it can be, but you can
> just discard those accesses), MSI-X is configured via the
> VFIO_DEVICE_SET_IRQS ioctl, which configures the eventfd through which
> an mdev driver would trigger an MSI. When you say that you "fire and
> MSI-X interrupt from the virtual device" does this mean that you're
> signaling via one of these eventfds? It looks to me like emulating the
> MSI-X enable bit in the MSI-X capability is probably the responsibility
> of the mdev vendor driver. With vfio-pci the VFIO_DEVICE_SET_IRQS ioctl
> would enable MSI-X on the physical device and the MSI-X capability seen
> by the user would reflect that. Are you missing a bit of code that
> updates the mdev config space as part of the SET_IRQS ioctl? Thanks,
Indeed I fire interrupts via the eventfd and it works correctly. I just
couldn't understand how it could possibly work since the table and PBA BARs
were never accessed and the MSI-X enable bit was not set. It makes perfect
sense now why it works since QEMU does it all.
prev parent reply other threads:[~2020-01-23 16:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-21 13:36 question about handling MSI-X by VFIO Thanos Makatos
2020-01-21 17:19 ` Alex Williamson
2020-01-23 15:01 ` Thanos Makatos [this message]
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=MN2PR02MB62056D2CC033EA7E9F37AC448B0F0@MN2PR02MB6205.namprd02.prod.outlook.com \
--to=thanos.makatos@nutanix.com \
--cc=alex.williamson@redhat.com \
--cc=felipe@nutanix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).