Artur Grabowski wrote:
Constantine Kousoulos <[EMAIL PROTECTED]> writes:
Which one level 1 ptp do we keep at the recursive area? Does OpenBSD
keep the last used level 1 ptp cached at that area? Please clarify.
Huh? That question, no parse.
The top level page table in the amd64 architecture (meaning the first
page table that we reference to get to the physical pages) is called
PML4 (Page Map Level 4) or just level 4 page table. Through that page
table we have access to 3 or 4 (depending on the page size) page tables
to get to the physical pages.
If that is the page table that the comments refer to in
"src/sys/arch/amd64/include/pmap.h", then they should change from
[...] The obvious difference is that 3 extra
* levels of page table need to be dealt with. The level 1 page
* table pages are at: [...]
to
[...] The obvious difference is that 3 extra
* levels of page table need to be dealt with. The level 4 page
* table pages are at: [...]
If the comments truly refer to the level 1 page table (last page table
before getting physical address pages), then i am asking *which* level 1
page table does OpenBSD recursively maps of all the available? There's
not only one level 1 page table although there is only one level 4 page
table.
The recursive map is simply the top level page table that we enter into
itself (check pmap_create to find whichever slot it might be) to have
easy access to the page tables.
A second thing is that recursive mapping works well when we have 2-level
page tables (as in the i386 architecture). When we have 3 or more page
tables, the recursive mapping just points to another page table and not
to the physical address of a page. I think that is why "The rest (of the
page tables) is kept as physical pages in 3 UVM objects, and is
temporarily mapped for virtual access when needed". Do these UVM objects
work like a cache that save the last page tables used?