diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2024-06-21 19:11:06 +0200 |
---|---|---|
committer | Lucas Stach <l.stach@pengutronix.de> | 2024-06-26 15:31:58 +0200 |
commit | 58979ad6330a70450ed78837be3095107d022ea9 (patch) | |
tree | 4754905762f70657cd81635e2133d8fccbffc4b0 /drivers/gpu/drm/etnaviv | |
parent | drm/etnaviv: switch devcoredump allocations to GFP_NOWAIT (diff) | |
download | linux-58979ad6330a70450ed78837be3095107d022ea9.tar.xz linux-58979ad6330a70450ed78837be3095107d022ea9.zip |
drm/etnaviv: fix DMA direction handling for cached RW buffers
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@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Diffstat (limited to 'drivers/gpu/drm/etnaviv')
-rw-r--r-- | drivers/gpu/drm/etnaviv/etnaviv_gem.c | 6 |
1 files 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; |