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 540E6C3ABC9 for ; Fri, 16 May 2025 18:32:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 53BF06B0093; Fri, 16 May 2025 14:32:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4E91E6B0095; Fri, 16 May 2025 14:32:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3D7C46B0096; Fri, 16 May 2025 14:32:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 1FA3A6B0093 for ; Fri, 16 May 2025 14:32:40 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 531FA161051 for ; Fri, 16 May 2025 18:32:41 +0000 (UTC) X-FDA: 83449616922.21.24C0068 Received: from out-182.mta0.migadu.com (out-182.mta0.migadu.com [91.218.175.182]) by imf21.hostedemail.com (Postfix) with ESMTP id 94FEE1C000C for ; Fri, 16 May 2025 18:32:39 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="TfLjLWj/"; spf=pass (imf21.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.182 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=1747420359; 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:references:dkim-signature; bh=3itOgcDfGvCSNJojD1kWLSfTvY0H0Nn9ZZT8m3VXc9E=; b=yzav/5/KhB00vapd2M8SiZeSs8Oac9i12S5MFCd8VK+0AhLMQdL3NWVS+M/MmwT7725IfM 3wbuk0qh2t/CdUEXOo4ACMPKEbW1W4+n1ajABxJXRQr1WP5JmXJuA9+CZC5ED6hEmBSjue 5mCfQ7fe2UxzMWLIT2EBjB8Gb0XVHeU= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="TfLjLWj/"; spf=pass (imf21.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.182 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747420359; a=rsa-sha256; cv=none; b=NSJ0h4iORe2hGDdmAnuKi0uJKJn+rtUpSfyevcZOdRkp/Ob6UOAd2YdU2YRSCxEHqzoiW7 NBs9WSAutuBu5EOSL2PEBziK0kq9x5ts2LShKK+yNj0HAvacez3ZEjXISSvTGNZpQ27HnU vPUFccxDmVJ/qv2akGXHwq6WGa5JWx0= 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=1747420357; 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; bh=3itOgcDfGvCSNJojD1kWLSfTvY0H0Nn9ZZT8m3VXc9E=; b=TfLjLWj/hIgCbCVByfp3HZ5c7rlJh1zgJsyfd5tpGiuovYQE+y6a1JLonBjp1468v03wKg zRjX7O3l+pI3sx55HwtMFPOp+rsTgTYb+8Cl3fxfOH/apewbzg13tt7+eGptOpe+PJe3ks 5CWBtbGlYiq0TaNF2+nSrXtjPWU527c= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Vlastimil Babka , Alexei Starovoitov , Sebastian Andrzej Siewior , Harry Yoo , Yosry Ahmed , Peter Zijlstra , Mathieu Desnoyers , Tejun Heo , bpf@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH v3 0/5] memcg: nmi-safe kmem charging Date: Fri, 16 May 2025 11:32:26 -0700 Message-ID: <20250516183231.1615590-1-shakeel.butt@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Queue-Id: 94FEE1C000C X-Rspamd-Server: rspam09 X-Stat-Signature: bcfyy88msm3y5j5mxgy3iu4bre7uhr6i X-HE-Tag: 1747420359-982194 X-HE-Meta: U2FsdGVkX18cCd740tsgKZs0PuK8NJC9SHZvizVltbYnPKae0hKPhhxBdSNGkeXnQ4pJG203pHH/D+VpyHU/YsmBROCrW10Or1wEWlHVoOfB5PLptVkiXI0ep6wPjEBmnSACfXGShnukD+Pu08Mq9loFu0XsEYVukNIF8vluO3e0uLkdpFdYmlGLsWbtBKW7CTok57zsW64BrswaXX2yZiQIVkGn8PyhQD/rywtBvQeQ1eeeySnLOnZchVvaKNQGpUbUSnOzxdRE9Fejr9dRHj8viuQGzMRnFgOPomLk6x9VdKZ5t5VATQP3YDRZ6QNyM5ZSUXQqW5tEFwASRvUu5W77SNP85XQKhyHZ04kO6qelU2nu3HUx/Xa8A3vCMPTwv2fFB1kMHMet5NreFDwBiK79Km8P6r04E2fTJukTd6HHrMixnvG/DKs2UtHyLQ9f4KtQvEmqK3oW1v2HDo1UdXRaOhq+E6zQP0evbovXUp/SWXFVvLmKlVrJXivG4pHDhHdgQOrt8DiYKVro4yX2iemXMB8xW9UCamEDxeUjXNkgC/vnF/cvDbltaIOdSFRV5x+49wE3ODROOfTWXCAjnrZV0EzJPUNdufOes6hbYK3yR7PDkJR6hdyWpZpXS4OwvOhPCJdXxvTL/Ro9v3bkhAwmKcM9Bfb6niL+V1CeOKZk/r4yf1FjHhIi/ye+B6hipnB+mdbap8xPgfRZT9sJIZAsP7oAw3HipoIQcRM99g+jVLz63YysJVxaakNKp4SgrbXoBWesq0lPkVOf8gY43Q1QCcfGa2+HUgAX3+n0VK1kRksV062TUiMWbhZjAW37pDieA59NnhPW33vDOEPOuHCdj6WR/2IIjSPZmPut0wMyCEV8fFkHs8MJ2yR/k7KkENtpzZsx40EzJYhh7YW/3KusM/+AHsv6MujmUwj3ToQUe5j0q+5WWjSPn7TSG7A1rHVFiIZQrI1nss1ijIM nCnIBebH 4fpV9nBiKnCtvnNP74hRVT23q9VfGJZipKOv4qUZ9xhWHJL6CNFHwJuvFHxafPYJQ8+9yMqM56vEWlbQhrQancaeBRapSQLUzoO4rdYBCBQSt5Pg50wjulIugvJwWSlwyLP9jpodCRJhjYyVy+oi+TCFrIOOnXG8RZdDQkkN1fj1snUA= 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: Users can attached their BPF programs at arbitrary execution points in the kernel and such BPF programs may run in nmi context. In addition, these programs can trigger memcg charged kernel allocations in the nmi context. However memcg charging infra for kernel memory is not equipped to handle nmi context for all architectures. This series removes the hurdles to enable kmem charging in the nmi context for most of the archs. For archs without CONFIG_HAVE_NMI, this series is a noop. For archs with NMI support and have CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS, the previous work to make memcg stats re-entrant is sufficient for allowing kmem charging in nmi context. For archs with NMI support but without CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS and with ARCH_HAVE_NMI_SAFE_CMPXCHG, this series added infra to support kmem charging in nmi context. Lastly those archs with NMI support but without CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS and ARCH_HAVE_NMI_SAFE_CMPXCHG, kmem charging in nmi context is not supported at all. Mostly used archs have support for CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS and this series should be almost a noop (other than making memcg_rstat_updated nmi safe) for such archs. Changes since v2: - Rearrange in_nmi() check as suggested by Vlastimil - Fix commit messag of patch 5 as suggested by Vlastimil Changes since v1: - The main change was to explicitly differentiate between archs which have sane NMI support from others and make the series almost a noop for such archs. (Suggested by Vlastimil) - This version very explicitly describes where kmem charging in nmi context is supported and where it is not. Shakeel Butt (5): memcg: disable kmem charging in nmi for unsupported arch memcg: nmi safe memcg stats for specific archs memcg: add nmi-safe update for MEMCG_KMEM memcg: nmi-safe slab stats updates memcg: make memcg_rstat_updated nmi safe include/linux/memcontrol.h | 21 ++++++ mm/memcontrol.c | 136 +++++++++++++++++++++++++++++++++---- 2 files changed, 145 insertions(+), 12 deletions(-) -- 2.47.1