• Alexey Kardashevskiy's avatar
    vfio/spapr_tce: Skip unsetting already unset table · a3906855
    Alexey Kardashevskiy authored
    VFIO TCE IOMMU v2 owns IOMMU tables. When we detach an IOMMU group from
    a container, we need to unset these tables from the group which we do by
    calling unset_window(). We also unset tables when removing a DMA window
    via the VFIO_IOMMU_SPAPR_TCE_REMOVE ioctl.
    
    The window removal checks if the table actually exists (hidden inside
    tce_iommu_find_table()) but the group detaching does not so the user
    may see duplicating messages:
    pci 0009:03     : [PE# fd] Removing DMA window #0
    pci 0009:03     : [PE# fd] Removing DMA window #1
    pci 0009:03     : [PE# fd] Removing DMA window #0
    pci 0009:03     : [PE# fd] Removing DMA window #1
    
    At the moment this is not a problem as the second invocation
    of unset_window() writes zeroes to the HW registers again and exits early
    as there is no table.
    Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    a3906855
vfio_iommu_spapr_tce.c 33 KB