Re: Question about linux paging mechanism

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 30 Mar 2008 17:55:26 +0800
"Wu Yu" <vestige.lug@xxxxxxxxx> wrote:

> Hi all,
>     AFAIK, for IA-32 arch, two-level paging is sufficient. But the
> positions of PUD and PMD are kept.

This is done so all architectures can use the same iterative
functions, like unmap_page_range -> zap_pud_range -> zap_pmd_range
-> zap_pte_range.

>    I don't quite understand the word "mapping". Does that mean there
> is one entry in PGD for both PUD and PMD? 

It means that the kernel pretends that the pgd entry points to a
pud (with one entry), even though it really points to a page table.

By pretenting it points to itself unmap_page_range can call the
next function down, zap_pud_range.

We do the same thing in zap_pud_range - it calls zap_pmd_range on
the same pgd entry, except now it thinks it points to a pmd.

Finally, zap_pmd_range interprets the entry and sees that it points
to a page table.  Zap_pmd_range invokes zap_pte_range and everything
works as normal.

Because, on i386, we pretend that the PUD and PMD page tables only
have 1 entry, the loop does not loop, but simply invokes the next
function down once.

-- 
All rights reversed.

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux