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?

Reply via email to