kernelnewbies.kernelnewbies.org archive mirror
 help / color / mirror / Atom feed
From: dhylands@gmail.com (Dave Hylands)
To: kernelnewbies@lists.kernelnewbies.org
Subject: Can i allocate 4GB virtual addresses (more than a certain limit) using vmalloc?
Date: Tue, 31 May 2011 08:19:45 -0700	[thread overview]
Message-ID: <BANLkTin6ugT-9peDDLkyNjEnq5tak5DMtA@mail.gmail.com> (raw)
In-Reply-To: <BANLkTikCwSmk5SuCVmhCzyKM9dQeWY8MVw@mail.gmail.com>

Hi Sandeep,

On Mon, May 30, 2011 at 10:54 PM, sandeep kumar
<coolsandyforyou@gmail.com> 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

  parent reply	other threads:[~2011-05-31 15:19 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-31  5:54 Can i allocate 4GB virtual addresses (more than a certain limit) using vmalloc? sandeep kumar
2011-05-31  7:02 ` Mulyadi Santosa
2011-05-31  8:09   ` sandeep kumar
2011-05-31 15:19 ` Dave Hylands [this message]
2011-08-22 21:43   ` subin gangadharan
2011-08-22 22:27     ` Jonathan Neuschäfer
2011-05-31 15:27 ` Peter Teoh
2011-06-01  4:24   ` sandeep kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BANLkTin6ugT-9peDDLkyNjEnq5tak5DMtA@mail.gmail.com \
    --to=dhylands@gmail.com \
    --cc=kernelnewbies@lists.kernelnewbies.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).