On Wed, 3 Sept 2025 at 00:07, Christian König <christian.koe...@amd.com> wrote:
>
>
>
> On 02.09.25 06:06, Dave Airlie wrote:
> > From: Dave Airlie <airl...@redhat.com>
> >
> > Later memcg enablement needs the shrinker initialised before the list lru,
> > Just move it for now.
>
> Hui? That should just be the other way around.
>
> The shrinker depends on the list lru and so needs to come after 
> ttm_pool_type_init() and not before.

list_lru_init_memcg needs to take a registered shrinker as an
argument, also the shrinker list is locked so this is fine, if we get
called to shrinker before ttm_pool_type_init happens, shrinker_scan
will have 0 pools.

Dave.

>
> Regards,
> Christian.
>
> >
> > Signed-off-by: Dave Airlie <airl...@redhat.com>
> > ---
> >  drivers/gpu/drm/ttm/ttm_pool.c | 22 +++++++++++-----------
> >  1 file changed, 11 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.c
> > index 9a8b4f824bc1..2c9969de7517 100644
> > --- a/drivers/gpu/drm/ttm/ttm_pool.c
> > +++ b/drivers/gpu/drm/ttm/ttm_pool.c
> > @@ -1381,6 +1381,17 @@ int ttm_pool_mgr_init(unsigned long num_pages)
> >       spin_lock_init(&shrinker_lock);
> >       INIT_LIST_HEAD(&shrinker_list);
> >
> > +     mm_shrinker = shrinker_alloc(SHRINKER_NUMA_AWARE, "drm-ttm_pool");
> > +     if (!mm_shrinker)
> > +             return -ENOMEM;
> > +
> > +     mm_shrinker->count_objects = ttm_pool_shrinker_count;
> > +     mm_shrinker->scan_objects = ttm_pool_shrinker_scan;
> > +     mm_shrinker->batch = TTM_SHRINKER_BATCH;
> > +     mm_shrinker->seeks = 1;
> > +
> > +     shrinker_register(mm_shrinker);
> > +
> >       for (i = 0; i < NR_PAGE_ORDERS; ++i) {
> >               ttm_pool_type_init(&global_write_combined[i], NULL,
> >                                  ttm_write_combined, i);
> > @@ -1403,17 +1414,6 @@ int ttm_pool_mgr_init(unsigned long num_pages)
> >  #endif
> >  #endif
> >
> > -     mm_shrinker = shrinker_alloc(SHRINKER_NUMA_AWARE, "drm-ttm_pool");
> > -     if (!mm_shrinker)
> > -             return -ENOMEM;
> > -
> > -     mm_shrinker->count_objects = ttm_pool_shrinker_count;
> > -     mm_shrinker->scan_objects = ttm_pool_shrinker_scan;
> > -     mm_shrinker->batch = TTM_SHRINKER_BATCH;
> > -     mm_shrinker->seeks = 1;
> > -
> > -     shrinker_register(mm_shrinker);
> > -
> >       return 0;
> >  }
> >
>

Reply via email to