Skip to content
  • Alexey Kardashevskiy's avatar
    spapr_pci_vfio: Add spapr-pci-vfio-host-bridge to support vfio · 9fc34ada
    Alexey Kardashevskiy authored
    
    
    The patch adds a spapr-pci-vfio-host-bridge device type
    which is a PCI Host Bridge with VFIO support. The new device
    inherits from the spapr-pci-host-bridge device and adds an "iommu"
    property which is an IOMMU id. This ID represents a minimal entity
    for which IOMMU isolation can be guaranteed. In SPAPR architecture IOMMU
    group is called a Partitionable Endpoint (PE).
    
    Current implementation supports one IOMMU id per QEMU VFIO PHB. Since
    SPAPR allows multiple PHB for no extra cost, this does not seem to
    be a problem. This limitation may change in the future though.
    
    Example of use:
    Configure and Add 3 functions of a multifunctional device to QEMU:
    (the NEC PCI USB card is used as an example here):
    -device spapr-pci-vfio-host-bridge,id=USB,iommu=4,index=7 \
    -device vfio-pci,host=4:0:1.0,addr=1.0,bus=USB,multifunction=true
    -device vfio-pci,host=4:0:1.1,addr=1.1,bus=USB
    -device vfio-pci,host=4:0:1.2,addr=1.2,bus=USB
    
    where:
    * index=7 is a QEMU PHB index (used as source for MMIO/MSI/IO windows
    offset);
    * iommu=4 is an IOMMU id which can be found in sysfs:
    [aik@vpl2 ~]$ cd /sys/bus/pci/devices/0004:00:00.0/
    [aik@vpl2 0004:00:00.0]$ ls -l iommu_group
    lrwxrwxrwx 1 root root 0 Jun  5 12:49 iommu_group -> ../../../kernel/iommu_groups/4
    
    Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    9fc34ada