Skip to content
  • Alexey Kardashevskiy's avatar
    vfio: powerpc/spapr: powerpc/powernv/ioda2: Use DMA windows API in ownership control · 46d3e1e1
    Alexey Kardashevskiy authored
    
    
    Before the IOMMU user (VFIO) would take control over the IOMMU table
    belonging to a specific IOMMU group. This approach did not allow sharing
    tables between IOMMU groups attached to the same container.
    
    This introduces a new IOMMU ownership flavour when the user can not
    just control the existing IOMMU table but remove/create tables on demand.
    If an IOMMU implements take/release_ownership() callbacks, this lets
    the user have full control over the IOMMU group. When the ownership
    is taken, the platform code removes all the windows so the caller must
    create them.
    Before returning the ownership back to the platform code, VFIO
    unprograms and removes all the tables it created.
    
    This changes IODA2's onwership handler to remove the existing table
    rather than manipulating with the existing one. From now on,
    iommu_take_ownership() and iommu_release_ownership() are only called
    from the vfio_iommu_spapr_tce driver.
    
    Old-style ownership is still supported allowing VFIO to run on older
    P5IOC2 and IODA IO controllers.
    
    No change in userspace-visible behaviour is expected. Since it recreates
    TCE tables on each ownership change, related kernel traces will appear
    more often.
    
    This adds a pnv_pci_ioda2_setup_default_config() which is called
    when PE is being configured at boot time and when the ownership is
    passed from VFIO to the platform code.
    
    Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    [aw: for the vfio related changes]
    Acked-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    46d3e1e1