qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: Thanos Makatos <thanos.makatos@nutanix.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: Tue, 21 Jan 2020 10:19:11 -0700	[thread overview]
Message-ID: <20200121101911.64701afd@w520.home> (raw)
In-Reply-To: <MN2PR02MB6205CD9F680E4E7AEA7E5E518B0D0@MN2PR02MB6205.namprd02.prod.outlook.com>

On Tue, 21 Jan 2020 13:36:26 +0000
Thanos Makatos <thanos.makatos@nutanix.com> wrote:

> 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,

Alex



  reply	other threads:[~2020-01-21 17:20 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 [this message]
2020-01-23 15:01   ` Thanos Makatos

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=20200121101911.64701afd@w520.home \
    --to=alex.williamson@redhat.com \
    --cc=felipe@nutanix.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thanos.makatos@nutanix.com \
    /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).