• Joerg Roedel's avatar
    iommu: Fix deferred domain attachment · bd421264
    Joerg Roedel authored
    The IOMMU core code has support for deferring the attachment of a domain
    to a device. This is needed in kdump kernels where the new domain must
    not be attached to a device before the device driver takes it over.
    
    When the AMD IOMMU driver got converted to use the dma-iommu
    implementation, the deferred attaching got lost. The code in
    dma-iommu.c has support for deferred attaching, but it calls into
    iommu_attach_device() to actually do it. But iommu_attach_device()
    will check if the device should be deferred in it code-path and do
    nothing, breaking deferred attachment.
    
    Move the is_deferred_attach() check out of the attach_device path and
    into iommu_group_add_device() to make deferred attaching work from the
    dma-iommu code.
    
    Fixes: 795bbbb9 ("iommu/dma-iommu: Handle deferred devices")
    Reported-by: default avatarJerry Snitselaar <jsnitsel@redhat.com>
    Suggested-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    Tested-by: default avatarJerry Snitselaar <jsnitsel@redhat.com>
    Cc: Jerry Snitselaar <jsnitsel@redhat.com>
    Cc: Tom Murphy <murphyt7@tcd.ie>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Link: https://lore.kernel.org/r/20200519130340.14564-1-joro@8bytes.org
    bd421264
iommu.c 65.8 KB