TTM evicting same-vm bos
Christian König
christian.koenig at amd.com
Fri May 16 11:12:18 UTC 2025
Hi Thomas,
sorry for the delayed reply.
On 5/13/25 11:14, Hellstrom, Thomas wrote:
> Hi, Christian
>
> During eviction we want to be able to evict bos that share the VM's
> reservation object but that are currently not bound to the VM since
> they are not part of the current working set.
>
> TTM can't handle this situation since it's not aware of whether a bo is
> bound to a VM or not.
That's not 100% true.
We already have support for something similar for the KFD as well, see function amdgpu_ttm_bo_eviction_valuable():
/* If bo is a KFD BO, check if the bo belongs to the current process.
* If true, then return false as any KFD process needs all its BOs to
* be resident to run successfully
*/
dma_resv_for_each_fence(&resv_cursor, bo->base.resv,
DMA_RESV_USAGE_BOOKKEEP, f) {
if (amdkfd_fence_check_mm(f, current->mm) &&
!(place->flags & TTM_PL_FLAG_CONTIGUOUS))
return false;
}
But to be honest I never really liked that approach because it abuses the fact that KFD fences are bound to the struct mm.
Additional to that we have a few flags in the context object which allows to evict BOs with the same resv object during object creation.
> Do you have a preference of how to address this? One idea would be to
> forward the operation ctx to the eviction_valuable callback. Another to
> add an "unbound" flag to the bo and an "unbound_only" flag to the
> operation ctx.
Adding the ctx to the eviction valuable callback sounds like a good approach to me.
Regards,
Christian.
>
> Any feedback appreciated.
> Thanks,
> Thomas
>
>
>
More information about the dri-devel
mailing list