• Jay Cornwall's avatar
    iommu/amd: Apply workaround for ATS write permission check · 15115bf3
    Jay Cornwall authored
    [ Upstream commit 358875fd ]
    
    The AMD Family 15h Models 30h-3Fh (Kaveri) BIOS and Kernel Developer's
    Guide omitted part of the BIOS IOMMU L2 register setup specification.
    Without this setup the IOMMU L2 does not fully respect write permissions
    when handling an ATS translation request.
    
    The IOMMU L2 will set PTE dirty bit when handling an ATS translation with
    write permission request, even when PTE RW bit is clear. This may occur by
    direct translation (which would cause a PPR) or by prefetch request from
    the ATC.
    
    This is observed in practice when the IOMMU L2 modifies a PTE which maps a
    pagecache page. The ext4 filesystem driver BUGs when asked to writeback
    these (non-modified) pages.
    
    Enable ATS write permission check in the Kaveri IOMMU L2 if BIOS has not.
    Signed-off-by: default avatarJay Cornwall <jay@jcornwall.me>
    Cc: <stable@vger.kernel.org> # v3.19+
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
    15115bf3
amd_iommu_init.c 58.6 KB