Hi Sandeep, On Mon, May 30, 2011 at 10:54 PM, sandeep kumar <coolsandyforyou@xxxxxxxxx> wrote: > Hi all, > The following link gives the memory map for the arm architecture. > http://www.arm.linux.org.uk/developer/memory.txt > > I have the following doubts.. > 1) Any chipset(based on arm) manufacturer(qualcom,samsung..) should follow > the same memory map. > Is it hardly constrained or can be changed? > Where are this constraints are implemented in the kernel source tree? You can have 2 different configurations for the same chip which present totally different memory maps. Where things are physically in memory varies from chip to chip, regardless of the fact that they happen to use the same processor. > 2) while i was student, i read in OS concepts that, "Virtual memory gives an > illusion to a process, > that it has always a larger continuous address space (even more than RAM) > available to it." > So i thought i could allocate howmuch ever memory i want. > But seeing the above link,i observed there is some limitation in the address > space created by the vmalloc(). > So i m now thinking that vmalloc has some limit. Absolutely. You can only vmalloc as much memory as there is virtual space reserved for vmalloc. And your vmalloc memory space can become fragmented, so you could have lots of space, but not have enough contiguous virtual space left to allocate a large object. Also keep in mind that when you vmalloc stuff you're allocating in units of pages, and there is a guard page between each allocation. So if you had 512 Mb of virtual space (which is 131,072 pages), you'll be able to vmalloc a maximum of 65536 objects or 1 page each. Fewer objects if they're bigger than a page. The actual allocation of vmalloc memory is determined by the macros VMALLOC_START and VMALLOC_END. VMALLOC_START is defined in arch/arm/include/asm/pgtable.h: http://lxr.linux.no/linux+v2.6.39/arch/arm/include/asm/pgtable.h#L41 although it can be overriden by a particular architecture. VMALLOC_END is normally defined in the machine's memory.h file, and it sits somewhere between VMALLOC_START and the beginning of I/O space. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies