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);

Reply via email to