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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BE410C83F17 for ; Mon, 14 Jul 2025 05:24:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5B12E8D0008; Mon, 14 Jul 2025 01:24:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5617D8D0001; Mon, 14 Jul 2025 01:24:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4509D8D0008; Mon, 14 Jul 2025 01:24:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 32B388D0001 for ; Mon, 14 Jul 2025 01:24:44 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 0C83112D132 for ; Mon, 14 Jul 2025 05:24:44 +0000 (UTC) X-FDA: 83661730488.07.65ACFF8 Received: from us-smtp-delivery-44.mimecast.com (us-smtp-delivery-44.mimecast.com [207.211.30.44]) by imf14.hostedemail.com (Postfix) with ESMTP id 2C9BC100005 for ; Mon, 14 Jul 2025 05:24:42 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none); spf=softfail (imf14.hostedemail.com: 207.211.30.44 is neither permitted nor denied by domain of airlied@gmail.com) smtp.mailfrom=airlied@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752470682; a=rsa-sha256; cv=none; b=YGhPptZHV9PotRJdSuGoKZpdFfw4MCRD0lg0VFWqDgGqbw3uRrQEjtjrChpRyL/bPohhNn vGHqFgMjpUyw5cYQ5AURrk74cCRarbk4YigqfaMFqXc9+Qw5faLOpIIHXNkqJhZdQ2NyYG gFnTUZt647hYWgHekPTF60MHO7MDLt4= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none); spf=softfail (imf14.hostedemail.com: 207.211.30.44 is neither permitted nor denied by domain of airlied@gmail.com) smtp.mailfrom=airlied@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752470682; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nhcSKHbP1D+mRQ1Odz6N36vQAa0kwZTmkA+xDaxLWRY=; b=qH40T+whR6SaQtspN3KS0f7ZsW1Cq/AXix+SDT9R5wlUROK6KC18yue0eZ/jhdebHQxGxZ vVgQciWjwt2/BppXIBNal2AiUQHrDSOpogMgO5Tkvg/JJJTamFXVlTqJVKFunOj0gJ+lGe R2lYl8jNEC1T4yK372tMKBQRaQtbkog= Received: from mx-prod-mc-06.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-651-cJcgGuNDNnqaca43p25AfA-1; Mon, 14 Jul 2025 01:24:40 -0400 X-MC-Unique: cJcgGuNDNnqaca43p25AfA-1 X-Mimecast-MFC-AGG-ID: cJcgGuNDNnqaca43p25AfA_1752470678 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D398D180028D; Mon, 14 Jul 2025 05:24:38 +0000 (UTC) Received: from dreadlord.redhat.com (unknown [10.67.32.31]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8DB611977000; Mon, 14 Jul 2025 05:24:34 +0000 (UTC) From: Dave Airlie To: dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Johannes Weiner , Christian Koenig Cc: Dave Chinner , Kairui Song , Dave Airlie Subject: [PATCH 18/18] ttm: add support for a module option to disable memcg pool Date: Mon, 14 Jul 2025 15:18:33 +1000 Message-ID: <20250714052243.1149732-19-airlied@gmail.com> In-Reply-To: <20250714052243.1149732-1-airlied@gmail.com> References: <20250714052243.1149732-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: vpgR5cbd4B5uDaLTVxCY8tVNmNQXwoME7i96bE1RklM_1752470678 X-Mimecast-Originator: gmail.com Content-Transfer-Encoding: quoted-printable content-type: text/plain; charset=WINDOWS-1252; x-default=true X-Rspamd-Queue-Id: 2C9BC100005 X-Stat-Signature: kcay3rccunqepfwqkcm1ztb75ekubik5 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1752470682-251323 X-HE-Meta: U2FsdGVkX1+w6nU3kOlp/gLQHF3QZptMe19oRc2bUtD518HrQ91oLgSyVAUBvwCaslWbYR7bOCJuNwqExkMjgrpf3XBE0uUySgLicFoB6L2h6F3CLeiTsGLQFI1sDcjQypoPQDQZG8MjYAt4Pf7Lg0sqBbiOiK58LEksy3yiiW8U4m6tNapVy+52RJO2F9E5sVhlZcI0urmaC/k2thYV3mE0j0golHLdudkk8S+9qHaF4zI7A4YLGGsHEJ8JEV7SrYBYVS7HtnbTvxFx7PhHJP8yAkVm6Wavm+JD4vbUNa7weEfmaNncf8JnbO3N/pEWr/IrTDqDb5dFB6MximvaN0lfKksMMTY9nBIA6WyUH8tvPE0IHHhuI+K4KhcSsw0VOraKHduZvWCSB3jxBlbPZRBMpbE1lKIzjEPnocs4nGrwIaWsDG8XlVlVZsQmqMc1GF6blpCFjFAwgWxV1nPtcE8u7xfyQO3DUAHoytNklIoI/VC0rECud/qjXA74QZj8WIhJ+gpB8Rd20dUmBdunQ5T+kkx7ux6988XvaY1a35lMoZOog/qDrIgd/QHWMmd4zrEQU0FhnCi61uHG/MS+dKr6BBxMUqAHmTDwuoabIvUoa2NZDW5t0uaJ91AVvOsuboX0z0SBSR6r5Wjf4Tze1ybrXJB31YWviKgCPnr+ipmfLQwFwkkyEV/pO1tuMTgJ1y8/7t/nLJbTif89L8F7hD078b2m04O6Hgm7YXigB32XD5tJYHnpk5q5uxdp10jW2boo6xbobteZql06mHsM8tSSsPO8YRGkSlpM9qYtA5bZzFgTG+3hMjcZ3uKAPwPiG+gN4mVt89dSCJqHxZyPdItEhmq0TgrHT28Vkgh/VcTV8voBavGy9qMyumGQbrgnsz4AE8IzLnQzl9OingOr01ovvGk6HyUscKkYjrh/+zvQGt1E9e3SeHo0N1cVXA/XShJ1dVz3Vkhk7DPCd3z Mppg7Hkz uQIYwpuLKMN7JFPi690ZQ0nLx9BrDfzV1OTUh/7GagPkPxYFMDmxrN/PEUcF59ywf9NjWW/02NxwtBq2wIuxNi8IrcAvxnETTWyVgnFj0zfMCPMwaLKLdzrHXYjhA07Ypl9d3yMBg40VA8TwCfx+KeG/oGcWBuiYXxjzCI2IypIcqJ1keI/Av0KyeDI0G3hnKvEYaXo+AM497Q9zi1Q5vHpNxM8Uq93IFnImTiwl97QWs2YppxvumLG0m2ygRlvsgnEm3BdcRGq37H35BsDamG0fjJJ/vIJ6gIn3r8MCClef+wPNhh2oWWmpoJ60NuAe7ErdBA5U5fIcusWFcj84YsiZZ6+sr7xv07jBtF7cMC019BMsXAezNg9TnYP9eu1SKlyJzXJbxkBjWh4HzHDA1WHIdl730Wrt5jD3kf9K8+oR3C9Y= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Dave Airlie There is an existing workload that cgroup support might regress, the systems are setup to allocate 1GB of uncached pages at system startup to prime the pool, then any further users will take them from the pool. The current cgroup code might handle that, but it also may regress, so add an option to ttm to avoid using memcg for the pool pages. Signed-off-by: Dave Airlie --- drivers/gpu/drm/ttm/ttm_pool.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.= c index 1e6da2cc1f06..9d84d9991176 100644 --- a/drivers/gpu/drm/ttm/ttm_pool.c +++ b/drivers/gpu/drm/ttm/ttm_pool.c @@ -118,6 +118,21 @@ static unsigned long page_pool_size; MODULE_PARM_DESC(page_pool_size, "Number of pages in the WC/UC/DMA pool pe= r NUMA node"); module_param(page_pool_size, ulong, 0644); =20 +/* + * Don't use the memcg aware lru for pooled pages. + * + * There are use-cases where for example one application in a cgroup will = preallocate 1GB + * of uncached pages, and immediately release them into the pool, for othe= r consumers + * to use. This use-case could be handled with a proper cgroup hierarchy, = but to allow + * that use case to continue to operate as-is, add a module option. + * + * This still stores the pages in the list_lru, it just doesn't use the me= mcg when + * adding/removing them. + */ +static bool pool_cgroup =3D true; +MODULE_PARM_DESC(pool_cgroup, "Manage pooled memory using cgroups (default= : true)"); +module_param(pool_cgroup, bool, 0444); + static unsigned long pool_node_limit[MAX_NUMNODES]; static atomic_long_t allocated_pages[MAX_NUMNODES]; =20 @@ -305,7 +320,7 @@ static void ttm_pool_type_give(struct ttm_pool_type *pt= , struct page *p) =20 =09INIT_LIST_HEAD(&p->lru); =09rcu_read_lock(); -=09list_lru_add(&pt->pages, &p->lru, nid, page_memcg_check(p)); +=09list_lru_add(&pt->pages, &p->lru, nid, pool_cgroup ? page_memcg_check(p= ) : NULL); =09rcu_read_unlock(); =20 =09atomic_long_add(num_pages, &allocated_pages[nid]); @@ -354,7 +369,7 @@ static struct page *ttm_pool_type_take(struct ttm_pool_= type *pt, int nid, =09struct page *page_out =3D NULL; =09int ret; =09struct mem_cgroup *orig_memcg =3D orig_objcg ? get_mem_cgroup_from_objc= g(orig_objcg) : NULL; -=09struct mem_cgroup *memcg =3D orig_memcg; +=09struct mem_cgroup *memcg =3D pool_cgroup ? orig_memcg : NULL; =20 =09/* =09 * Attempt to get a page from the current memcg, but if it hasn't got a= ny in it's level, --=20 2.49.0