Read my reply for the related question here.<br><a href="http://www.spinics.net/lists/newbies/msg43910.html">http://www.spinics.net/lists/newbies/msg43910.html</a><br><br><div class="gmail_quote">On Wed, Mar 13, 2013 at 3:16 PM, Niroj Pokhrel <span dir="ltr">&lt;<a href="mailto:nirojpokhrel@gmail.com" target="_blank">nirojpokhrel@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi All,<br><br>I have been studying Memory Management in linux. But I am confused with the division of different ZONE. The use of ZONE_DMA and ZONE_NORMAL is fine. But I am confused with ZONE_HIGHMEM, if the system is 32 bit then why can&#39;t it map 4GB memory (2^32). I had thought that ZONE_NORMAL was for the kernel usage so directly mapped and ZONE_HIGHMEM for the user process and is not directly mapped to facilitate virtual addressing. But I know I am not getting something right. While going through Ch - 15 of Rubini&#39;s Linux Device Driver (Memory Management and DMA) I came across following line <br>


<br>&quot;a 64-bit architecture such as Intel’s x86-64 can fully map and handle 64-bits of memory.Thus, x86-64 has no ZONE_HIGHMEM and all physical memory is contained within ZONE_DMA and ZONE_NORMAL.&quot;  So, if it can be directly mapped why not in 32 bit architecture.<br>


<br>I am really confused. Please Help. Thanking you in Advance <br><br><br>Yours,<br>Niroj Pokhrel<br>
<br>_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Regards,<br>Prabhunath G<br>Linux Trainer<br>Bangalore<br>