<br><div>   On x86 kernel is normally split into 3GB (user) : 1 GB (Kernel) spaces. Kernel can only directly </div><div>   manipulate 1 GB (around 889 MB) from the PAGE_OFFSET (0xC0000000). The user space </div><div>   memofy below PAGE_OFFSET kernel can&#39;t directly access, it considers this memory as </div>
<div>   high memory. Kernel needs to kmap()/kmap_atomic() map user page and access that region.</div><div><br></div><div>   If the memory is above 4 GB with page extension, it is clear that kernel can&#39;t access it as </div>
<div>   kernel uses &quot;void *&quot; and/or  &quot;unsigned long&quot; to hold the address. But it is not clear for me</div><div>   why kernel&#39;s can&#39;t directly access memory below PAGE_OFFSET ( 0-3GB) directly.</div>
<div> </div><div><br></div><div>Regards</div><div><br></div><div>Kshemendra</div>