On Thu, 12 Feb 2026 16:43:29 -0800
Chia-I Wu <[email protected]> wrote:

> On Wed, Feb 11, 2026 at 12:22 AM Boris Brezillon
> <[email protected]> wrote:
> [...]
> > +void panthor_vm_update_bo_reclaim_lru_locked(struct panthor_gem_object *bo)
> > +{
> > +       struct panthor_device *ptdev = container_of(bo->base.dev, struct 
> > panthor_device, base);
> > +       struct panthor_vm *vm = NULL;
> > +       struct drm_gpuvm_bo *vm_bo;
> > +
> > +       dma_resv_assert_held(bo->base.resv);
> > +       lockdep_assert_held(&bo->base.gpuva.lock);
> > +
> > +       drm_gem_for_each_gpuvm_bo(vm_bo, &bo->base) {
> > +               /* We're only supposed to have one vm_bo in the list if we 
> > get there. */  
> A bo that is validated in one vm but evicted in another is considered
> PANTHOR_GEM_GPU_MAPPED_PRIVATE by is_gpu_mapped. We should check for
> vm_bo->evicted too.

Absolutely, I'll fix that.

> 
> 
> > +               drm_WARN_ON(&ptdev->base, vm);
> > +               vm = container_of(vm_bo->vm, struct panthor_vm, base);
> > +
> > +               mutex_lock(&ptdev->reclaim.lock);
> > +               drm_gem_lru_move_tail_locked(&vm->reclaim.lru, &bo->base);
> > +               if (list_empty(&vm->reclaim.lru_node))
> > +                       list_move(&vm->reclaim.lru_node, 
> > &ptdev->reclaim.vms);
> > +               mutex_unlock(&ptdev->reclaim.lock);
> > +       }
> > +}  

Reply via email to