Re: ioremap returns NULL

Manfred Spraul (manfred@colorfullife.com)
Sat, 30 Nov 2002 11:15:53 +0100


>>[...]
>> For each card I ioremap() 2 * 16 MB of PCI memory space.
>> It succeeds for the 1st card but for the 2nd card I get NULL
>> as result. This means I cannot use the 2nd card...
>
>I think you are screwed. The ioremap grabs from vmalloc area,
>which is something like 64MB on i386. The best option is
>to rewrite the driver to allocate less, and perhaps use
>fewer modules.

The size of the vmalloc area is 128 MB, 96 for highmem kernels.
Either:
- compile a kernel without 4G support, then you have 128 MB
- increase PKMAP_BASE (include/asm-i386/highmem.h) to
0xff800000 (it's 0xfe000000 in 2.5.50)
Right now 32 MB virtual memory are reserved for kmap, but only 4 MB are
used. Changing PKMAP_BASE gives you 24 MB additional vmalloc space for free.
- increase __VMALLOC_RESERVE.

--
	Manfred

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