This is problem for TLB flush. We should not do this changes. Here we
are utilizing DMA_RESV_USAGE_BOOKKEEP due to the TLB flush fence
associated with the page table (PT). We are ensuring that no page
directory (PD) or page table (PT) should be free before flush and ttm bo
release and delete both are also waiting for BOOKKEEP fence. Please drop
this changes for eviction fence.
Regards,
~arvind
On 4/25/2025 12:37 PM, Prike Liang wrote:
The driver doesn't want to sync on the DMA_RESV_USAGE_BOOKKEEP
usage fences, so here only return and sync the dependent read
fences.
Signed-off-by: Prike Liang <prike.li...@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
index 5576ed0b508f..4e1d30ecb6cc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
@@ -249,9 +249,8 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, struct
amdgpu_sync *sync,
if (resv == NULL)
return -EINVAL;
-
- /* TODO: Use DMA_RESV_USAGE_READ here */
- dma_resv_for_each_fence(&cursor, resv, DMA_RESV_USAGE_BOOKKEEP, f) {
+ /*Only return and sync the fences of usage <= DMA_RESV_USAGE_READ.*/
+ dma_resv_for_each_fence(&cursor, resv, DMA_RESV_USAGE_READ, f) {
dma_fence_chain_for_each(f, f) {
struct dma_fence *tmp = dma_fence_chain_contained(f);