On 5/21/25 05:56, Emily Deng wrote: > For the evict fail case, the evict error should be returned. > > v2: Consider ENOENT case. > > Signed-off-by: Emily Deng <emily.d...@amd.com> > --- > drivers/gpu/drm/ttm/ttm_resource.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_resource.c > b/drivers/gpu/drm/ttm/ttm_resource.c > index 097716bd248a..abf104ae9d35 100644 > --- a/drivers/gpu/drm/ttm/ttm_resource.c > +++ b/drivers/gpu/drm/ttm/ttm_resource.c > @@ -511,12 +511,12 @@ int ttm_resource_manager_evict_all(struct ttm_device > *bdev, > .force_alloc = true > }; > struct dma_fence *fence; > - int ret; > + int ret, evict_ret = 0; > > do { > - ret = ttm_bo_evict_first(bdev, man, &ctx); > + evict_ret = ttm_bo_evict_first(bdev, man, &ctx); > cond_resched(); > - } while (!ret); > + } while (!evict_ret);
We should probably abort here directly when the eviction failed for some reason (except for -ENOENT) and not wait for the move to finish. Regards, Christian. > > spin_lock(&man->move_lock); > fence = dma_fence_get(man->move); > @@ -529,7 +529,7 @@ int ttm_resource_manager_evict_all(struct ttm_device > *bdev, > return ret; > } > > - return 0; > + return (evict_ret == -ENOENT) ? 0 : evict_ret; > } > EXPORT_SYMBOL(ttm_resource_manager_evict_all); >