• Robin Murphy's avatar
    iommu/arm-smmu: Refactor mmu-masters handling · f80cd885
    Robin Murphy authored
    To be able to support the generic bindings and handle of_xlate() calls,
    we need to be able to associate SMMUs and stream IDs directly with
    devices *before* allocating IOMMU groups. Furthermore, to support real
    default domains with multi-device groups we also have to handle domain
    attach on a per-device basis, as the "whole group at a time" assumption
    fails to properly handle subsequent devices added to a group after the
    first has already triggered default domain creation and attachment.
    
    To that end, use the now-vacant dev->archdata.iommu field for easy
    config and SMMU instance lookup, and unify config management by chopping
    down the platform-device-specific tree and probing the "mmu-masters"
    property on-demand instead. This may add a bit of one-off overhead to
    initially adding a new device, but we're about to deprecate that binding
    in favour of the inherently-more-efficient generic ones anyway.
    
    For the sake of simplicity, this patch does temporarily regress the case
    of aliasing PCI devices by losing the duplicate stream ID detection that
    the previous per-group config had. Stay tuned, because we'll be back to
    fix that in a better and more general way momentarily...
    Tested-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    f80cd885
arm-smmu.c 54 KB