• Nadav Amit's avatar
    iommu/amd: Sync once for scatter-gather operations · 3b122a56
    Nadav Amit authored
    On virtual machines, software must flush the IOTLB after each page table
    entry update.
    
    The iommu_map_sg() code iterates through the given scatter-gather list
    and invokes iommu_map() for each element in the scatter-gather list,
    which calls into the vendor IOMMU driver through iommu_ops callback. As
    the result, a single sg mapping may lead to multiple IOTLB flushes.
    
    Fix this by adding amd_iotlb_sync_map() callback and flushing at this
    point after all sg mappings we set.
    
    This commit is followed and inspired by commit 933fcd01
    ("iommu/vt-d: Add iotlb_sync_map callback").
    
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Will Deacon <will@kernel.org>
    Cc: Jiajun Cao <caojiajun@vmware.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Lu Baolu <baolu.lu@linux.intel.com>
    Cc: iommu@lists.linux-foundation.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: default avatarNadav Amit <namit@vmware.com>
    Link: https://lore.kernel.org/r/20210723093209.714328-7-namit@vmware.comSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    3b122a56
iommu.c 84.2 KB