Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2219961/?format=api
{ "id": 2219961, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2219961/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260405125240.2558577-37-songmuchun@bytedance.com/", "project": { "id": 2, "url": "http://patchwork.ozlabs.org/api/1.2/projects/2/?format=api", "name": "Linux PPC development", "link_name": "linuxppc-dev", "list_id": "linuxppc-dev.lists.ozlabs.org", "list_email": "linuxppc-dev@lists.ozlabs.org", "web_url": "https://github.com/linuxppc/wiki/wiki", "scm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git", "webscm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/", "list_archive_url_format": "https://lore.kernel.org/linuxppc-dev/{}/", "commit_url_format": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}" }, "msgid": "<20260405125240.2558577-37-songmuchun@bytedance.com>", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260405125240.2558577-37-songmuchun@bytedance.com/", "date": "2026-04-05T12:52:27", "name": "[36/49] powerpc/mm: use generic vmemmap_shared_tail_page() in compound vmemmap", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "4c587066b98c36f52f6e3ba81b0382f86c38feb2", "submitter": { "id": 78930, "url": "http://patchwork.ozlabs.org/api/1.2/people/78930/?format=api", "name": "Muchun Song", "email": "songmuchun@bytedance.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260405125240.2558577-37-songmuchun@bytedance.com/mbox/", "series": [ { "id": 498783, "url": "http://patchwork.ozlabs.org/api/1.2/series/498783/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=498783", "date": "2026-04-05T12:51:51", "name": "mm: Generalize vmemmap optimization for DAX and HugeTLB", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498783/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2219961/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2219961/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linuxppc-dev+bounces-19366-incoming=patchwork.ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linuxppc-dev@lists.ozlabs.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=bytedance.com header.i=@bytedance.com\n header.a=rsa-sha256 header.s=google header.b=Aa4NB7kw;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-19366-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)", "lists.ozlabs.org;\n arc=none smtp.remote-ip=\"2607:f8b0:4864:20::102c\"", "lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=bytedance.com", "lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=bytedance.com header.i=@bytedance.com\n header.a=rsa-sha256 header.s=google header.b=Aa4NB7kw;\n\tdkim-atps=neutral", "lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=bytedance.com\n (client-ip=2607:f8b0:4864:20::102c; helo=mail-pj1-x102c.google.com;\n envelope-from=songmuchun@bytedance.com; receiver=lists.ozlabs.org)" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fpXYX07wHz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 05 Apr 2026 22:57:35 +1000 (AEST)", "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fpXYB2j2Dz2yvZ;\n\tSun, 05 Apr 2026 22:57:18 +1000 (AEST)", "from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com\n [IPv6:2607:f8b0:4864:20::102c])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4fpXY947ZSz2yvW\n\tfor <linuxppc-dev@lists.ozlabs.org>; Sun, 05 Apr 2026 22:57:17 +1000 (AEST)", "by mail-pj1-x102c.google.com with SMTP id\n 98e67ed59e1d1-35c238f1063so1899571a91.1\n for <linuxppc-dev@lists.ozlabs.org>;\n Sun, 05 Apr 2026 05:57:17 -0700 (PDT)", "from n232-176-004.byted.org ([36.110.163.97])\n by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-35de66b4808sm3748505a91.2.2026.04.05.05.57.10\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sun, 05 Apr 2026 05:57:15 -0700 (PDT)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1775393838;\n\tcv=none;\n b=cT3PACsSryEeFt7zIo7HHM7r6OZmxfWc1qKKKHBOaUMo24xr1rC+maEBdRTRPoqFx+JP2Owa+Xe5LYBdjx5rPk0jjNAJ1llguat1ZmOcbIqAHKzj95Gr48k9ynwRVvDXAt3bqXyM2ntssc1lws1U2sLAHqZHIZ/TN5CsdekDKeO5zGja8il2qWEkNNfk/bwYJWG0PQDMGanXsf/ZgrNv0TKx8tICsRS9RRrLXX6XHunhhe59FxasmTe9/88aj4MRRfNjNVBLRhmFgHB9d8WnobimwAOteIOuaw9vhiy7X2RSXl0vMxfaHK00HwMxQyNHoTFd8Xf7ey/mdL2ua0JTzA==", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1775393838; c=relaxed/relaxed;\n\tbh=dhCvzWzEYwqtXTRdhJr7F88/ilDc9KP9wceAmsw7dyk=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t MIME-Version;\n b=f8SwNQAEj6qCZSlNXHTRkTB8yKcRRfDCJmOhci7bGxxcLcmxdaSij84FMF/IrWxxTHB1Wl10YY1RQ3+QCYaDDtrGdsYZLazvKUAHYZszM/j5cCnQv3SoyL99eH+8512sILgGhHwrHAQx/BfchSX+F0Wffve/Npl6XKIa3x7IHYWDjHRn4YJkyQc0YtmjlX1h6pbqgTBeMYedxLItmf3zio6sUeKG253Da133Izh2fCrcbExnWS/Y86a0XShj5D5M5qNqJvnPPyYCCfvw8Nr4dzvSObL09XqaGHbMmaLKGhtrzGr463sZTLvch2Dc08kt/JlzwIWuFzaOHuy1YX20eA==", "ARC-Authentication-Results": "i=1; lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=bytedance.com;\n dkim=pass (2048-bit key;\n unprotected) header.d=bytedance.com header.i=@bytedance.com\n header.a=rsa-sha256 header.s=google header.b=Aa4NB7kw; dkim-atps=neutral;\n spf=pass (client-ip=2607:f8b0:4864:20::102c; helo=mail-pj1-x102c.google.com;\n envelope-from=songmuchun@bytedance.com;\n receiver=lists.ozlabs.org) smtp.mailfrom=bytedance.com", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=bytedance.com; s=google; t=1775393836; x=1775998636;\n darn=lists.ozlabs.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=dhCvzWzEYwqtXTRdhJr7F88/ilDc9KP9wceAmsw7dyk=;\n b=Aa4NB7kwIxJkBZ1LzIpYH+qYbuXtLJiFVIQYRU/Ybj34k24eQzX6Z1U6T7uEBMqe8w\n KqAnZZVol50AdYNGwmqRcSSFji5zyHDt8h7QSiwSqgJcM7hRtJZbjXZ2fa2UyTKcEtZS\n MW+9MaZG++ruHCLsS4aQpRNYEe30JkEogx2KKpGTUUtej6Blkzwa18mDPZS+k1oyms9B\n dKeWPIsNPxQvTBFXh+ZYhErvxKCjcwC4BEPxOGLROemEIh9v1hAERD/RWAQJjTSpKCx+\n REU6o7H0+X6yEYLjRMgcY/qfu+EdpY8IqK0VKK0Wwhd6HGnmvw34SMXv8z/iqoZ7xA+z\n Q0cg==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775393836; x=1775998636;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=dhCvzWzEYwqtXTRdhJr7F88/ilDc9KP9wceAmsw7dyk=;\n b=B64c1qr/IOIoEv33mpgnmFWA8Ju11MweC2U9ajZ5G8s05p2eGEwWzrja7eeJY4ktFs\n cWl4zrpTFk9XwCI5W5NU8hyG80Je62qLntnp/D5VsVEnTvXoTLl90eVJV/vnxmBGwKKk\n IPJhdorHWCgfPg0MaTMNODkTo5LjKrPKFHpwIiStkwNgPThpawetydQnARrBKNr0c9j7\n OOjqELloRn7i61irm2RztmVvwym87qR0loc6k2LOPNO9nsWU0BoASk5AgZzmLxUZ9PKt\n JusUWcJ96lm3bJmmWJV3vvDazzo6GiFkV7eIN8lyEeaQDK1gjaczBGitjR+sJU5FBpBy\n 8IIg==", "X-Forwarded-Encrypted": "i=1;\n AJvYcCVKp2llQj7JFGVW1Le+4nKNYSwkEAUxIU92JhJm9hiHz2iAGSNlntZ6D3E6A/VJuhMiiz80r3YVQXtgL8E=@lists.ozlabs.org", "X-Gm-Message-State": "AOJu0Yzjpl5WjSRkamLvHED03m72ZTC9OqUF0sru1WulPNZimSi5GsvV\n\tNCErPtxNqYyP9deimF0F79FytX6a+Vq61gUbinDUhMx/I3Pne3jaGsjwKddZwVZ/PBg=", "X-Gm-Gg": "AeBDieudWFMdVzye3mO95wzYHNK05PnycSZY/WZJTXcx122nNn7BMInkHT2UK3Uz2CX\n\tn3dT2SU2RFxlhjtRhmmpJtBPr7wKA+YUIXqSI8RSqb+idjVSgrTWAYe4NV5WHm5H8eGlsh1XbNF\n\tBQnGbH7+qAaTpu72pMdi2zbzAT8IuOnemNK5PeZ/TAJYkASVSDnOtrVL6QczrYc0nimWekq9nSm\n\txyxl+2JuX/bJgbXZYTLiz5c1rMK8M6VUMloK0AZii1Q7u3mX7hWVPFCTlp9tsfJvXzCpYVY+c9v\n\tpgExqwNj6n3pczOr62dB5bPWYD3FptdMdCxDFAuRkkAFOPzt/9rcbAROzR1lGsYRXnl6lzb+S0R\n\tm4YzO70hOyS03vVLDp1BRoJDVct0HvrEiLqSuEV4HBW+r5ahKa9zcVj8+3QYqHr+5tA0QfkuoHJ\n\toz5M+v1mygMDHgBKSQyxO2OvD6XHvLVERQp1pDo6quaRI=", "X-Received": "by 2002:a17:90b:3f4d:b0:35d:9482:2233 with SMTP id\n 98e67ed59e1d1-35de69a66e1mr8904624a91.24.1775393835707;\n Sun, 05 Apr 2026 05:57:15 -0700 (PDT)", "From": "Muchun Song <songmuchun@bytedance.com>", "To": "Andrew Morton <akpm@linux-foundation.org>,\n\tDavid Hildenbrand <david@kernel.org>,\n\tMuchun Song <muchun.song@linux.dev>,\n\tOscar Salvador <osalvador@suse.de>,\n\tMichael Ellerman <mpe@ellerman.id.au>,\n\tMadhavan Srinivasan <maddy@linux.ibm.com>", "Cc": "Lorenzo Stoakes <ljs@kernel.org>,\n\t\"Liam R . Howlett\" <Liam.Howlett@oracle.com>,\n\tVlastimil Babka <vbabka@kernel.org>,\n\tMike Rapoport <rppt@kernel.org>,\n\tSuren Baghdasaryan <surenb@google.com>,\n\tMichal Hocko <mhocko@suse.com>,\n\tNicholas Piggin <npiggin@gmail.com>,\n\tChristophe Leroy <chleroy@kernel.org>,\n\taneesh.kumar@linux.ibm.com,\n\tjoao.m.martins@oracle.com,\n\tlinux-mm@kvack.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\tlinux-kernel@vger.kernel.org,\n\tMuchun Song <songmuchun@bytedance.com>", "Subject": "[PATCH 36/49] powerpc/mm: use generic vmemmap_shared_tail_page() in\n compound vmemmap", "Date": "Sun, 5 Apr 2026 20:52:27 +0800", "Message-Id": "<20260405125240.2558577-37-songmuchun@bytedance.com>", "X-Mailer": "git-send-email 2.20.1", "In-Reply-To": "<20260405125240.2558577-1-songmuchun@bytedance.com>", "References": "<20260405125240.2558577-1-songmuchun@bytedance.com>", "X-Mailing-List": "linuxppc-dev@lists.ozlabs.org", "List-Id": "<linuxppc-dev.lists.ozlabs.org>", "List-Help": "<mailto:linuxppc-dev+help@lists.ozlabs.org>", "List-Owner": "<mailto:linuxppc-dev+owner@lists.ozlabs.org>", "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>", "List-Archive": "<https://lore.kernel.org/linuxppc-dev/>,\n <https://lists.ozlabs.org/pipermail/linuxppc-dev/>", "List-Subscribe": "<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>", "List-Unsubscribe": "<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>", "Precedence": "list", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Spam-Status": "No, score=-0.2 required=3.0 tests=DKIM_SIGNED,DKIM_VALID,\n\tDKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS\n\tautolearn=disabled version=4.0.1 OzLabs 8", "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org" }, "content": "The ultimate goal is to unify the vmemmap optimization logic for both\nDAX and HugeTLB. To achieve this, all platforms need to align with the\nstandard HugeTLB approach of using vmemmap_shared_tail_page() for tail\npage mappings.\n\nThis patch updates PowerPC to utilize vmemmap_shared_tail_page() to\nretrieve the pre-allocated and initialized shared tail page, instead of\ndynamically looking up and constructing the tail page mapping via\nvmemmap_compound_tail_page().\n\nAs a byproduct of this alignment, it greatly simplifies the vmemmap\ncompound page mapping logic in radix_pgtable by removing\nvmemmap_compound_tail_page() entirely.\n\nSigned-off-by: Muchun Song <songmuchun@bytedance.com>\n---\n arch/powerpc/mm/book3s64/radix_pgtable.c | 81 +++---------------------\n 1 file changed, 9 insertions(+), 72 deletions(-)", "diff": "diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c\nindex ad44883b1030..5ce3deb464d5 100644\n--- a/arch/powerpc/mm/book3s64/radix_pgtable.c\n+++ b/arch/powerpc/mm/book3s64/radix_pgtable.c\n@@ -1256,59 +1256,6 @@ static pte_t * __meminit radix__vmemmap_populate_address(unsigned long addr, int\n \treturn pte;\n }\n \n-static pte_t * __meminit vmemmap_compound_tail_page(unsigned long addr,\n-\t\t\t\t\t\t unsigned long pfn_offset, int node)\n-{\n-\tpgd_t *pgd;\n-\tp4d_t *p4d;\n-\tpud_t *pud;\n-\tpmd_t *pmd;\n-\tpte_t *pte;\n-\tunsigned long map_addr;\n-\n-\t/* the second vmemmap page which we use for duplication */\n-\tmap_addr = addr - pfn_offset * sizeof(struct page) + PAGE_SIZE;\n-\tpgd = pgd_offset_k(map_addr);\n-\tp4d = p4d_offset(pgd, map_addr);\n-\tpud = vmemmap_pud_alloc(p4d, node, map_addr);\n-\tif (!pud)\n-\t\treturn NULL;\n-\tpmd = vmemmap_pmd_alloc(pud, node, map_addr);\n-\tif (!pmd)\n-\t\treturn NULL;\n-\tif (pmd_leaf(*pmd))\n-\t\t/*\n-\t\t * The second page is mapped as a hugepage due to a nearby request.\n-\t\t * Force our mapping to page size without deduplication\n-\t\t */\n-\t\treturn NULL;\n-\tpte = vmemmap_pte_alloc(pmd, node, map_addr);\n-\tif (!pte)\n-\t\treturn NULL;\n-\t/*\n-\t * Check if there exist a mapping to the left\n-\t */\n-\tif (pte_none(*pte)) {\n-\t\t/*\n-\t\t * Populate the head page vmemmap page.\n-\t\t * It can fall in different pmd, hence\n-\t\t * vmemmap_populate_address()\n-\t\t */\n-\t\tpte = radix__vmemmap_populate_address(map_addr - PAGE_SIZE, node, NULL, NULL);\n-\t\tif (!pte)\n-\t\t\treturn NULL;\n-\t\t/*\n-\t\t * Populate the tail pages vmemmap page\n-\t\t */\n-\t\tpte = radix__vmemmap_pte_populate(pmd, map_addr, node, NULL, NULL);\n-\t\tif (!pte)\n-\t\t\treturn NULL;\n-\t\tvmemmap_verify(pte, node, map_addr, map_addr + PAGE_SIZE);\n-\t\treturn pte;\n-\t}\n-\treturn pte;\n-}\n-\n static int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,\n \t\t\t\t\t\t unsigned long start,\n \t\t\t\t\t\t unsigned long end, int node,\n@@ -1327,6 +1274,13 @@ static int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,\n \tpud_t *pud;\n \tpmd_t *pmd;\n \tpte_t *pte;\n+\tconst struct mem_section *ms = __pfn_to_section(start_pfn);\n+\tstruct page *tail_page;\n+\n+\ttail_page = vmemmap_shared_tail_page(section_order(ms),\n+\t\t\t\t\t &NODE_DATA(node)->node_zones[section_zone(ms)]);\n+\tif (!tail_page)\n+\t\treturn -ENOMEM;\n \n \tfor (addr = start; addr < end; addr = next) {\n \n@@ -1358,9 +1312,8 @@ static int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,\n \t\t\tnext = addr + PAGE_SIZE;\n \t\t\tcontinue;\n \t\t} else {\n-\t\t\tunsigned long nr_pages = pgmap_vmemmap_nr(pgmap);\n+\t\t\tunsigned long nr_pages = 1L << section_order(ms);\n \t\t\tunsigned long pfn_offset = addr_pfn - ALIGN_DOWN(addr_pfn, nr_pages);\n-\t\t\tpte_t *tail_page_pte;\n \n \t\t\t/*\n \t\t\t * if the address is aligned to huge page size it is the\n@@ -1386,24 +1339,8 @@ static int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,\n \t\t\t\tnext = addr + 2 * PAGE_SIZE;\n \t\t\t\tcontinue;\n \t\t\t}\n-\t\t\t/*\n-\t\t\t * get the 2nd mapping details\n-\t\t\t * Also create it if that doesn't exist\n-\t\t\t */\n-\t\t\ttail_page_pte = vmemmap_compound_tail_page(addr, pfn_offset, node);\n-\t\t\tif (!tail_page_pte) {\n-\n-\t\t\t\tpte = radix__vmemmap_pte_populate(pmd, addr, node, NULL, NULL);\n-\t\t\t\tif (!pte)\n-\t\t\t\t\treturn -ENOMEM;\n-\t\t\t\tvmemmap_verify(pte, node, addr, addr + PAGE_SIZE);\n-\n-\t\t\t\taddr_pfn += 1;\n-\t\t\t\tnext = addr + PAGE_SIZE;\n-\t\t\t\tcontinue;\n-\t\t\t}\n \n-\t\t\tpte = radix__vmemmap_pte_populate(pmd, addr, node, NULL, pte_page(*tail_page_pte));\n+\t\t\tpte = radix__vmemmap_pte_populate(pmd, addr, node, NULL, tail_page);\n \t\t\tif (!pte)\n \t\t\t\treturn -ENOMEM;\n \t\t\tvmemmap_verify(pte, node, addr, addr + PAGE_SIZE);\n", "prefixes": [ "36/49" ] }