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 76C57C3ABBC for ; Fri, 9 May 2025 23:29:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DEC198E0014; Fri, 9 May 2025 19:29:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D749D8E000E; Fri, 9 May 2025 19:29:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C63D18E0014; Fri, 9 May 2025 19:29:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A99EA8E000E for ; Fri, 9 May 2025 19:29:52 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 75F81BDF27 for ; Fri, 9 May 2025 23:29:54 +0000 (UTC) X-FDA: 83424964308.29.66EDEF7 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) by imf15.hostedemail.com (Postfix) with ESMTP id BB41EA0007 for ; Fri, 9 May 2025 23:29:52 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=m+oxtdCM; spf=pass (imf15.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.178 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746833392; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=bjeZme6BAMobUjCjG2z0qjC/1Yske6Cpmp1xAs83skQ=; b=QYcs6mgzY2r6VzuTFz+1u7N/+QHy0IEN1mwF2zQDOlsgBHEMPJ9neXUDLxAxo5Fq4U2VAT qaNJiQqVe8LYrSJvLArBgD9Y1OlKvvePYGMYJqbBHudMwebuBSVoO7xSAKisrbOLPGpZPt l7NF6hMJ4d5ya8IS/m2NpwdnPEpZZCE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746833392; a=rsa-sha256; cv=none; b=IfG5FW5kvgtQ7CkkX7yL7GE+LCRpKIZ663Nrzkqq+YFMM4GRZO6uaJvEEV+ZUTi8gFc6Bu BwQTbDiw1UnYUHjGr2R05VrFq+x2K8NslSOicQ938O+2e0LdI+lkcbrgLU8LGqVGdqoyFm rXM5r+xxDYIii0Popxm8O7bQ06iYeQI= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=m+oxtdCM; spf=pass (imf15.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.178 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1746833391; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bjeZme6BAMobUjCjG2z0qjC/1Yske6Cpmp1xAs83skQ=; b=m+oxtdCM5BMnzgXfUZ8NPy8CALAnzpZ8hufWr/HeL7VCTTyzAttbaajYXA1MdPrj7C+97H BKHiGesp4mJ3M99Unz3w04sBcgQH1D79ysCFaTIucM/DE8akOLV7G9bTtgaMQ4NuRWRzdr e1K1aKcrw0xF+yHoCreEsHSMboObmWg= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Vlastimil Babka , Alexei Starovoitov , Sebastian Andrzej Siewior , bpf@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH 3/4] memcg: nmi-safe slab stats updates Date: Fri, 9 May 2025 16:28:58 -0700 Message-ID: <20250509232859.657525-4-shakeel.butt@linux.dev> In-Reply-To: <20250509232859.657525-1-shakeel.butt@linux.dev> References: <20250509232859.657525-1-shakeel.butt@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Stat-Signature: oyr8d77jsn36bhjs51cpgoriqsw5mrip X-Rspamd-Queue-Id: BB41EA0007 X-Rspam-User: X-Rspamd-Server: rspam02 X-HE-Tag: 1746833392-121299 X-HE-Meta: U2FsdGVkX1/Fgec91SSP27Vk9U3gHooENuuLD+A9DdYaIFq8vqreN3zvdBvIZXNEgdT0xDBuDy1/aYhG9j7OD4o2QsE37r+NlqpumzrhV8+jLpOJOK7oy5GIYlGbJ3NI56pn4mV3zUSrKuRtZ/AgPmFtRT6UEe9+oXfIsRxVn9NE2KWELp46OQZWI45WBstZ5EiD5JbhURbcaY9Qevz8PVgWZTN5jLQYOrhFPHYhHEA1m2bzB+s0YG75o9N1quYJDsLe8ZOtBp19ByS+K7sNxOVTfPl4eJGvTlctX3tY9w4xbb5XgBW1F7KBdBW45G7rgEVXDyqkPk769R1CqmtLYvunanC8qIAYblvGlPM/y4BPjJYJoh5fj4I5TKiqqBFonaeqMBR+VV6mA6wE7PdR7nT41ePid4OBiRK/sHn4scMJjOu4gLyMgOkBVUhmFKQgUtX/btUIes6LqD/C3gJWoIo2sGdYtQUpc3GkqPvYw04IEUv5U+wR72XeUGv6nNRW3qN3qqwbHvSRgu6YGcXQWQLgPuST54IGKelCMwfyTrxUVPPStdG2F0GQhHFThxWs9SvSFyBIoX7+b+8DIkBGSSvib9IB1ymNhc0G3Bu5VrKIMpJIY/RC+7RNtzY4krLE+3m4sOiTMKeFLDDw/CGIRJlKaCEPboQNeeiJEKnsobvSedjvqlU/tY8jSTwEmVtwGNlh3oo2m9kOpeMDurPv+RyFVbOoO5qycoLrPfZBIiFo0HjG+OkFAvDV7reF3ksI6biCBBxBCpA4OJp1P7rpc8oXL4jwB04/oRlG95QTYuWayQB0WMEphRoiShvgrP8skRbN3Uyas7SNzDH2B8f9RBtRzSrGAGU6Wwl3BU5cCA+JS7yVW0KoBTC6C4mfqKGv9KCe2gG9WnquA77cJ+tmG/7ndHrGl44dwHAXemT8Wnt9aoPt6oSGNsDBGuKKRC+yfKRBlRFL2ugHTd7lYiy qcMvUhYu GuUCfZEYnU/SeI5JIiFkL3SBaT3q4cv+GMsGFUDHNPeykLe274ez/3r+dL7WQIBA0VlB32ujYIPP9sigSttP3Bp8Hu89u7X9HUz/Ggk6tGsKCR7JhCwoPctk58OfqPuiKx8A1wZdRcwZ3nVReTOa8gwFtQ/tFTZb6u6XS5nmAwDEYCtE= 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: The objcg based kmem [un]charging can be called in nmi context and it may need to update NR_SLAB_[UN]RECLAIMABLE_B stats. So, let's correctly handle the updates of these stats in the nmi context. Signed-off-by: Shakeel Butt --- mm/memcontrol.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index e91e4368650f..bba549c1f18c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2591,8 +2591,18 @@ static inline void __mod_objcg_mlstate(struct obj_cgroup *objcg, rcu_read_lock(); memcg = obj_cgroup_memcg(objcg); - lruvec = mem_cgroup_lruvec(memcg, pgdat); - __mod_memcg_lruvec_state(lruvec, idx, nr); + if (likely(!in_nmi())) { + lruvec = mem_cgroup_lruvec(memcg, pgdat); + __mod_memcg_lruvec_state(lruvec, idx, nr); + } else { + struct mem_cgroup_per_node *pn = memcg->nodeinfo[pgdat->node_id]; + + /* TODO: add to cgroup update tree once it is nmi-safe. */ + if (idx == NR_SLAB_RECLAIMABLE_B) + atomic64_add(nr, &pn->slab_reclaimable); + else + atomic64_add(nr, &pn->slab_unreclaimable); + } rcu_read_unlock(); } -- 2.47.1