Messages in this thread |  | | Date | Sun, 10 Nov 1996 00:25:31 +0100 | From | Jean Francois Martinez <> | Subject | Re: Module loading (2.0.24) fails with "Unable to allocate DMA memory" |
| |
Date: Sat, 9 Nov 1996 18:40:54 +0000 (GMT) From: Gerard Roudier <groudier@club-internet.fr> X-Sender: groudier@localhost cc: alan@lxorguk.ukuu.org.uk, linux-kernel@vger.rutgers.edu MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII
On Sat, 9 Nov 1996, Jean Francois Martinez wrote:
> The following are thoughts on DMA memory it is not based on a study of > the source code so it is not impossible Linux kernel does some things > I mention. > > When we are initializing a module we are not under time pressure so we > can allocate with GFP_DMA|GFP_NONATOMIC. We can even swap. > > When starting an IO, I am not sure we can swap (the IO has still not > started but if the DMA was claimed by the same peripheral we use for > swapping then we need preemptable IO) we should be able to punch a > hole in memory big enough just by discarding unmodified pages. > > It is not acceptable having unreliable drivers due to this issue.
Je vais repondre en Francais (sans accents ni cedilles). Je n'ai jamais ecrit que tu avais tord. En fait, je trouve tes remarques tres pertinentes. J'ai simplement essayer d'expliquer ce que j'avais compris dans les sources du noyau et qui pouvait avoir un rapport avec le probleme reporte.
Gerard Roudier has unavertely CC to linux-kernel this reply in french to Linux-kernel so I will translate.
Par exemple:
- Je n'ai vu nulle part d'heuristique se preoccupant de recuperer des pages contigues pour satisfaire des allocations d'ordre > 0. A part peu-etre "shrink_mmap()" qui balaye la memoire circulairement pour recuperer les pages qu'il a cochees au tour precedent. Je n'ai rien vu a ce sujet dans "get_free_pages()" qui semble ne pas se preoccuper du tout de la disponibilite de pages contigues dans sa condition de sortie.
He has examined the memory allocation code and has not found any heuristic trying to get contiguous space for allocations > 0. Except shrink_mmap() who swepps xircylarly the memory to get the pages marked at the preceeding tour. He has seen nothing in get_free_pages() who seems not bother about having contiguous pages in its exit condition.
Au sujet des allocation GFP_ATOMIC, par exemple:
- "get_more_buffer_headers" fait un telle allocation pour eviter de se mordre la queue. Quand il n'y arrive pas, il "schedule". Le probleme, c'est que parfois il risque de scheduler des centaines de milliers de fois avant d'obtenir ce qu'il demande.
About GFP_ATOMIC allocations, for instance:
- "get_more_buffer_headers" does such an allocation for avoiding biting its tail. When it is unable to do it, it "shedules". The problem is it can scedule hundreds of before before getting what it needs.
Au sujet du DMA ISA j'ai deja propose quelque chose dans un autre courrier, mais comme c'est un peu severe, je me tairai su ce point.
About the subject of DMA ISA he has already proposed something in another mail, but because it is a bit hard he will talk no more about this point.
Des imperfections de ce genre, j'en cru en voir des dizaines dans Linux. Mon metier c'est de developper des logiciels. On fait ce qu'on peut, c'est tres difficile. Il y a toujours de la place pour des ameliorations, mais on ne doit pas tout casser. Il faut ameliorer de maniere incrementale et pragmatique.
Linux est un noyau qui fonctionne bien et qui n'a pas a rougir devant ses concurrents gratuits et payants. C'est le logiciel que je prefere avec X11.
Tes propositions sont tres raisonnables et tres interessantes. C'est grace a de telles remarques que Linux pourra etre meilleur demain.
The preceeding seems to be between he and me.
On va pas se prendre la tete avec ce sujet pendant des semaines si les gourous semblent s'en desinteresser. Pour ma part je pense que je vais abandonner. Il y aura bien d'autre occasions pour en debattre de nouveau.
Because the gourous seem not interested in this subject he is thinking in stopping work on the subject.
Now it is me speaking. We got Alan Cox replying so it is not a bad start. IMO the matter is serious. It makes the Linux kernel unreliable. Imagine a cron task in a sever failing because the module needed canot get DMA memory. That's not the kind of things who must perdure in Linux now it is gaining public exposure.
Salut, Jean Francois et a bientot peut-etre pour un autre sujet aussi interessant.
> -- > > Jean Francois Martinez
Gerard Roudier.
--
Jean Francois Martinez
-What is the operating system used by Bill Gates? -Linux of course. Do you think stupid people become millionnaire?
|  |