• A
    memory: Fix IOMMU replay base address · d78c19b5
    Alexey Kardashevskiy 提交于
    Since a788f227 "memory: Allow replay of IOMMU mapping notifications"
    when new VFIO listener is added, all existing IOMMU mappings are
    replayed. However there is a problem that the base address of
    an IOMMU memory region (IOMMU MR) is ignored which is not a problem
    for the existing user (which is pseries) with its default 32bit DMA
    window starting at 0 but it is if there is another DMA window.
    
    This stores the IOMMU's offset_within_address_space and adjusts
    the IOVA before calling vfio_dma_map/vfio_dma_unmap.
    
    As the IOMMU notifier expects IOVA offset rather than the absolute
    address, this also adjusts IOVA in sPAPR H_PUT_TCE handler before
    calling notifier(s).
    Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
    d78c19b5
common.c 37.8 KB