• Sricharan R's avatar
    arm: dma-mapping: Reset the device's dma_ops · d3e01c51
    Sricharan R authored
    arch_teardown_dma_ops() being the inverse of arch_setup_dma_ops()
    ,dma_ops should be cleared in the teardown path. Currently, only the
    device's iommu mapping structures are cleared in arch_teardown_dma_ops,
    but not the dma_ops. So on the next reprobe, dma_ops left in place is
    stale from the first IOMMU setup, but iommu mappings has been disposed
    of. This is a problem when the probe of the device is deferred and
    recalled with the IOMMU probe deferral.
    
    So for fixing this, slightly refactor by moving the code from
    __arm_iommu_detach_device to arm_iommu_detach_device and cleanup
    the former. This takes care of resetting the dma_ops in the teardown
    path.
    
    Fixes: 09515ef5 ("of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices")
    Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarSricharan R <sricharan@codeaurora.org>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    d3e01c51
dma-mapping.c 63.9 KB