From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f1.google.com (mail-pj2-f1.google.com [74.125.227.129]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7538E52BE2F for ; Tue, 22 Sep 2026 08:43:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.129 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066606; cv=none; b=hMzGRXL2QCPnmbws/KR4bXrpDXgaYsCdMedFQmq+p6YYCQ/aCMpDoWoZH+RfPCT5dRN1ZUQ+ELgvB3ymlsK81NsFe9btSchpHbazBxNxApcI10J1LiqNBg+yHVjI8pyAPxMO7L3+aL8IIR6ePVav2Aupun++t3QG2tELXP4At+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066606; c=relaxed/simple; bh=DHg+Xu+RM/RWOTApV60B7AmLnhatRTbyWK/RynXlXLc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aMwFWVQA6GgBszOm9YDc2gZ66AuBXafYSfgPLRXDbO7huF2/GatuPjNoTuh0PfpcRCjmeBHuzR/NMpnbFaqN5JdbIf2eKIhiKDpZVOQVQleRXF1akqM2KvctGzQdliP88f0E/gacymTO30ueUQrHZgBYyneVg84TXpK4ttuI+ok= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QoLsyiCW; arc=none smtp.client-ip=74.125.227.129 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QoLsyiCW" Received: by mail-pj2-f1.google.com with SMTP id 98e67ed59e1d1-398e10200a6so2418324a91.1 for ; Tue, 22 Sep 2026 01:43:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066604; x=1790671404; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=M1ZOEGC6NTnorBW1vtDJTTSNUXHaycEwYALUJLCTDV4=; b=QoLsyiCWMw8Sv83kmyqjvhoUjsJHUXf/QkWg9gVQwUXJ9kiO3I9Xmzj1ynLiB7hgxx fkUvYjoJkcpOm31tQolCZoQXvpl2eN0rhzeBmSd3Q5e7yunUQxMe5VtAzs6ILfEW7WA4 CHiCto2jcm9HIuJDrCOJtCrjPajNxwXew11eq8Ns/B4SRpLfrTnT64N8RzOdC/Dj1dcJ klpP4N+I+NuV8MHv2Jr4V2kfOObop/sT64nvDfHxXG4/+FiROa8VUd/2/SPJ+THuwFTK P9MDSZxnDh4RpEerLwqmlHBL2ai/l4IJWJ454Sp0XWwR8I+6601lRfGh8EVbeNPlKPq/ U+cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066604; x=1790671404; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=M1ZOEGC6NTnorBW1vtDJTTSNUXHaycEwYALUJLCTDV4=; b=zB3YLenCPMcC0KHqTbBDe+y14Q8Hgoxmz/FFlA9FsHdo71qmCmoHkZI8LndcrKmTeu T2LOUiPMdMynu1Lzfn8vMvcd0noELTfo5lX5Ks9EUkBplQAhMEVYInQTu587e8yCY95q h78Sq59gRlgiW15cnYO8GhPPvJ5JPauYYGNlaXOWZRPaFQc5OHR3HLa06MJq49W5EHRx Xw1WVl6V2Zpt2ccJv2Wv9oe/F7wTBSYVADxRXXXKtkDgxO0tFLXo0+FgGHFWgoLWD/u9 LXcSufVo7WPCDoUaocTZRUsuhvu/nmxiZ47m78tIzq4+BToCZCfruyyKyWKqfgZFy7ze zM1A== X-Forwarded-Encrypted: i=1; AKwUvByFAB307eFsqSTueK4Tbh/63ulgI19LFOCcTVfy8IwjqcmRfIZZBPrO5ltU0Q07ZOGC7cskU85f+FXnuGE=@vger.kernel.org X-Gm-Message-State: AFuF++mvWXF8Dqlg4fc6P1+bG92ljbmOxIB0xGRhBIuGCaohBVmxYiLp NvKBNPjDTouyuEd7i6lBZ4uUDltuiI7DRjhqUpPv4cnBJahoHbdWvWFZ X-Gm-Gg: AYBFou107oo2LzfSR8bfUpiAnkYqSxv2iJLVoovIqbyedKuQAfRJgABG7P+UATj5RUG 77cGxjJEiT/Wo+GgftelxL7BNsSeTI9+QAIrryGEx2Ubhi0cJi3oltSs9GkjAcOOeDff97LUBjP lRgRBCitxq7O8kYb5PywKPOAZ+DFsa4KBPpBe60eB/hvQXwUMLh2tw80m/2m2rGaLmjL7prl75M uOcZugf4OLSn/d9SUGBvYx6kN19ClByBw5Pi/hC1oUsPRWazYDA4BTGGOkJwCrFI0xWtJJVCBBS o07zeY87OHsAqKc4J82z8Y3B62R4xkNiYUY3McmrDWig97xQ9xS8YSVmnpOyfx6O3DUs2hWYwAU RUlEj0JTKnXktlaoY1yBIBamBDSYAeGd/hDVGEwM5XeB30P9YpggOKVVS5NUWCTtY/DuV7GO4b/ 28Sdhtv2NQwTsgZbqhmwcQPZojbW3iZTSniVZ+d61d37IE1CghiRwsPkZy8CVK6jBJF4GR1l5rY rL+0Tx9QME= X-Received: by 2002:a17:90b:1d8c:b0:39d:f4fd:8075 with SMTP id 98e67ed59e1d1-3a073182cebmr482494a91.19.1790066603666; Tue, 22 Sep 2026 01:43:23 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.43.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:43:23 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 1/9] riscv: build crash_mem ranges from memblock instead of resource tree Date: Tue, 22 Sep 2026 16:42:48 +0800 Message-ID: <20260922084256.1515554-2-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen Replace walk_system_ram_res() with for_each_mem_range(). A later patch introduces MEMBLOCK_NODUMP in memblock, the reserved-memory regions marked with MEMBLOCK_NODUMP can be excluded from the vmcore by walking memblock. for_each_mem_range() iterates memblock.memory, which is freed after init unless ARCH_KEEP_MEMBLOCK is selected. riscv needs ARCH_KEEP_MEMBLOCK to filter reserved memory from the vmcore, so extend its condition (ACPI || KEXEC) with CRASH_DUMP. arm64 and loongarch already select ARCH_KEEP_MEMBLOCK unconditionally. Signed-off-by: Wandun Chen Tested-by: Meijing Zhao Acked-by: Baoquan He --- arch/riscv/Kconfig | 2 +- arch/riscv/kernel/machine_kexec_file.c | 31 ++++++++++---------------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index a590db7687c8..991657b2465f 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -58,7 +58,7 @@ config RISCV select ARCH_HAS_UBSAN select ARCH_HAS_VDSO_ARCH_DATA select ARCH_HAVE_NMI_SAFE_CMPXCHG - select ARCH_KEEP_MEMBLOCK if ACPI || KEXEC + select ARCH_KEEP_MEMBLOCK if ACPI || KEXEC || CRASH_DUMP select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if 64BIT && MMU select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT diff --git a/arch/riscv/kernel/machine_kexec_file.c b/arch/riscv/kernel/mac= hine_kexec_file.c index 26cd2a8bd0cd..808e872f4063 100644 --- a/arch/riscv/kernel/machine_kexec_file.c +++ b/arch/riscv/kernel/machine_kexec_file.c @@ -37,39 +37,32 @@ int arch_kimage_file_post_load_cleanup(struct kimage *i= mage) } =20 #ifdef CONFIG_CRASH_DUMP -static int get_nr_ram_ranges_callback(struct resource *res, void *arg) -{ - unsigned int *nr_ranges =3D arg; - - (*nr_ranges)++; - return 0; -} - unsigned int arch_get_system_nr_ranges(void) { unsigned int nr_ranges =3D 2 + crashk_cma_cnt; /* For exclusion of crashk= ernel region */ + u64 i; + phys_addr_t start, end; =20 - walk_system_ram_res(0, -1, &nr_ranges, get_nr_ram_ranges_callback); + for_each_mem_range(i, &start, &end) + nr_ranges++; =20 return nr_ranges; } =20 -static int prepare_elf64_ram_headers_callback(struct resource *res, void *= arg) +int arch_crash_populate_cmem(struct crash_mem *cmem) { - struct crash_mem *cmem =3D arg; + u64 i; + phys_addr_t start, end; =20 - cmem->ranges[cmem->nr_ranges].start =3D res->start; - cmem->ranges[cmem->nr_ranges].end =3D res->end; - cmem->nr_ranges++; + for_each_mem_range(i, &start, &end) { + cmem->ranges[cmem->nr_ranges].start =3D start; + cmem->ranges[cmem->nr_ranges].end =3D end - 1; + cmem->nr_ranges++; + } =20 return 0; } =20 -int arch_crash_populate_cmem(struct crash_mem *cmem) -{ - return walk_system_ram_res(0, -1, cmem, prepare_elf64_ram_headers_callbac= k); -} - static char *setup_kdump_cmdline(struct kimage *image, char *cmdline, unsigned long cmdline_len) { --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f7.google.com (mail-pj2-f7.google.com [74.125.227.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F8F952BE5C for ; Tue, 22 Sep 2026 08:43:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.135 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066617; cv=none; b=FPjO4CTmSUDb9QWsKIx7623Ccp6MmmK3d2ZovUwr5Fp77sVNd3Gp+Np/bl7hZ5OqOnmNuOt8JCgVDobeSlnFlQIV0V/ebZu5NaS6GLimlrQGiMGrqk6+GaklHSBVxwI1sPs9dOu46ySNo7Ew9ixCdfE1kcMbHZ4N9fc9cquPQmo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066617; c=relaxed/simple; bh=U5xkLdotgOqJj2n1qVMunZQPDE+jK8kLYOyJiOWwvzs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I94hB30iDUnlsrKwSh8qHOM4Sp3z/b15Hd9CVIPB8PW3GNN9ThxvnNVvtJga0zIdjTIbEfkKTUt2pXM3i9RRb27a6l/HD1Jb7vbWRIzBAvreI41QRLYTcYk35VNaJPqsIdszBpHMl1Aaxy7ISdab2mkM1T2n4bUYc5BFany4oQs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MA9y0Bl0; arc=none smtp.client-ip=74.125.227.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MA9y0Bl0" Received: by mail-pj2-f7.google.com with SMTP id d9443c01a7336-2d903e972efso19330985ad.0 for ; Tue, 22 Sep 2026 01:43:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066615; x=1790671415; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=KnVDZ+yI4npNCIQQqlxZwSFoW6YUe6LE24tWXfIE9sY=; b=MA9y0Bl05TcYEw4+86oxQDDBrdmob72BPiIag/UWGaXu1P1Avrg3Rv3hGHmwyx4CPC Z25KcrsQvTj/AY0V/cyUH0z9j+aR8TH9fjuFeeZIxU8OsuYE49gGashBhkMlLuOcTqLD ClBfBTq9+Hw9uZPQLdHM/z9M0XYtvDPBu6ssmu79eq92RnbsU09kfYsaZ1BLtqd1Gie4 JZ4dPhXP2b4uNIdjtNnBPiI2aFzqb1U+wHijm8baDPuDjyjb3Ot8mXtCDQq9cE71AKBc aQyiMaGi7GdC9x/Aw5Dmj71nQ31U1jrnMWKPFH+q9+V9JOtjzrzNjfZ4JRhr5tqryQRO u94A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066615; x=1790671415; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=KnVDZ+yI4npNCIQQqlxZwSFoW6YUe6LE24tWXfIE9sY=; b=bB4Q1CZnxhr9a62AnaMjkv7rUCSINM5OaBSVCV5DQiuhJPBUQFRqMnZr7h5NGB6+Rb 44184vVdPh+lMqWfOz8wN7YXcpM7sfNZJ2fGGcz0jYCxqIG/1PJv836ZMk351Zyxuu5C OJX0Un0hIKMm2f+vX0rX33fy1nvI1Q/GcrfkZ2SAn0BgYHuidDatLOl6bHmrV2nFfWiW TwsUAmr8BLdhyP+GzDio+H0nbrVFGQ/yOa4l8Njt53ZXRlRuHX7lrOd4/I8Fh1sSc9WD cx2CtkrXv/miqqvCNC57bwTLVeB5B2a1ObdJSq9h0PfVXhU6n14NVJ+AHvWhBTZ1hFhh jsjw== X-Forwarded-Encrypted: i=1; AKwUvByKrTIqGUA7IdLB2qnIInVYUrB+3+GVSUGpFNV+as/s6BnMqk0GtrJKjvGQkxwAahseoIMei3M54FwAEcg=@vger.kernel.org X-Gm-Message-State: AFuF++m/C379l+r/hgYuw+t91AItqvW0+jd7e0Vqoh2GnD+iuaymv6rR FX2PQRcM5FPQQ1GQW/4M8B8sEOvrB/6U/d8PqV3CvaLrQu4t9F0WSmPd X-Gm-Gg: AYBFou38vstK2rgtXVgOIZZoSm4Zo9KsTM5AqZp6uWVr7NuCfSaBVNHuEzLzYbpJvPs xEerql2F88LYY4/nqadbena8QtTklo9KgOafdH1let61i3vlpZrRMaRWu2pOflcNSN9czQhOUzr CspxNRuBPNzC07gjMMhCAB6dof6ZHWbfcJhQrz2npDsUwSxWk0WYBpgcZ+MPzLaSWfQSZdzqeKf UpI1x3ON0gaqPXArDwfJhzTcCD8YXU9jSarrA6XeivHXLY1S9I9zzblDa1ci0nhzvjOWUlumHzZ s3SB6T+yW8fESS6gRzWSqyAJl4J67VEWJdILQm5JUn496X/loRNXBbWB9IU2ZJ6OFFTQizvtjFh 0MhP3Sgt3hMgvcs6qtHPB3QrxcY50AQLrvQVkzaLQiioSWqDaUZG5VmafTpkE5/p/gBec7sIBij v01bqzDQ/r0Y4OYSacCnhPj01V1CMYash86SoK/ud5VCoPNotPiZWgrzoAUSZKQLmQJY252BWb6 YsLiYC+ymsbA3oPTEX2LQ== X-Received: by 2002:a17:90b:1a88:b0:39e:252:ae4d with SMTP id 98e67ed59e1d1-3a073112d3bmr471304a91.17.1790066615322; Tue, 22 Sep 2026 01:43:35 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.43.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:43:34 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 2/9] crash_core: fold duplicated memblock arch hooks into the weak default Date: Tue, 22 Sep 2026 16:42:49 +0800 Message-ID: <20260922084256.1515554-3-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen arm64, loongarch and riscv open-code the same memblock walk in arch_get_system_nr_ranges() and arch_crash_populate_cmem(). Move it into the __weak defaults in kernel/crash_core.c and delete the arch copies. No functional change. Signed-off-by: Wandun Chen Tested-by: Meijing Zhao Acked-by: Baoquan He --- arch/arm64/kernel/machine_kexec_file.c | 29 ---------------------- arch/loongarch/kernel/machine_kexec_file.c | 27 -------------------- arch/riscv/kernel/machine_kexec_file.c | 26 ------------------- kernel/crash_core.c | 25 +++++++++++++++++-- 4 files changed, 23 insertions(+), 84 deletions(-) diff --git a/arch/arm64/kernel/machine_kexec_file.c b/arch/arm64/kernel/mac= hine_kexec_file.c index 854d872dfd0f..34d944d3f22f 100644 --- a/arch/arm64/kernel/machine_kexec_file.c +++ b/arch/arm64/kernel/machine_kexec_file.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -39,34 +38,6 @@ int arch_kimage_file_post_load_cleanup(struct kimage *im= age) return kexec_image_post_load_cleanup_default(image); } =20 -#ifdef CONFIG_CRASH_DUMP -unsigned int arch_get_system_nr_ranges(void) -{ - unsigned int nr_ranges =3D 2 + crashk_cma_cnt; /* for exclusion of crashk= ernel region */ - phys_addr_t start, end; - u64 i; - - for_each_mem_range(i, &start, &end) - nr_ranges++; - - return nr_ranges; -} - -int arch_crash_populate_cmem(struct crash_mem *cmem) -{ - phys_addr_t start, end; - u64 i; - - for_each_mem_range(i, &start, &end) { - cmem->ranges[cmem->nr_ranges].start =3D start; - cmem->ranges[cmem->nr_ranges].end =3D end - 1; - cmem->nr_ranges++; - } - - return 0; -} -#endif - /* * Tries to add the initrd and DTB to the image. If it is not possible to = find * valid locations, this function will undo changes to the image and retur= n non diff --git a/arch/loongarch/kernel/machine_kexec_file.c b/arch/loongarch/ke= rnel/machine_kexec_file.c index 5412aa9f3568..481b8f906a56 100644 --- a/arch/loongarch/kernel/machine_kexec_file.c +++ b/arch/loongarch/kernel/machine_kexec_file.c @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -56,32 +55,6 @@ static void cmdline_add_initrd(struct kimage *image, uns= igned long *cmdline_tmpl } =20 #ifdef CONFIG_CRASH_DUMP -unsigned int arch_get_system_nr_ranges(void) -{ - int nr_ranges =3D 2; /* for exclusion of crashkernel region */ - phys_addr_t start, end; - uint64_t i; - - for_each_mem_range(i, &start, &end) - nr_ranges++; - - return nr_ranges; -} - -int arch_crash_populate_cmem(struct crash_mem *cmem) -{ - phys_addr_t start, end; - uint64_t i; - - for_each_mem_range(i, &start, &end) { - cmem->ranges[cmem->nr_ranges].start =3D start; - cmem->ranges[cmem->nr_ranges].end =3D end - 1; - cmem->nr_ranges++; - } - - return 0; -} - /* * Add the "mem=3Dsize@start" command line parameter to command line, indi= cating the * memory region the new kernel can use to boot into. diff --git a/arch/riscv/kernel/machine_kexec_file.c b/arch/riscv/kernel/mac= hine_kexec_file.c index 808e872f4063..fdc6695e8588 100644 --- a/arch/riscv/kernel/machine_kexec_file.c +++ b/arch/riscv/kernel/machine_kexec_file.c @@ -37,32 +37,6 @@ int arch_kimage_file_post_load_cleanup(struct kimage *im= age) } =20 #ifdef CONFIG_CRASH_DUMP -unsigned int arch_get_system_nr_ranges(void) -{ - unsigned int nr_ranges =3D 2 + crashk_cma_cnt; /* For exclusion of crashk= ernel region */ - u64 i; - phys_addr_t start, end; - - for_each_mem_range(i, &start, &end) - nr_ranges++; - - return nr_ranges; -} - -int arch_crash_populate_cmem(struct crash_mem *cmem) -{ - u64 i; - phys_addr_t start, end; - - for_each_mem_range(i, &start, &end) { - cmem->ranges[cmem->nr_ranges].start =3D start; - cmem->ranges[cmem->nr_ranges].end =3D end - 1; - cmem->nr_ranges++; - } - - return 0; -} - static char *setup_kdump_cmdline(struct kimage *image, char *cmdline, unsigned long cmdline_len) { diff --git a/kernel/crash_core.c b/kernel/crash_core.c index d0bd2d0cf899..d201638d11f3 100644 --- a/kernel/crash_core.c +++ b/kernel/crash_core.c @@ -281,8 +281,29 @@ static struct crash_mem *alloc_cmem(unsigned int nr_ra= nges) return cmem; } =20 -unsigned int __weak arch_get_system_nr_ranges(void) { return 0; } -int __weak arch_crash_populate_cmem(struct crash_mem *cmem) { return -1; } +unsigned int __weak arch_get_system_nr_ranges(void) +{ + unsigned int nr_ranges =3D 2 + crashk_cma_cnt; /* crashk_res + crashk_low= _res, +CMA splits */ + phys_addr_t start, end; + u64 i; + + for_each_mem_range(i, &start, &end) + nr_ranges++; + return nr_ranges; +} + +int __weak arch_crash_populate_cmem(struct crash_mem *cmem) +{ + phys_addr_t start, end; + u64 i; + + for_each_mem_range(i, &start, &end) { + cmem->ranges[cmem->nr_ranges].start =3D start; + cmem->ranges[cmem->nr_ranges].end =3D end - 1; + cmem->nr_ranges++; + } + return 0; +} int __weak arch_crash_exclude_ranges(struct crash_mem *cmem) { return 0; } =20 int __weak arch_crash_exclude_mem_range(struct crash_mem **mem, --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f0.google.com (mail-pj2-f0.google.com [74.125.227.128]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A9B9152ED38 for ; Tue, 22 Sep 2026 08:43:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.128 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066629; cv=none; b=EuUNahrf+yxda2eyHaZILVeUK+CF+9v93IqzwolJJ0VRyaLWumc33sBhKtAEAeQAu24pjjf4S5VGq3JbU5gt+Gvogqk1LX4KGbbLigU172OchuzIu2q4aJOmgyVHjnUNcL7JOhES9a2XXEgTZw7IEko864h4oJvE/uSIZj6v5to= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066629; c=relaxed/simple; bh=DYgu14ldWLDawZXAo/7e6ZGTkYuIhCDmacFGgdEgG38=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sqAA8yJFlQ7G+IeFYv4pzMZr7rnqYox8AExY0L4aqysVAQe/Hu0toPtLO07BNHFbrPkQobgWeE8BvO53+UyTuhPu25c66OVvV/YEhN8nXKJQa83emYT3U7BjjJlE3hp33Bh/XQ9IEKfNp4FCRc1qmToUU1REtZhGPMmaugva7Qc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IBsStbe3; arc=none smtp.client-ip=74.125.227.128 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IBsStbe3" Received: by mail-pj2-f0.google.com with SMTP id 98e67ed59e1d1-39f1e0b1f21so2644187a91.0 for ; Tue, 22 Sep 2026 01:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066627; x=1790671427; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=a1DOWyR/dLH3AEbWE3m8aVGig/7kxpUIrM7nXUawY8c=; b=IBsStbe3nFPDfYMfzNKMQlR5KHLTJrK1lRZe4Oeca+tozhH/OL38DZTRhoGLBeJuCG cuv46b+9laHz1CzLyD3YUo89HWlOAdwY2nfaXj3U0dhhyE5CXUYqmYngGY+6ydhhlczV 2koF3vDNhHwyRgnPRnx6FLxltoWMLQPGZxq0QU+MiYAPAdLWbIrqYK9gaycOZZ18dYrP 1hIYT2YWmf9lLHerP3cyPJvUqNqybSfZ8S5Tl/nx6rr0TQhnRlP2Fyv6sKyHCHDkvpbe FXlEsbvCuKEZjWnPh7EVzHfRG4tbE4nGaNrSscg5NLv4isYu1r777taGUYhXdiHA8Hm1 WCow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066627; x=1790671427; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=a1DOWyR/dLH3AEbWE3m8aVGig/7kxpUIrM7nXUawY8c=; b=dznBB9YUb4+rzpaKkbq5hq6iQt35EuLlkwgfkdSXAfEKSsTTr7NCRGCcnzR7J27L8b mR1DhNQdawkeD6OV10nOuzdAThl83bSWPH/NflrLPxVDf+yTeMccjJ9H2KpH0P/4Slme qIsQdn1PG+fYe2LFLFftciD7ZXGTd42uABcmRNdP6lBA1EJsQ7LoT4/nZtoMVF5xFxFt ZcxNwAereyIU7I3ponCZZKzFlym8exFdmlQjkiRi1K5LPbKz00NGOMe5TWBqvcgT4xPJ nL9Bp8PLzY26/cfQgZFV5IF6/8ZKwSUwTyyIwt8nxlVPSQS53xGUUD98VFqdsvPOHtHZ +BsA== X-Forwarded-Encrypted: i=1; AKwUvBz3ZTOV7dadEiG5mxMl+86TOmfimulY8fAPaT4sRSraSy/DakmknC3XT/56g1VUOoXF3V7vrTfjpi1LNOI=@vger.kernel.org X-Gm-Message-State: AFuF++mg4po5k5kGsdPeNTu3Kz6CTQz2U+L+3VaSZMTeLTNd+xIaNDYP vW62BGOcPt6oli0nlfYdiffHutCeu6AXRmVAeB/pFABZ/KUp5hmlmZGF X-Gm-Gg: AYBFou3ZH+iqP/D9JoXI7STxSBV49lhPKv3tuM0JXmOETIPwndgfYa4jihep1llOQAX EyqIVikKseHnbqWtvbMEph8RvvN/dbG/KzxyGwty5He6ztsRCNwAcIvi7lyafzUTwhDQoSG9uCo q7BhY+kHedigDR6Es2vqf3mJ9XZkzkRurUlDSn9yMy3ONOmXsVSNNptSqQrM0C2NLsySnyXSiIx hSgZc281iEpgDUTK6lHvNumiIK6GoF27k04Tg+D2Ecz4gw0R8VQ5/pCPIOVSlzE4rfBJb9ijTZB gVdwgU/ccDBnnbM0qC3gfiIcaYqQXuJDoG0PACxRVTDbGzwNKDYjtw8YOXZtH5HfvJkYU83bka5 cSV1SYLMHteRQLjy45ms+NyaVX7dSPleQ+k8k1dqYJjx1F8vcKKEeEHsc+737tjtI1wAG8JxDCI 4B58n40sUUcEoMPHUWFf1pkiw9B8qAaJqo3djmteBXDc0HMdBC4UlTPnDsWH9wio7BJ+P1qPpuV O+Teh73x/w= X-Received: by 2002:a17:90b:5546:b0:39e:14db:437c with SMTP id 98e67ed59e1d1-3a07309c886mr542158a91.4.1790066626997; Tue, 22 Sep 2026 01:43:46 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.43.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:43:46 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 3/9] crash_core: serialize crash header preparation against hotplug Date: Tue, 22 Sep 2026 16:42:50 +0800 Message-ID: <20260922084256.1515554-4-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen crash_prepare_headers() counts memory ranges before populating the allocated crash_mem array. The weak implementation used by ARM64, RISC-V and LoongArch walks memblock.memory, while x86 performs the same two-pass operation over system RAM resources. Concurrent memory hotplug can change range source between the two walks and make the populate pass overflow cmem->ranges. Take device_hotplug_lock when preparing crash headers during kexec_file_load(). The x86 memory hotplug path already takes device_hotplug_lock, so call __crash_prepare_headers() directly to avoid recursive locking. Sashiko reported this issue in [1]. Fixes: 3751e728cef2 ("arm64: kexec_file: add crash dump support") Fixes: 1bcca8620a91 ("LoongArch: Add crash dump support for kexec_file") Fixes: 8acea455fafa ("RISC-V: Support for kexec_file on panic") Fixes: dd5f726076cc ("kexec: support for kexec on panic using new system ca= ll") Signed-off-by: Wandun Chen Link: https://sashiko.dev/#/message/20260806101002.1F84E1F000E9@smtp.kernel= .org [1] Acked-by: Baoquan He --- arch/x86/kernel/crash.c | 2 +- include/linux/crash_core.h | 2 ++ kernel/crash_core.c | 17 +++++++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c index e6f23933a6df..bef008a0cb22 100644 --- a/arch/x86/kernel/crash.c +++ b/arch/x86/kernel/crash.c @@ -465,7 +465,7 @@ void arch_crash_handle_hotplug_event(struct kimage *ima= ge, void *arg) * Create the new elfcorehdr reflecting the changes to CPU and/or * memory resources. */ - if (crash_prepare_headers(IS_ENABLED(CONFIG_X86_64), &elfbuf, &elfsz, NUL= L)) { + if (__crash_prepare_headers(IS_ENABLED(CONFIG_X86_64), &elfbuf, &elfsz, N= ULL)) { pr_err("unable to create new elfcorehdr"); goto out; } diff --git a/include/linux/crash_core.h b/include/linux/crash_core.h index bc087124cd78..28e7a81cf263 100644 --- a/include/linux/crash_core.h +++ b/include/linux/crash_core.h @@ -61,6 +61,8 @@ extern int crash_prepare_elf64_headers(struct crash_mem *= mem, int need_kernel_ma void **addr, unsigned long *sz); extern int crash_prepare_headers(int need_kernel_map, void **addr, unsigned long *sz, unsigned long *nr_mem_ranges); +int __crash_prepare_headers(int need_kernel_map, void **addr, unsigned lon= g *sz, + unsigned long *nr_mem_ranges); extern int crash_exclude_core_ranges(struct crash_mem **cmem); =20 struct kimage; diff --git a/kernel/crash_core.c b/kernel/crash_core.c index d201638d11f3..d0cc2496dc09 100644 --- a/kernel/crash_core.c +++ b/kernel/crash_core.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -338,8 +339,8 @@ int crash_exclude_core_ranges(struct crash_mem **cmem) return 0; } =20 -int crash_prepare_headers(int need_kernel_map, void **addr, unsigned long = *sz, - unsigned long *nr_mem_ranges) +int __crash_prepare_headers(int need_kernel_map, void **addr, unsigned lon= g *sz, + unsigned long *nr_mem_ranges) { unsigned int max_nr_ranges; struct crash_mem *cmem; @@ -376,6 +377,18 @@ int crash_prepare_headers(int need_kernel_map, void **= addr, unsigned long *sz, return ret; } =20 +int crash_prepare_headers(int need_kernel_map, void **addr, unsigned long = *sz, + unsigned long *nr_mem_ranges) +{ + int ret; + + lock_device_hotplug(); + ret =3D __crash_prepare_headers(need_kernel_map, addr, sz, nr_mem_ranges); + unlock_device_hotplug(); + + return ret; +} + /** * crash_exclude_mem_range - exclude a mem range for existing ranges * @mem: mem->range contains an array of ranges sorted in ascending order --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f10.google.com (mail-pj2-f10.google.com [74.125.227.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6330752F29C for ; Tue, 22 Sep 2026 08:43:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066642; cv=none; b=J3qw/kMPXlN31J4TYLSGzlBaAUkz6kXfq0J32hPqooibZvwH/A0NfmFydco765nrbzga72bj1TF3+3lpNduxuaJdTkgzrmk+KjcnQ+X74RmYu7TwVZ/2Nt8VdhtN5ilBsJd2nfIeJB6mF9vlQtls7o5meKZDScJ6u1Ictq4gn08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066642; c=relaxed/simple; bh=aVUsHlz/xoft1y6LdoTP6jj2hctS3djOcN1LZjUnlTo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FsUopwedc6RJc7rvwatozsTOdskQMdaM1BCUxidC16eSjrdYwRp6w3Y2a9FnUG0xAFLjoX3X0DKSEYz/a9hRjRAutGWx7ax+UNl0/5C3MnXqI+8PRJzVK3B+3qg+3KDL+oryjFmc8CHLewBWO2a3QDe6EidnmB3BKzkQ4+VBu/o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=r1l8B1DX; arc=none smtp.client-ip=74.125.227.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="r1l8B1DX" Received: by mail-pj2-f10.google.com with SMTP id 98e67ed59e1d1-39e249c766bso1632784a91.0 for ; Tue, 22 Sep 2026 01:43:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066639; x=1790671439; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BQZ6M9cJvbnCelbC8h/SiM2wDn1buqTcsR+O1dmHqTM=; b=r1l8B1DX/syzoT9vEayTJVBT50LN652uwCGXWaJXQYuYDReCIaGt3OGFY1DLiebyDh NX3qq9+F0PQp5cCnm+fNtQQ/7tt2EDBrvCdASm1ib2bcDR8oceV/lFjQwcyJXI7PFrB5 Hoz2acOUYxwV8Pip0JizRCSKTMvcoMWrnNyi57rzLk5dwAbw52ngIl7JwBasb0QxkkZV n98bHdYceG6Ah116Ov9BrnDd82MzkY9EOzdtNeeqTt3duEo8klSUKBDRsC2TCiHAFzSd TSoGiB5upkeHDnsNIKNh2HkQkfoyi+3QbYPUh158j1Nres9usNBi/XrUWfSXpaM/ADMS XgJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066639; x=1790671439; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=BQZ6M9cJvbnCelbC8h/SiM2wDn1buqTcsR+O1dmHqTM=; b=f+CwAou4wV91RnK3eunEuBWc9RBSa9aj5syJlCYjxC7JT76DPquUg9bXxKf+gqs/4s 5YBhj+WIIrr5QOcFLV8wHqx4rHnt28vB7zvTRMUa1Vcc5RPu02rIvJdJHpUqfCelYDLl rsIavCWb/ZlAqSlNry2zqttS+CCame12XoBdBlvdZ3VbcXblbTH7Hw+4KAh8Tj5JHdoF JNZPEg2gHNn2og/TLhUd/kmkBzk2MslI65ckgFPp3oyDXnIeAVTe2CXd/dey/dfEoiiK B3WQuU7oTLUu6R/xdp2zBlR25utjx5JYbiGL3WctVynKXx6Ndu2Q/7NsZZhMxMIcWVXI uJww== X-Forwarded-Encrypted: i=1; AKwUvByWy1zSCPWY7DOrksdvYtttOVZAk+iu4/s6DhgKs3HG1tiBw4gG+lAQEQaiUGL73rtmooa9VrcTbtle6Fk=@vger.kernel.org X-Gm-Message-State: AFuF++mNsKdas2T/jwYMxB66cBsi4VMyu7+a7leL/roYSJQDzuSER0w+ Nt+89ZGQ1wFxTVHRL9s4QQiQbvNG459VAVpQkzYCPaXxe9rjjQ9YhsbB X-Gm-Gg: AYBFou0L4NvSWlpqWFT6n9oQoBwo7ztPbBp7Y6R441OcqaSRH+GbZTC+K1XZNK5GyMf Q0YqHNGbuqDpAlXGFSMOEZ7bu8qyDBGOufddZkDX2YjvwyqOkYY4BzrU1FUUIiwNklpfBxBwvlo mDExSRUHpC4ALxED2NhbipUCTRKVpRVfxxbOH5tCnwKXVBiK6or9x0X+BovuCj2fHz5S8gzLrB4 +87hdRwr5dq6bi6Keonv6f6hmesledb7NPP4yNxB51Ma66SGhGu87fvffsLwEbsVI9npYTL7aZK fGiA8dofYtC1fm4+2JiVJVjGJNrkNk1nmVoZJQI3yhE7rgblQf4DpafAKzSqUFY5nncye5KFFeS wwFMDNN+hJjOMV6obVmacHepkZ9vciGI8EpndvB5KPxl8Sv+ORfh6AaPJdihy7V4jzkcf2Px/R8 j4WXFhiV5Rb2KcdyI7wAe6Szp77ivE7+xIv+1Bzol6LN3WwTI+4nzrBDRum2t2D1OcffGZHHdcj nsxlFMFjSA= X-Received: by 2002:a17:90b:35c5:b0:39e:6a80:dd9b with SMTP id 98e67ed59e1d1-3a0731f9793mr476673a91.34.1790066638632; Tue, 22 Sep 2026 01:43:58 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.43.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:43:58 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 4/9] crash_core: replace for_each_mem_range() with for_each_mem_region() Date: Tue, 22 Sep 2026 16:42:51 +0800 Message-ID: <20260922084256.1515554-5-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen for_each_mem_range() skips MEMBLOCK_NOMAP regions implicitly. Switch the weak defaults to for_each_mem_region(), which exposes struct memblock_region and per-region flags, and filter NOMAP regions explicitly via the new crash_should_skip_region() helper. This prepares for a subsequent patch to extend the skip filter. No functional change. Signed-off-by: Wandun Chen Tested-by: Meijing Zhao Acked-by: Baoquan He --- kernel/crash_core.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/kernel/crash_core.c b/kernel/crash_core.c index d0cc2496dc09..c7acb2e449df 100644 --- a/kernel/crash_core.c +++ b/kernel/crash_core.c @@ -270,6 +270,12 @@ int crash_prepare_elf64_headers(struct crash_mem *mem,= int need_kernel_map, return 0; } =20 +/* Exclude NOMAP regions from the vmcore. */ +static bool crash_should_skip_region(struct memblock_region *reg) +{ + return memblock_is_nomap(reg); +} + static struct crash_mem *alloc_cmem(unsigned int nr_ranges) { struct crash_mem *cmem; @@ -285,22 +291,25 @@ static struct crash_mem *alloc_cmem(unsigned int nr_r= anges) unsigned int __weak arch_get_system_nr_ranges(void) { unsigned int nr_ranges =3D 2 + crashk_cma_cnt; /* crashk_res + crashk_low= _res, +CMA splits */ - phys_addr_t start, end; - u64 i; + struct memblock_region *reg; =20 - for_each_mem_range(i, &start, &end) + for_each_mem_region(reg) { + if (crash_should_skip_region(reg)) + continue; nr_ranges++; + } return nr_ranges; } =20 int __weak arch_crash_populate_cmem(struct crash_mem *cmem) { - phys_addr_t start, end; - u64 i; + struct memblock_region *reg; =20 - for_each_mem_range(i, &start, &end) { - cmem->ranges[cmem->nr_ranges].start =3D start; - cmem->ranges[cmem->nr_ranges].end =3D end - 1; + for_each_mem_region(reg) { + if (crash_should_skip_region(reg)) + continue; + cmem->ranges[cmem->nr_ranges].start =3D reg->base; + cmem->ranges[cmem->nr_ranges].end =3D reg->base + reg->size - 1; cmem->nr_ranges++; } return 0; --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f5.google.com (mail-pj2-f5.google.com [74.125.227.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF8B052FE32 for ; Tue, 22 Sep 2026 08:44:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066652; cv=none; b=j4b3Opd4su14/n6wEgrD9BEIUTDl58QrVo0aRreVqFaubiooGkPXC5ocG5kiCClq4yXnSeSzWsCt5vS2EwRiu8CvkM15RW97T/S3KpXA9r2N9qxYQoBOldUDWgT/ExMHWFf+9QTOH7Ogj0xpeoGQWHVDNPuP3vANDcn9v4BhDqw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066652; c=relaxed/simple; bh=fFnNsey8OSsFtgJfPqC05FAKDGriu+FcnuhksQ5sAVs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dKLszz9JYv+oA3tmot+T3EHT6mDhkJHREetycrsmmJFhIILVlaliBJllPiOevYGDwpYzmo7xWqiYA08Ow7j7mF6/eIHc1unQbRCQSrJFjDFfpIfpLzdjcxaMRX099lBVvqNAyFEtDYnGc0UzLAUUPJsXNijczpvcDh2MqVgfsF0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jQqzdKUF; arc=none smtp.client-ip=74.125.227.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jQqzdKUF" Received: by mail-pj2-f5.google.com with SMTP id d9443c01a7336-2d6f230d1easo4520405ad.1 for ; Tue, 22 Sep 2026 01:44:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066650; x=1790671450; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=XrAQfB99bFPUaNh0c5d2OUhMy2tKXocwdCbeEYRe5yE=; b=jQqzdKUFur35mns6QtcpKXXzSuKsGzALgNZjAFLQuNcKZiuCjwsX0K5NXuC/2S2wqg Mk21X/zJoiB/jn9W06NHL/eXllIm7z2nXDoawtEWUTPB4EwnztqIVn8PtND0ov6yR7ow Kew7OS1gMLPy9HsuwSp994DnAIlBlItnwlFXk90a5rAnQslp2bvO9Ndcyj1sBn97szFo xhjSPLgomeSPmQN80ln/HbtxaMQxRXDgjb8Jst+zNgP/rPp9Vp84Xx8Gksi8IundAUdt vKoob/wWBuz1PucVxvujuz0pa8ufKo/dRu8Pr1394MAZr2ek0Lpusfc8W719aHAARS1f BTqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066650; x=1790671450; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=XrAQfB99bFPUaNh0c5d2OUhMy2tKXocwdCbeEYRe5yE=; b=0jWcVmknjtOzHO8+rLeJZ8orXHAqlHGPxJp/IhaEEsuZ5U5rmeY1hjV0aqD9Jcu6L/ 4saoYessndZkZA19XF3wxGhrxky7mbQzGRIerArZ2t3MdiotjXVWtgxno4Cg0bklT2X4 IIa576yrS4+NVwDoBECPoecP+Civ4gwVrM+oiB1AdOFHn/DCVTbsjb8gVVa7NQjS2JGU rFsSp0KwJb1GdWy1IHndwVkDI+AU6jeUSPR+D7Eh5X5bfA3h+wlj2GJDEi7LyB1SMufr Ve3ttFGMwZqsj9Qycutdq+jZMERWFgMEAA1h1bfLdTdupxuF/uXgFZ0WzYKNdfFx+wv1 GeIg== X-Forwarded-Encrypted: i=1; AKwUvBxarlAfyX/5a+yfvmNQy8AiDfPLCArTQQ77hLH1O9/AVdtE//d7XJCVFOUXvEsoY6kqCLSzQGEcJYYR7vo=@vger.kernel.org X-Gm-Message-State: AFuF++nJvMN7bMvfDBL7YSzp/tqYY/367ycJ7msMLtJx7qZu920RpH0v ki87CSdN8tyFCW8rMOTvD2QbGWlasg9cvMqkTM/MVzC8Gd3nQ5MCYBbJ X-Gm-Gg: AYBFou2mm7Miux6KtSTZSpaxLJeoraGpHDnpJhq3Lqk4LbvXM+iDAAvs1T7DY+6tZSS gHCfj9RBzIR1ev7huI0AjdmcPtRoiplx60oj5656vrcim/h5Ax8n7q4p5r3avN0VDQsIcy4S10I iBlwMaBVIsGXWfzZRdv1tKgAIbpCj7L4qaLh4YrMnV2xMM6q/AZG3arLjiMWkMb6Xr4N7x3fQti EpOeXsHMid9b/Y7ViHN1fcMTkomH8n7uEteJY7a+YGcQ11ufCGAv3OpLfqQEruziGED4roKjYJK wLMDQXHB8/jgywcCc/l1qxTIeJb1JHm+PTit3ygIgWmvMZesY9PEND7SoL4MpdRhCjvLwwCwtQD bIkhqyL7mV5AZv90P0I14uh+G9VOfy+IdIiBCSjN502HzbVb1/YLDPvRBWGWYSTLfSgXBmpAnRn KQm3Hq943EvKd3x3VfaeiFeb70xdPyo1haiaWmemWuyHm/KknoWRPGzOJoqGD11pOooy2QQ3EZS WKnvuIg5L8= X-Received: by 2002:a17:90b:1e4a:b0:39e:4c7e:bc6 with SMTP id 98e67ed59e1d1-3a073666c4dmr246498a91.20.1790066650350; Tue, 22 Sep 2026 01:44:10 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.43.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:44:09 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 5/9] memblock: introduce MEMBLOCK_NODUMP flag Date: Tue, 22 Sep 2026 16:42:52 +0800 Message-ID: <20260922084256.1515554-6-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen Add MEMBLOCK_NODUMP to mark regions that should be excluded from kdump vmcores. The flag is meant for reserved memory that carries no data useful for crash analysis. Reusable reserved regions such as CMA may hold useful data, so these regions must not be marked MEMBLOCK_NODUMP. Subsequent patches wire this up for /reserved-memory and /memreserve/ entries. Regions in /memreserve/ (such as the initrd) may be reserved at the beginning and freed later, so we also need to clear the flag when freeing reserved memory. Suggested-by: Rob Herring Signed-off-by: Wandun Chen Tested-by: Meijing Zhao --- include/linux/memblock.h | 9 +++++++++ mm/memblock.c | 43 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/include/linux/memblock.h b/include/linux/memblock.h index aa845f488327..0126b47bc3c4 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -52,6 +52,8 @@ extern unsigned long long max_possible_pfn; * kernel that we know is good to use. It is the only memory that * allocations may happen from in this phase. * @MEMBLOCK_RSRV_HUGETLB: memory is reserved for hugetlb pages + * @MEMBLOCK_NODUMP: exclude from kdump vmcore. It carries no data useful + * for crash analysis (e.g. firmware carveouts). */ enum memblock_flags { MEMBLOCK_NONE =3D 0x0, /* No special request */ @@ -63,6 +65,7 @@ enum memblock_flags { MEMBLOCK_RSRV_KERN =3D 0x20, /* memory reserved for kernel use */ MEMBLOCK_KHO_SCRATCH =3D 0x40, /* scratch memory for kexec handover */ MEMBLOCK_RSRV_HUGETLB =3D 0x80, /* memory reserved for hugetlb pages */ + MEMBLOCK_NODUMP =3D 0x100,/* exclude from kdump vmcore */ }; =20 /** @@ -160,6 +163,7 @@ int memblock_reserved_mark_noinit(phys_addr_t base, phy= s_addr_t size); int memblock_reserved_mark_kern(phys_addr_t base, phys_addr_t size); int memblock_mark_kho_scratch(phys_addr_t base, phys_addr_t size); int memblock_clear_kho_scratch(phys_addr_t base, phys_addr_t size); +int memblock_mark_nodump(phys_addr_t base, phys_addr_t size); =20 void memblock_free(void *ptr, size_t size); =20 @@ -305,6 +309,11 @@ static inline bool memblock_is_kho_scratch(struct memb= lock_region *m) return m->flags & MEMBLOCK_KHO_SCRATCH; } =20 +static inline bool memblock_is_nodump(struct memblock_region *m) +{ + return m->flags & MEMBLOCK_NODUMP; +} + int memblock_search_pfn_nid(unsigned long pfn, unsigned long *start_pfn, unsigned long *end_pfn); void __next_mem_pfn_range(int *idx, int nid, unsigned long *out_start_pfn, diff --git a/mm/memblock.c b/mm/memblock.c index ea0de4b5f356..48cabfe5cdf1 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -929,6 +929,8 @@ static unsigned long __free_reserved_area(phys_addr_t s= tart, phys_addr_t end, return pages; } =20 +static int memblock_clear_nodump(phys_addr_t base, phys_addr_t size); + unsigned long free_reserved_area(void *start, void *end, int poison, const= char *s) { phys_addr_t start_pa, end_pa; @@ -949,9 +951,13 @@ unsigned long free_reserved_area(void *start, void *en= d, int poison, const char } =20 if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) { - if (start_pa < end_pa) + if (start_pa < end_pa) { memblock_remove_range(&memblock.reserved, start_pa, end_pa - start_pa); + + if (IS_ENABLED(CONFIG_CRASH_DUMP)) + memblock_clear_nodump(start_pa, end_pa - start_pa); + } } =20 pages =3D __free_reserved_area(start_pa, end_pa, poison); @@ -995,8 +1001,11 @@ int __init_memblock memblock_phys_free(phys_addr_t ba= se, phys_addr_t size) =20 kmemleak_free_part_phys(base, size); =20 - if (!slab_is_available() || IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) + if (!slab_is_available() || IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) { ret =3D memblock_remove_range(&memblock.reserved, base, size); + if (IS_ENABLED(CONFIG_CRASH_DUMP)) + memblock_clear_nodump(base, size); + } =20 if (slab_is_available()) __free_reserved_area(base, base + size, -1); @@ -1204,6 +1213,35 @@ __init int memblock_clear_kho_scratch(phys_addr_t ba= se, phys_addr_t size) MEMBLOCK_KHO_SCRATCH); } =20 +/** + * memblock_mark_nodump - Mark a memory region with flag MEMBLOCK_NODUMP. + * @base: the base phys addr of the region + * @size: the size of the region + * + * Mark the region as not to be included in crash dumps. + * + * Return: 0 on success, -errno on failure. + */ +int __init_memblock memblock_mark_nodump(phys_addr_t base, phys_addr_t siz= e) +{ + return memblock_setclr_flag(&memblock.memory, base, size, 1, + MEMBLOCK_NODUMP); +} + +/** + * memblock_clear_nodump - Clear a memory region with flag MEMBLOCK_NODUMP. + * @base: the base phys addr of the region + * @size: the size of the region + * + * Return: 0 on success, -errno on failure. + */ +static int __init_memblock memblock_clear_nodump(phys_addr_t base, + phys_addr_t size) +{ + return memblock_setclr_flag(&memblock.memory, base, size, 0, + MEMBLOCK_NODUMP); +} + static bool should_skip_region(struct memblock_type *type, struct memblock_region *m, int nid, int flags) @@ -2880,6 +2918,7 @@ static const char * const flagname[] =3D { [ilog2(MEMBLOCK_RSRV_KERN)] =3D "RSV_KERN", [ilog2(MEMBLOCK_KHO_SCRATCH)] =3D "KHO_SCRATCH", [ilog2(MEMBLOCK_RSRV_HUGETLB)] =3D "RSV_HUGETLB", + [ilog2(MEMBLOCK_NODUMP)] =3D "NODUMP", }; =20 static int memblock_debug_show(struct seq_file *m, void *private) --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f2.google.com (mail-pj2-f2.google.com [74.125.227.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AB12B5304B7 for ; Tue, 22 Sep 2026 08:44:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066664; cv=none; b=ajE3nL8u7ctAzV/77Y8rVkXUm0GO5uz7xuxcAUWuGTKvh8qT0LiAGbY/TG8vHrm9dwQax6rMOxOagKkHgTjnxYcQ9EX2unK3qIpVBGnBm8b8wz1WdgXbnToURIgdihIZhiq43gXrwWnrRutgZ8Gkke7TQYNwWF9zyF/E9RIfGlw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066664; c=relaxed/simple; bh=xXXTEawloLm41fSAr5nA62b6IMDJx8mcRGgEviHUn7w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=g9Ac1c0DPqcqxs1YS1Bx6zWGTr4gc8IiHd5ud2/evZTrsdFquWYN75l8Q0I1FXSEdeh4KcrMDMJRc1BLQ1Q7gOXkMDqaDDcdvidV3aMgnpk335kh9SG3poTYg8g45XsKGFeGh+81t/N7nrWfMKQE04h5QXKF+KWeC/T28Ki9ZH4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=g6Qbj74a; arc=none smtp.client-ip=74.125.227.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g6Qbj74a" Received: by mail-pj2-f2.google.com with SMTP id 98e67ed59e1d1-39b2ad83680so1597893a91.1 for ; Tue, 22 Sep 2026 01:44:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066662; x=1790671462; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=S7DrDy5k1cF63oZDGZmuZpMhR9CRSHaszqjBOE8wOFU=; b=g6Qbj74aXhCxwVIr60cEpjp2MIsAuspVjPGX/obpAPohs2/gbavWzDU//JEs3UGcN7 zjk10VwwOJ9qDE2riMWk8cXrV6VM1Srpp2N8T2MdyDAl6ymXBBIFMjQ38sRKyoEHwDNw yDlGvA7KPoYVzslrtWf+VA6lvKwTFbgG5mihFWTyA6qAVPOptgeqLOCflvzmyC5vhqpe wp1IjHPr2snU0GkuhtP1t/KVchWaew6g3ep4AYV9UHRAzbcsZ53LBafB/eOGr1DAg9vW a5fQ1ZgKWsoMfryBkXYo8CW9tup/Nz0cs1zPO+M+cVV2vnUqCuVERIBCjvyMqrsfzbYA prTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066662; x=1790671462; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=S7DrDy5k1cF63oZDGZmuZpMhR9CRSHaszqjBOE8wOFU=; b=Iezep/orl2PgF38RDhIFdiyPOvE6/nNKGp4+c8/MeCl3m5vUGv9/QCNmanNBAs1Nrm g6BILkm6KnHIJVbG2UGqLgZTs2JlcNa75h3MRw7GE4mABl5Z49ozow16tmFly4pK42nq AX8PCrRAU07XIG6WuYlJqQcmGJ/1PIsfnNoJRKM/DNMwQtwCAmsQEFZsIdIbmq0/r29x lgwVL2Fi4fgXH7mFy/j19CYPkhD+yUsigz3sQ2pUU9OGZaD5BoNJVxrvxRQcMZ8WkaC3 8iiQubP2XWGiTCqK6kDsC9TViX+bZTuHSLb26dKKdfPSW3xYQvY7QN/nF3TT35eAq9Ss K/Dw== X-Forwarded-Encrypted: i=1; AKwUvBxcv9+C8fzrtkC8iA6N4uAAGgWN5dIfX9H0f0jMvmFNadKxdVV7wQY59jBowY580m08EoNvsxvrTIMr52Y=@vger.kernel.org X-Gm-Message-State: AFuF++kHS+JczjpmLQWZVjt/CyL8vakiXxWiAiRvgQyzPWdrfDB5pl1Y X+dyv6gDravO/zjOsIDpgDPGOeuXwc9m0zte69pNa5Nn0+jPA5KSQOmY X-Gm-Gg: AYBFou3LOrevR90WKWj8BixqtVOagEa9/oBpmuMxaRXCdahb5ucf3BTGM6RYce79Xoe 26ewURh/jIa3g/DPihpFKPGrNJnO6YaRdamezWByUVG+66EzstcWqj4M5766YsuMnvyjQNuli55 bcabY/CCJiM6lrz4DvLG5+VDC+9w5aKuzvtyRXKZd7TCyC08ePskLyFY1V1kpqWACJu45kzw5/7 qRwD6h6RUNhLMZjl3U8LaiBwRNqcZC5lDgjVYWwwbHZhSFREpFG4eH5JfJvc5jUkTEuWeScBU9O GCiAGoYhqzB0dEOlmrFL71OKfBonbjXx84+vTug55zck+ra3bNJpaUSOlAgt9nkuqraYA/Jqa/O 5gdmtf+vAERe6uJjyfTy+7UFl3WGs09O2TAZhSZDbR9rHQHTxYUHnoHR1cih0jN7NsXX8LxISF8 slS5VV/T/kNNZV8mZRlOaopsAEP8n32DuhCwgQxr11MnR7jHK9i/1WuRYCiGSGP23CiBCUy0bqs lqbegW7LmI= X-Received: by 2002:a17:90b:2ccb:b0:39e:6a81:c921 with SMTP id 98e67ed59e1d1-3a0731e1df7mr452432a91.20.1790066661956; Tue, 22 Sep 2026 01:44:21 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.44.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:44:21 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 6/9] of: reserved_mem: add dumpable flag to opt-in vmcore Date: Tue, 22 Sep 2026 16:42:53 +0800 Message-ID: <20260922084256.1515554-7-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen Add a 'dumpable' flag to struct reserved_mem to decide whether a reserved area should be included in the kdump vmcore. Non-dumpable regions are later marked MEMBLOCK_NODUMP;the filtering itself happens in memblock, keeping the arch kdump code independent of the DT API. Most reserved regions are owned by devices and do not contain data useful for kernel crash analysis, so dumpable default to false. Reusable CMA regions are different: their pages are handed back to the buddy allocator and may contain key data for crash analysis, so set dumpable to true in rmem_cma_setup(). The dumpable flag is also used to check /memreserve/ entries for overlap with other dumpable regions. Suggested-by: Rob Herring Signed-off-by: Wandun Chen Tested-by: Meijing Zhao Acked-by: Marek Szyprowski Acked-by: Rob Herring (Arm) --- include/linux/of_reserved_mem.h | 1 + kernel/dma/contiguous.c | 1 + 2 files changed, 2 insertions(+) diff --git a/include/linux/of_reserved_mem.h b/include/linux/of_reserved_me= m.h index 49da515859f2..99c0f3ccc297 100644 --- a/include/linux/of_reserved_mem.h +++ b/include/linux/of_reserved_mem.h @@ -15,6 +15,7 @@ struct reserved_mem { phys_addr_t base; phys_addr_t size; void *priv; + bool dumpable; }; =20 struct reserved_mem_ops { diff --git a/kernel/dma/contiguous.c b/kernel/dma/contiguous.c index 90937dc7c627..d7bfc38ac762 100644 --- a/kernel/dma/contiguous.c +++ b/kernel/dma/contiguous.c @@ -567,6 +567,7 @@ static int __init rmem_cma_setup(unsigned long node, st= ruct reserved_mem *rmem) dma_contiguous_default_area =3D cma; =20 rmem->priv =3D cma; + rmem->dumpable =3D true; =20 pr_info("Reserved memory: created CMA memory pool at %pa, size %ld MiB\n", &rmem->base, (unsigned long)rmem->size / SZ_1M); --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f0.google.com (mail-pj2-f0.google.com [74.125.227.128]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4AFA43802D for ; Tue, 22 Sep 2026 08:44:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.128 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066678; cv=none; b=k5xl6E8KKR3xRnv+5dV/BGsE2ubh2GE2rBPx9uN08v4fcYAFb7/a9A8RCvI0TGSXwb4f5zFM9xFwA3GhGFh7Wk9ExdvRD0WIlhsDWFdIjwRw/i0h2kbLiHNYhfY6MsvHLPZbmHlPFdamqxSmqjPcV4ci/nhBPVeACqhxGnGJzOU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066678; c=relaxed/simple; bh=A4RBzJL9im7c/Ccl2wKHTfjmKax8oE4qb4M8Jusp82s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=X5Ml9V1RlYQ3l9/k2JxhzHUkbN9Srd7ZgJldAvaOWfUKf97Yo4bnf4R2cawVakC8T2H9I8AaQ4O9g91qbqA5qpjd92KBfITQXhFCwKSza5YZ4sm0mYWCz4t2dG6yLz85OvgyFB+jIPG9BIoYuWLqyFCJ+e77vP6Imv8HKZ04ix4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=pVJiMPPg; arc=none smtp.client-ip=74.125.227.128 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pVJiMPPg" Received: by mail-pj2-f0.google.com with SMTP id 98e67ed59e1d1-39e0e245eadso1692495a91.0 for ; Tue, 22 Sep 2026 01:44:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066676; x=1790671476; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JU/OT6l28quZrPrYfN7XUOSpOrASPsDzS2PQ3ztfmsA=; b=pVJiMPPgRz7zhsa7+oRwkwWR9qR7bCdm5R55ODWF4mLzKD3hoEvOQQN9IOBMrO4rQC K5BiqV9QLvHinFH4Kq17OsSHz8/XX/WSsPj9g3RuFHnRU7C0KAiPuDr2sO402WcG/wCG pyY0p9AWxOh2J0Muj/vpKLzjS0oKp3mBADel4Xxudl01DBs4clv7sbe7Lr2VeSoN0kTl +HlX4/I/xc3f7DUKp724D963/TfEowd4Nr3URrbiTtlMhcLaCd4HuK8oVzMM+ILDQinN TFmPIPR9czMAnc+0bWteOMNCRIv4Gte7BCn9E2BAyPBB5rYcG32BYnNVGHqqpTJXwJVd uIig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066676; x=1790671476; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JU/OT6l28quZrPrYfN7XUOSpOrASPsDzS2PQ3ztfmsA=; b=c+6tMMQ5qLaRIfaRlzCm+cuHjLlrWQc7ztJlK3q0iutjjUYafKcWSnB2C1puO9awV/ 1LRxRX4e0SB5hmvr7y9bl3WGPGTpuuOZ16lvI01Z6I9T/ByvrxgL7HlbImM916lFkCOq fgR7oXg6QWFSWDOC6+HNaz6W/f0svEWeUYcLnFt/K423HQ/AMGrr8c1+EYrFofEioRcH JB21BDtmbKBSA56zQRPrfM2Yb6CSB59U+kxW1a7yeAfNJFVCRsEnQzY1nX9VP6OxrARz FJaEGJvdykQiqKzmZNmw15XpFfLknAfOJLQBlke11UIUuLjhU8X5b9vcx3WqV6C9hWQj JYyg== X-Forwarded-Encrypted: i=1; AKwUvBwZ6+U0ex5QQ/7fxEDkTi4L7vCB0u7dWczLKZJ+QegZkzLTIb83X055hMOIbeI+eIHNnnY/pinkFrShZYE=@vger.kernel.org X-Gm-Message-State: AFuF++kPGL7OBybo9xqWM/QmQokq/25YtmUNXLnheZLDDBOCYca9Kyn3 XbIiruWWfxntWQNmne9IOjv2mYQ4Wof4eZxqb2+kQPTJaUU1WBLiS/uA X-Gm-Gg: AYBFou1URWWplVLHkuK01X0WtmUHNMFQqaTg7gzJiCbGaRrGMSAUDLfHFYy6JinF7ZV HvPuYIQRa7CmirlRstx4H6a2tbR2gtUNywFAuXrlEBOHE8H7HytQ/Y3k7jtiZ8aqh22deOdPlPi eaT3nePaiZ7ydEPQZRnv+XTCB8ZpVhh9GDtVyhrTQR3FeKBtO40P325jGOoebL86ZA+osa/3UKk 34TGG1Zbp+RacxiK3AxnFP4tCYC/ThzeOY3jFpls0K4idJXSUpDnA3XYtAizYh+80yFUxOyTq+j Z0cR9Zz6tj7VfqIE3lU7TawhkQdHKH67Xw30pGtf+TUTqfOzsDlkpbTS81tGXzdvG6KPhvYIIWg jLp2Q6mGzVidAcMEBVuKeIWUUNFfOMxG4ZM1rnCeU/DX2zc0zfauLe2sMI/pjIunS11qbAVUVeA /1bvdC/ElvCRvjK/rOeshsz5ehp/hWw4/D4lwTEjjAvOfkFpeKz4edfOvZZoymAu0iwzI4eNvmF x4N4DzWxB4= X-Received: by 2002:a17:90b:5408:b0:39e:6a81:f34d with SMTP id 98e67ed59e1d1-3a07320077dmr483552a91.39.1790066676289; Tue, 22 Sep 2026 01:44:36 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.44.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:44:34 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 7/9] of: reserved_mem: mark /reserved-memory entries with MEMBLOCK_NODUMP Date: Tue, 22 Sep 2026 16:42:54 +0800 Message-ID: <20260922084256.1515554-8-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen Mark non-dumpable reserved-memory regions with MEMBLOCK_NODUMP so kdump can omit them from the vmcore. The marking is guarded by CONFIG_CRASH_DUMP so non-kdump kernels do not pay the cost of splitting memblock.memory entries at NODUMP boundaries. Signed-off-by: Wandun Chen Tested-by: Meijing Zhao Acked-by: Marek Szyprowski Reviewed-by: Rob Herring (Arm) --- drivers/of/fdt.c | 1 + drivers/of/of_private.h | 1 + drivers/of/of_reserved_mem.c | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index a64afc3ded3d..286fd4db6312 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -1285,6 +1285,7 @@ void __init unflatten_device_tree(void) =20 /* Save the statically-placed regions in the reserved_mem array */ fdt_scan_reserved_mem_late(); + fdt_mark_reserve_mem_nodump(); =20 /* Populate an empty root node when bootloader doesn't provide one */ if (!fdt) { diff --git a/drivers/of/of_private.h b/drivers/of/of_private.h index 0ae16da066e2..505735732c13 100644 --- a/drivers/of/of_private.h +++ b/drivers/of/of_private.h @@ -187,6 +187,7 @@ static inline struct device_node *__of_get_dma_parent(c= onst struct device_node * =20 int fdt_scan_reserved_mem(void); void __init fdt_scan_reserved_mem_late(void); +void __init fdt_mark_reserve_mem_nodump(void); =20 bool of_fdt_device_is_available(const void *blob, unsigned long node); =20 diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c index 8c9d6395d6a3..f29a07e8fb23 100644 --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c @@ -677,6 +677,21 @@ static void __init fdt_init_reserved_mem_node(unsigned= long node, const char *un reserved_mem_count++; } =20 +void __init fdt_mark_reserve_mem_nodump(void) +{ + struct reserved_mem *rmem; + int i; + + if (!IS_ENABLED(CONFIG_CRASH_DUMP)) + return; + + for (i =3D 0; i < reserved_mem_count; i++) { + rmem =3D &reserved_mem[i]; + if (rmem->size && !rmem->dumpable) + memblock_mark_nodump(rmem->base, rmem->size); + } +} + struct rmem_assigned_device { struct device *dev; struct reserved_mem *rmem; --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f4.google.com (mail-pj2-f4.google.com [74.125.227.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC3BB5304DF for ; Tue, 22 Sep 2026 08:44:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066692; cv=none; b=SQ9ymsYsAna6jfxAG0RFdPpVqMeAFZPdAw2XJ90jep0hVD1NDZONL3fqx84ebkjtDQH/qUJjsG5WtLsUnwUWQIBWJJ4kfc/nTIpi4OKMNSerrMzmff7dHbfxwD87+mQw/DbPwTN3KT6tBNbzAbV9j/0f4jNLQf1UvtOqVUfOh/g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066692; c=relaxed/simple; bh=vMAX5brBzncYCW3D+6UFt88v8II7ELfiaKipSUvadDQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=N8SKwZ5Hi6kY8QbrCRA9bUGwK+ZKDhQtCLAYLoBFIYoqJdY4fgbKi7C3MI+hj/ezQZybmBX8vHQP/UGslFXnd51p93Oz/+T9zkECQ5DHrhZsvdhBijJbjSJTSKbebZ7eggQITV9RADaPoPGaYkVi7iurNCz9XgohC1ZTHPnNMB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K/JKfY0Y; arc=none smtp.client-ip=74.125.227.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K/JKfY0Y" Received: by mail-pj2-f4.google.com with SMTP id 98e67ed59e1d1-3896ccc93b5so1278840a91.1 for ; Tue, 22 Sep 2026 01:44:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066690; x=1790671490; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dBMl/FGlqf3qixhPiHBNfiW1ocejNfHGRfKnUu65etA=; b=K/JKfY0YN7SMNfD9TwUpZDxeEyE48M0YU73DRI4IjUA7tbmdDBgeen708uuransBsy HnAz9SaDqWRoQCHOGWO2JEdx2cc6gHh7YYnq1IWmP0h8ZCM2Ub7xcHWbrwSSa/YO8S/S +7VzoQCGV2Z4NGoRnr4lVkq5ngPX6mcTs3x9Cfe5Vm4/Y4Ew8MIcYAdZgceOU/Gtz7iN x+P3W50Yfu6z/11LjC9jNKBfHhUd2HSeMGS6Kk8QAd28eaK2fipTbFlds79mjQlR4flP NXEVYaHLDmlOMRww1UkfkK/2xSV7Cyz5JR19HgLi9kzkZaV9PayC2STzNhYEGDDk/Nj4 arVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066690; x=1790671490; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=dBMl/FGlqf3qixhPiHBNfiW1ocejNfHGRfKnUu65etA=; b=MnZ1vAm8DC1TqZDLF+F34Qx7mL6rv69jXNjuUfb+kNTWmulJKtWTIG7rsdiXGml3y/ LxLd6u5z/deuNoxTODEpvKI+294/+bo3wonDfKlVcgDZCSV34mzJoyqSq3gmk6imPt0/ 8lS2W3GiHWga/g+MglO9GUEopPe3F+eY7MuGSdyXVFijefXx+XEmRoCt/WWF4siqgsAu 8oR4oQRmfYUJJI7b4HlzH3ur4IO8SpvdSttwsj/WNSDtRenU2v4Gno4jS7UApCU3LnHw rEXGfTfUaBtf5t9U4PX6w8y5Dpm26H9OomFnhZTgOBtsrNKpD03JPXDd6ks6+Dwt/faK SJMQ== X-Forwarded-Encrypted: i=1; AKwUvBwD2NFkS30FOdXUamb4ti2eGrmlZ924fy++/SeatX/NanRpiWAz9duLt5OcOvhTqghUbTrePVog7gZsIv4=@vger.kernel.org X-Gm-Message-State: AFuF++moeFBAdKEIylso3jCeCRMNOSX+Cek6NxSUG3MA1Ofo7emg2v6I jznaKfj0d2ie2r8NIBLCh/AJ9sUKB3hbQpGmegTiVG78b0PRd9cLH6qc X-Gm-Gg: AYBFou3MRKLbmEA7aiD/ax3CNZo/gBudZXQfzIAZt9eFd9yS5VFlAFpbMlMabe/2jeS 9ktbwQBV2y2Tb56bhNy1OFAEKKpwbb8gJ/XN8BSEwd3gmOS0fVK0Tnhg+GM+0CVCYLLUj9ZUXlj 6EQJEq+tT2B7MWaKLrbwCcfVHVag85ALU/TkiWg8Vc5zdZIGjD0PKDOgpkv60XlF9fT/jZcapr5 YgqbNmy7y07S8yBw3Qgz8Ns0oA4K7vFI335HkvzMse18f08pRUgQy+15KxSjhjwDTJtBvzHiarL +zxog9sU+PmlWrhksU1XYpfZwdGuHagEuwDoplNcYfa3VXIrds1f7DqHG1hAWm1TRyTqHSy1ZiR 7mrSpJ5qrXmmIhAljxy/zU4iyYmti3sQTDr20XLVMa2vDTrI6O5rS8npjYzaZaMlppp1/aPh4G+ M8Mh+/vEUFZzaFxA2FTaJdq1jRcWr3GHK5bp9ZgwT1fDWnIRjwrdn7Il87fS98MnDMF+dHko7BV qYI+Hohc7lGAnIj8Zl03w== X-Received: by 2002:a17:90b:35c5:b0:39e:6a80:dd9b with SMTP id 98e67ed59e1d1-3a0731f9793mr479077a91.34.1790066690219; Tue, 22 Sep 2026 01:44:50 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.44.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:44:49 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 8/9] of: reserved_mem: mark /memreserve/ entries as MEMBLOCK_NODUMP Date: Tue, 22 Sep 2026 16:42:55 +0800 Message-ID: <20260922084256.1515554-9-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen The /memreserve/ entries are memory reservations made by the bootloader or firmware, their contents are not needed for kernel crash analysis, so mark them MEMBLOCK_NODUMP to have kdump omit them from the vmcore. Entries that overlap a dumpable region (such as CMA) are left unmarked, because the pages of a dumpable region may carry crash-relevant data. Signed-off-by: Wandun Chen Tested-by: Meijing Zhao Acked-by: Marek Szyprowski --- drivers/of/fdt.c | 1 + drivers/of/of_private.h | 1 + drivers/of/of_reserved_mem.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 286fd4db6312..9a727941b5af 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -1286,6 +1286,7 @@ void __init unflatten_device_tree(void) /* Save the statically-placed regions in the reserved_mem array */ fdt_scan_reserved_mem_late(); fdt_mark_reserve_mem_nodump(); + fdt_mark_memreserve_nodump(); =20 /* Populate an empty root node when bootloader doesn't provide one */ if (!fdt) { diff --git a/drivers/of/of_private.h b/drivers/of/of_private.h index 505735732c13..6497404ec751 100644 --- a/drivers/of/of_private.h +++ b/drivers/of/of_private.h @@ -188,6 +188,7 @@ static inline struct device_node *__of_get_dma_parent(c= onst struct device_node * int fdt_scan_reserved_mem(void); void __init fdt_scan_reserved_mem_late(void); void __init fdt_mark_reserve_mem_nodump(void); +void __init fdt_mark_memreserve_nodump(void); =20 bool of_fdt_device_is_available(const void *blob, unsigned long node); =20 diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c index f29a07e8fb23..a42cf6eac55b 100644 --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c @@ -251,6 +251,39 @@ static void __init __rmem_check_for_overlap(void) } } =20 +void __init fdt_mark_memreserve_nodump(void) +{ + u64 base, size; + int n; + const void *fdt =3D initial_boot_params; + + if (!IS_ENABLED(CONFIG_CRASH_DUMP)) + return; + + if (!fdt) + return; + + for (n =3D 0; ; n++) { + int i; + + if (fdt_get_mem_rsv(fdt, n, &base, &size)) + break; + if (!size) + break; + + for (i =3D 0; i < reserved_mem_count; i++) { + struct reserved_mem *rmem =3D &reserved_mem[i]; + + if (rmem->dumpable && + base < (u64)rmem->base + (u64)rmem->size && + (u64)rmem->base < base + size) + break; + } + if (i =3D=3D reserved_mem_count) + memblock_mark_nodump(base, size); + } +} + /** * fdt_scan_reserved_mem_late() - Scan FDT and initialize remaining reserv= ed * memory regions. --=20 2.43.0 From nobody Thu Sep 24 16:07:26 2026 Received: from mail-pj2-f11.google.com (mail-pj2-f11.google.com [74.125.227.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F13342E433 for ; Tue, 22 Sep 2026 08:45:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066710; cv=none; b=XVw6nJG9jTCDl66y2fUooUMNXketJhisE+9wKdpQ9snXLc6tLp94er0i/MixE75bNH4+jbTf3bD5Ky4CXUrmJ+ALXUWOTbyLn3+U983Ty6ds4ikkz8db/Vn1g0NjUHzgTHRatXXBTZjsJqkAP3z+wf62ZRb1JjRy9CwC/CKDrNI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790066710; c=relaxed/simple; bh=HSqynHYwWyM3/AIAzPlw2zR5ssM3zxj+P+TMMRPO3o0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tnFJ3ArM55zBXdEAe6q4x/3B1Nx88j0MgWc/qlHMnZKdsDn/uBDEBoJciYvr6z2OHhTRhKDZBxaT3VoF5CXaqzDTLZEloVxSBz0YgwK9CpZEPzrfv8Zz0YgnjYiDL/Pc6bRUJh4I7Ca3E+bDrR50NIjdq4P2Cijro/7th+Qq4kw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jeAk+kY3; arc=none smtp.client-ip=74.125.227.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jeAk+kY3" Received: by mail-pj2-f11.google.com with SMTP id 98e67ed59e1d1-39569e136f9so3160261a91.0 for ; Tue, 22 Sep 2026 01:45:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790066708; x=1790671508; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xFj2nCVpKiIz+n9fFlODHsR1pKxI11t8bWPyNgAqBFI=; b=jeAk+kY34/NHF0TJAFB3cHIB9/7bcYALmdQlCmevs97L8iMep1wmGy8/WjE9AuKNja g0jd5TeXi7wh5DUdUOa5bfdl1EfTIdWznO8HHekcbYHmZjmTucYCprTCJZfSRUZs29CJ dPnayj/bYd+KkQMGTyx2WPG/3MZyLxuGAbNk1T59G/Z0xsfyfFpIdF+nDG2qCSUl8ZsX onsAk0Fr6hork9OwfWcaRquHhohu5XJSbLL0DZUnTm4bGFRPFlu5jWGIWRE+JemUvNTg tNoxOAR+njrSBmkjEehMkjvYjRAYzYQ0+VbHE3/yu8CI7APYpedo/kD0wZFkEfcbArdg 3Rlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790066708; x=1790671508; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xFj2nCVpKiIz+n9fFlODHsR1pKxI11t8bWPyNgAqBFI=; b=Axu0azyr2NOa7/EvhE967w5GG09LFqfpbumonz/PN+lkbZx0vJJt1nkKvkp3xAmeCH mhQ4Tg+JCxF+RILs9Yi0q6K2ZQXX3l4hvbpHkYkKvAv8pJt4HTMaFaJneb77nl/dp5dS ncEwXJPjTdzwZaUOqxuzya1R4h3eVLjfpdB2LEfMSbrmLRNBqXOZvVQVVgb9Vnz2XUog dTJHalyfKp0SrUH6jMp1H3JrdjeFIKt9rap+kn26fD29yALWyaTX9qc3+uCm9qCAydlu CSLabLjsj8KxlxyMs4vsQOa0iKZ6c2AHCbXb1jtYTYHa3ZqHShxc4bXbkbD8yyrs0dat s7TQ== X-Forwarded-Encrypted: i=1; AKwUvBwW5pu5IwckKQCB5QF3W0KjtWxwEMlY1Ul8d/Ml4tBs5taFheHLfzyKfjF7xwNWqmfBZcAxcAmziiDr5n4=@vger.kernel.org X-Gm-Message-State: AFuF++nEpUDcxQZasYvjdXOLcjZEdL8hbGXH5i9KEGa6Ad8OfBNDuLix sL1ZZB+DcE9wkFhZMNW4CVHQ8sIJl8a+krWGQtC1IFILPKN69pnH8qmi X-Gm-Gg: AYBFou1svGManPe8OFXOryAgWjKmHbj1tZo5piof4TWB+vylze0onKfXgdLzWfdiVgQ YGQFcgnJah2QXsbzjl3chadT+n+p8wSMXmzfYxbAVCBxal4XSXhomcjPRond/CkB+W17bDWalU6 6qpdqiyWZ0s/bM1aXoUW7xXMssbMMXFODVQoGD47jNzj1NV3clc6sSHeJFxNC+8NrXauYLTVhBU 5YAiHVqc8E+gi1rD//ZAaQbyihO+yuhho23u68L77IEEwosDBqTRnU/cbvMAZylrl62K/aQzcBS qx5LddbWUEl/XwjfTqh5U0jrkzIZxuCGnD2mvcjl/3LyBdMRXzzZGaQBFYRXIWipAJi09wq3uwo KeefCP+80aIbcubD2JZCv0vGnnRr0TxmWyxUQO45WjBMxwcCD8cEvsUxLUnrBzuyl8Fa/ngcFDi oa0FjeLbB1WLzs0Lvy+NbI1pZpole6thNaUE19ujZm4iOxxAI3kQNC6PN6rH4NYyx8+kF/zJ0la s0B6oLY+B8cYygbl5ZvBA== X-Received: by 2002:a17:90b:1d8c:b0:39d:f4fd:8075 with SMTP id 98e67ed59e1d1-3a073182cebmr486642a91.19.1790066708546; Tue, 22 Sep 2026 01:45:08 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0674a5ae4sm3670016a91.12.2026.09.22.01.44.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 01:45:07 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: [PATCH v7 9/9] crash_core: skip MEMBLOCK_NODUMP regions when building vmcore ELF header Date: Tue, 22 Sep 2026 16:42:56 +0800 Message-ID: <20260922084256.1515554-10-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922084256.1515554-1-chenwandun1@gmail.com> References: <20260922084256.1515554-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wandun Chen Reserve regions (for GPU, DSP, ...) carry no data useful for crash analysis. Exclude MEMBLOCK_NODUMP regions from the vmcore ELF header to reduce vmcore size and capture time. crash_should_skip_region() now also returns true for MEMBLOCK_NODUMP. Signed-off-by: Wandun Chen Tested-by: Meijing Zhao Acked-by: Baoquan He --- kernel/crash_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/crash_core.c b/kernel/crash_core.c index c7acb2e449df..fdfeee5afa1a 100644 --- a/kernel/crash_core.c +++ b/kernel/crash_core.c @@ -270,10 +270,10 @@ int crash_prepare_elf64_headers(struct crash_mem *mem= , int need_kernel_map, return 0; } =20 -/* Exclude NOMAP regions from the vmcore. */ +/* Exclude NOMAP and NODUMP regions from the vmcore. */ static bool crash_should_skip_region(struct memblock_region *reg) { - return memblock_is_nomap(reg); + return memblock_is_nomap(reg) || memblock_is_nodump(reg); } =20 static struct crash_mem *alloc_cmem(unsigned int nr_ranges) --=20 2.43.0