From nobody Mon Apr 6 09:15:07 2026 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B6682DF14C; Thu, 19 Mar 2026 21:23:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773955386; cv=none; b=Z7KLh7CPlXaGPCVX343//ordw5Oe/ipDWpIeGkLlh/K4enAyZSBacY99LNZzfXzPQit4vXt/kptFdHXVfc7UkE/h4gdu0/FPhBQtjwOFLCOgU7wyBzC0P/q9cuw6ahDu+M5JvwRGsoA92zXhidbj2w+UUPF8csfHxtGrvSjDKww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773955386; c=relaxed/simple; bh=jFshgU6n2M2QnL9j4QSG3k07/tMyHE9KEs4QensOt1Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZNHznxcsodLdtVAZv40IT1pI33oK3K4HkjOZZdvQqiFVtdRMflRihUFUo7ZrYYHQTzIMe/46d93kVCY3KZZXMtWnKCohSeZI22lvnMZjT31gc88us4ZO89MVzFJul1nFwPVO7Lfk8ayHjmE8UDTnNGpoqhSilqs6OmiplZyTM9o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=oZAMIiDT; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="oZAMIiDT" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=LqaSmuwy6pHyDiJ04DyLgwnky/pg3ari4nRAMo6yRdg=; b=oZAMIiDTni+k/UcrP/bfXGrUSy 0GjwRHt7V99SL7NdvpruQ8bP1dEWarEj8onLhN3sx9QgNxUH7rS/Kh4aC61daUiMzFpZUT1Cv5Lse ob3rLbRrjLB3ZSHr1ezmpVP4kLrSneerzxIXmHSH6pNRXnIbyO6r3sRM/RyAMkzQC8Gi8bSis+amv Ij1PofzUmJ8Jl6z1wMp+wKculqnBXOx0Wlq2jzpT2hPO+V4pJRFga5NcN/6Qly3NQP/KoqQEkwT8j nbRxLYy56fCkaf75qlKgDyM4adToyvJH9xRCq0o6PTAPYEper4iPv1GX0snX8POSI8pG7klODVI/5 n+lIA5ew==; Received: from 179-125-87-252-dinamico.pombonet.net.br ([179.125.87.252] helo=[127.0.0.1]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1w3Kpa-003VvC-0O; Thu, 19 Mar 2026 22:23:02 +0100 From: Thadeu Lima de Souza Cascardo Date: Thu, 19 Mar 2026 18:22:42 -0300 Subject: [PATCH v2 1/3] cgroup/dmem: remove region parameter from dmemcg_parse_limit Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260319-dmem_max_ebusy-v2-1-b5ce97205269@igalia.com> References: <20260319-dmem_max_ebusy-v2-0-b5ce97205269@igalia.com> In-Reply-To: <20260319-dmem_max_ebusy-v2-0-b5ce97205269@igalia.com> To: Maarten Lankhorst , Maxime Ripard , Natalie Vock , Tejun Heo , Johannes Weiner , =?utf-8?q?Michal_Koutn=C3=BD?= Cc: cgroups@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Thadeu Lima de Souza Cascardo , kernel-dev@igalia.com X-Mailer: b4 0.14.2 dmemcg_parse_limit does not use the region parameter. Remove it. Signed-off-by: Thadeu Lima de Souza Cascardo --- kernel/cgroup/dmem.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/cgroup/dmem.c b/kernel/cgroup/dmem.c index 9d95824dc6fa09422274422313b63c25986596de..1ab1fb47f2711ecc60dd13e611a= 8a4920b48f3e9 100644 --- a/kernel/cgroup/dmem.c +++ b/kernel/cgroup/dmem.c @@ -707,8 +707,7 @@ static int dmem_cgroup_region_capacity_show(struct seq_= file *sf, void *v) return 0; } =20 -static int dmemcg_parse_limit(char *options, struct dmem_cgroup_region *re= gion, - u64 *new_limit) +static int dmemcg_parse_limit(char *options, u64 *new_limit) { char *end; =20 @@ -762,7 +761,7 @@ static ssize_t dmemcg_limit_write(struct kernfs_open_fi= le *of, if (!region) return -EINVAL; =20 - err =3D dmemcg_parse_limit(options, region, &new_limit); + err =3D dmemcg_parse_limit(options, &new_limit); if (err < 0) goto out_put; =20 --=20 2.47.3 From nobody Mon Apr 6 09:15:07 2026 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AED772DF14C; Thu, 19 Mar 2026 21:23:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773955391; cv=none; b=WBlVwgi2rfjrFgAhf8Bvd6G8MMyirQg2rLOqaiXvnSms5dkg0L/qReIhyBEK5/MQc+JHmG7U6zHxljNff6GMhr8XNZUj2fbQuMxKIGjnCKAG/tyHEBrVROxy0hDhBoDnvi4kvoL2yrVhY9e6YlvgFosJZY3yNSVL54u9UmdSs0w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773955391; c=relaxed/simple; bh=g5/ovbO83gw3owROdHHFwAcK0U2EAjP+PJQWko9myI8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iFY5LFAjHfdfhcEzF8/1bZPFvzhVIO3Oykp6Ko75nNMU1V/hRRF8TyjGpkoQiw+nSkkskTQCV46F1IrKzLYVLt/ez+qqJrQvRQj672B8LOwps5ddJ6G2IVO9aGvN6AAxKQP9tGiGneTWb/m7zX2MDiqggWM4vNiHRWHyv3EP14M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=nowxwRTx; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="nowxwRTx" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=SPSdVVjfXYlYXJdvMtjOrLqjwSNywcgu5lDpY2FUZA0=; b=nowxwRTxSjf5akurlgjLLCkOTY oVO2RWolPa8D1A0+s9ZW8XRAOzqmyno181GJME8GLWnR2UHgMBn2POKCpZHn0T9H9A8P32xVKGTwG 9sZVwdg6hoQ1Gq/juJ/ETG5OcIRjdDz8cYjSJtuJcoAj328TeP+6kYzMpe/kRFYEmp22bEtRDOvR0 sh57FFitMtLvtgiVC09kdEyISqHAUjfnZtrZkTjRL+Kmr+EFnXbKX5PIgNdYln+RA5wiegTowZpkf FtwtA6bfz87MCcpNejt+IiI1rIjDUi+fwke4ZQZFv+jlDFxTucRF1Y7+J3OZr5cGSC29kJdT8TmLL +D5Ucj2A==; Received: from 179-125-87-252-dinamico.pombonet.net.br ([179.125.87.252] helo=[127.0.0.1]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1w3Kpe-003VvC-JL; Thu, 19 Mar 2026 22:23:06 +0100 From: Thadeu Lima de Souza Cascardo Date: Thu, 19 Mar 2026 18:22:43 -0300 Subject: [PATCH v2 2/3] cgroup/dmem: accept a single region when writing to attributes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260319-dmem_max_ebusy-v2-2-b5ce97205269@igalia.com> References: <20260319-dmem_max_ebusy-v2-0-b5ce97205269@igalia.com> In-Reply-To: <20260319-dmem_max_ebusy-v2-0-b5ce97205269@igalia.com> To: Maarten Lankhorst , Maxime Ripard , Natalie Vock , Tejun Heo , Johannes Weiner , =?utf-8?q?Michal_Koutn=C3=BD?= Cc: cgroups@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Thadeu Lima de Souza Cascardo , kernel-dev@igalia.com X-Mailer: b4 0.14.2 When writing to dmem.{min,low,max}, if multiple lines are given, one of them might succeed while the next one fails, but an error is returned. That is, there is no atomicity where either all changes succeed or all of them fail. Only accept a single region instead of trying to parse multiple lines and process multiple regions at the same write. Signed-off-by: Thadeu Lima de Souza Cascardo --- kernel/cgroup/dmem.c | 69 +++++++++++++++++++++++-------------------------= ---- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/kernel/cgroup/dmem.c b/kernel/cgroup/dmem.c index 1ab1fb47f2711ecc60dd13e611a8a4920b48f3e9..695d2b7516081256da030c80b54= ec1c5fcd6ca16 100644 --- a/kernel/cgroup/dmem.c +++ b/kernel/cgroup/dmem.c @@ -729,56 +729,47 @@ static ssize_t dmemcg_limit_write(struct kernfs_open_= file *of, { struct dmemcg_state *dmemcs =3D css_to_dmemcs(of_css(of)); int err =3D 0; + struct dmem_cgroup_pool_state *pool =3D NULL; + char *region_name; + struct dmem_cgroup_region *region; + u64 new_limit; =20 - while (buf && !err) { - struct dmem_cgroup_pool_state *pool =3D NULL; - char *options, *region_name; - struct dmem_cgroup_region *region; - u64 new_limit; - - options =3D buf; - buf =3D strchr(buf, '\n'); - if (buf) - *buf++ =3D '\0'; - - options =3D strstrip(options); + buf =3D strstrip(buf); + if (!buf[0]) + return -EINVAL; =20 - /* eat empty lines */ - if (!options[0]) - continue; + region_name =3D strsep(&buf, " \t"); + if (!region_name[0]) + return -EINVAL; =20 - region_name =3D strsep(&options, " \t"); - if (!region_name[0]) - continue; + if (!buf || !*buf) + return -EINVAL; =20 - if (!options || !*options) - return -EINVAL; + buf =3D skip_spaces(buf); =20 - rcu_read_lock(); - region =3D dmemcg_get_region_by_name(region_name); - rcu_read_unlock(); + err =3D dmemcg_parse_limit(buf, &new_limit); + if (err < 0) + return -EINVAL; =20 - if (!region) - return -EINVAL; + rcu_read_lock(); + region =3D dmemcg_get_region_by_name(region_name); + rcu_read_unlock(); =20 - err =3D dmemcg_parse_limit(options, &new_limit); - if (err < 0) - goto out_put; + if (!region) + return -EINVAL; =20 - pool =3D get_cg_pool_unlocked(dmemcs, region); - if (IS_ERR(pool)) { - err =3D PTR_ERR(pool); - goto out_put; - } + pool =3D get_cg_pool_unlocked(dmemcs, region); + if (IS_ERR(pool)) { + err =3D PTR_ERR(pool); + goto out_put; + } =20 - /* And commit */ - apply(pool, new_limit); - dmemcg_pool_put(pool); + /* And commit */ + apply(pool, new_limit); + dmemcg_pool_put(pool); =20 out_put: - kref_put(®ion->ref, dmemcg_free_region); - } - + kref_put(®ion->ref, dmemcg_free_region); =20 return err ?: nbytes; } --=20 2.47.3 From nobody Mon Apr 6 09:15:07 2026 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C864402459; Thu, 19 Mar 2026 21:23:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773955394; cv=none; b=R57YCV+r88e5Y1K7g/NOsGUAkCReW6ghT3bRUvN4G4ksSeO/PknCRtcsVePs3JNF6IR/TzOGb21XlW6mwl8nn0fOyD6mU2sHS7z4b+dJ9rlgmJZ+jcApOBoeeB/0qjuJcDakkRSXak9N955j6ENGyuGMnj+NkDmMr1QJVwzDKHg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773955394; c=relaxed/simple; bh=VvMsIIeDvHubQIh6pouwIc6v/ijLQKebg1s8Sh1NjP8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RNNqG22IOpx6Bt71g1VuP5sfCgOqpxQ7keB8XJxK4bMy+Vem8OSVTmDk5WpFyMlfbnOhPz04N3zLPGOdjtRH3NuIE1relqal1XyEZZyLjFv0psYcppO9nFrtElwHW7r360HN6IaH7w0YLFCrpEjYs1dACw4QOn6xS7nvdOm/oMs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=LMpFtUUO; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="LMpFtUUO" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=41Uqa2RC7e8RnridV7NcZa89g+tR7DrEjBJo4ZJoKfg=; b=LMpFtUUOVWSRIZzlFDX2PsOh5v 4FVXZUMoSWNgRFRRF++SE32KrZTjbHGsbKrg9D27SeDKJePa2miGCo2hfFhYfx4poAuA3V2w7Ksbq ZcjYmf+5jRkhR8wy2W/2qvoTQ2oeptzV/dHCME2uDG8vFOLJJrNVFjNri2SvfHjiKdW/gwfQmo+UJ WY6Nyu3oAuXNFc/jKV8fDrXlJUvYPGJpNhXyjCbFPxB0yRws9fTwfvlUXTyWYHv39Tr2IYA170fwe vu8CKXVLJgyFNQqMQXtZf8Fx6zeQL71E27ihGcK6IZL0I9j2A0HcArMBUbscjTmmi/dCrtdVfj9Ni kiDje2Ew==; Received: from 179-125-87-252-dinamico.pombonet.net.br ([179.125.87.252] helo=[127.0.0.1]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1w3Kpi-003VvC-J9; Thu, 19 Mar 2026 22:23:10 +0100 From: Thadeu Lima de Souza Cascardo Date: Thu, 19 Mar 2026 18:22:44 -0300 Subject: [PATCH v2 3/3] cgroup/dmem: allow max to be set below current usage Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260319-dmem_max_ebusy-v2-3-b5ce97205269@igalia.com> References: <20260319-dmem_max_ebusy-v2-0-b5ce97205269@igalia.com> In-Reply-To: <20260319-dmem_max_ebusy-v2-0-b5ce97205269@igalia.com> To: Maarten Lankhorst , Maxime Ripard , Natalie Vock , Tejun Heo , Johannes Weiner , =?utf-8?q?Michal_Koutn=C3=BD?= Cc: cgroups@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Thadeu Lima de Souza Cascardo , kernel-dev@igalia.com X-Mailer: b4 0.14.2 page_counter_set_max may return -EBUSY in case the current usage is above the new max. When writing to dmem.max, this error is ignored and the new max is not set. Instead of using page_counter_set_max when writing to dmem.max, atomically update its value irrespective of the current usage. Since there is no current mechanism to evict a given dmemcg pool, this will at least prevent the current usage from growing any further. Signed-off-by: Thadeu Lima de Souza Cascardo --- kernel/cgroup/dmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/cgroup/dmem.c b/kernel/cgroup/dmem.c index 695d2b7516081256da030c80b54ec1c5fcd6ca16..bf9e0d11e46156a437196c77fdf= de84250e65420 100644 --- a/kernel/cgroup/dmem.c +++ b/kernel/cgroup/dmem.c @@ -159,7 +159,7 @@ set_resource_low(struct dmem_cgroup_pool_state *pool, u= 64 val) static void set_resource_max(struct dmem_cgroup_pool_state *pool, u64 val) { - page_counter_set_max(&pool->cnt, val); + xchg(&pool->cnt.max, val); } =20 static u64 get_resource_low(struct dmem_cgroup_pool_state *pool) --=20 2.47.3