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 it in v4. > > > > + 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); > > + } > > +}
