Show a cover letter.

GET /api/1.2/covers/2219925/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2219925,
    "url": "http://patchwork.ozlabs.org/api/1.2/covers/2219925/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/cover/20260405125240.2558577-1-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-1-songmuchun@bytedance.com>",
    "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260405125240.2558577-1-songmuchun@bytedance.com/",
    "date": "2026-04-05T12:51:51",
    "name": "[00/49] mm: Generalize vmemmap optimization for DAX and HugeTLB",
    "submitter": {
        "id": 78930,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/78930/?format=api",
        "name": "Muchun Song",
        "email": "songmuchun@bytedance.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/cover/20260405125240.2558577-1-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/covers/2219925/comments/",
    "headers": {
        "Return-Path": "\n <linuxppc-dev+bounces-19330-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=NTePTrAR;\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-19330-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::1030\"",
            "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=NTePTrAR;\n\tdkim-atps=neutral",
            "lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=bytedance.com\n (client-ip=2607:f8b0:4864:20::1030; helo=mail-pj1-x1030.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 4fpXSp0Vjqz1yCs\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 05 Apr 2026 22:53:29 +1000 (AEST)",
            "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fpXSn0R2wz2yjs;\n\tSun, 05 Apr 2026 22:53:29 +1000 (AEST)",
            "from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com\n [IPv6:2607:f8b0:4864:20::1030])\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 4fpXSk5blrz2xMY\n\tfor <linuxppc-dev@lists.ozlabs.org>; Sun, 05 Apr 2026 22:53:23 +1000 (AEST)",
            "by mail-pj1-x1030.google.com with SMTP id\n 98e67ed59e1d1-35d99031e4eso1813051a91.1\n        for <linuxppc-dev@lists.ozlabs.org>;\n Sun, 05 Apr 2026 05:53:23 -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.53.15\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Sun, 05 Apr 2026 05:53:21 -0700 (PDT)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1775393608;\n\tcv=none;\n b=BmUyxkFeW2X871hg3bbPauBipnO4XaeXQVYU09TgWHA77zoZa7v4DY2j/EEUYanHiEvP2FsL7SxBbQL025WrfEsdliOkxfjXch+H6EXnNTx5NusHa/VE/faTITEHeffsRGS+Fb4RntiGqnDYTxqGCku3+Gz3uIiHWB/aP9NzDZ+O+VObPE5WhtxGArr7kImUcD+7Rdqn47WhZbjRGf4NkuRPWQGtNy00ev7hNxUHZOr+DQPNAal6SflGHUZAE9+E+7nfrBpIoMSno7DjhpsAKjGhQXhyoBmXcNyl2rWvwou/uV/aVIYimrUkFBahiJuO0Yvht6UoL8ZR7bUl+K1VkA==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1775393608; c=relaxed/relaxed;\n\tbh=vIYRrJ1FD8xk10dmqDqll/GEWBWA7JriVZCvyhEOAJE=;\n\th=From:To:Cc:Subject:Date:Message-Id:MIME-Version;\n b=iq0R5OHbuQfFthWAVQYsQLi5GenWLXZ572vOt+lg3YUs8LAlVvyCYQaehe6BiFRexjP39KeUYMIjq+jXaY298PpIxJn0qwUCGz5ZiTblGZvOx54t4+e4ptFVln1UPiGTTFYKFG0edGItvk4HLm20O6B1b6hy4tAYvx1BUjvoJyUCeZpRYR5WkhYN6ZorRwoXSbi/o5Yb7kXtTQEsHkCvjVCGfGT+yjuFcsxRMcMeX6q4xUt9aoEs+n8sGpPrEP76bJ40BOknXkyxeEwhIuPv0J05tTutT0b8qKJFpKOBrlv2U5TgtvBewSKdV7TRG1e+26Ew5GAhhrVs3ty6tUyZ3Q==",
        "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=NTePTrAR; dkim-atps=neutral;\n spf=pass (client-ip=2607:f8b0:4864:20::1030; helo=mail-pj1-x1030.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=1775393602; x=1775998402;\n darn=lists.ozlabs.org;\n        h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n         :to:from:from:to:cc:subject:date:message-id:reply-to;\n        bh=vIYRrJ1FD8xk10dmqDqll/GEWBWA7JriVZCvyhEOAJE=;\n        b=NTePTrARQ+mCNPs/p2PXVdnlYyfEEowgpBkBcjPOwaQtS7BevWtH0ye5foaugpIVu7\n         vkdYqMZNWSwnLLOhrMKfZbGtLTMO3lCL3p4OUnffEyl8e+W98UecA5grSiMKRaH/8m4Y\n         y/oqCaTNWwnMy3ouU30hkReLB8Da5cQg8vItGS0B2u9pkeqjepg27pttX6m0Pu9ahmQa\n         M5FIgtJAPUPo0327VOLig8mIoIVUDkCcWM32mZ20lWAMCHUkS/F1OFiDkDJbETOxVelP\n         7kls81WqnvBpb0RPNkc7Dt5P0VQDCSlP7Z0PZW24Fjr4UioNcmi/7EWMMV+8Iu8XpG5R\n         peHw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1775393602; x=1775998402;\n        h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=vIYRrJ1FD8xk10dmqDqll/GEWBWA7JriVZCvyhEOAJE=;\n        b=LFmtDnf1iQLKIr6suaFHz4OzCib6VKr3/D+rbjq0lkawJWt311W0RMPEY/S3l6Gz8U\n         eWudNcRh0iqtnV0MfoV9fod9nkuGxj08ZekEBjRlj5IvGSOkWhK9IjuIdXqUbJ1LdMfN\n         X28LG6TbAUMhNZCHwveWamiOsfW1NoZyYk/ai8/i27wdf/BK/C/VAaTh6WERPToxRfmp\n         Cs409q44oz64Wf9w16yL3vD79kWFyJYeevniXBo2CJNvLqeB542nDGJKP1nlKc6AwfWV\n         fVXzEmzR7ffGKPIu2X5MZYzgQlBMSWotENUPq4G2xJO+VA+66mhMXvS10hOYTP20Uw6/\n         u9Pg==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCXl8BbqWMMJUmVZMvq5gN9W/q7oxVoOSi+80TMYXah2yPJ1rCNWhpDgSW+qFE2dMi8I3zfLhikH3SbF82g=@lists.ozlabs.org",
        "X-Gm-Message-State": "AOJu0Ywt5mL59rETwE55AeQ2rUuOAlqoJIHN69rbilWs/iNM6hwHD02p\n\tgf36buKQPmlE/hM4Sj4JxfI/fNli+JaWSE7QnLBCpSD85QxD/hyz+QIwkX98f8Vtx6U=",
        "X-Gm-Gg": "AeBDietj4cLtENlN9YEdAMGOf5abVuHEE6V3hfQsYeI3vcGKB1YXH09r5NFYFMCvlJX\n\tWEwwgeweaCAvkCKUNoDAoNXqRo7tEYSA3t7JPxBCQGRqFV49AxQGWu5wKpQ7FA5rN1aL+Xml2v2\n\tTITrhCv1yD/cbbkv8puK2UR8h1j0y9U5ZUqUeZRA1DLiKeADkcFV3mKyVAV4BbEHXuzZmdssOj+\n\tHL8Ms1BT9nxVFRJs43xsLVbHoLeWBy9BLvV5fLhxXe9w7qrbkZ2TaglDUH/TaM1nneOU/64mE29\n\teMB5wKs+azYOp5dZ8ZlbFUhGVC4dcRCai5U1JEm1CfkoBKK/zutHmVJ04H8Ya0z9ZpSzbt1x2jq\n\ts6t+1wLLqRt4Uu4WWeL1xKtEhg6oQLR6onJEX0qtt/YA7zI7ics2rRK+64gJSW3+eCYJqiLc065\n\tOmA4+sY2HgJwVoxTvn/Fbad9soay/plj4MpM7gaqRZCYO+HjVR5SzNAQ==",
        "X-Received": "by 2002:a17:90b:1e0f:b0:35b:e4f8:7cb0 with SMTP id\n 98e67ed59e1d1-35de691ad72mr8772276a91.21.1775393601639;\n        Sun, 05 Apr 2026 05:53:21 -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 00/49] mm: Generalize vmemmap optimization for DAX and HugeTLB",
        "Date": "Sun,  5 Apr 2026 20:51:51 +0800",
        "Message-Id": "<20260405125240.2558577-1-songmuchun@bytedance.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "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": "Overview:\nThis patch series generalizes the HugeTLB Vmemmap Optimization (HVO)\ninto a generic vmemmap optimization framework that can be used by both\nHugeTLB and DAX.\n\nBackground:\nCurrently, the vmemmap optimization feature is highly coupled with\nHugeTLB. However, DAX also has similar requirements for optimizing vmemmap\npages to save memory. The current implementation has separate vmemmap\noptimization paths for HugeTLB and DAX, leading to duplicated logic,\ncomplex initialization sequences, and architecture-specific flags.\n\nImplementation:\nThis series breaks down the optimization into a generic framework:\n- Patch 1-6: Fix bugs related to sparse vmemmap initialization and DAX.\n- Patch 7-13: Refactor the existing sparse vmemmap initialization.\n- Patch 14-26: Decouple the vmemmap optimization from HugeTLB and\n  introduce generic optimization macros and functions.\n- Patch 27-39: Switch HugeTLB and DAX to use the generic framework.\n- Patch 40-49: Clean up the old HVO-specific code and simplify it.\n\nBenifit:\n- When CONFIG_DEFERRED_STRUCT_PAGE_INIT is disabled, all struct pages\n  utilizing HVO (HugeTLB Vmemmap Optimization) skip initialization in\n  memmap_init, significantly accelerating boot times.\n- All architectures supporting HVO benefit from the optimizations \n  provided by SPARSEMEM_VMEMMAP_PREINIT without requiring \n  architecture-specific adaptations.\n- Device DAX struct page savings are further improved, saving an \n  additional 4KB of struct page memory for every 2MB huge page.\n- Vmemmap tail pages used for Device DAX shared mappings are changed \n  from read-write to read-only, enhancing system security.\n- HugeTLB and Device DAX now share a unified vmemmap optimization \n  framework, reducing long-term maintenance overhead.\n\nTesting:\n- Verification: Compiled and tested on x86 architecture.\n\n\nChengkaitao (1):\n  mm: Convert vmemmap_p?d_populate() to static functions\n\nMuchun Song (48):\n  mm/sparse: fix vmemmap accounting imbalance on memory hotplug error\n  mm/sparse: add a @pgmap argument to memory deactivation paths\n  mm/sparse: fix vmemmap page accounting for HVOed DAX\n  mm/sparse: add a @pgmap parameter to arch vmemmap_populate()\n  mm/sparse: fix missing architecture-specific page table sync for HVO\n    DAX\n  mm/mm_init: fix uninitialized pageblock migratetype for ZONE_DEVICE\n    compound pages\n  mm/mm_init: use pageblock_migratetype_init_range() in\n    deferred_free_pages()\n  mm: panic on memory allocation failure in sparse_init_nid()\n  mm: move subsection_map_init() into sparse_init()\n  mm: defer sparse_init() until after zone initialization\n  mm: make set_pageblock_order() static\n  mm: integrate sparse_vmemmap_init_nid_late() into sparse_init_nid()\n  mm/cma: validate hugetlb CMA range by zone at reserve time\n  mm/hugetlb: free cross-zone bootmem gigantic pages after allocation\n  mm/hugetlb: initialize vmemmap optimization in early stage\n  mm: remove sparse_vmemmap_init_nid_late()\n  mm/mm_init: make __init_page_from_nid() static\n  mm/sparse-vmemmap: remove the VMEMMAP_POPULATE_PAGEREF flag\n  mm: rename vmemmap optimization macros to generic names\n  mm/sparse: drop power-of-2 size requirement for struct mem_section\n  mm/sparse: introduce compound page order to mem_section\n  mm/mm_init: skip initializing shared tail pages for compound pages\n  mm/sparse-vmemmap: initialize shared tail vmemmap page upon allocation\n  mm/sparse-vmemmap: support vmemmap-optimizable compound page\n    population\n  mm/hugetlb: use generic vmemmap optimization macros\n  mm: call memblocks_present() before HugeTLB initialization\n  mm/hugetlb: switch HugeTLB to use generic vmemmap optimization\n  mm: extract pfn_to_zone() helper\n  mm/sparse-vmemmap: remove unused SPARSEMEM_VMEMMAP_PREINIT feature\n  mm/hugetlb: remove HUGE_BOOTMEM_HVO flag and simplify pre-HVO logic\n  mm/sparse-vmemmap: consolidate shared tail page allocation\n  mm: introduce CONFIG_SPARSEMEM_VMEMMAP_OPTIMIZATION\n  mm/sparse-vmemmap: switch DAX to use generic vmemmap optimization\n  mm/sparse-vmemmap: introduce section zone to struct mem_section\n  powerpc/mm: use generic vmemmap_shared_tail_page() in compound vmemmap\n  mm/sparse-vmemmap: unify DAX and HugeTLB vmemmap optimization\n  mm/sparse-vmemmap: remap the shared tail pages as read-only\n  mm/sparse-vmemmap: remove unused ptpfn argument\n  mm/hugetlb_vmemmap: remove vmemmap_wrprotect_hvo() and related code\n  mm/sparse: simplify section_vmemmap_pages()\n  mm/sparse-vmemmap: introduce section_vmemmap_page_structs()\n  powerpc/mm: rely on generic vmemmap_can_optimize() to simplify code\n  mm/sparse-vmemmap: drop ARCH_WANT_OPTIMIZE_DAX_VMEMMAP and simplify\n    checks\n  mm/sparse-vmemmap: drop @pgmap parameter from vmemmap populate APIs\n  mm/sparse: replace pgmap with order and zone in sparse_add_section()\n  mm: redefine HVO as Hugepage Vmemmap Optimization\n  Documentation/mm: restructure vmemmap_dedup.rst to reflect generalized\n    HVO\n  mm: consolidate struct page power-of-2 size checks for HVO\n\n .../admin-guide/kernel-parameters.txt         |   2 +-\n Documentation/admin-guide/sysctl/vm.rst       |   2 +-\n Documentation/mm/vmemmap_dedup.rst            | 218 ++--------\n arch/powerpc/Kconfig                          |   1 -\n arch/powerpc/include/asm/book3s/64/radix.h    |  12 -\n arch/powerpc/mm/book3s64/radix_pgtable.c      | 114 +----\n arch/powerpc/mm/init_64.c                     |   1 +\n arch/riscv/Kconfig                            |   1 -\n arch/x86/Kconfig                              |   2 -\n fs/Kconfig                                    |   6 +-\n include/linux/hugetlb.h                       |   7 +-\n include/linux/memory_hotplug.h                |   2 +-\n include/linux/mm.h                            |  50 +--\n include/linux/mm_types.h                      |   2 +\n include/linux/mm_types_task.h                 |   4 +\n include/linux/mmzone.h                        | 143 ++++---\n include/linux/page-flags.h                    |  31 +-\n kernel/bounds.c                               |   2 +\n mm/Kconfig                                    |  20 +-\n mm/bootmem_info.c                             |   5 +-\n mm/cma.c                                      |   3 +-\n mm/hugetlb.c                                  | 143 +++----\n mm/hugetlb_cma.c                              |   3 +-\n mm/hugetlb_vmemmap.c                          | 237 +----------\n mm/hugetlb_vmemmap.h                          |  35 +-\n mm/internal.h                                 |  26 +-\n mm/memory_hotplug.c                           |  15 +-\n mm/mm_init.c                                  | 138 +++---\n mm/sparse-vmemmap.c                           | 392 +++++-------------\n mm/sparse.c                                   |  85 ++--\n mm/util.c                                     |   2 +-\n scripts/gdb/linux/mm.py                       |   6 +-\n 32 files changed, 513 insertions(+), 1197 deletions(-)"
}