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

Jon Dufresne
2007-06-12T19:21:50Z

I wasn't completely honest. It is one bar that has 512 MB, however it is
being mapped at 4 128 MB chunks. However, I would like them all mapped
at once through the lifetime of the driver.

Is there still no chance?

Thanks,
Jon

On Tue, 2007-06-12 at 11:08 -0700, H. Peter Anvin wrote:
> Daniel J Blueman wrote:
> > On 12 Jun, 14:30, Jon Dufresne
> > <jon.dufresne@infinitevideocorporation.com> 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:
>
> You don't have a prayer mapping 512 MB at once on an x86-32 machine.
> The kernel only has 1 GB of address space *total*. You either need to
> map it in chunks or restrict yourself to 64-bit machines.
>
> >> 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.
>
> No chance.
>
> > You can boot with kernel parameter vmalloc=384M or so. I have
> > experienced problems with booting with other values, but YMMV.
>
> The vmalloc= option conflicts with the booting protocol, so it's
> basically a crapshoot if it's going to work or not, at least if you're
> using an initrd, which pretty much everyone does hese days.
>
> -hpa