ioremap() fails for >64 MB

Phil Nitschke philn at avalon.com.au
Tue Aug 22 17:41:09 EST 2006


Hi all,

I have 2 GB memory on a 7448 processor, and want to reserve a huge chunk
of it at boot-time, then ioremap() it into the kernel space inside a
device driver.  So far I've succeeded with 64 MB, but can't go any
higher, as mm/vmalloc.c tells me: "allocation failed: out of vmalloc
space - use vmalloc=<size> to increase size."

So I tried adding a vmalloc line to the kernel command line as follows:
Kernel cmd line: root=/dev/nfs rw mem=1920M vmalloc=1024M nfsroot=... 

After booting the processor, here is my memory arrangement:

bash-3.00# cat /proc/meminfo 
MemTotal:      1943232 kB
MemFree:       1910508 kB
...
HighTotal:     1179648 kB
HighFree:      1154608 kB
LowTotal:       763584 kB
LowFree:        755900 kB
...
VmallocTotal:   145024 kB
VmallocUsed:     65944 kB
VmallocChunk:    78972 kB

After inserting my device driver module (which ioremap()s 64 MB),
meminfo is as follows:

bash-3.00# cat /proc/meminfo 
MemTotal:      1943232 kB
MemFree:       1916512 kB
...
HighTotal:     1179648 kB
HighFree:      1160748 kB
LowTotal:       763584 kB
LowFree:        755764 kB
...
VmallocTotal:   145024 kB
VmallocUsed:    133568 kB
VmallocChunk:    10364 kB

So the vmalloc=<size> argument has made no difference.  What do I need
to do to make this work?

TIA,

-- 
Phil

bash-3.00# uname -a
Linux arty9 2.6.16-pmppc744x #211 Fri Aug 18 19:03:36 CST 2006 ppc ppc
ppc GNU/Linux






More information about the Linuxppc-embedded mailing list