• A
    vfio/pci: Add NVIDIA GPUDirect Cliques support · dfbee78d
    Alex Williamson 提交于
    NVIDIA has defined a specification for creating GPUDirect "cliques",
    where devices with the same clique ID support direct peer-to-peer DMA.
    When running on bare-metal, tools like NVIDIA's p2pBandwidthLatencyTest
    (part of cuda-samples) determine which GPUs can support peer-to-peer
    based on chipset and topology.  When running in a VM, these tools have
    no visibility to the physical hardware support or topology.  This
    option allows the user to specify hints via a vendor defined
    capability.  For instance:
    
      <qemu:commandline>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev0.x-nv-gpudirect-clique=0'/>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev1.x-nv-gpudirect-clique=1'/>
        <qemu:arg value='-set'/>
        <qemu:arg value='device.hostdev2.x-nv-gpudirect-clique=1'/>
      </qemu:commandline>
    
    This enables two cliques.  The first is a singleton clique with ID 0,
    for the first hostdev defined in the XML (note that since cliques
    define peer-to-peer sets, singleton clique offer no benefit).  The
    subsequent two hostdevs are both added to clique ID 1, indicating
    peer-to-peer is possible between these devices.
    
    QEMU only provides validation that the clique ID is valid and applied
    to an NVIDIA graphics device, any validation that the resulting
    cliques are functional and valid is the user's responsibility.  The
    NVIDIA specification allows a 4-bit clique ID, thus valid values are
    0-15.
    Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
    dfbee78d
pci-quirks.c 68.0 KB