ioremap() fails for >64 MB
Phil.Nitschke at avalon.com.au
Wed Aug 23 20:00:37 EST 2006
On Tue, 2006-08-22 at 09:22 -0500, Matt Porter wrote:
> On Tue, Aug 22, 2006 at 05:11:09PM +0930, Phil Nitschke wrote:
> > 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=...
> Yeah, that suggestion is bogus. That option can't help with getting
> more vmalloc space in this case.
> > So the vmalloc=<size> argument has made no difference. What do I need
> > to do to make this work?
> Go to the "Advanced setup" menu. There's a number of options to provide
> fine-grained control of the PPC kernel virtual address space.
Thanks Matt (and others) for your suggestions. Matt has given me the
answers I was looking for.
Since my (2 GB) memory is within the (4 GB) addressable by a 32-bit
processor, why do I need high memory at all?
Are there performance implications on this platform from having a non
optimal low/high ratio?
> That said, why don't you just use alloc_bootmem() to reserve memory
> for your driver at boot time?
I avoided this simply because I wanted to load/unload my driver (during
development), and alloc_bootmem() seemed better suited to drivers
compiled into the kernel. But I'll look again at this idea if further
problems arise with the approach above.
More information about the Linuxppc-embedded