Re: Bugs and wishes in memory management area

Jean Francois Martinez (jfm@sidney.remcomp.fr)
Fri, 22 Nov 1996 21:47:58 +0100


Date: Fri, 22 Nov 1996 01:07:29 +0000 (GMT)
From: Gerard Roudier <groudier@club-internet.fr>
X-Sender: groudier@localhost
cc: Rob Riggs <rriggs@tesser.com>, Alan Cox <alan@lxorguk.ukuu.org.uk>,
Jean Francois Martinez <jfm@sidney.remcomp.fr>,
linux-kernel@vger.rutgers.edu
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Thu, 21 Nov 1996, Jon Tombs wrote:

>
> Rob Riggs said:
>
> > This would seem to imply that one can do:
> >
> > ptr = kmalloc(size, GFP_DMA | GFP_KERNEL);
> >
> > The comments in mm.h clearly state that "GFP_DMA" is a flag, not an
> > actual priority level. However GFP_DMA & GFP_LEVEL_MASK = GFP_BUFFER.
> > And GFP_BUFFER does not try very hard to free pages.
>
> Yes you can do it, but it doesn't help. The problem is in get_free_pages, it

1) Opinion(s):
Doing DMA through the ISA bus is the silliest thing you can do with a
PCI system.
Complexifying the kernel in order to use PCI systems as outdated ones
IsSillyAnyway(TM).
16MB of memory is enough for systems that donnot use EISA or PCI bus.

The problem is all x86 machines have ISA connectors so we will have to
support them, please or not. And there are people using older
machines. Besides if you don't use DMA how do you transfer data in a
multitasking OS?

> returns when there is enough free pages, or if called with the ATOMIC flag.

2) Agreement:
Enough to make it happy, but sometimes not enough to satisfy the
request.

> But it doesn't check if the free pages are actually suitable for the DMA
> request. You can fix it easily with an extra if() that avoids returning NULL
> when called (GFP_DMA | GFP_KERNEL), but this just results in randomly freeing
> pages until success.
> What is really needed is an algorithm to pick the pages, or you will swap
> several MB in order to create a single 128k DMA buffer (I know, I've
> tried...).

3) Irony:
No need to try it. Can be guessed easily.

4) Suggestions:
A suggestion, for > 16MB systems is to garbage if necessary up to 1MB
in a pool for ISA/DMA but to keep the kernel simple.
Kernel modules/drivers that allocate ISA/DMA memory when it is not
needed are to be reworked (or rewritten).

5) Greetings:

Gerard.

Interesting idea. But there are still boxes with less than 16 Meg.
Ah the good old days where Linux was usable with 2 megs and was
advertised as being as being small and mean.

-- 

Jean Francois Martinez

-What is the operating system used by Bill Gates? -Linux of course. Do you think stupid people become millionnaire?