All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tao Cui <cui.tao@linux.dev>
To: Yangyang Lian <lianyangyang@kylinos.cn>,
	Andrew Morton <akpm@linux-foundation.org>,
	Baoquan He <baoquan.he@linux.dev>,
	Mike Rapoport <rppt@kernel.org>,
	Pasha Tatashin <pasha.tatashin@soleen.com>,
	Pratyush Yadav <pratyush@kernel.org>,
	Huacai Chen <chenhuacai@kernel.org>
Cc: cui.tao@linux.dev, Dave Young <ruirui.yang@linux.dev>,
	WANG Xuerui <kernel@xen0n.name>,
	kexec@lists.infradead.org, loongarch@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Haoran Jiang <jianghaoran@kylinos.cn>,
	George Guo <guodongtai@kylinos.cn>
Subject: Re: [PATCH] LoongArch: kdump: add arch_crash_save_vmcoreinfo() support
Date: Thu, 24 Sep 2026 10:23:14 +0800	[thread overview]
Message-ID: <5151137f-da51-4428-83a5-0ea355e511ca@linux.dev> (raw)
In-Reply-To: <20260923060349.146780-1-lianyangyang@kylinos.cn>

Hi Yangyang,

在 2026/9/23 14:03, Yangyang Lian 写道:
> Since commit 23c85094fe18 ("proc/kcore: add vmcoreinfo note to
> /proc/kcore") the kernel has exported the vmcoreinfo PT_NOTE on
> /proc/kcore as wellas /proc/vmcore.
> 
> LoongArch does not provide arch_crash_save_vmcoreinfo(), so the
> arch-specific values are missing from the vmcoreinfo PT_NOTE. The
> generic exporter in kernel/vmcore_info.c already provides
> NUMBER(VMALLOC_START), but tools like crash cannot derive the module
> and vmemmap ranges, VA_BITS, or the KASLR offset of a LoongArch dump.
> 
> Since commit 18210a104bb9 ("LoongArch: Expand module virtual address
> space to 2GB") the vmalloc and module boundaries are no longer stable
> across kernel versions either, so vmcoreinfo is the only reliable
> source for them.
> 

I gave this patch a run on a Loongson-3A6000 box: built next-20260922
with it applied and booted the kernel as a KVM guest. Without the
patch /proc/kcore only has the generic fields (OSRELEASE, PAGESIZE,
NUMBER(VMALLOC_START) and the usual symbols/offsets). With it, the
note now looks like:

  OSRELEASE=7.3.0-rc4-next-20260922-eagersplit+
  PAGESIZE=16384
  NUMBER(VMALLOC_START)=0xffff800082008000
  NUMBER(VA_BITS)=47
  NUMBER(VMALLOC_END)=0xfffffebffd7f8000
  NUMBER(MODULES_VADDR)=0xffff800002008000
  NUMBER(MODULES_END)=0xffff800082008000
  NUMBER(VMEMMAP_START)=0xfffffebffe000000
  NUMBER(VMEMMAP_END)=0xfffffffffdffffff
  NUMBER(PHYS_OFFSET)=0x0
  KERNELOFFSET=0

(KASLR is off in my guest cmdline, hence KERNELOFFSET=0.)

One thing worth a look: as also pointed out in the sashiko review,
VMEMMAP_END on LoongArch is an inclusive bound (note the ...fdffffff
above), while the doc added in this patch says
VMEMMAP_START ~ VMEMMAP_END-1, and tools like makedumpfile compute
the size as VMEMMAP_END - VMEMMAP_START. So exporting VMEMMAP_END + 1
would probably match what consumers expect.

Works fine otherwise.

Tested-by: Tao Cui <cuitao@kylinos.cn>

> Provide this function in a separate file that is built at the same time
> as its caller in kernel/vmcore_info.c, and add a LOONGARCH64 section to
> Documentation/admin-guide/kdump/vmcoreinfo.rst.
> 
> Reported-by: Haoran Jiang <jianghaoran@kylinos.cn>
> Suggested-by: Haoran Jiang <jianghaoran@kylinos.cn>
> Co-developed-by: George Guo <guodongtai@kylinos.cn>
> Signed-off-by: George Guo <guodongtai@kylinos.cn>
> Signed-off-by: Yangyang Lian <lianyangyang@kylinos.cn>
> ---
>  .../admin-guide/kdump/vmcoreinfo.rst          | 29 +++++++++++++++++++
>  arch/loongarch/kernel/Makefile                |  1 +
>  arch/loongarch/kernel/vmcore_info.c           | 21 ++++++++++++++
>  3 files changed, 51 insertions(+)
>  create mode 100644 arch/loongarch/kernel/vmcore_info.c
> 
> diff --git a/Documentation/admin-guide/kdump/vmcoreinfo.rst b/Documentation/admin-guide/kdump/vmcoreinfo.rst
> index 7663c610fe90..2ff921232616 100644
> --- a/Documentation/admin-guide/kdump/vmcoreinfo.rst
> +++ b/Documentation/admin-guide/kdump/vmcoreinfo.rst
> @@ -594,3 +594,32 @@ va_kernel_pa_offset
>  
>  Indicates the offset between the kernel virtual and physical mappings.
>  Used to translate virtual to physical addresses.
> +
> +LOONGARCH64
> +===========
> +
> +VA_BITS
> +-------
> +
> +The maximum number of bits for virtual addresses. Used to compute the
> +virtual memory ranges.
> +
> +PHYS_OFFSET
> +-----------
> +
> +Indicates the physical address of the start of memory. Used to translate
> +virtual to physical addresses.
> +
> +KERNELOFFSET
> +------------
> +
> +The kernel randomization offset. Used to locate the kernel text in
> +virtual memory. If KASLR is disabled, this value is zero.
> +
> +MODULES_VADDR|MODULES_END|VMALLOC_START|VMALLOC_END|VMEMMAP_START|VMEMMAP_END
> +-----------------------------------------------------------------------------
> +
> +Used to get the correct ranges:
> +	MODULES_VADDR ~ MODULES_END-1 : Kernel module space.
> +	VMALLOC_START ~ VMALLOC_END-1 : vmalloc() / ioremap() space.
> +	VMEMMAP_START ~ VMEMMAP_END-1 : vmemmap region, used for struct page array.
> diff --git a/arch/loongarch/kernel/Makefile b/arch/loongarch/kernel/Makefile
> index 001924877772..6260c15adaba 100644
> --- a/arch/loongarch/kernel/Makefile
> +++ b/arch/loongarch/kernel/Makefile
> @@ -64,6 +64,7 @@ obj-$(CONFIG_RELOCATABLE)	+= relocate.o
>  obj-$(CONFIG_KEXEC_CORE)	+= machine_kexec.o relocate_kernel.o
>  obj-$(CONFIG_KEXEC_FILE)	+= machine_kexec_file.o kexec_efi.o kexec_elf.o
>  obj-$(CONFIG_CRASH_DUMP)	+= crash_dump.o
> +obj-$(CONFIG_VMCORE_INFO)	+= vmcore_info.o
>  
>  obj-$(CONFIG_UNWINDER_GUESS)	+= unwind_guess.o
>  obj-$(CONFIG_UNWINDER_PROLOGUE) += unwind_prologue.o
> diff --git a/arch/loongarch/kernel/vmcore_info.c b/arch/loongarch/kernel/vmcore_info.c
> new file mode 100644
> index 000000000000..1128f6cdfe0d
> --- /dev/null
> +++ b/arch/loongarch/kernel/vmcore_info.c
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +#include <linux/vmcore_info.h>
> +#include <asm/addrspace.h>
> +#include <asm/pgtable.h>
> +#include <asm/setup.h>
> +
> +void arch_crash_save_vmcoreinfo(void)
> +{
> +	VMCOREINFO_NUMBER(VA_BITS);
> +	/* NUMBER(VMALLOC_START) is exported by the generic code */
> +	vmcoreinfo_append_str("NUMBER(VMALLOC_END)=0x%lx\n", VMALLOC_END);
> +#ifdef CONFIG_64BIT
> +	vmcoreinfo_append_str("NUMBER(MODULES_VADDR)=0x%lx\n", MODULES_VADDR);
> +	vmcoreinfo_append_str("NUMBER(MODULES_END)=0x%lx\n", MODULES_END);
> +	vmcoreinfo_append_str("NUMBER(VMEMMAP_START)=0x%lx\n", (unsigned long)vmemmap);
> +	vmcoreinfo_append_str("NUMBER(VMEMMAP_END)=0x%lx\n", VMEMMAP_END);
> +#endif
> +	vmcoreinfo_append_str("NUMBER(PHYS_OFFSET)=0x%lx\n", PHYS_OFFSET);
> +	vmcoreinfo_append_str("KERNELOFFSET=%lx\n", kaslr_offset());
> +}


  parent reply	other threads:[~2026-09-24  2:23 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-23  6:03 [PATCH] LoongArch: kdump: add arch_crash_save_vmcoreinfo() support Yangyang Lian
2026-09-23  6:16 ` sashiko-bot
2026-09-24  2:23 ` Tao Cui [this message]
2026-09-24  7:56 ` [PATCH v2] " Yangyang Lian
2026-09-24  8:04   ` sashiko-bot
2026-09-28 14:28   ` Huacai Chen
2026-10-03  8:23     ` Dave Young
2026-10-03  9:10       ` Huacai Chen
2026-10-10  5:41         ` Dave Young
2026-10-08  2:34   ` [PATCH v3] " Yangyang Lian
2026-10-08  2:48     ` sashiko-bot
2026-10-11 14:25     ` Huacai Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5151137f-da51-4428-83a5-0ea355e511ca@linux.dev \
    --to=cui.tao@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=baoquan.he@linux.dev \
    --cc=chenhuacai@kernel.org \
    --cc=guodongtai@kylinos.cn \
    --cc=jianghaoran@kylinos.cn \
    --cc=kernel@xen0n.name \
    --cc=kexec@lists.infradead.org \
    --cc=lianyangyang@kylinos.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=loongarch@lists.linux.dev \
    --cc=pasha.tatashin@soleen.com \
    --cc=pratyush@kernel.org \
    --cc=rppt@kernel.org \
    --cc=ruirui.yang@linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.