Re: allocation failed: out of vmalloc space - use vmalloc= to increase size.

Robert Hancock
2007-06-12T14:41:51Z

Jon Dufresne wrote:
> I am writing a linux kernel driver for a custom pci device. I am
> developing against the stock fedora 6 kernel on an x86. This device has
> 512 MB of IO memory reserved by BAR 3. Whenever I try to ioremap this
> space I get the error:
>
> allocation failed: out of vmalloc space - use vmalloc=<size> to increase
> size.
>
> I think I understand why this is happening. I obviously don't have
> enough vmalloc space to map such a large chunk of memory. I have been
> using Corbet's et el's "Linux Device Drivers", Love's "Linux Kernel
> Development", and many websites as a guide in this development process
> but have yet to come across information that will help me.
>
> I'm curious if there is a way around this issue. Or a better way of
> handling it so that I can properly map the entire io memory space.

On an i386 kernel you likely just don't have enough address space
available to map something that big. Your kernel address space is only
1GB (with the standard 3G/1G user/kernel split) and it somehow has to
fit in there along with all the other I/O regions, etc. that are mapped
into kernel address space.

You may just have to remap smaller chunks of the BAR on demand and unmap
them when you're finished with them.

An x86_64 kernel likely would not have this problem..

--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/