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>
Thu, 15 May 2014 18:59:51 +0000 (19:59 +0100)
commit2f4620f7ab52b501c56125278225dce92e21bf1f
tree7f10e6ab23817fa8f16ebd5ea94539775d959914
parent9370103e565eebf905ae0ab6b437b4131b2c2e73
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