[SNIP]
Well then the existing DMA-buf framework is not what you want to use forSorry, but this is just ignoring reality. You try to flag 8+ years of
this.
DMA-buf usage on non-coherent arches as "you shouldn't do this". At
this point there are probably a lot more users (drivers) of DMA-buf in
the kernel for devices, which are used on non-coherent arches, than
there are on coherent arches.
Non coherent access, including your non-snoop scanout, and no domainNon-coherent without explicit domain transfer points is just not goingBecause DMA-buf is a framework for buffer sharing between cache coherent
to work. So why can't we solve the issue for DMA-buf in the same way as
the DMA API already solved it years ago: by adding the equivalent of
the dma_sync calls that do cache maintenance when necessary? On x86 (or
any system where things are mostly coherent) you could still no-op them
for the common case and only trigger cache cleaning if the importer
explicitly says that is going to do a non-snooping access.
devices which don't signal transitions.
We intentionally didn't implemented any of the dma_sync_* functions
because that would break the intended use case.
transition signal just doesn't go together when you want to solve
things in a generic way.
Remember that in a fully (not only IO) coherent system the CPU isn't
the only agent that may cache the content you are trying to access
here. The dirty cacheline could reasonably still be sitting in a GPU or
VPU cache, so you need some way to clean those cachelines, which isn't
a magic "importer knows how to call CPU cache clean instructions".
You can of course use DMA-buf in an incoherent environment, but then youCan you point me to that part of the documentation? A quick grep for
can't expect that this works all the time.
This is documented behavior and so far we have bluntly rejected any of
the complains that it doesn't work on most ARM SoCs and I don't really
see a way to do this differently.
"coherent" didn't immediately turn something up within the DMA-buf
dirs.
Regards,
Lucas