Hi Maarten,
Le mercredi 15 février 2023 à 12:30 +0100, Maarten Lankhorst a écrit :
Hey,Yes, the sizes are fixed.
On 2023-02-15 11:48, Paul Cercueil wrote:
Hi,Does this need an api change? If you create a DMA-BUF of size X, it
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?
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.
You don´t have to write the entire dma-buf either, so if you want toI want my userspace to be able to specify how much of the DMABUF is 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.
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.