Page table queries

Rajat Sharma fs.rajat at gmail.com
Sat Feb 19 04:14:44 EST 2011


> So, in the start, the page might have kernel mode address, but in the
> end it has user mode address. But kernel is still the one that tracks
> all the page...be it anonymous or non anonymous ones.

Not really. In this particular case of .nopage (page fault handler) of
vma, we already have a user space virtual address for the faulty page,
we just need it to map it with a physical page frame (RAM or device
memory). Just allocate a physical page frame without any address,
caller for .nopage will take care of properly setting its user space
virtual address (page->va). So, no association with kernel space
virtual address is required, e.g. it can be high memory page too
without any kernel mapping.

Rajat

On Sat, Feb 19, 2011 at 2:10 PM, Mulyadi Santosa
<mulyadi.santosa at gmail.com> wrote:
> Hi :)
>
> I'll try to help...
>
> On Sat, Feb 19, 2011 at 13:10, anish singh <anish198519851985 at gmail.com> wrote:
>> As i understood whenver a user space program is run it is represented in
>> kernel using VMA which is managed by struct mm_struct
>> and whenever the program is trying to read/write to a memory location in
>> user space it will be directed to physical address using PAGE TABLE
>> translation done by struct mm_struct(done in kernel space).Am i right?
>
> i think not "done" but mm_struct points to PGD that represent's the
> whole process address space. Using information provided there, MMU
> does translation.
>
>> Suppose a simple driver wants the user to directly access its device memory
>> then we use mmap.This mmap associates a set of user space virtual address
>> with device driver memory and it is done by creating kernel page tables for
>> the user space virtual addresses.Is the page table translation done
>> everytime whenever user space does read/write to the device memory??
>
> if it's recently translated, quite likely it is already cached in TLB
> (translation look aside buffer)
>
>> In .nopage function call we return the page associated with the physical
>> address which the user wants to associate with user space virtual address.Is
>> the page address returned by the nopage function same as seen by the user or
>> will it be converted to user space virtual address(range between 0-2 GB)?
>
> AFAIK, nopage is one of the functions that handle minor page fault, no?
>
> Anyway, memory allocation, usually start by kernel allocates a page.
> Then it is "handed" to user space memory allocator.
>
> So, in the start, the page might have kernel mode address, but in the
> end it has user mode address. But kernel is still the one that tracks
> all the page...be it anonymous or non anonymous ones.
>
> Does it help? :)
>
>
>
> --
> regards,
>
> Mulyadi Santosa
> Freelance Linux trainer and consultant
>
> blog: the-hydra.blogspot.com
> training: mulyaditraining.blogspot.com
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>



More information about the Kernelnewbies mailing list