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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to