arm64: mm: Introduce PTE_WRITE
authorSteve Capper <Steve.Capper@arm.com>
Wed, 15 Jan 2014 14:07:13 +0000 (14:07 +0000)
committerMark Brown <broonie@linaro.org>
Fri, 9 May 2014 11:02:48 +0000 (12:02 +0100)
commit6d251ba203e4517823c4dea69a7941a77e7580c1
treef7cba9464d9db7c232094869d1924fc0178aa167
parente0934c26244ab270ec6117e41b06844fbf8dd367
arm64: mm: Introduce PTE_WRITE

We have the following means for encoding writable or dirty ptes:

                                PTE_DIRTY       PTE_RDONLY
!pte_dirty && !pte_write        0               1
!pte_dirty && pte_write         0               1
pte_dirty && !pte_write         1               1
pte_dirty && pte_write          1               0

So we can't distinguish between writable clean ptes and read only
ptes. This can cause problems with ptes being incorrectly flagged as
read only when they are writable but not dirty.

This patch introduces a new software bit PTE_WRITE which allows us to
correctly identify writable ptes. PTE_RDONLY is now only clear for
valid ptes where a page is both writable and dirty.

Signed-off-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Conflicts:
arch/arm64/include/asm/pgtable.h
arch/arm64/include/asm/pgtable.h