Regarding high mem

Chetan Nanda chetannanda at gmail.com
Wed Oct 17 04:34:36 EDT 2012


On Tue, Oct 16, 2012 at 5:47 PM, Kshemendra KP <kshemendra at suphalaam.com>wrote:

>
>    On x86 kernel is normally split into 3GB (user) : 1 GB (Kernel) spaces.
> Kernel can only directly
>    manipulate 1 GB (around 889 MB) from the PAGE_OFFSET (0xC0000000). The
> user space
>    memofy below PAGE_OFFSET kernel can't directly access, it considers
> this memory as
>    high memory. Kernel needs to kmap()/kmap_atomic() map user page and
> access that region.
>

As per my understanding, if kernel code is running under a process context
then it can access lower 3GB address space, provided address in 0-3GB is in
process address space.  And its not a high memory.
High memory is a virtual address space with 1GB kernel space to map RAM
pages beyond 896MB.



>    If the memory is above 4 GB with page extension, it is clear that
> kernel can't access it as
>    kernel uses "void *" and/or  "unsigned long" to hold the address. But
> it is not clear for me
>    why kernel's can't directly access memory below PAGE_OFFSET ( 0-3GB)
> directly.
>

Kernel can access 0-3GB memory, take an example of application sending data
to kernel via system call e.g. write.
in Write system call pointer to the buffer will be in 0-3Gb address space
of calling application. And kernel will access this address to write data
to drivers/etc ..


>
> Regards
>
> Kshemendra
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
> Chetan Nanda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20121017/e008baa4/attachment.html 


More information about the Kernelnewbies mailing list