Re: Module loading (2.0.24) fails with "Unable to allocate DMA memory"

Gerard Roudier (groudier@club-internet.fr)
Tue, 5 Nov 1996 22:41:34 +0000 (GMT)


On Mon, 4 Nov 1996, Jean Francois Martinez wrote:

>
> When trying to load the floppy module I got "Unable to allocate DMA
> memory". Kernel 2.0.24. Exiting a couple of programs returns things
> to normal. In a general way when loading a module we need DMAable
> memory (ie physically contiguous and under 16 Megs barreer) but we are
> not under time pressure. Linux should be able to swap out some
> process in order to get space for its DMA memory. I don't know if the

Initial allocations are generally done with GFP_ATOMIC priority.
With that priority, it is not possible to wait for swapping, so such
allocation may fail. A driver that need memory must be able to try
later its memory allocations. If it is not able to do that, it is buggy.
That is my opinion.

> problem is: Linux is supposed to make space but doesn't or if the DMA
> memory category does not fit and we need a GFP_DMAABLE category where
> we try to get memory fit for DMA but we can swap.

Using modules is great and allow us to spare memory and to have a shorter
kernel. However, ve must be aware that some drivers may have problems of
memory shortage when they are loaded. It is indeed the case for those
which need contiguous memory at initialisation or use ISA DMA.

ISA DMA is in my opinion some kind of bottleneck and may decrease
performances a lot. Use PCI interfaces each time it is possible for you.

Gerard.