On 1/29/24 12:01, Boris Brezillon wrote: > On Fri, 5 Jan 2024 21:46:16 +0300 > Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx> wrote: > >> +/** >> + * drm_gem_shmem_swapin_locked() - Moves shmem GEM back to memory and enables >> + * hardware access to the memory. >> + * @shmem: shmem GEM object >> + * >> + * This function moves shmem GEM back to memory if it was previously evicted >> + * by the memory shrinker. The GEM is ready to use on success. >> + * >> + * Returns: >> + * 0 on success or a negative error code on failure. >> + */ >> +int drm_gem_shmem_swapin_locked(struct drm_gem_shmem_object *shmem) >> +{ >> + int err; >> + >> + dma_resv_assert_held(shmem->base.resv); >> + >> + if (!shmem->evicted) >> + return 0; > > Shouldn't we have a drm_gem_shmem_shrinker_update_lru_locked() even if > the object wasn't evicted, such that idle->busy transition moves the BO > to the list tail? Seems so, good catch. I'll double-check and remove it in the next version. -- Best regards, Dmitry