[Question] A question about arm64 pte

Catalin Marinas catalin.marinas at arm.com
Mon Jan 16 03:56:07 PST 2017

On Mon, Jan 16, 2017 at 06:08:47PM +0800, Yisheng Xie wrote:
> I have question about arm64 pte.

I assume the context is ARMv8.0 (without hardware DBM support).

> For arm64, PTE_WRITE(== PTE_DBM) is to mark whether the page is writable,
> and PTE_DIRTY is to mark whether the page is dirty.
> However, PTE_RDONLY is only cleared when both PTE_WRITE and PTE_DIRTY are set.

That's what set_pte_at() does.

> Is that means that the page is still writable when PTE_RDONLY is set with PTE_WRITE?

No. On ARMv8.0, PTE_WRITE is a software only bit while PTE_RDONLY
describes the actual hardware permission. If set_pte_at() does not clear
the PTE_RDONLY bit (PTE_DIRTY not set), the page is read-only even
though PTE_WRITE may be set.

> But in ARM Architecture Reference Manual for ARMv8,
> when PTE_RDONLY is set(AP[2:1] = 0b1x), Acess from EL1 is Ready only?


> so what is the really means of the PTE_RDONLY?

Read-only. On ARMv8.0, PTE_WRITE is irrelevant from a hardware


More information about the linux-arm-kernel mailing list