From patchwork Wed Aug 16 15:11:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13355394 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 627C1C04E69 for ; Wed, 16 Aug 2023 15:14:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EEABC280024; Wed, 16 Aug 2023 11:14:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E9AB6280021; Wed, 16 Aug 2023 11:14:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D63F7280024; Wed, 16 Aug 2023 11:14:03 -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 C8119280021 for ; Wed, 16 Aug 2023 11:14:03 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 932281A01AD for ; Wed, 16 Aug 2023 15:14:03 +0000 (UTC) X-FDA: 81130313166.06.1D22410 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf07.hostedemail.com (Postfix) with ESMTP id 97B49400E4 for ; Wed, 16 Aug 2023 15:12:22 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tmVq5saA; dmarc=none; spf=none (imf07.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=1692198742; 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=+wksrpuMSy6CV2cZEpXEutvCbbKjfqW/cPXVAdCuyuo=; b=lZtQqfa6Jw2KukljRzzl6em6JdGsPngd9dTf5ixDADfu3uiodie8g19mC1V7YE1eLHxPLY 24CGEbj+WDlitUwYycu3EwLUcjfEJPgeZX96kCSMjghl4nxx8cKH9iT4HdqwpvxdolVo4z zk4HV/ogJf1QKiX0n5uSqZuNa0oblRs= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tmVq5saA; dmarc=none; spf=none (imf07.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=1692198742; a=rsa-sha256; cv=none; b=J3B8qD+tthjkjQd3snZ9qPRXGw3B3dlUPbo5BgXTHslji18WI28UiaFXkKKvuURxt1CxPJ y1ZMG4v96LfVR6uaRnVM+IYJz25L5sLIC4KEeuw4frCGGknn/Xc+QvvTpjvz4LyMc8ijDM WWLC9JLk2zTWXZUDLPLflGLaoZ9GHZA= 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=+wksrpuMSy6CV2cZEpXEutvCbbKjfqW/cPXVAdCuyuo=; b=tmVq5saABvN00mJkJdnS+Y3+mY qLOyK1ue+l62Dp2ifNrh2b+/xawwxv/Vc392QDMTJldeyilfF+4bpevB+uIuNHCzC5qWUzM8YMrYF hEovgk7pX/aC5SKQUicswH5ePEPsk8hamGziReIrC5g4Y84ZVtES8cIk/6jytSqrHrNx3ClAMWV0x QHlFrNaO0V2Gyfls4nsXbXTep3O/o9xsQxPaK34Q7oGtuwufcXA7fDDRJRbKu/oWQd75n7FgvMSEg HSJWAzzxU1cpzIJXfdemzELk+aZnSDbm7A6rUT8Hh+gJNV5L15ufqFBXIaaBpc+o8e/LuLbFiXxcb PTcAKx/w==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qWIBu-00FL8a-C0; Wed, 16 Aug 2023 15:12:10 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , Jens Axboe , io-uring@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v2 06/13] mm: Remove free_compound_page() and the compound_page_dtors array Date: Wed, 16 Aug 2023 16:11:54 +0100 Message-Id: <20230816151201.3655946-7-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230816151201.3655946-1-willy@infradead.org> References: <20230816151201.3655946-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 97B49400E4 X-Stat-Signature: woy3zwb881hsez9jxkd4k7syhrznfsua X-Rspam-User: X-HE-Tag: 1692198742-517959 X-HE-Meta: U2FsdGVkX1/WhAZvCjX5WkbFAq+5Poj/ghhcs0nd3hmt+N9vf/7RtZE4koNuf1IRbmoYKinAEkq4QVTJMzGIZCecMaUAovHuF4eMfdWhHeIwu4ne1kgQTJpcoLuw7bC1mY//VrIeZg4p7qsmpkT1K1Qn94zr8SbwK38K+YS18F+EZT9/TqR+/B2kYwWIWLKzYWVlGxT1h2Q/4KEHkYIi/6FHfQOmsBArHOvNpmMADkQMggYkJqDX23RNtMp964+Kc49+7HGaP1ClyWk+q/bc2O0NsEkFv4Vd1Xo4DQxmc0v+dFpgK0m0xVHdSSnyTdyy4U0ylBd5uM/tVAlDa3sFMKtyI+r1cQSoNYV+vLxS6Zsz/rYBYs8FrcZuLuRSafyFtQDgJ28q5frWoaSX7MnYZf22RrnrpCC3pC8Cu2waSkUga+kQul6zWpvKmyb4t58VPfVS1n9YVougOo9VeCOQFFUz3DOv0CQKt5aXj6c/BU4r0ISRKT3KaTj3lgxqH+FTJkOF70WHAzK0pfAjg5MARgtdFuw+2uGDikpNrb5pc0X9QyK+1f8WrBhsxSGnzbT3zOhm0Wi139e8TgBiXXzr0jdEA+PCjsYKHVjRIVImtMM7oWWEdazD3GZ10Az/rXh+pZo4at1j9ls7wV05OOgxCZToiIXfypptQyP552gBCPXRBWW+ZHsp9YmDrKEF5ctwvy4fCV4hVoWU5ADUGkhfNCcB6CWPoW6rZvJcuAjKaZq4UX+6t+1Ckp3fghpPfmP8whdGng5ZK8PRcz8pC7cyXS9kvJRqokadBNzCJzjbGiutJdA+ZK9AkP53UupUsqQ4d/7rzIE5XOgotevCOYdpSFcHRhq9QOeiQ5qvqK8jT8kORCR8Qo0BQD/axBFXBm9p4mWacOzUVbexpsWibQy5yqXXbevKOWlNyGKBgxV3Kgi/s7pT7Tdk5aFkpq36vsAMPCUVf0hpdcTRbYDVLxP Zdbf9VhC z5z75N8o6rkUQs18faaydVB3QgaAN5uTaaAzqia1A6nE+nW6jfg/ppAdOqggWcfGr8P4nbyhiIJ3UkRWuqy8khuOdmGVBclnRS+Op5lIILF3JnUviCXcY4paEZ6eqbklo4/F/JrRBTPbhw/Pcei53/i2M3CYNlSJzQpE5a2XDRou6D7UXkQ0XgCBSVrLnEm4Tneaj3XQuwIFNVF6Np0xsJ4dOStuy0mk1OMcOcjCTZ0n63e0EOnBaEp0VDVb74zvELPUT 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: The only remaining destructor is free_compound_page(). Inline it into destroy_large_folio() and remove the array it used to live in. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/mm.h | 10 ---------- mm/page_alloc.c | 24 +++++------------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 6c338b65b86b..7b800d1298dc 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1267,14 +1267,6 @@ void folio_copy(struct folio *dst, struct folio *src); unsigned long nr_free_buffer_pages(void); -/* - * Compound pages have a destructor function. Provide a - * prototype for that function and accessor functions. - * These are _only_ valid on the head of a compound page. - */ -typedef void compound_page_dtor(struct page *); - -/* Keep the enum in sync with compound_page_dtors array in mm/page_alloc.c */ enum compound_dtor_id { NULL_COMPOUND_DTOR, COMPOUND_PAGE_DTOR, @@ -1327,8 +1319,6 @@ static inline unsigned long thp_size(struct page *page) return PAGE_SIZE << thp_order(page); } -void free_compound_page(struct page *page); - #ifdef CONFIG_MMU /* * Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 5ee4dc9318b7..9638fdddf065 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -284,11 +284,6 @@ const char * const migratetype_names[MIGRATE_TYPES] = { #endif }; -static compound_page_dtor * const compound_page_dtors[NR_COMPOUND_DTORS] = { - [NULL_COMPOUND_DTOR] = NULL, - [COMPOUND_PAGE_DTOR] = free_compound_page, -}; - int min_free_kbytes = 1024; int user_min_free_kbytes = -1; static int watermark_boost_factor __read_mostly = 15000; @@ -587,19 +582,13 @@ static inline void free_the_page(struct page *page, unsigned int order) * The remaining PAGE_SIZE pages are called "tail pages". PageTail() is encoded * in bit 0 of page->compound_head. The rest of bits is pointer to head page. * - * The first tail page's ->compound_dtor holds the offset in array of compound - * page destructors. See compound_page_dtors. + * The first tail page's ->compound_dtor describes how to destroy the + * compound page. * * The first tail page's ->compound_order holds the order of allocation. * This usage means that zero-order pages may not be compound. */ -void free_compound_page(struct page *page) -{ - mem_cgroup_uncharge(page_folio(page)); - free_the_page(page, compound_order(page)); -} - void prep_compound_page(struct page *page, unsigned int order) { int i; @@ -621,14 +610,11 @@ void destroy_large_folio(struct folio *folio) return; } - if (folio_test_transhuge(folio) && dtor == TRANSHUGE_PAGE_DTOR) { + if (folio_test_transhuge(folio) && dtor == TRANSHUGE_PAGE_DTOR) folio_undo_large_rmappable(folio); - free_compound_page(&folio->page); - return; - } - VM_BUG_ON_FOLIO(dtor >= NR_COMPOUND_DTORS, folio); - compound_page_dtors[dtor](&folio->page); + mem_cgroup_uncharge(folio); + free_the_page(&folio->page, folio_order(folio)); } static inline void set_buddy_order(struct page *page, unsigned int order)