• A
    vfio-pci: Update slow path INTx algorithm · ea486926
    Alex Williamson 提交于
    We can't afford the overhead of switching out and back into mmap mode
    around each interrupt, but we can do it lazily via a timer.  On INTx
    interrupt, disable the mmap'd memory regions and set a timer.  On
    every interrupt, push the timer out.  If the timer expires and the
    interrupt is no longer pending, switch back to mmap mode.
    
    This has the benefit that things like graphics cards, which rarely or
    never, fire an interrupt don't need manual user intervention to add
    the x-intx=off parameter.  They'll just remain in mmap mode until they
    trigger an interrupt, and if they don't continue to regularly fire
    interrupts, they'll switch back.
    
    The default timeout is tuned for network cards so that a ping is just
    enough to keep them in non-mmap mode, where they have much better
    latency.  It is tunable with an experimental option,
    x-intx-mmap-timeout-ms.  A value of 0 keeps the device in non-mmap
    mode after the first interrupt.
    
    It's possible we could look at the class code of devices and come up
    with reasonable per-class defaults based on expected interrupt
    frequency and latency.  None of this is used for MSI interrupts and
    also won't be used if we can bypass through KVM.
    Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
    ea486926
vfio_pci.c 55.4 KB