From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E052CC43602 for ; Mon, 6 Jul 2026 05:24:17 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8F00B10E2F7; Mon, 6 Jul 2026 05:24:17 +0000 (UTC) Received: from us-smtp-delivery-44.mimecast.com (us-smtp-delivery-44.mimecast.com [205.139.111.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5F76710E2F7 for ; Mon, 6 Jul 2026 05:24:16 +0000 (UTC) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-578-MLg5nHZZM62rScpqGLTFBQ-1; Mon, 06 Jul 2026 01:24:12 -0400 X-MC-Unique: MLg5nHZZM62rScpqGLTFBQ-1 X-Mimecast-MFC-AGG-ID: MLg5nHZZM62rScpqGLTFBQ_1783315450 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1EF48180266B; Mon, 6 Jul 2026 05:24:10 +0000 (UTC) Received: from dreadlord.redhat.com (unknown [10.67.32.13]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DBEF31956096; Mon, 6 Jul 2026 05:24:02 +0000 (UTC) From: Dave Airlie To: dri-devel@lists.freedesktop.org, tj@kernel.org, christian.koenig@amd.com, Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song Cc: cgroups@vger.kernel.org, Thomas Hellstrom , Waiman Long , simona@ffwll.ch, intel-xe@lists.freedesktop.org Subject: [PATCH 03/10] ttm/pool: initialise the shrinker earlier (v2) Date: Mon, 6 Jul 2026 15:22:32 +1000 Message-ID: <20260706052330.1110909-4-airlied@gmail.com> In-Reply-To: <20260706052330.1110909-1-airlied@gmail.com> References: <20260706052330.1110909-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: YijX_0SLbX9k42yYSmNphFk7ybgWh0TICLi1-9JOFnE_1783315450 X-Mimecast-Originator: gmail.com Content-Transfer-Encoding: quoted-printable content-type: text/plain; charset=WINDOWS-1252; x-default=true X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" From: Dave Airlie Later memcg enablement needs the shrinker initialised before the list lru, Just move it for now, but also handle the list being uninitialised. Signed-off-by: Dave Airlie --- v2: sashiko identified a problem with the list handling. --- drivers/gpu/drm/ttm/ttm_pool.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.= c index e4dbf4c93091..f12b68812081 100644 --- a/drivers/gpu/drm/ttm/ttm_pool.c +++ b/drivers/gpu/drm/ttm/ttm_pool.c @@ -440,10 +440,14 @@ static unsigned int ttm_pool_shrink(int nid, unsigned= long num_to_free) =20 =09down_read(&pool_shrink_rwsem); =09spin_lock(&shrinker_lock); -=09pt =3D list_first_entry(&shrinker_list, typeof(*pt), shrinker_list); -=09list_move_tail(&pt->shrinker_list, &shrinker_list); +=09pt =3D list_first_entry_or_null(&shrinker_list, typeof(*pt), shrinker_l= ist); +=09if (pt) +=09=09list_move_tail(&pt->shrinker_list, &shrinker_list); =09spin_unlock(&shrinker_lock); =20 +=09if (!pt) +=09=09return 0; + =09num_pages =3D list_lru_walk_node(&pt->pages, nid, pool_move_to_dispose_= list, &dispose, &num_to_free); =09num_pages *=3D 1 << pt->order; =20 @@ -1402,6 +1406,17 @@ int ttm_pool_mgr_init(unsigned long num_pages) =09spin_lock_init(&shrinker_lock); =09INIT_LIST_HEAD(&shrinker_list); =20 +=09mm_shrinker =3D shrinker_alloc(SHRINKER_NUMA_AWARE, "drm-ttm_pool"); +=09if (!mm_shrinker) +=09=09return -ENOMEM; + +=09mm_shrinker->count_objects =3D ttm_pool_shrinker_count; +=09mm_shrinker->scan_objects =3D ttm_pool_shrinker_scan; +=09mm_shrinker->batch =3D TTM_SHRINKER_BATCH; +=09mm_shrinker->seeks =3D 1; + +=09shrinker_register(mm_shrinker); + =09for (i =3D 0; i < NR_PAGE_ORDERS; ++i) { =09=09ttm_pool_type_init(&global_write_combined[i], NULL, =09=09=09=09 ttm_write_combined, i); @@ -1424,17 +1439,6 @@ int ttm_pool_mgr_init(unsigned long num_pages) #endif #endif =20 -=09mm_shrinker =3D shrinker_alloc(SHRINKER_NUMA_AWARE, "drm-ttm_pool"); -=09if (!mm_shrinker) -=09=09return -ENOMEM; - -=09mm_shrinker->count_objects =3D ttm_pool_shrinker_count; -=09mm_shrinker->scan_objects =3D ttm_pool_shrinker_scan; -=09mm_shrinker->batch =3D TTM_SHRINKER_BATCH; -=09mm_shrinker->seeks =3D 1; - -=09shrinker_register(mm_shrinker); - =09return 0; } =20 --=20 2.54.0