get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2215677/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2215677,
    "url": "http://patchwork.ozlabs.org/api/patches/2215677/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260325025904.2811960-7-ruanjinjie@huawei.com/",
    "project": {
        "id": 2,
        "url": "http://patchwork.ozlabs.org/api/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": "<20260325025904.2811960-7-ruanjinjie@huawei.com>",
    "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260325025904.2811960-7-ruanjinjie@huawei.com/",
    "date": "2026-03-25T02:59:02",
    "name": "[v10,6/8] arm64: kexec: Add support for crashkernel CMA reservation",
    "commit_ref": null,
    "pull_url": null,
    "state": "handled-elsewhere",
    "archived": false,
    "hash": "c665d9da5c01aa3bfc793d9595fcdfb6cbe56764",
    "submitter": {
        "id": 84791,
        "url": "http://patchwork.ozlabs.org/api/people/84791/?format=api",
        "name": "Jinjie Ruan",
        "email": "ruanjinjie@huawei.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260325025904.2811960-7-ruanjinjie@huawei.com/mbox/",
    "series": [
        {
            "id": 497378,
            "url": "http://patchwork.ozlabs.org/api/series/497378/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=497378",
            "date": "2026-03-25T02:58:56",
            "name": "[v10,1/8] riscv: kexec_file: Fix crashk_low_res not exclude bug",
            "version": 10,
            "mbox": "http://patchwork.ozlabs.org/series/497378/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2215677/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2215677/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linuxppc-dev+bounces-18755-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 (1024-bit key;\n unprotected) header.d=huawei.com header.i=@huawei.com header.a=rsa-sha256\n header.s=dkim header.b=vuDTFtJI;\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-18755-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)",
            "lists.ozlabs.org;\n arc=none smtp.remote-ip=113.46.200.227",
            "lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=huawei.com",
            "lists.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=huawei.com header.i=@huawei.com header.a=rsa-sha256\n header.s=dkim header.b=vuDTFtJI;\n\tdkim-atps=neutral",
            "lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=huawei.com\n (client-ip=113.46.200.227; helo=canpmsgout12.his.huawei.com;\n envelope-from=ruanjinjie@huawei.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 4fgWnB68pLz1y1G\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 13:58:22 +1100 (AEDT)",
            "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fgWmW0w9Tz2yqs;\n\tWed, 25 Mar 2026 13:57:47 +1100 (AEDT)",
            "from canpmsgout12.his.huawei.com (canpmsgout12.his.huawei.com\n [113.46.200.227])\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 lists.ozlabs.org (Postfix) with ESMTPS id 4fgWmT6mW5z2yqq\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 25 Mar 2026 13:57:45 +1100 (AEDT)",
            "from mail.maildlp.com (unknown [172.19.162.92])\n\tby canpmsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4fgWf72074znTWd;\n\tWed, 25 Mar 2026 10:52:15 +0800 (CST)",
            "from dggpemf500011.china.huawei.com (unknown [7.185.36.131])\n\tby mail.maildlp.com (Postfix) with ESMTPS id 16CDB40565;\n\tWed, 25 Mar 2026 10:57:43 +0800 (CST)",
            "from huawei.com (10.90.53.73) by dggpemf500011.china.huawei.com\n (7.185.36.131) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Wed, 25 Mar\n 2026 10:57:39 +0800"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1774407467;\n\tcv=none;\n b=k1mZ1JvXEn0726uOX49/Pk4+vJylZWFvx5xPGUyMnp5hEXIhLXRgwg+8f3QvX3ZDjoSkGBKIPT3qwrnfYkN4Qaqv+V0IYQjFFua3Ervb1oDELK5QOw8pFJPUJAp2vujc1y3AUAp5oDXQWR8Rk/zz40mardFZ5LUtYt6bpzcK4HmMrrhSgpoNv4ZjTcTDN+SV3XUqTTVk3/8eIRm/Scm+HI57t7DC/RknmCae1Dn1OwJSF2NIZjSqOmbakV4xTTSPvdIQOriDNNBwNxjLfPBEbcU4DQfzUJV7+sDFMToJRKRr/PbRaYw7/mRLlfco0vPcYq737EZyIflErtw8yXWvxQ==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1774407467; c=relaxed/relaxed;\n\tbh=AOVYfpfg79yD7eFn4CZ9+BNhSBjLdVbtAdmSv2LXRjg=;\n\th=From:To:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=fiwpARaG8iscVT1tityc9V3gI+Y5SUvKLCEl1JjmduQ/nu3jUiPlCzsDA2nkCrxyXP9E+CTDnxNhL9Uo31DTqwSe9NXqyGrorTrxlD3pXuGRF8RuE3cm6I9VR9Yx6CtUcrvjvU6kXbZ9Ige1WS5jPjWuuObWQQLOOln1ksaE8HpFPMr9U2Ak6767LseoR3lr+5R42WsxHizidXYwE9R8QgahBfbPa0pvfaY3J/hofuVThilGztoOlEGgeNk1L7w3nZ5RigMjYjhhY2xFT7JAFrBbhkc9I3KI8Kseak5Hgnmm2r3Fblmk85xoouwgItCZc0B7K8RbIMSOteBECVapyA==",
        "ARC-Authentication-Results": "i=1; lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=huawei.com;\n dkim=pass (1024-bit key;\n unprotected) header.d=huawei.com header.i=@huawei.com header.a=rsa-sha256\n header.s=dkim header.b=vuDTFtJI; dkim-atps=neutral;\n spf=pass (client-ip=113.46.200.227; helo=canpmsgout12.his.huawei.com;\n envelope-from=ruanjinjie@huawei.com;\n receiver=lists.ozlabs.org) smtp.mailfrom=huawei.com",
        "dkim-signature": "v=1; a=rsa-sha256; d=huawei.com; s=dkim;\n\tc=relaxed/relaxed; q=dns/txt;\n\th=From;\n\tbh=AOVYfpfg79yD7eFn4CZ9+BNhSBjLdVbtAdmSv2LXRjg=;\n\tb=vuDTFtJIXlWi3WQM2PetFjfxW+SnD7MBA2PxvSdlatPhSOtT4gx1oqMa4NOtQZuws+JbJ1ZyC\n\tFm/mjPn8ztEHvKsUG0OBHWrhyCwVn5lMss21RWhOewdNhpZm429kOdv0hEv9v6goginDjZIvENq\n\tvzFeYjGnhNXtq6oWpCAjFpE=",
        "From": "Jinjie Ruan <ruanjinjie@huawei.com>",
        "To": "<corbet@lwn.net>, <skhan@linuxfoundation.org>, <catalin.marinas@arm.com>,\n\t<will@kernel.org>, <chenhuacai@kernel.org>, <kernel@xen0n.name>,\n\t<maddy@linux.ibm.com>, <mpe@ellerman.id.au>, <npiggin@gmail.com>,\n\t<chleroy@kernel.org>, <pjw@kernel.org>, <palmer@dabbelt.com>,\n\t<aou@eecs.berkeley.edu>, <alex@ghiti.fr>, <tglx@kernel.org>,\n\t<mingo@redhat.com>, <bp@alien8.de>, <dave.hansen@linux.intel.com>,\n\t<hpa@zytor.com>, <robh@kernel.org>, <saravanak@kernel.org>,\n\t<akpm@linux-foundation.org>, <bhe@redhat.com>, <vgoyal@redhat.com>,\n\t<dyoung@redhat.com>, <rdunlap@infradead.org>, <peterz@infradead.org>,\n\t<pawan.kumar.gupta@linux.intel.com>, <feng.tang@linux.alibaba.com>,\n\t<dapeng1.mi@linux.intel.com>, <kees@kernel.org>, <elver@google.com>,\n\t<paulmck@kernel.org>, <lirongqing@baidu.com>, <ruanjinjie@huawei.com>,\n\t<rppt@kernel.org>, <ardb@kernel.org>, <leitao@debian.org>, <osandov@fb.com>,\n\t<cfsworks@gmail.com>, <tangyouling@kylinos.cn>, <sourabhjain@linux.ibm.com>,\n\t<ritesh.list@gmail.com>, <eajames@linux.ibm.com>,\n\t<songshuaishuai@tinylab.org>, <kevin.brodsky@arm.com>,\n\t<samuel.holland@sifive.com>, <vishal.moola@gmail.com>,\n\t<junhui.liu@pigmoral.tech>, <coxu@redhat.com>, <liaoyuanhong@vivo.com>,\n\t<jbohac@suse.cz>, <fuqiang.wang@easystack.cn>, <guoren@kernel.org>,\n\t<chenjiahao16@huawei.com>, <hbathini@linux.ibm.com>, <james.morse@arm.com>,\n\t<takahiro.akashi@linaro.org>, <lizhengyu3@huawei.com>, <x86@kernel.org>,\n\t<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,\n\t<linux-arm-kernel@lists.infradead.org>, <loongarch@lists.linux.dev>,\n\t<linuxppc-dev@lists.ozlabs.org>, <linux-riscv@lists.infradead.org>,\n\t<devicetree@vger.kernel.org>, <kexec@lists.infradead.org>",
        "Subject": "[PATCH v10 6/8] arm64: kexec: Add support for crashkernel CMA\n reservation",
        "Date": "Wed, 25 Mar 2026 10:59:02 +0800",
        "Message-ID": "<20260325025904.2811960-7-ruanjinjie@huawei.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260325025904.2811960-1-ruanjinjie@huawei.com>",
        "References": "<20260325025904.2811960-1-ruanjinjie@huawei.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-Type": "text/plain; charset=\"UTF-8\"",
        "Content-Transfer-Encoding": "8bit",
        "X-Originating-IP": "[10.90.53.73]",
        "X-ClientProxiedBy": "kwepems100001.china.huawei.com (7.221.188.238) To\n dggpemf500011.china.huawei.com (7.185.36.131)",
        "X-Spam-Status": "No, score=-0.2 required=3.0 tests=DKIM_SIGNED,DKIM_VALID,\n\tDKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_MSPIKE_H2,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": "Commit 35c18f2933c5 (\"Add a new optional \",cma\" suffix to the\ncrashkernel= command line option\") and commit ab475510e042 (\"kdump:\nimplement reserve_crashkernel_cma\") added CMA support for kdump\ncrashkernel reservation.\n\nCrash kernel memory reservation wastes production resources if too\nlarge, risks kdump failure if too small, and faces allocation difficulties\non fragmented systems due to contiguous block constraints. The new\nCMA-based crashkernel reservation scheme splits the \"large fixed\nreservation\" into a \"small fixed region + large CMA dynamic region\": the\nCMA memory is available to userspace during normal operation to avoid\nwaste, and is reclaimed for kdump upon crash—saving memory while\nimproving reliability.\n\nSo extend crashkernel CMA reservation support to arm64. The following\nchanges are made to enable CMA reservation:\n\n- Parse and obtain the CMA reservation size along with other crashkernel\n  parameters.\n- Call reserve_crashkernel_cma() to allocate the CMA region for kdump.\n- Include the CMA-reserved ranges for kdump kernel to use.\n- Exclude the CMA-reserved ranges from the crash kernel memory to\n  prevent them from being exported through /proc/vmcore, which is already\n  done in the crash core.\n\nUpdate kernel-parameters.txt to document CMA support for crashkernel on\narm64 architecture.\n\nAcked-by: Rob Herring (Arm) <robh@kernel.org>\nAcked-by: Baoquan He <bhe@redhat.com>\nAcked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>\nAcked-by: Ard Biesheuvel <ardb@kernel.org>\nSigned-off-by: Jinjie Ruan <ruanjinjie@huawei.com>\n---\nv7:\n- Correct the inclusion of CMA-reserved ranges for kdump\n  kernel in of/kexec.\nv3:\n- Add Acked-by.\nv2:\n- Free cmem in prepare_elf_headers()\n- Add the mtivation.\n---\n Documentation/admin-guide/kernel-parameters.txt | 2 +-\n arch/arm64/kernel/machine_kexec_file.c          | 2 +-\n arch/arm64/mm/init.c                            | 5 +++--\n drivers/of/fdt.c                                | 9 +++++----\n drivers/of/kexec.c                              | 9 +++++++++\n 5 files changed, 19 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt\nindex cb850e5290c2..afb3112510f7 100644\n--- a/Documentation/admin-guide/kernel-parameters.txt\n+++ b/Documentation/admin-guide/kernel-parameters.txt\n@@ -1121,7 +1121,7 @@ Kernel parameters\n \t\t\tIt will be ignored when crashkernel=X,high is not used\n \t\t\tor memory reserved is below 4G.\n \tcrashkernel=size[KMG],cma\n-\t\t\t[KNL, X86, ppc] Reserve additional crash kernel memory from\n+\t\t\t[KNL, X86, ARM64, PPC] Reserve additional crash kernel memory from\n \t\t\tCMA. This reservation is usable by the first system's\n \t\t\tuserspace memory and kernel movable allocations (memory\n \t\t\tballoon, zswap). Pages allocated from this memory range\ndiff --git a/arch/arm64/kernel/machine_kexec_file.c b/arch/arm64/kernel/machine_kexec_file.c\nindex c338506a580b..cc577d77df00 100644\n--- a/arch/arm64/kernel/machine_kexec_file.c\n+++ b/arch/arm64/kernel/machine_kexec_file.c\n@@ -42,7 +42,7 @@ int arch_kimage_file_post_load_cleanup(struct kimage *image)\n #ifdef CONFIG_CRASH_DUMP\n unsigned int arch_get_system_nr_ranges(void)\n {\n-\tunsigned int nr_ranges = 2; /* for exclusion of crashkernel region */\n+\tunsigned int nr_ranges = 2 + crashk_cma_cnt; /* for exclusion of crashkernel region */\n \tphys_addr_t start, end;\n \tu64 i;\n \ndiff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c\nindex 96711b8578fd..144e30fe9a75 100644\n--- a/arch/arm64/mm/init.c\n+++ b/arch/arm64/mm/init.c\n@@ -96,8 +96,8 @@ phys_addr_t __ro_after_init arm64_dma_phys_limit;\n \n static void __init arch_reserve_crashkernel(void)\n {\n+\tunsigned long long crash_base, crash_size, cma_size = 0;\n \tunsigned long long low_size = 0;\n-\tunsigned long long crash_base, crash_size;\n \tbool high = false;\n \tint ret;\n \n@@ -106,11 +106,12 @@ static void __init arch_reserve_crashkernel(void)\n \n \tret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(),\n \t\t\t\t&crash_size, &crash_base,\n-\t\t\t\t&low_size, NULL, &high);\n+\t\t\t\t&low_size, &cma_size, &high);\n \tif (ret)\n \t\treturn;\n \n \treserve_crashkernel_generic(crash_size, crash_base, low_size, high);\n+\treserve_crashkernel_cma(cma_size);\n }\n \n static phys_addr_t __init max_zone_phys(phys_addr_t zone_limit)\ndiff --git a/drivers/of/fdt.c b/drivers/of/fdt.c\nindex 331646d667b9..037926ed30fb 100644\n--- a/drivers/of/fdt.c\n+++ b/drivers/of/fdt.c\n@@ -871,11 +871,12 @@ static unsigned long chosen_node_offset = -FDT_ERR_NOTFOUND;\n /*\n  * The main usage of linux,usable-memory-range is for crash dump kernel.\n  * Originally, the number of usable-memory regions is one. Now there may\n- * be two regions, low region and high region.\n- * To make compatibility with existing user-space and older kdump, the low\n- * region is always the last range of linux,usable-memory-range if exist.\n+ * be 2 + CRASHKERNEL_CMA_RANGES_MAX regions, low region, high region and\n+ * cma regions. To make compatibility with existing user-space and older\n+ * kdump, the high and low region are always the first two ranges of\n+ * linux,usable-memory-range if exist.\n  */\n-#define MAX_USABLE_RANGES\t\t2\n+#define MAX_USABLE_RANGES\t\t(2 + CRASHKERNEL_CMA_RANGES_MAX)\n \n /**\n  * early_init_dt_check_for_usable_mem_range - Decode usable memory range\ndiff --git a/drivers/of/kexec.c b/drivers/of/kexec.c\nindex c4cf3552c018..57950aae80e7 100644\n--- a/drivers/of/kexec.c\n+++ b/drivers/of/kexec.c\n@@ -439,6 +439,15 @@ void *of_kexec_alloc_and_setup_fdt(const struct kimage *image,\n \t\t\tif (ret)\n \t\t\t\tgoto out;\n \t\t}\n+\n+\t\tfor (int i = 0; i < crashk_cma_cnt; i++) {\n+\t\t\tret = fdt_appendprop_addrrange(fdt, 0, chosen_node,\n+\t\t\t\t\t\"linux,usable-memory-range\",\n+\t\t\t\t\tcrashk_cma_ranges[i].start,\n+\t\t\t\t\tcrashk_cma_ranges[i].end - crashk_cma_ranges[i].start + 1);\n+\t\t\tif (ret)\n+\t\t\t\tgoto out;\n+\t\t}\n #endif\n \t}\n \n",
    "prefixes": [
        "v10",
        "6/8"
    ]
}