vmalloc size

Dave Hylands dhylands at gmail.com
Mon Jun 25 16:00:39 EDT 2012

Hi Subbu,

On Mon, Jun 25, 2012 at 11:18 AM, Subramaniam Appadodharana
<c.a.subramaniam at gmail.com> wrote:
> On Mon, Jun 25, 2012 at 1:00 PM, Mulyadi Santosa <mulyadi.santosa at gmail.com>
> wrote:
>> Hi.... :)
>> On Sun, Jun 24, 2012 at 1:32 AM, Subramaniam Appadodharana
>> <c.a.subramaniam at gmail.com> wrote:
>> > Hi All,
>> > I am trying to understand how vmalloc memory is reserved in kernel. In
>> > 3.4+
>> > latest kernel, the default vmalloc size is 240MB.
>> vmalloc reserved address range, you meant?
>> >Is this a carveout from
>> > the 1GiB memory that kernel has?
>> Yup....
>> > In other words can I do a __pa(VMALLOC_START) or __pa(VMALLOC_END)
>> > or __pa(highmemory) irrespective of the vmalloc size that I request, say
>> >  doing vmalloc=1G?
>> uhm....not sure....vmalloc-ed is not physically contigous. Also, it is
>> set up far after identity mapping setup. So, the value you get from
>> __pa() IMHO would be likely invalid or has no meaning.
> I thought that, as log as we know that the address is within  the 1GiB, we
> could get the
> pa of the virtual address using __pa(). Is this not the case?

__pa only works on kernel direct addresses.

__pa doesn't work on the addresses from vmalloc

Using __pa on VMALLOC_START or VMALLOC_END doesn't really make sense.
If there were any physical memory there, it would be highmem.

__pa should only be used on memory from PAGE_OFFSET through to (high_memory - 1)

Dave Hylands
Shuswap, BC, Canada

More information about the Kernelnewbies mailing list