<div dir="ltr"><br><div class="gmail_extra"><div>On Wed, Dec 25, 2013 at 9:07 PM,  <span dir="ltr">&lt;<a href="mailto:Valdis.Kletnieks@vt.edu" target="_blank">Valdis.Kletnieks@vt.edu</a>&gt;</span> wrote:<br></div><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Wed, 25 Dec 2013 14:45:01 +0530, Pritam Bankar said:<br>

<br>
&gt; This is what I don&#39;t understand what does it mean by<br>
&gt;<br>
&gt; containing large holes?<br>
&gt;<br>
&gt; physical discontiguous memory?<br>
&gt;<br>
&gt; Is it like when I put 2 RAM chips in a system then memory for them will be<br>
&gt; discontiguous?<br>
<br>
</div><div class="im">&gt; Per my understanding RAM memory will ALWAYS be contiguous whether its 512<br>
&gt; MB or 4 GB.<br>
<br>
</div>Your understanding is wrong.  That may be true on most x86-based desktops<br>
and laptops and the like, but it&#39;s often very wrong on other architectures.<br>
In fact, given that the x86 architecture is just one of like 27 archs that<br>
Linux supports, it&#39;s a good bet that there&#39;s more archs that *don&#39;t* enforce<br>
contiguous memory than do. Counting through the defconfigs to get a number<br>
is left as an exercise for the student. :)<br>
<br>
A common case for embedded systems is &quot;256M of RAM at address 0, and<br>
256M of RAM at address 0x80000000&quot; (or whatever the halfway mark for the<br>
architecture is).<br>
<br>
NUMA boxes are sometimes &quot;each node&#39;s RAM is at &lt;node number&gt;*4G&quot; or similar,<br>
which means lots of holes if each node is partly populated with only 2G.<br></blockquote><div><br></div><div><br></div><div>Thanks a lot Saptarshi and Valdis. Your comments cleared my doubt but while doing some more analysis I have come with following points.</div>
<div><br></div><div>Following is a output of /proc/iomem on my system</div><div><br></div><div>*****************************************************************************</div><div>[pritam@linux-box-1 ~]$ cat /proc/iomem</div>
<div>00000000-0009fbff : <b>System RAM</b></div><div>  00000000-00000000 : Crash kernel</div><div>0009fc00-0009ffff : reserved</div><div>000a0000-000bffff : Video RAM area</div><div>000c0000-000c7fff : Video ROM</div><div>
000c8000-000c97ff : Adapter ROM</div><div>000c9800-000cafff : Adapter ROM</div><div>000f0000-000fffff : System ROM</div><div>00100000-3ffeffff : <b>System RAM</b></div><div>  00400000-005fed40 : Kernel code</div><div>  005fed41-006d292f : Kernel data</div>
<div>3fff0000-3fffefff : ACPI Tables</div><div>3ffff000-3fffffff : ACPI Non-volatile Storage</div><div>fc900000-fc9fffff : PCI Bus #01</div><div>  fc9b0000-fc9bffff : 0000:01:05.1</div><div>    fc9b0000-fc9bffff : tg3</div>
<div>  fc9e0000-fc9effff : 0000:01:05.0</div><div>    fc9e0000-fc9effff : tg3</div><div>fca00000-feafffff : PCI Bus #03</div><div>  fd000000-fdffffff : 0000:03:04.0</div><div>  feac0000-feadffff : 0000:03:04.0</div><div>  feafd000-feafdfff : 0000:03:00.1</div>
<div>    feafd000-feafdfff : ohci_hcd</div><div>  feafe000-feafefff : 0000:03:00.0</div><div>    feafe000-feafefff : ohci_hcd</div><div>  feaff000-feafffff : 0000:03:04.0</div><div>febfe000-febfefff : 0000:00:0a.1</div><div>
febff000-febfffff : 0000:00:0b.1</div><div>ff500000-ff5fffff : PCI Bus #01</div><div>ff780000-ffffffff : reserved  </div><div>******************************************************************************</div><div><br></div>
<div>PCMIIW,</div><div><br></div><div>1. From above output it is clear that System RAM is discontinuous. I calculated addresses in both sections assigned to System RAM (highlighted in above output) and they are of 1024 MB which is exactly my systems physical RAM is. </div>
<div><br></div><div>2. But for other IO devices lets say Video RAM,  area is 000a0000-000bffff Now who has assigned these addresses?  Do they remain same forever ? How kernel comes to know that there is no RAM at 000a0000-000bffff but its Video RAM?</div>
<div><br></div><div><br></div><div>Thanks,</div><div>Pritam</div><div><br></div></div></div></div>