Re: allocation failed: out of vmalloc space - use vmalloc=<size> toincrease size.

From: Robert Hancock
Date: Tue Jun 12 2007 - 10:41:55 EST


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@xxxxxxxxxxxxx
Home Page: http://www.roberthancock.com/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/