]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/amd: Apply workaround for ATS write permission check
authorJay Cornwall <jay@jcornwall.me>
Wed, 10 Feb 2016 21:48:01 +0000 (15:48 -0600)
committerJoerg Roedel <jroedel@suse.de>
Thu, 25 Feb 2016 15:53:49 +0000 (16:53 +0100)
commitdd69267a05bad5a7ef118e3579a9eae86ce969d2
tree3023b7a161ceee66d15ddfcee8a9602cf582a625
parentca3610f6aab35e55eeef61a623e660db91b2f1e0
iommu/amd: Apply workaround for ATS write permission check

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: Jay Cornwall <jay@jcornwall.me>
Cc: <stable@vger.kernel.org> # v3.19+
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd_iommu_init.c