[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Memory allocation/sharing when DMA operations used..

From: Bas Wijnen
Subject: Re: Memory allocation/sharing when DMA operations used..
Date: Fri, 01 Apr 2005 11:22:21 +0200
User-agent: Debian Thunderbird 1.0 (X11/20050116)


I'm not very familiar with DMA, but I remembered that only certain pages
can be used for DMA.  Or was that only for ISA?  Anyway, if that is not
the case, it becomes a lot simpler.

The L4-Hurd design uses the idea to give the costs to the user (which is
a program in this context).  This is true in many places, in particular
for memory.  For example, if a client wants to read data from a
filesystem, it supplies a page to the filesystem, which then fills it
with data.

You suggest to leave that design for DMA.  If there are special
"DMA-pages", that doesn't sound strange: Otherwise a DoS-attack would be
possible by allocating many DMA pages.  Of course there could be a quota
system, which might be enough to prevent this.  If all pages can be used
for DMA, I don't see any reason not to use the normal approach of the
client providing the memory for the operation.

You say the user can die on you, leaving a big mess.  This is no
problem, as the container is shared by the driver and the user.  If the
user dies, the container is not deallocated until the driver lets go of
it.  It shouldn't do that before the DMA operation is finished.  It is
not unusual for device drivers to wait with freeing resources after
client death until the device has finished its operation.  This is not a
big problem.  I think it should not be a reason to leave a good design

If I misunderstood you, please rephrase.


Markus Kode Kaarn wrote:
Hey everybody,

For last few days i came whith idea of how Device-Drivers, should handle DMA
requests. If DMA channels access can be considered as a priviledge of only
PLM's, or even centralized DMA driver(which is prefered), through which will
all DMA requests will be handled. First, i think DD's, that receives DMA
request from user for the first time, should allocate/map memory for it selt
by requesting it from physmem. Then share this region of memory whith
task(as far as i can think these will be device drivers) that requests DMA.
There would be read-only and the writeable memory shared, every of which
is decided to be given whereas task want to receive(read) data, or
send(write) it.
Here i can see a good decision on that only a DMA driver should allocate and
share memory regions whith tasks requesting the operations. Because allowing
user to supply a buffer is not far clever, cause user can die or give up its
pages back to physmem, and at time of receive-operation from DMA channel
memory region could be used by some other task.

This probably can apply not only to DMA operations. Some system part that
provide service(s) to many tasks may can come whith this approach.

At the moment i don't know much about the memory allocation/sharing in hurd-l4
and can't be more specific on this, or supply code.

Comments please.

I encourage people to send encrypted e-mail (see http://www.gnupg.org).
If you have problems reading my e-mail, use a better reader.
Please send the central message of e-mails as plain text
   in the message body, not as HTML and definitely not as MS Word.
Please do not use the MS Word format for attachments either.
For more information, see

Attachment: signature.asc
Description: OpenPGP digital signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]