• Jean-Philippe Brucker's avatar
    iommu/arm-smmu-v3: Disable tagged pointers · b2fc9b4b
    Jean-Philippe Brucker authored
    The ARM architecture has a "Top Byte Ignore" (TBI) option that makes the
    MMU mask out bits [63:56] of an address, allowing a userspace application
    to store data in its pointers. This option is incompatible with PCI ATS.
    
    If TBI is enabled in the SMMU and userspace triggers DMA transactions on
    tagged pointers, the endpoint might create ATC entries for addresses that
    include a tag. Software would then have to send ATC invalidation packets
    for each 255 possible alias of an address, or just wipe the whole address
    space. This is not a viable option, so disable TBI.
    
    The impact of this change is unclear, since there are very few users of
    tagged pointers, much less SVA. But the requirement introduced by this
    patch doesn't seem excessive: a userspace application using both tagged
    pointers and SVA should now sanitize addresses (clear the tag) before
    using them for device DMA.
    Signed-off-by: default avatarJean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    b2fc9b4b
arm-smmu-v3.c 81.2 KB