vfio/quirks: Enable ioeventfd quirks to be handled by vfio directly

With vfio ioeventfd support, we can program vfio-pci to perform a
specified BAR write when an eventfd is triggered.  This allows the
KVM ioeventfd to be wired directly to vfio-pci, entirely avoiding
userspace handling for these events.  On the same micro-benchmark
where the ioeventfd got us to almost 90% of performance versus
disabling the GeForce quirks, this gets us to within 95%.

Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
Alex Williamson 2018-06-05 08:23:17 -06:00
parent c958c51d2e
commit 2b1dbd0d72
4 changed files with 51 additions and 8 deletions

View file

@ -34,6 +34,7 @@ typedef struct VFIOIOEventFD {
VFIORegion *region;
hwaddr region_addr;
bool dynamic; /* Added runtime, removed on device reset */
bool vfio;
} VFIOIOEventFD;
typedef struct VFIOQuirk {
@ -163,6 +164,7 @@ typedef struct VFIOPCIDevice {
bool no_kvm_msix;
bool no_geforce_quirks;
bool no_kvm_ioeventfd;
bool no_vfio_ioeventfd;
VFIODisplay *dpy;
} VFIOPCIDevice;