• Niklas Schnelle's avatar
    iommu/s390: Add I/O TLB ops · c228f5a0
    Niklas Schnelle authored
    
    
    Currently s390-iommu does an I/O TLB flush (RPCIT) for every update of
    the I/O translation table explicitly. For one this is wasteful since
    RPCIT can be skipped after a mapping operation if zdev->tlb_refresh is
    unset. Moreover we can do a single RPCIT for a range of pages including
    whne doing lazy unmapping.
    
    Thankfully both of these optimizations can be achieved by implementing
    the IOMMU operations common code provides for the different types of I/O
    tlb flushes:
    
     * flush_iotlb_all: Flushes the I/O TLB for the entire IOVA space
     * iotlb_sync:  Flushes the I/O TLB for a range of pages that can be
       gathered up, for example to implement lazy unmapping.
     * iotlb_sync_map: Flushes the I/O TLB after a mapping operation
    Signed-off-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
    Link: https://lore.kernel.org/r/20221109142903.4080275-3-schnelle@linux.ibm.com
    
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    c228f5a0
s390-iommu.c 10.9 KB