Le lun. 28 sept. 2020 à 14:10, Christoph Hellwig <hch@xxxxxx> a écrit
:
On Mon, Sep 28, 2020 at 01:46:55PM +0200, Paul Cercueil wrote:
dma_mmap_attrs can only be used on allocations from dma_mmap_attrs
with
the same attrs. As there is no allocation using
DMA_ATTR_NON_CONSISTENT
in the drm core, something looks very fishy here.
Is that a fact? I don't see why you couldn't change the cache
settings
after allocation. In practice it works just fine.
Accessing the same physical address using different caching attributes
is undefined behavior and fairly dangerous on most architectures, and
thus not supported by the DMA API.
It's allocated with dma_alloc_wc, but then it's only accessed as
non-coherent.
Anyway, for the time being I guess you could revert 37054fc81443. But I
have patches on top of it in drm-misc-next so it's going to be a mess.
If we have time I can come up with a custom dumb_create() fonction, to
make sure that the GEM buffers are allocated with
dma_alloc_noncoherent(). Is there a dma_mmap_noncoherent() too?
-Paul