Alex Williamson
b0223e29af
vfio-pci: Make host MSI-X enable track guest
...
Guests typically enable MSI-X with all of the vectors in the MSI-X
vector table masked. Only when the vector is enabled does the vector
get unmasked, resulting in a vector_use callback. These two points,
enable and unmask, correspond to pci_enable_msix() and request_irq()
for Linux guests. Some drivers rely on VF/PF or PF/fw communication
channels that expect the physical state of the device to match the
guest visible state of the device. They don't appreciate lazily
enabling MSI-X on the physical device.
To solve this, enable MSI-X with a single vector when the MSI-X
capability is enabled and immediate disable the vector. This leaves
the physical device in exactly the same state between host and guest.
Furthermore, the brief gap where we enable vector 0, it fires into
userspace, not KVM, so the guest doesn't get spurious interrupts.
Ideally we could call VFIO_DEVICE_SET_IRQS with the right parameters
to enable MSI-X with zero vectors, but this will currently return an
error as the Linux MSI-X interfaces do not allow it.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-stable@nongnu.org
2013-01-08 14:09:03 -07:00
..
2012-12-19 08:32:39 +01:00
2013-01-03 07:13:25 -06:00
2013-01-04 09:11:30 +01:00
2012-12-19 08:32:45 +01:00
2013-01-02 08:01:54 -06:00
2012-12-26 11:49:29 +02:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:32:46 +01:00
2013-01-08 10:56:58 +01:00
2012-12-19 08:32:45 +01:00
2013-01-04 08:51:56 +01:00
2013-01-04 08:51:56 +01:00
2013-01-04 08:51:56 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:30 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:32:45 +01:00
2012-12-23 00:40:49 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-18 16:50:15 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2013-01-04 08:51:57 +01:00
2013-01-04 08:51:57 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2013-01-07 10:43:21 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2013-01-07 12:57:25 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2013-01-07 12:57:25 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2013-01-07 12:57:24 +01:00
2013-01-07 12:57:24 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-23 14:37:51 -06:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:32 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2013-01-04 08:51:56 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2013-01-03 07:13:25 -06:00
2012-12-19 08:32:45 +01:00
2013-01-04 14:38:05 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:46 +01:00
2013-01-04 08:51:56 +01:00
2013-01-04 08:51:56 +01:00
2013-01-04 14:38:04 +01:00
2013-01-05 10:14:05 +00:00
2013-01-04 13:25:07 -06:00
2013-01-04 08:51:56 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2013-01-01 13:05:57 +01:00
2012-12-19 17:15:39 -06:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:31:31 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:32:45 +01:00
2012-12-23 00:40:49 +01:00
2012-12-23 00:40:49 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-23 00:40:49 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:32 +01:00
2012-12-23 00:40:49 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 14:09:31 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2013-01-07 10:43:21 +01:00
2013-01-02 08:01:36 -06:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:32 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:29 +01:00
2013-01-04 14:38:04 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:29:59 +01:00
2012-12-19 08:32:46 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:32 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:31:32 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:32 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:30 +01:00
2012-12-23 14:37:51 -06:00
2012-12-23 14:37:51 -06:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:46 +01:00
2013-01-08 10:56:58 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2013-01-08 14:09:03 -07:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:31 +01:00
2012-12-23 00:40:49 +01:00
2012-12-19 08:32:45 +01:00
2013-01-02 16:08:53 +01:00
2013-01-02 16:08:47 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:29 +01:00
2013-01-06 18:30:17 +00:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:29:59 +01:00
2012-12-19 17:15:39 -06:00
2012-12-20 09:20:01 +02:00
2012-12-20 09:20:01 +02:00
2012-12-19 17:15:39 -06:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:30 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 17:15:39 -06:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 17:15:39 -06:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:31:29 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:31:31 +01:00
2012-12-19 08:32:46 +01:00
2012-12-19 08:32:39 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 08:32:45 +01:00
2012-12-19 17:15:39 -06:00