On Mon, 2023-08-07 at 13:21 +0200, Paul Cercueil wrote: > [V3 was: "iio: new DMABUF based API, v3"][1] > > Hi Jonathan, > > This is a subset of my patchset that introduced a new interface based on > DMABUF objects [1]. It adds write() support to the IIO buffer > infrastructure. > > The reason it is not the full IIO-DMABUF patchset, is because you > requested performance benchmarks - and our current numbers are barely > better (~ +10%) than the fileio interface. There is a good reason for > that: V3 of the patchset switched from having the IIO core creating the > DMABUFs backed by physically contiguous memory, to having the IIO core > being a simple DMABUF importer, and having the DMABUFs created > externally. We now use the udmabuf driver to create those, and they are > allocated from paged memory. While this works perfectly fine, our > buffers are now cut in 4 KiB chunks (pages), non-contiguous in memory, > which causes the DMA hardware to create an IRQ storm, as it raises an > interrupt after each 4 KiB in the worst case scenario. > > Anyway, this is not directly a problem of the IIO-DMABUF code - but I > can't really upstream a shiny new interface that I claim is much faster, > without giving numbers. > > So while we fix this (either by updating the DMA IP and driver to > support scatter-gather, or by hacking something quick to give us > physically contiguous DMABUFs just for the benchmark), I thought it > would make sense to upstream the few patches of the V3 patchset that are > needed for the IIO-DMABUF interface but aren't directly related. > > As for write() support, Nuno (Cc'd) said he will work on upstreaming the > DAC counterpart of adc/adi-axi-adc.c in the next few weeks, so there > will be a user for the buffer write() support. I hope you are okay with > this - otherwise, we can just wait until this work is done and submit it > all at once. > Yeah, I've started that process last week: https://lore.kernel.org/linux-iio/20230804145342.1600136-1-nuno.sa@xxxxxxxxxx/ the dac counterpart is actually missing in the RFC (as the goal of the RFC is not review those drivers but the framework) but I do state that my plan is to have it in the actual series where I actually mention we would need this work :). - Nuno Sá