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 E0C4CC3ABDD for ; Fri, 16 May 2025 06:49:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CAAB76B00BB; Fri, 16 May 2025 02:49:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C58386B00BC; Fri, 16 May 2025 02:49:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B1ED76B00BD; Fri, 16 May 2025 02:49:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 93F176B00BB for ; Fri, 16 May 2025 02:49:28 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C3335E3897 for ; Fri, 16 May 2025 06:49:29 +0000 (UTC) X-FDA: 83447844858.18.F517470 Received: from out-183.mta1.migadu.com (out-183.mta1.migadu.com [95.215.58.183]) by imf11.hostedemail.com (Postfix) with ESMTP id DE68140002 for ; Fri, 16 May 2025 06:49:27 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=IS2daRuV; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf11.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.183 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747378168; a=rsa-sha256; cv=none; b=nDAdpRJhKx30KLSpNkAQvBkFXu+W4YUWbF6WJldNORTzfdZvvrAbL5IAvWXjPSFhBWiUZZ 6sJY9R3xdqSc4SY5yOeVdtnbvhsOv240L5wnodmdajXMPQ0+s8XQhLCYcz3YUnsh5ykqcd EzYGGrO2MfotClgiaydqR6kvZWOuAfo= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=IS2daRuV; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf11.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.183 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747378168; 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=N8MF/1Uk3+uCWuILTHwuEMDSb4CJ6HZopL8JvlOIAxY=; b=kNfOvmakUwHH74YTdt000Pj4bnXvkmuoqXGayujJSCLyv7hgYjknf9rPVMsiXLD12gMVdl wAu/hPHa69wdbOj3Iedk2pQfEdKE6u6lCJChY7frAyUzZulhQmjeeMtBlpEqyZf2fGNIHH 3ZplwpLgZzWOPLklTRVwREP701xBHVI= 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=1747378165; 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=N8MF/1Uk3+uCWuILTHwuEMDSb4CJ6HZopL8JvlOIAxY=; b=IS2daRuVt6grSmCBySyYJFrYDTQq2xzVVh98f5j6v/FVRycDKx5zl9i8cYVR7XovQBgeQJ NR0bCPZrJHRM/QALkFwoqJpfJpG04xcz9lnChUQojZSNLATLNmKdkaZYT/rJbPHQM+W6rn rvC3kucOzu0LVhLIQlnmiWYOvAsKVSU= 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 , bpf@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH v2 0/5] memcg: nmi-safe kmem charging Date: Thu, 15 May 2025 23:49:07 -0700 Message-ID: <20250516064912.1515065-1-shakeel.butt@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Stat-Signature: 4scgyn4yuouofguzpcint3m91g1df1ru X-Rspam-User: X-Rspamd-Queue-Id: DE68140002 X-Rspamd-Server: rspam06 X-HE-Tag: 1747378167-431092 X-HE-Meta: U2FsdGVkX193XDjQvkBCD8QCyXZn8PvqIytlMpmBu8YB1RutQxqERGEFRCKzyFfwXIPL8NlR6w+fT4e/MbSHHqJZ3epn8nNKZ2L9noT6ibnxYBiBSPL9Fm7gCwQy0ME35yWQDYaaVsRxZZ6tFqPK1JyKdar1HJ8uqn9NXJz8Ll/2UVtLIA8r28cZVajwJ/BOPalJWF+UmaGBnUBfGlKxpFQd0YUvObOGb+U/rJukHn1w4TQe1eU1gW5NwmF3rOeoXST1YQQzKp1NHMc1kkJajFhyg33sXecStf4H2E7mtYHy80KOAhuMN6cNCFbmOYrWvqfVrLbztpugnUEc3/g1PTUyYTWvl8S4rpQamz2IFjZCL+CsdN0NfhldxxkI5e0OOrvJqJ0VA1qvOOj1xLSP2KgCr6MeTDUJomLzND5gCT/H6WiAZUBnTkmaGrVLuhpSTR9grrkFha+jh3CRDjB0oAxRIHZGkJpBgWMc6439EF4qkZ3cmvuLPNTWFJKag5LELi0Tjms+7ddsXg5GyJJ1jN3eVirAHO7UIAWBQByxZdTVBnLxao5V6n5+5yVh3rvvA46kVhIvfIGwyZ+WnpkjXTgxZQuYTHe/mnT+HmR+0YXhFoQrcm/BgmSygXmRZABfruU0z7oQe5V098kaudk7BJs1PTg+LxFlJUSVz+lkRqVG1Jtvc6NrmvXte+ogceuTDSm2eTSeXSvAHVRa0oRihW7pF8+Cj2YLcxEjk/f4e0h7hWOu3wdjL8+/PV8FKxKLI4heMI6PLNrabmMoPCLCxOuwVhpW1pf7o3wfxlbBO3Mo9vXbjhfiSGB5tZiNGN9FqzuCRZTkIlD234WgwgfZzuUdTCVxnIAbEM4EFFJ+l/R19RgCdZJqIYEPqAtWNFvz2KzaJS0oKNntiSqkMPSjmV9lkmgao/Hbg/Y5iJs9yKW1AAWvoq0pdp8i1WZJbvNjMd5pWuIfXea9ieiTaxl x/O7lWTi Kv1Gr8mcc4qTffbKs3ONprA+Lm1KyP8nI5p5hyzIssKFl6vQbdd8WvLz360NcFtBGBqpuoEB9FrH9CeewThWIUC9brqdUXYhnPCQN8SddU5G2gcyhsTx94zektfxHNz3x/FdETYd5yLuEo0KMNSoqvashgUpHzfhjB8xD9m9/eZBSyW4= 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 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