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