• Lorenzo Pieralisi's avatar
    arm64: mm: change IOMMU notifier action to attach DMA ops · 16c11325
    Lorenzo Pieralisi authored
    Current bus notifier in ARM64 (__iommu_attach_notifier)
    attempts to attach dma_ops to a device on BUS_NOTIFY_ADD_DEVICE
    action notification.
    
    This will cause issues on ACPI based systems, where PCI devices
    can be added before the IOMMUs the devices are attached to
    had a chance to be probed, causing failures on attempts to
    attach dma_ops in that the domain for the respective IOMMU
    may not be set-up yet by the time the bus notifier is run.
    
    Devices dma_ops do not require to be set-up till the matching
    device drivers are probed. This means that instead of running
    the notifier attaching dma_ops to devices (__iommu_attach_notifier)
    on BUS_NOTIFY_ADD_DEVICE action, it can be run just before the
    device driver is bound to the device in question (on action
    BUS_NOTIFY_BIND_DRIVER) so that it is certain that its IOMMU
    group and domain are set-up accordingly at the time the
    notifier is triggered.
    
    This patch changes the notifier action upon which dma_ops
    are attached to devices and defer it to driver binding time,
    so that IOMMU devices have a chance to be probed and to register
    their bus notifiers before the dma_ops attach sequence for a
    device is actually carried out.
    
    As a result we also no longer need worry about racing with
    iommu_bus_notifier(), or about retrying the queue in case devices
    were added too early on DT-based systems, so clean up the notifier
    itself plus the additional workaround from 722ec35f ("arm64:
    dma-mapping: fix handling of devices registered before arch_initcall")
    Acked-by: default avatarWill Deacon <will.deacon@arm.com>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    [rm: get rid of other now-redundant bits]
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    16c11325
dma-mapping.c 25.5 KB