vfio/pci: use an invalid fd to enable MSI-X
commit5ebffa4e87e7a3127650ef2c0fc12e8624337ee4
authorJing Liu <jing2.liu@intel.com>
Tue, 26 Sep 2023 02:14:06 +0000 (25 22:14 -0400)
committerCédric Le Goater <clg@redhat.com>
Thu, 5 Oct 2023 20:04:51 +0000 (5 22:04 +0200)
treedc5bbbe73451d535ac9ce0561338c57c7be9b8a3
parentd9e6710d7d59c1f774bfb49f3b1c2b5ee06ed33e
vfio/pci: use an invalid fd to enable MSI-X

Guests typically enable MSI-X with all of the vectors masked in the MSI-X
vector table. To match the guest state of device, QEMU enables MSI-X by
enabling vector 0 with userspace triggering and immediately release.
However the release function actually does not release it due to already
using userspace mode.

It is no need to enable triggering on host and rely on the mask bit to
avoid spurious interrupts. Use an invalid fd (i.e. fd = -1) is enough
to get MSI-X enabled.

After dynamic MSI-X allocation is supported, the interrupt restoring
also need use such way to enable MSI-X, therefore, create a function
for that.

Suggested-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Jing Liu <jing2.liu@intel.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
hw/vfio/pci.c