[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250507112131.3686966-1-tomeu@tomeuvizoso.net>
Date: Wed, 7 May 2025 13:21:30 +0200
From: Tomeu Vizoso <tomeu@...euvizoso.net>
To: linux-kernel@...r.kernel.org
Cc: Tomeu Vizoso <tomeu@...euvizoso.net>,
Lucas Stach <l.stach@...gutronix.de>,
Russell King <linux+etnaviv@...linux.org.uk>,
Christian Gmeiner <christian.gmeiner@...il.com>,
David Airlie <airlied@...il.com>,
Simona Vetter <simona@...ll.ch>,
etnaviv@...ts.freedesktop.org,
dri-devel@...ts.freedesktop.org
Subject: [PATCH] drm/etnaviv: Fix flush sequence logic
We should be comparing the last submitted sequence number with that of
the address space we may be switching to.
And we should be using the latter as the last submitted sequence number
afterwards.
Signed-off-by: Tomeu Vizoso <tomeu@...euvizoso.net>
---
drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
index b13a17276d07..865b07b14b38 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
@@ -347,7 +347,7 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, u32 exec_state,
u32 link_target, link_dwords;
bool switch_context = gpu->exec_state != exec_state;
bool switch_mmu_context = gpu->mmu_context != mmu_context;
- unsigned int new_flush_seq = READ_ONCE(gpu->mmu_context->flush_seq);
+ unsigned int new_flush_seq = READ_ONCE(mmu_context->flush_seq);
bool need_flush = switch_mmu_context || gpu->flush_seq != new_flush_seq;
bool has_blt = !!(gpu->identity.minor_features5 &
chipMinorFeatures5_BLT_ENGINE);
@@ -399,6 +399,7 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, u32 exec_state,
struct etnaviv_iommu_context *old_context = gpu->mmu_context;
gpu->mmu_context = etnaviv_iommu_context_get(mmu_context);
+ gpu->flush_seq = new_flush_seq;
etnaviv_iommu_context_put(old_context);
}
--
2.49.0
Powered by blists - more mailing lists