[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