Hi Maarten, Le mercredi 15 février 2023 à 12:30 +0100, Maarten Lankhorst a écrit : > Hey, > > On 2023-02-15 11:48, Paul Cercueil wrote: > > Hi, > > > > I am working on adding support for DMABUFs in the IIO subsystem. > > > > One thing we want there, is the ability to specify the number of > > bytes > > to transfer (while still defaulting to the DMABUF size). > > > > Since dma_buf_map_attachment() returns a sg_table, I basically have > > two > > options, and I can't decide which one is the best (or the less > > ugly): > > > > - Either I add a new API function similar to > > dmaengine_prep_slave_sg(), > > which still takes a scatterlist as argument but also takes the > > number > > of bytes as argument; > > > > - Or I add a function to duplicate the scatterlist and then shrink > > it > > manually, which doesn't sound like a good idea either. > > > > What would be the recommended way? > > Does this need an api change? If you create a DMA-BUF of size X, it > has > to be of size X. You can pad with a dummy page probably if you know > it > in advance. But after it has been imported, it cannot change size. Yes, the sizes are fixed. > You don´t have to write the entire dma-buf either, so if you want to > create a 1GB buf and only use the first 4K, that is allowed. The > contents of the remainder of the DMA-BUF are undefined. It's up to > userspace to assign a meaning to it. > > I think I'm missing something here that makes the whole question > m,ake > more sense. I want my userspace to be able to specify how much of the DMABUF is to be read from or written to. So in my new "dmabuf enqueue" IOCTL that I want to add to IIO, I added a parameter to specify the number of bytes to transfer (where 0 means the whole buffer). The problem I have now, is that the current dmaengine core does not have a API function that takes a scatterlist (returned by dma_map_attachment()) and a transfer size in bytes, it will always transfer the whole scatterlist. So my two options would be to add a new API function to support specifying a bytes count, or add a mechanism to duplicate a scatterlist, so that I can tweak it to the right size. > ~Maarten Cheers, -Paul