On 8/1/22 23:42, Rob Clark wrote: > On Mon, Aug 1, 2022 at 1:26 PM Dmitry Osipenko > <dmitry.osipenko@xxxxxxxxxxxxx> wrote: >> >> On 8/1/22 23:13, Dmitry Osipenko wrote: >>> On 8/1/22 23:11, Dmitry Osipenko wrote: >>>> On 8/1/22 23:00, Rob Clark wrote: >>>>> On Mon, Aug 1, 2022 at 12:41 PM Dmitry Osipenko >>>>> <dmitry.osipenko@xxxxxxxxxxxxx> wrote: >>>>>> >>>>>> On 7/26/22 20:50, Rob Clark wrote: >>>>>>> +/** >>>>>>> + * drm_gem_lru_remove - remove object from whatever LRU it is in >>>>>>> + * >>>>>>> + * If the object is currently in any LRU, remove it. >>>>>>> + * >>>>>>> + * @obj: The GEM object to remove from current LRU >>>>>>> + */ >>>>>>> +void >>>>>>> +drm_gem_lru_remove(struct drm_gem_object *obj) >>>>>>> +{ >>>>>>> + struct drm_gem_lru *lru = obj->lru; >>>>>>> + >>>>>>> + if (!lru) >>>>>>> + return; >>>>>>> + >>>>>>> + mutex_lock(lru->lock); >>>>>>> + lru_remove(obj); >>>>>>> + mutex_unlock(lru->lock); >>>>>>> +} >>>>>>> +EXPORT_SYMBOL(drm_gem_lru_remove); >>>>>> >>>>>> I made a preliminary port of the DRM-SHMEM shrinker on top of the the >>>>>> latest version of dma-buf locking convention and yours LRU patches. It >>>>>> all works good, the only thing that is missing for the DRM-SHMEM >>>>>> shrinker is the drm_gem_lru_remove_locked(). >>>>>> >>>>>> What about to add a locked variant of drm_gem_lru_remove()? >>>>> >>>>> Sounds fine to me.. the only reason it didn't exist yet was because it >>>>> wasn't needed yet.. >>>> >>>> There is no use for the drm_gem_lru_move_tail_locked() as well, you're >>>> not using it in the MSM driver. Hence I thought it might be good to add >>>> the drm_gem_lru_remove_locked(), or maybe the >>>> drm_gem_lru_move_tail_locked() should be dropped then? >>>> >>>>> I can respin w/ an addition of a _locked() version, or you can add it >>>>> on top in your patchset. Either is fine by me >>>> >>>> The either option is fine by me too. If you'll keep the unused >>>> drm_gem_lru_move_tail_locked(), then will be nice to add >>>> drm_gem_lru_remove_locked(). >>>> >>> >>> The drm_gem_lru_move_tail_locked() will be needed by DRM-SHMEM shrinker, >>> BTW. >> >> On the other hand, I see now that DRM-SHMEM shrinker can use the >> unlocked versions only. Hence both drm_gem_lru_move_tail_locked() and >> drm_gem_lru_remove_locked() aren't needed. > > drm_gem_lru_move_tail_locked() is used internally, but I guess it > could be made static since there ended up not being external users > (yet?) Making it static will be good. > I could see _move_tail_locked() being useful for a driver that wanted > to bulk update a bunch of GEM objs, for ex. all the bo's associated > with a submit/job. At minimum we shouldn't expose the unused kernel symbols. But if you're planning to make use of this function later on, then it might be fine to add it. -- Best regards, Dmitry