PTE access type in Virtual Address Translation


Greg Favor
 

On Tue, Nov 17, 2020 at 2:05 AM Gracy Ge <gracy.ge@...> wrote:
From the Privileged spec, the 2nd step of virtual Address Translation process said, 
[2. Let pte be the value of the PTE at address a+va.vpn[i]×PTESIZE. (For Sv32, PTESIZE=4.)
If accessing pte violates a PMA or PMP check, raise an access exception corresponding to
the original access type.]
What is the required ACCESS type for PTE entries? I thought it should only have read access for non-leaf PTE and extra write access for leaf PTE(AD). Is this correct?

The actual PTE access is either a page-table data read or page-table data write (which gets checked against PMAs and PMPs as such).  But the "original access type" refers to the access that is being translated - which may be a load, a store, or an instruction fetch.

Greg




Gracy Ge
 

From the Privileged spec, the 2nd step of virtual Address Translation process said, 
[2. Let pte be the value of the PTE at address a+va.vpn[i]×PTESIZE. (For Sv32, PTESIZE=4.)
If accessing pte violates a PMA or PMP check, raise an access exception corresponding to
the original access type.]
What is the required ACCESS type for PTE entries? I thought it should only have read access for non-leaf PTE and extra write access for leaf PTE(AD). Is this correct?