From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) (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 5F29537DEB7; Mon, 11 May 2026 20:22:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.198 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778530976; cv=none; b=uxbQIVoUigM/8c8WQb8PeT2Fv9n3hWLRuzOCC7tO2mxIoH55hupx14MEhMOFg0p0bmxbeRIVwM3gl/vQvcQt9pgpJOkvTcUwG1vlPuldRWHIiw33kyzDmhKohkinRfydwPLHz5+he+3F/SKbbdIpiu9HYEX/HL9szNut1VyNnwg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778530976; c=relaxed/simple; bh=6wqrKndzdUZkZnNt1n8BhDvSH3S6lx5Op6Jwq55DFXk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BRtAU+E+LyA+k51PCgRTwLMP30pgKEbGnqBEJQkx1s7wmqirdomz37UGASlYpBaQ7MSCPDGHCqzx0lBU6xMVWVI053Sr6/7rznlntxyFvPlZTrh9rArN8BQgWMX/EA2+gza5YMvQv72pr0wE7N747IVdpS4bTve07LGKN4G3P0E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr; spf=pass smtp.mailfrom=ghiti.fr; arc=none smtp.client-ip=217.70.183.198 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ghiti.fr Received: by mail.gandi.net (Postfix) with ESMTPSA id AF36C3ED2B; Mon, 11 May 2026 20:22:47 +0000 (UTC) From: Alexandre Ghiti To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Dennis Zhou , Tejun Heo , Christoph Lameter , Vlastimil Babka , Yosry Ahmed , Nhat Pham , Sergey Senozhatsky , Chengming Zhou , Suren Baghdasaryan , Qi Zheng , David Hildenbrand , Lorenzo Stoakes , Minchan Kim , Mike Rapoport , Axel Rasmussen , Barry Song , Kairui Song , Wei Xu , Yuanchu Xie , "Liam R . Howlett" , Joshua Hahn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, Alexandre Ghiti Subject: [PATCH 1/8] mm: memcontrol: propagate NMI slab stats to memcg vmstats Date: Mon, 11 May 2026 22:20:36 +0200 Message-ID: <20260511202136.330358-2-alex@ghiti.fr> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260511202136.330358-1-alex@ghiti.fr> References: <20260511202136.330358-1-alex@ghiti.fr> Precedence: bulk X-Mailing-List: cgroups@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-GND-Sasl: alex@ghiti.fr X-GND-State: clean X-GND-Score: -100 X-GND-Cause: dmFkZTEKdSC5n47cMxx7+E6xIcuuqMdhUwWhsmhYP0l1q/lL120dThEiR8vb0TiEqhY42A2jPimP5jU/Hm0hGDMno175lLcPytRQJKdldhMsQt6RKWRnwi5uj+7Fz//srcwN3JM6xfrPe93Kmskbbh6XnUYrgM/FTVmCaDrz/0m9ROXr6uVhqG9eyFnOYs1gvA8enM+zyzmByTi7t2LVsTGJjtQGh7t7IHfie/kQmD9bBx9sjOPfZAyTGWUiv6GvKGuseIvPIQs97zGR0NteRVRP95Qqs1VoYF4GH4W6YoIEL9NhmCvSnS5WjCx0nn+v9kQeX4YAgUsLIIKoDX5j6QPthtreg0WrEdOETloX0nHU9QhFkusicJofCoJUaSZJXLcCr3ipFEeJ3E7V1DOQZ31F//5TvDzDBhidPN7NE6DOthjYDol0pyFj4b68FbfFVbwBJvZZDmqots2dvQU1F9tMPbZ0KNLMXGEjnYh5jY9TmHMi8QJcUJPv6R/PHTGe7VuzMDYVUAYEySv3jvZOtiOUX+3BLehOQAdl+y+lDol799VHPQ1GiQTOOyJnUjkI39gp4v6hWPmEvUMxUntR7QxPhqvhnMyoKWukhmEuywJfRLQhc5zfyz4Ni2LLQb9MA8om6nkBITcQCDZuU4F2IlNOslNIR3WBk/YqbbxI7Zos7XD32A flush_nmi_stats() drains per-node NMI slab atomics into the per-node lruvec_stats, but does not propagate them to the memcg-level vmstats. This is inconsistent with account_slab_nmi_safe() which updates both, so fix this by propagating the NMI slab stats to the memcg-level vmstats. Fixes: 940b01fc8dc1 ("memcg: nmi safe memcg stats for specific archs") Signed-off-by: Alexandre Ghiti --- mm/memcontrol.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index c3d98ab41f1f..d81a76654b2c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4341,16 +4341,22 @@ static void flush_nmi_stats(struct mem_cgroup *memcg, struct mem_cgroup *parent, int index = memcg_stats_index(NR_SLAB_RECLAIMABLE_B); lstats->state[index] += slab; + memcg->vmstats->state[index] += slab; if (plstats) plstats->state_pending[index] += slab; + if (parent) + parent->vmstats->state_pending[index] += slab; } if (atomic_read(&pn->slab_unreclaimable)) { int slab = atomic_xchg(&pn->slab_unreclaimable, 0); int index = memcg_stats_index(NR_SLAB_UNRECLAIMABLE_B); lstats->state[index] += slab; + memcg->vmstats->state[index] += slab; if (plstats) plstats->state_pending[index] += slab; + if (parent) + parent->vmstats->state_pending[index] += slab; } } } -- 2.54.0