linux_dsm_epyc7002/arch
Catalin Marinas b847415ce9 arm64: Fix the pte_hw_dirty() check when AF/DBM is enabled
Commit 2f4b829c62 ("arm64: Add support for hardware updates of the
access and dirty pte bits") introduced support for handling hardware
updates of the access flag and dirty status. The PTE is automatically
dirtied in hardware (if supported) by clearing the PTE_RDONLY bit when
the PTE_DBM/PTE_WRITE bit is set. The pte_hw_dirty() macro was added to
detect a hardware dirtied pte. The pte_dirty() macro checks for both
software PTE_DIRTY and pte_hw_dirty().

Functions like pte_modify() clear the PTE_RDONLY bit since it is meant
to be set in set_pte_at() when written to memory. In such cases,
pte_hw_dirty() would return true even though such pte is clean. This
patch changes pte_hw_dirty() to test the PTE_DBM/PTE_WRITE bit together
with PTE_RDONLY.

Fixes: 2f4b829c62 ("arm64: Add support for hardware updates of the access and dirty pte bits")
Reported-by: Julien Grall <julien.grall@citrix.com>
Tested-by: Julien Grall <julien.grall@citrix.com>
Tested-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2015-09-14 12:28:31 +01:00
..
alpha dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
arc ARCv2: [axs103_smp] Reduce clk for SMP FPGA configs 2015-09-11 19:34:01 -07:00
arm Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
arm64 arm64: Fix the pte_hw_dirty() check when AF/DBM is enabled 2015-09-14 12:28:31 +01:00
avr32 Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
blackfin Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
c6x Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:33:35 -07:00
cris CRISv10: delete unused lib/dmacopy.c 2015-09-05 00:56:51 +02:00
frv Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
h8300 dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
hexagon Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
ia64 dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
m32r lib/decompressors: use real out buf size for gunzip with kernel 2015-09-10 13:29:01 -07:00
m68k kexec: split kexec_load syscall from kexec core code 2015-09-10 13:29:01 -07:00
metag Metag architecture changes for v4.3 2015-09-09 10:27:59 -07:00
microblaze Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
mips dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
mn10300 Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
nios2 nios2: add Max10 defconfig 2015-09-08 18:16:02 +08:00
openrisc dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
parisc parisc: Use platform_device_register_simple("rtc-generic") 2015-09-08 17:53:48 +02:00
powerpc Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
s390 dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
score Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:04:50 -07:00
sh dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
sparc dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
tile dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
um Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:04:50 -07:00
unicore32 dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
x86 sys_membarrier(): system-wide memory barrier (generic, x86) 2015-09-11 15:21:34 -07:00
xtensa dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
.gitignore
Kconfig kexec: split kexec_load syscall from kexec core code 2015-09-10 13:29:01 -07:00