[PATCH v2] drm/etnaviv: fix DMA direction handling for cached RW buffers
Christian Gmeiner
christian.gmeiner at gmail.com
Mon Jun 24 13:16:42 UTC 2024
>
> The dma sync operation needs to be done with DMA_BIDIRECTIONAL when
> the BO is prepared for both read and write operations.
>
> Fixes: a8c21a5451d8 ("drm/etnaviv: add initial etnaviv DRM driver")
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner at igalia.com>
> ---
> v2: switch conditions to be exact matches
> ---
> drivers/gpu/drm/etnaviv/etnaviv_gem.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
> index 71a6d2b1c80f..5c0c9d4e3be1 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
> @@ -355,9 +355,11 @@ static void *etnaviv_gem_vmap_impl(struct etnaviv_gem_object *obj)
>
> static inline enum dma_data_direction etnaviv_op_to_dma_dir(u32 op)
> {
> - if (op & ETNA_PREP_READ)
> + op &= ETNA_PREP_READ | ETNA_PREP_WRITE;
> +
> + if (op == ETNA_PREP_READ)
> return DMA_FROM_DEVICE;
> - else if (op & ETNA_PREP_WRITE)
> + else if (op == ETNA_PREP_WRITE)
> return DMA_TO_DEVICE;
> else
> return DMA_BIDIRECTIONAL;
> --
> 2.39.2
>
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
More information about the etnaviv
mailing list