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; > > } > > >