• Alexey Kardashevskiy's avatar
    vfio: powerpc/spapr/iommu/powernv/ioda2: Rework IOMMU ownership control · f87a8864
    Alexey Kardashevskiy authored
    This adds tce_iommu_take_ownership() and tce_iommu_release_ownership
    which call in a loop iommu_take_ownership()/iommu_release_ownership()
    for every table on the group. As there is just one now, no change in
    behaviour is expected.
    
    At the moment the iommu_table struct has a set_bypass() which enables/
    disables DMA bypass on IODA2 PHB. This is exposed to POWERPC IOMMU code
    which calls this callback when external IOMMU users such as VFIO are
    about to get over a PHB.
    
    The set_bypass() callback is not really an iommu_table function but
    IOMMU/PE function. This introduces a iommu_table_group_ops struct and
    adds take_ownership()/release_ownership() callbacks to it which are
    called when an external user takes/releases control over the IOMMU.
    
    This replaces set_bypass() with ownership callbacks as it is not
    necessarily just bypass enabling, it can be something else/more
    so let's give it more generic name.
    
    The callbacks is implemented for IODA2 only. Other platforms (P5IOC2,
    IODA1) will use the old iommu_take_ownership/iommu_release_ownership API.
    The following patches will replace iommu_take_ownership/
    iommu_release_ownership calls in IODA2 with full IOMMU table release/
    create.
    
    As we here and touching bypass control, this removes
    pnv_pci_ioda2_setup_bypass_pe() as it does not do much
    more compared to pnv_pci_ioda2_set_bypass. This moves tce_bypass_base
    initialization to pnv_pci_ioda2_setup_dma_pe.
    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 avatarGavin Shan <gwshan@linux.vnet.ibm.com>
    Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    f87a8864
iommu.h 7.8 KB