From patchwork Fri Mar 14 13:36:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 14016922 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 D7B20C28B30 for ; Fri, 14 Mar 2025 13:36:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 41C37280001; Fri, 14 Mar 2025 09:36:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 385F1280008; Fri, 14 Mar 2025 09:36:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 076BE280001; Fri, 14 Mar 2025 09:36:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id D72F8280006 for ; Fri, 14 Mar 2025 09:36:29 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 576231CB546 for ; Fri, 14 Mar 2025 13:36:31 +0000 (UTC) X-FDA: 83220256182.11.8406DB5 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf19.hostedemail.com (Postfix) with ESMTP id 6A3281A0009 for ; Fri, 14 Mar 2025 13:36:27 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NerymVeb; dmarc=none; spf=none (imf19.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741959388; a=rsa-sha256; cv=none; b=7PShfI2IlwICNaPLeeKVwawtEYZZNKAQVvcRBxxjN/kfYrtmydYGCSUoMTFwe57c2+hidc mWUsgHZ26vjniEhwB/e39rRWYbJhJ7K2g0dYsyfKIA0Yw/k7YBdP/LROLZVS6oV4UwzwXh PwpiTrS/5vV0431HwRSBM0Z7i7WYgsA= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NerymVeb; dmarc=none; spf=none (imf19.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741959388; 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=RoGScLnKmzY91Vb9KOdHkE6QsUyf1AloqQq4Cbq7VXo=; b=kodePDPbytaHnyv8nQVXxZQD4fHHykndFoApCXamFMVO6IFFSSwo1VdpXg+FiOQ0MvGZhx JN2mRLO/xFWjDFwmP8Theh4K/cP9Iewl2lnswp1OeNbA7fgK1aL9AHt7gR4IxIKiaSJYZo /hJNNZKW+MtYZOF0390L87ds2lHGz58= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=RoGScLnKmzY91Vb9KOdHkE6QsUyf1AloqQq4Cbq7VXo=; b=NerymVeb1O+wO8MaaZvFSdeOT+ AluiXyWEZqVFRy/pjk/oGPu2uDyXF07Lf6y0mNttEAEZxf4/GHkaVyXALRPa9WsDh87Ex+uBueiPA 80wnDArYVzFdgG+/tMPRMJFs8zuuZwmjfPJWBx4Cgb770Jkws78b2PiPffD4lMcsLsRHJ4nF1KBVi Ba99l3c3YBeY87uGN/ylG/rwwhhzSFCSov/c9+laLBfkJxQzzXNY2ObTuhM1rWS6isiyf+5i4bhxu g/wOgNmdC4kzPBNEDytHj18izY1KoZ7Ra+qjum26UhjzAJLnDUWNsiInUGY6AnDNsf60tOt+w6Z/4 Qrsx67cw==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tt5D6-00000000Zxr-0Obc; Fri, 14 Mar 2025 13:36:24 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Zi Yan , David Hildenbrand Subject: [PATCH v2 2/5] mm: Simplify split_page_memcg() Date: Fri, 14 Mar 2025 13:36:12 +0000 Message-ID: <20250314133617.138071-3-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250314133617.138071-1-willy@infradead.org> References: <20250314133617.138071-1-willy@infradead.org> MIME-Version: 1.0 X-Stat-Signature: jubh469tko7fzgo4hw9ga5wy5644ycf5 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 6A3281A0009 X-Rspam-User: X-HE-Tag: 1741959387-987389 X-HE-Meta: U2FsdGVkX1/QYU0njY5hoL24nOwnrGMnUO8BAVk73EvJ4U7h4MqNPVuxfKwTFgvVKR1rbOeEburfDjeTLwtiaOStRDtJPtTThSv4u83poN0muzdzN8AwImXon9xm+AEa3keuUgrJp3/3FCPFU/wMROI7AOYdnoJLsXtFbd2VpMoMJJ4PcNvokEHmB1WMrHtjdIOUhGw+tAS8G14GS0yLoYZZzzv+pFecuLXJN3fro3Pn31lONTQOxJpgb4pMQnCUIR5T+2KBYQ9oT5siz5M3IANxAelRkV02R/JDwdwQwEZjRHMgcqpKl6naj+kYgYivZP11aIfPba0PI12svUgm2OkEtPMdiEfEK7vW3AlX34y7rnoVDPmdIH2NYSE4sLnX9nHNv49fD5EGq0GXn4l91lYogzhvu7wcXexwz4g6Tu9YhAqbgSScirWzU4A9BmAL/C7tGfez5iJoRQI0NFxn3i5e2lnLTCknA7P8mLzm5TWTZkbcjP0XPVBYNrSbq8nYCjGhmrHqcOgVhV2eZts43Xn5xEORdorqmZUtcNtYG6/sqGIKn0RwjDVGuGbLyvDBASgEkTdXr10vTyu/AHZfQpvrEjSEoezhJJK/SBWvDVd1Tkq/qtlptIA3vgkjiSN8ZwmwlTnYTmPLY9st9k3zbds/8KD57ZsIkOUiV3+OP5KVDZhC7+84kGdO1rVxhxJ7eCfKTxuhm/iVA+WgHwpmpCbx8rD+B569um7Gb+XwHjhq4cCSE6s2N+7PxIlVdULao1jbMS1ahKIRXr/wv6adcw+eOJbrUCgek3+WU2xvoJgYYju4NsrmM8zzhi6CijvLtp9jh04tdc0C/qbI0e9g4V+t46pWqkwnkRM6KseUWigoO3SyXBumgfK8uun3JPWdSa78/08cMonBoxC5NxielceBV8uLpsDwOAh+pOMaHppHSFcNy6y3/eD/PC6CZ/ntg91HvgLDmS1VkmSsLNK jr8WcqeM EWZbL/1izxpC8tOOrqIEundYGyw6oZWaZoGIoQBuM4a9g2coRcOBOkeKTuBAovWmODzbkjeZS5EvdHggfsz6ruo9xDr7jztPW3xeSVEnpjQiffGx6ISnsO1kaqVNycStCvOtYYOqobX+vRU7syCWFgWM839/BA0R6ve1eC5Kj6YCmzDMksr6EHa53ZXLobdaygtt2NcQ8sWLED22uKzl9xDyDneQBh9Ca13ruKHG5qGpMdh8O6I4J2qpIKTdIwA6Y4s1kzFhpwIO/+2vP0iOngeUJ5MmxmEguBUZDs2UvqwdgDw88+oakPlMoqgqAhI6Uno9GBSMLu0OWMs5BaObdo1ryNtvFsYsVPBXxFKpciERzarf1Ie3ZCx3SDA== 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 last argument to split_page_memcg() is now always 0, so remove it, effectively reverting commit b8791381d7ed. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Johannes Weiner Acked-by: Shakeel Butt Acked-by: Zi Yan --- include/linux/memcontrol.h | 4 ++-- mm/memcontrol.c | 15 +++++++-------- mm/page_alloc.c | 4 ++-- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index d090089c5497..ea28cacfb0d2 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -1038,7 +1038,7 @@ static inline void memcg_memory_event_mm(struct mm_struct *mm, rcu_read_unlock(); } -void split_page_memcg(struct page *head, int old_order, int new_order); +void split_page_memcg(struct page *first, unsigned order); void folio_split_memcg_refs(struct folio *folio, unsigned old_order, unsigned new_order); @@ -1461,7 +1461,7 @@ void count_memcg_event_mm(struct mm_struct *mm, enum vm_event_item idx) { } -static inline void split_page_memcg(struct page *head, int old_order, int new_order) +static inline void split_page_memcg(struct page *first, unsigned order) { } diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 4674d9815a50..862bb0d5c0f2 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3086,22 +3086,21 @@ void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, } /* - * Because folio_memcg(head) is not set on tails, set it now. + * The objcg is only set on the first page, so transfer it to all the + * other pages. */ -void split_page_memcg(struct page *head, int old_order, int new_order) +void split_page_memcg(struct page *first, unsigned order) { - struct folio *folio = page_folio(head); - int i; - unsigned int old_nr = 1 << old_order; - unsigned int new_nr = 1 << new_order; + struct folio *folio = page_folio(first); + unsigned int i, nr = 1 << order; if (mem_cgroup_disabled() || !folio_memcg_charged(folio)) return; - for (i = new_nr; i < old_nr; i += new_nr) + for (i = 1; i < nr; i++) folio_page(folio, i)->memcg_data = folio->memcg_data; - obj_cgroup_get_many(__folio_objcg(folio), old_nr / new_nr - 1); + obj_cgroup_get_many(__folio_objcg(folio), nr - 1); } void folio_split_memcg_refs(struct folio *folio, unsigned old_order, diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 004c4856e71a..987e14d87932 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2813,7 +2813,7 @@ void split_page(struct page *page, unsigned int order) set_page_refcounted(page + i); split_page_owner(page, order, 0); pgalloc_tag_split(page_folio(page), order, 0); - split_page_memcg(page, order, 0); + split_page_memcg(page, order); } EXPORT_SYMBOL_GPL(split_page); @@ -5033,7 +5033,7 @@ static void *make_alloc_exact(unsigned long addr, unsigned int order, split_page_owner(page, order, 0); pgalloc_tag_split(page_folio(page), order, 0); - split_page_memcg(page, order, 0); + split_page_memcg(page, order); while (page < --last) set_page_refcounted(last);