Re: [PATCH] generic device DMA (dma_pool update)

Adam J. Richter (adam@yggdrasil.com)
Thu, 2 Jan 2003 09:04:57 -0800


James Bottomley wrote:
>adam@yggdrasil.com said:
>> Let me clarify or revise my request. By "show me or invent an
>> example" I mean describe a case where this would be used, as in
>> specific hardware devices that Linux has trouble supporting right now,
>> or specific programs that can't be run efficiently under Linux, etc.
>> What device would need to do this kind of allocation? Why haven't I
>> seen requests for this from people working on real device drivers?
>> Where is this going to make the kernel smaller, more reliable, faster,
>> more maintainable, able to make a computer do something it could do
>> before under Linux, etc.?

>I'm not really the right person to be answering this. For any transfer you
>set up (which encompasses all of the SCSI stuff bar target mode and AENs) you
>should have all the resources ready and waiting in the interrupt, and so never
>require an in_interrupt allocation.

>However, for unsolicited transfer requests---the best example I can think of
>would be incoming network packets---it does make sense: You allocate with
>GFP_ATOMIC, if the kernel can fulfil the request, fine; if not, you drop the
>packet on the floor. Now, whether there's an unsolicited transfer that's
>going to require coherent memory, that I can't say. It does seem to be
>possible, though.

When a network device driver receives a packet, it gives the
network packet that it pre-allocated to the higher layers with
netif_rx() and then allocates a net packet with dev_alloc_skb(), but
that is non-consistent "streaming" memory. The consistent memory is
general for the DMA gather-scatter stub(s), which is (are) generally
reused since the receive for the packet that arrived has been
completed.

Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
-
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/