Christoph:
Can you help answer some questions about implementing zerocopy I/O?
We would like to add zerocopy support for USB devices. Basically this
means:
Allocating memory pages that match the device's DMA mask, for
use as I/O buffers, and locking them so their physical
addresses don't change (and they don't get paged out);
Mapping those pages into a user process;
Constructing scatter-gather lists to describe the I/O if the
pages aren't contiguous.
I don't have much experience in this area. Can you point to good
examples where these things are done or documents describing what is
involved? For example, are the allocating and mapping steps normally
done separately or are they normally combined in an mmap(2) system
call?
A proposed patch has been posted
(http://marc.info/?l=linux-usb&m=144763502829452&w=2), but I'm not
convinced that it is the best approach. For instance, it always tries
to get contiguous pages and so is vulnerable to memory fragmentation.
Thanks,
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html