• R
    iommu/arm-smmu: Fix ATS1* register writes · 661d962f
    Robin Murphy 提交于
    The ATS1* address translation registers only support being written
    atomically - in SMMUv2 where they are 64 bits wide, 32-bit writes to
    the lower half are automatically zero-extended, whilst 32-bit writes
    to the upper half are ignored. Thus, the current logic of performing
    64-bit writes as two 32-bit accesses is wrong.
    
    Since we already limit IOVAs to 32 bits on 32-bit ARM, the lack of a
    suitable writeq() implementation there is not an issue, and we only
    need a little preprocessor ugliness to safely hide the 64-bit case.
    Signed-off-by: NRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: NWill Deacon <will.deacon@arm.com>
    Signed-off-by: NJoerg Roedel <jroedel@suse.de>
    661d962f
arm-smmu.c 50.0 KB