2022-07-25 01:47:18

by Xianting Tian

[permalink] [raw]
Subject: [RESEND PATCH V2 0/5] Fixups to work with crash tool

I ever sent the patch 1 in the link:
https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
And patch 2,3 in the link:
https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/

This patch series just put these patches together, and with two new patch 4, 5.
these five patches are the fixups for machine_kexec, kernel mode PC for vmcore
and improvements for vmcoreinfo and memory layout dump.

The main changes in the five patchs as below,
Patch 1: use __smp_processor_id() instead of smp_processor_id() to cleanup
the console prints.
Patch 2: Add VM layout, va bits, ram base to vmcoreinfo, which can simplify
the development of crash tool as ARM64 already did
(arch/arm64/kernel/crash_core.c).
Patch 3: Add modules to virtual kernel memory layout dump.
Patch 4: Fixup to get correct kernel mode PC for vmcore.
Patch 5: Updates vmcoreinfo.rst.

With these 5 patches(patch 2 is must), crash tool can work well to analyze
a vmcore. The patches for crash tool for RISCV64 is in the link:
https://lore.kernel.org/linux-riscv/[email protected]/

Changes v1 -> v2:
1, remove the patch "Add a fast call path of crash_kexec()" from this series
of patches, as it already applied to riscv git.
https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/commit/?h=for-next&id=3f1901110a89b0e2e13adb2ac8d1a7102879ea98
2, add 'Reviewed-by' based on the comments of v1.

Xianting Tian (5):
RISC-V: use __smp_processor_id() instead of smp_processor_id()
RISC-V: Add arch_crash_save_vmcoreinfo support
riscv: Add modules to virtual kernel memory layout dump
RISC-V: Fixup getting correct current pc
riscv64: crash_core: Export kernel vm layout, phys_ram_base

.../admin-guide/kdump/vmcoreinfo.rst | 31 +++++++++++++++++++
arch/riscv/kernel/Makefile | 1 +
arch/riscv/kernel/crash_core.c | 29 +++++++++++++++++
arch/riscv/kernel/crash_save_regs.S | 2 +-
arch/riscv/kernel/machine_kexec.c | 2 +-
arch/riscv/mm/init.c | 4 +++
6 files changed, 67 insertions(+), 2 deletions(-)
create mode 100644 arch/riscv/kernel/crash_core.c

--
2.17.1


2022-07-25 01:47:43

by Xianting Tian

[permalink] [raw]
Subject: [RESEND PATCH V2 3/5] riscv: Add modules to virtual kernel memory layout dump

Modules always live before the kernel, MODULES_END is fixed but
MODULES_VADDR isn't fixed, it depends on the kernel size.
Let's add it to virtual kernel memory layout dump.

As MODULES is only defined for CONFIG_64BIT, so we dump it when
CONFIG_64BIT=y.

eg,
MODULES_VADDR - MODULES_END
0xffffffff01133000 - 0xffffffff80000000

Reviewed-by: Guo Ren <[email protected]>
Reviewed-by: Heiko Stuebner <[email protected]>
Signed-off-by: Xianting Tian <[email protected]>
---
arch/riscv/mm/init.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
index d466ec670e1f..2c4a64e97aec 100644
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@ -135,6 +135,10 @@ static void __init print_vm_layout(void)
(unsigned long)VMEMMAP_END);
print_ml("vmalloc", (unsigned long)VMALLOC_START,
(unsigned long)VMALLOC_END);
+#ifdef CONFIG_64BIT
+ print_ml("modules", (unsigned long)MODULES_VADDR,
+ (unsigned long)MODULES_END);
+#endif
print_ml("lowmem", (unsigned long)PAGE_OFFSET,
(unsigned long)high_memory);
if (IS_ENABLED(CONFIG_64BIT)) {
--
2.17.1

2022-07-25 01:47:44

by Xianting Tian

[permalink] [raw]
Subject: [RESEND PATCH V2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support

Add arch_crash_save_vmcoreinfo(), which exports VM layout(MODULES, VMALLOC,
VMEMMAP and KERNEL_LINK_ADDR ranges), va bits and ram base to vmcore.

Default pagetable levels and PAGE_OFFSET aren't same for different kernel
version as below. For default pagetable levels, it sets sv57 on defaultly
in latest kernel and do fallback to try to set sv48 on boot time if sv57
is not supported in current hardware.

For ram base, the default value is 0x80200000 for qemu riscv64 env, 0x200000
for riscv64 SoC platform(eg, SoC platform of RISC-V XuanTie 910 CPU).

* Linux Kernel 5.18 ~
* PGTABLE_LEVELS = 5
* PAGE_OFFSET = 0xff60000000000000
* Linux Kernel 5.17 ~
* PGTABLE_LEVELS = 4
* PAGE_OFFSET = 0xffffaf8000000000
* Linux Kernel 4.19 ~
* PGTABLE_LEVELS = 3
* PAGE_OFFSET = 0xffffffe000000000

Since these configurations change from time to time and version to version,
it is preferable to export them via vmcoreinfo than to change the crash's
code frequently, it can simplify the development of crash tool.

Signed-off-by: Xianting Tian <[email protected]>
---
arch/riscv/kernel/Makefile | 1 +
arch/riscv/kernel/crash_core.c | 29 +++++++++++++++++++++++++++++
2 files changed, 30 insertions(+)
create mode 100644 arch/riscv/kernel/crash_core.c

diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile
index 33bb60a354cd..5e149df58176 100644
--- a/arch/riscv/kernel/Makefile
+++ b/arch/riscv/kernel/Makefile
@@ -81,6 +81,7 @@ obj-$(CONFIG_KGDB) += kgdb.o
obj-$(CONFIG_KEXEC_CORE) += kexec_relocate.o crash_save_regs.o machine_kexec.o
obj-$(CONFIG_KEXEC_FILE) += elf_kexec.o machine_kexec_file.o
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
+obj-$(CONFIG_CRASH_CORE) += crash_core.o

obj-$(CONFIG_JUMP_LABEL) += jump_label.o

diff --git a/arch/riscv/kernel/crash_core.c b/arch/riscv/kernel/crash_core.c
new file mode 100644
index 000000000000..8d7f5ff108da
--- /dev/null
+++ b/arch/riscv/kernel/crash_core.c
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+#include <linux/crash_core.h>
+#include <linux/pagemap.h>
+
+void arch_crash_save_vmcoreinfo(void)
+{
+ VMCOREINFO_NUMBER(VA_BITS);
+ VMCOREINFO_NUMBER(phys_ram_base);
+
+ vmcoreinfo_append_str("NUMBER(PAGE_OFFSET)=0x%lx\n", PAGE_OFFSET);
+ vmcoreinfo_append_str("NUMBER(VMALLOC_START)=0x%lx\n", VMALLOC_START);
+ vmcoreinfo_append_str("NUMBER(VMALLOC_END)=0x%lx\n", VMALLOC_END);
+ vmcoreinfo_append_str("NUMBER(VMEMMAP_START)=0x%lx\n", VMEMMAP_START);
+ vmcoreinfo_append_str("NUMBER(VMEMMAP_END)=0x%lx\n", VMEMMAP_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);
+#endif
+
+ if (IS_ENABLED(CONFIG_64BIT)) {
+#ifdef CONFIG_KASAN
+ vmcoreinfo_append_str("NUMBER(KASAN_SHADOW_START)=0x%lx\n", KASAN_SHADOW_START);
+ vmcoreinfo_append_str("NUMBER(KASAN_SHADOW_END)=0x%lx\n", KASAN_SHADOW_END);
+#endif
+ vmcoreinfo_append_str("NUMBER(KERNEL_LINK_ADDR)=0x%lx\n", KERNEL_LINK_ADDR);
+ vmcoreinfo_append_str("NUMBER(ADDRESS_SPACE_END)=0x%lx\n", ADDRESS_SPACE_END);
+ }
+}
--
2.17.1

2022-07-25 01:48:19

by Xianting Tian

[permalink] [raw]
Subject: [RESEND PATCH V2 4/5] RISC-V: Fixup getting correct current pc

When use 'echo c > /proc/sysrq-trigger' to trigger kdump, riscv_crash_save_regs()
will be called to save regs to vmcore, we found "epc" value 00ffffffa5537400
is not a valid kernel virtual address, but is a user virtual address. Other
regs(eg, ra, sp, gp...) are correct kernel virtual address.
Actually 0x00ffffffb0dd9400 is the user mode PC of 'PID: 113 Comm: sh', which
is saved in the task's stack.

[ 21.201701] CPU: 0 PID: 113 Comm: sh Kdump: loaded Not tainted 5.18.9 #45
[ 21.201979] Hardware name: riscv-virtio,qemu (DT)
[ 21.202160] epc : 00ffffffa5537400 ra : ffffffff80088640 sp : ff20000010333b90
[ 21.202435] gp : ffffffff810dde38 tp : ff6000000226c200 t0 : ffffffff8032be7c
[ 21.202707] t1 : 0720072007200720 t2 : 30203a7375746174 s0 : ff20000010333cf0
[ 21.202973] s1 : 0000000000000000 a0 : ff20000010333b98 a1 : 0000000000000001
[ 21.203243] a2 : 0000000000000010 a3 : 0000000000000000 a4 : 28c8f0aeffea4e00
[ 21.203519] a5 : 28c8f0aeffea4e00 a6 : 0000000000000009 a7 : ffffffff8035c9b8
[ 21.203794] s2 : ffffffff810df0a8 s3 : ffffffff810df718 s4 : ff20000010333b98
[ 21.204062] s5 : 0000000000000000 s6 : 0000000000000007 s7 : ffffffff80c4a468
[ 21.204331] s8 : 00ffffffef451410 s9 : 0000000000000007 s10: 00aaaaaac0510700
[ 21.204606] s11: 0000000000000001 t3 : ff60000001218f00 t4 : ff60000001218f00
[ 21.204876] t5 : ff60000001218000 t6 : ff200000103338b8
[ 21.205079] status: 0000000200000020 badaddr: 0000000000000000 cause: 0000000000000008

With the incorrect PC, the backtrace showed by crash tool as below, the first
stack frame is abnormal,

crash> bt
PID: 113 TASK: ff60000002269600 CPU: 0 COMMAND: "sh"
#0 [ff2000001039bb90] __efistub_.Ldebug_info0 at 00ffffffa5537400 <-- Abnormal
#1 [ff2000001039bcf0] panic at ffffffff806578ba
#2 [ff2000001039bd50] sysrq_reset_seq_param_set at ffffffff8038c030
#3 [ff2000001039bda0] __handle_sysrq at ffffffff8038c5f8
#4 [ff2000001039be00] write_sysrq_trigger at ffffffff8038cad8
#5 [ff2000001039be20] proc_reg_write at ffffffff801b7edc
#6 [ff2000001039be40] vfs_write at ffffffff80152ba6
#7 [ff2000001039be80] ksys_write at ffffffff80152ece
#8 [ff2000001039bed0] sys_write at ffffffff80152f46

With the patch, we can get current kernel mode PC, the output as below,

[ 17.607658] CPU: 0 PID: 113 Comm: sh Kdump: loaded Not tainted 5.18.9 #42
[ 17.607937] Hardware name: riscv-virtio,qemu (DT)
[ 17.608150] epc : ffffffff800078f8 ra : ffffffff8008862c sp : ff20000010333b90
[ 17.608441] gp : ffffffff810dde38 tp : ff6000000226c200 t0 : ffffffff8032be68
[ 17.608741] t1 : 0720072007200720 t2 : 666666666666663c s0 : ff20000010333cf0
[ 17.609025] s1 : 0000000000000000 a0 : ff20000010333b98 a1 : 0000000000000001
[ 17.609320] a2 : 0000000000000010 a3 : 0000000000000000 a4 : 0000000000000000
[ 17.609601] a5 : ff60000001c78000 a6 : 000000000000003c a7 : ffffffff8035c9a4
[ 17.609894] s2 : ffffffff810df0a8 s3 : ffffffff810df718 s4 : ff20000010333b98
[ 17.610186] s5 : 0000000000000000 s6 : 0000000000000007 s7 : ffffffff80c4a468
[ 17.610469] s8 : 00ffffffca281410 s9 : 0000000000000007 s10: 00aaaaaab5bb6700
[ 17.610755] s11: 0000000000000001 t3 : ff60000001218f00 t4 : ff60000001218f00
[ 17.611041] t5 : ff60000001218000 t6 : ff20000010333988
[ 17.611255] status: 0000000200000020 badaddr: 0000000000000000 cause: 0000000000000008

With the correct PC, the backtrace showed by crash tool as below,

crash> bt
PID: 113 TASK: ff6000000226c200 CPU: 0 COMMAND: "sh"
#0 [ff20000010333b90] riscv_crash_save_regs at ffffffff800078f8 <--- Normal
#1 [ff20000010333cf0] panic at ffffffff806578c6
#2 [ff20000010333d50] sysrq_reset_seq_param_set at ffffffff8038c03c
#3 [ff20000010333da0] __handle_sysrq at ffffffff8038c604
#4 [ff20000010333e00] write_sysrq_trigger at ffffffff8038cae4
#5 [ff20000010333e20] proc_reg_write at ffffffff801b7ee8
#6 [ff20000010333e40] vfs_write at ffffffff80152bb2
#7 [ff20000010333e80] ksys_write at ffffffff80152eda
#8 [ff20000010333ed0] sys_write at ffffffff80152f52

Fixes: e53d28180d4d ("RISC-V: Add kdump support")
Co-developed-by: Guo Ren <[email protected]>
Signed-off-by: Xianting Tian <[email protected]>
---
arch/riscv/kernel/crash_save_regs.S | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/riscv/kernel/crash_save_regs.S b/arch/riscv/kernel/crash_save_regs.S
index 7832fb763aba..b2a1908c0463 100644
--- a/arch/riscv/kernel/crash_save_regs.S
+++ b/arch/riscv/kernel/crash_save_regs.S
@@ -44,7 +44,7 @@ SYM_CODE_START(riscv_crash_save_regs)
REG_S t6, PT_T6(a0) /* x31 */

csrr t1, CSR_STATUS
- csrr t2, CSR_EPC
+ auipc t2, 0x0
csrr t3, CSR_TVAL
csrr t4, CSR_CAUSE

--
2.17.1

2022-07-25 01:48:32

by Xianting Tian

[permalink] [raw]
Subject: [RESEND PATCH V2 5/5] riscv: crash_core: Export kernel vm layout, phys_ram_base

These infos are needed by the kdump crash tool. Since these values change
from time to time, it is preferable to export them via vmcoreinfo than to
change the crash's code frequently.

Signed-off-by: Xianting Tian <[email protected]>
---
.../admin-guide/kdump/vmcoreinfo.rst | 31 +++++++++++++++++++
1 file changed, 31 insertions(+)

diff --git a/Documentation/admin-guide/kdump/vmcoreinfo.rst b/Documentation/admin-guide/kdump/vmcoreinfo.rst
index 8419019b6a88..6b76284a503c 100644
--- a/Documentation/admin-guide/kdump/vmcoreinfo.rst
+++ b/Documentation/admin-guide/kdump/vmcoreinfo.rst
@@ -595,3 +595,34 @@ X2TLB
-----

Indicates whether the crashed kernel enabled SH extended mode.
+
+RISCV64
+=======
+
+VA_BITS
+-------
+
+The maximum number of bits for virtual addresses. Used to compute the
+virtual memory ranges.
+
+PAGE_OFFSET
+-----------
+
+Indicates the virtual kernel start address of direct-mapped RAM region.
+
+phys_ram_base
+-------------
+
+Indicates the start physical RAM address.
+
+MODULES_VADDR|MODULES_END|VMALLOC_START|VMALLOC_END|VMEMMAP_START|VMEMMAP_END
+-----------------------------------------------------------------------------
+KASAN_SHADOW_START|KASAN_SHADOW_END|KERNEL_LINK_ADDR|ADDRESS_SPACE_END
+----------------------------------------------------------------------
+
+Used to get the correct ranges:
+ MODULES_VADDR ~ MODULES_END : Kernel module space.
+ VMALLOC_START ~ VMALLOC_END : vmalloc() / ioremap() space.
+ VMEMMAP_START ~ VMEMMAP_END : vmemmap region, used for struct page array.
+ KASAN_SHADOW_START ~ KASAN_SHADOW_END : kasan shadow space.
+ KERNEL_LINK_ADDR ~ ADDRESS_SPACE_END : Kernel link and BPF space.
--
2.17.1

2022-07-25 02:16:49

by Xianting Tian

[permalink] [raw]
Subject: [RESEND PATCH V2 1/5] RISC-V: use __smp_processor_id() instead of smp_processor_id()

Use __smp_processor_id() to avoid check the preemption context when
CONFIG_DEBUG_PREEMPT enabled, as we will enter crash kernel and no
return.

Without the patch,
[ 103.781044] sysrq: Trigger a crash
[ 103.784625] Kernel panic - not syncing: sysrq triggered crash
[ 103.837634] CPU1: off
[ 103.889668] CPU2: off
[ 103.933479] CPU3: off
[ 103.939424] Starting crashdump kernel...
[ 103.943442] BUG: using smp_processor_id() in preemptible [00000000] code: sh/346
[ 103.950884] caller is debug_smp_processor_id+0x1c/0x26
[ 103.956051] CPU: 0 PID: 346 Comm: sh Kdump: loaded Not tainted 5.10.113-00002-gce03f03bf4ec-dirty #149
[ 103.965355] Call Trace:
[ 103.967805] [<ffffffe00020372a>] walk_stackframe+0x0/0xa2
[ 103.973206] [<ffffffe000bcf1f4>] show_stack+0x32/0x3e
[ 103.978258] [<ffffffe000bd382a>] dump_stack_lvl+0x72/0x8e
[ 103.983655] [<ffffffe000bd385a>] dump_stack+0x14/0x1c
[ 103.988705] [<ffffffe000bdc8fe>] check_preemption_disabled+0x9e/0xaa
[ 103.995057] [<ffffffe000bdc926>] debug_smp_processor_id+0x1c/0x26
[ 104.001150] [<ffffffe000206c64>] machine_kexec+0x22/0xd0
[ 104.006463] [<ffffffe000291a7e>] __crash_kexec+0x6a/0xa4
[ 104.011774] [<ffffffe000bcf3fa>] panic+0xfc/0x2b0
[ 104.016480] [<ffffffe000656ca4>] sysrq_reset_seq_param_set+0x0/0x70
[ 104.022745] [<ffffffe000657310>] __handle_sysrq+0x8c/0x154
[ 104.028229] [<ffffffe0006577e8>] write_sysrq_trigger+0x5a/0x6a
[ 104.034061] [<ffffffe0003d90e0>] proc_reg_write+0x58/0xd4
[ 104.039459] [<ffffffe00036cff4>] vfs_write+0x7e/0x254
[ 104.044509] [<ffffffe00036d2f6>] ksys_write+0x58/0xbe
[ 104.049558] [<ffffffe00036d36a>] sys_write+0xe/0x16
[ 104.054434] [<ffffffe000201b9a>] ret_from_syscall+0x0/0x2
[ 104.067863] Will call new kernel at ecc00000 from hart id 0
[ 104.074939] FDT image at fc5ee000
[ 104.079523] Bye...

With the patch we can got clear output,
[ 67.740553] sysrq: Trigger a crash
[ 67.744166] Kernel panic - not syncing: sysrq triggered crash
[ 67.809123] CPU1: off
[ 67.865210] CPU2: off
[ 67.909075] CPU3: off
[ 67.919123] Starting crashdump kernel...
[ 67.924900] Will call new kernel at ecc00000 from hart id 0
[ 67.932045] FDT image at fc5ee000
[ 67.935560] Bye...

Fixes: 0e105f1d0037 ("riscv: use hart id instead of cpu id on machine_kexec")
Reviewed-by: Guo Ren <[email protected]>
Reviewed-by: Heiko Stuebner <[email protected]>
Reviewed-by: Atish Patra <[email protected]>
Signed-off-by: Xianting Tian <[email protected]>
---
arch/riscv/kernel/machine_kexec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/riscv/kernel/machine_kexec.c b/arch/riscv/kernel/machine_kexec.c
index df8e24559035..86d1b5f9dfb5 100644
--- a/arch/riscv/kernel/machine_kexec.c
+++ b/arch/riscv/kernel/machine_kexec.c
@@ -171,7 +171,7 @@ machine_kexec(struct kimage *image)
struct kimage_arch *internal = &image->arch;
unsigned long jump_addr = (unsigned long) image->start;
unsigned long first_ind_entry = (unsigned long) &image->head;
- unsigned long this_cpu_id = smp_processor_id();
+ unsigned long this_cpu_id = __smp_processor_id();
unsigned long this_hart_id = cpuid_to_hartid_map(this_cpu_id);
unsigned long fdt_addr = internal->fdt_addr;
void *control_code_buffer = page_address(image->control_code_page);
--
2.17.1

2022-07-25 17:44:06

by Conor Dooley

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool

On 25/07/2022 02:45, Xianting Tian wrote:
> [RESEND PATCH V2 0/5] Fixups to work with crash tool

FWIW, this is not a "resend" - there's at least a commit message
difference here so this should have been v3. Also your cover letter
was not the one generated for the patches you actually sent since
it still mentions "riscv64" in the subject line for patch 5.

That said, this does not apply to riscv/for-next:
b4 shazam [email protected]
Grabbing thread from lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
Checking for newer revisions on https://lore.kernel.org/all/
Analyzing 6 messages in the thread
Checking attestation on all messages, may take a moment...
---
[PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of smp_processor_id()
[PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
[PATCH v2 3/5] riscv: Add modules to virtual kernel memory layout dump
[PATCH v2 4/5] RISC-V: Fixup getting correct current pc
[PATCH v2 5/5] riscv: crash_core: Export kernel vm layout, phys_ram_base
---
Total patches: 5
---
Applying: RISC-V: use __smp_processor_id() instead of smp_processor_id()
Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support

When you fix that, could you also pick either "riscv" or "RISC-V" as a
prefix the series?

Thanks,
Conor.

> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> I ever sent the patch 1 in the link:
> https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
> And patch 2,3 in the link:
> https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
> https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
>
> This patch series just put these patches together, and with two new patch 4, 5.
> these five patches are the fixups for machine_kexec, kernel mode PC for vmcore
> and improvements for vmcoreinfo and memory layout dump.
>
> The main changes in the five patchs as below,
> Patch 1: use __smp_processor_id() instead of smp_processor_id() to cleanup
> the console prints.
> Patch 2: Add VM layout, va bits, ram base to vmcoreinfo, which can simplify
> the development of crash tool as ARM64 already did
> (arch/arm64/kernel/crash_core.c).
> Patch 3: Add modules to virtual kernel memory layout dump.
> Patch 4: Fixup to get correct kernel mode PC for vmcore.
> Patch 5: Updates vmcoreinfo.rst.
>
> With these 5 patches(patch 2 is must), crash tool can work well to analyze
> a vmcore. The patches for crash tool for RISCV64 is in the link:
> https://lore.kernel.org/linux-riscv/[email protected]/
>
> Changes v1 -> v2:
> 1, remove the patch "Add a fast call path of crash_kexec()" from this series
> of patches, as it already applied to riscv git.
> https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/commit/?h=for-next&id=3f1901110a89b0e2e13adb2ac8d1a7102879ea98
> 2, add 'Reviewed-by' based on the comments of v1.
>
> Xianting Tian (5):
> RISC-V: use __smp_processor_id() instead of smp_processor_id()
> RISC-V: Add arch_crash_save_vmcoreinfo support
> riscv: Add modules to virtual kernel memory layout dump
> RISC-V: Fixup getting correct current pc
> riscv64: crash_core: Export kernel vm layout, phys_ram_base
>
> .../admin-guide/kdump/vmcoreinfo.rst | 31 +++++++++++++++++++
> arch/riscv/kernel/Makefile | 1 +
> arch/riscv/kernel/crash_core.c | 29 +++++++++++++++++
> arch/riscv/kernel/crash_save_regs.S | 2 +-
> arch/riscv/kernel/machine_kexec.c | 2 +-
> arch/riscv/mm/init.c | 4 +++
> 6 files changed, 67 insertions(+), 2 deletions(-)
> create mode 100644 arch/riscv/kernel/crash_core.c
>
> --
> 2.17.1
>
>
> _______________________________________________
> linux-riscv mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-riscv

2022-07-26 08:05:36

by Xianting Tian

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool


在 2022/7/26 上午1:13, [email protected] 写道:
> On 25/07/2022 02:45, Xianting Tian wrote:
>> [RESEND PATCH V2 0/5] Fixups to work with crash tool
> FWIW, this is not a "resend" - there's at least a commit message
> difference here so this should have been v3. Also your cover letter
> was not the one generated for the patches you actually sent since
> it still mentions "riscv64" in the subject line for patch 5.

Sorry for this, my modification this time is still not thorough enough,
"riscv64" still exist :(

I will use V4 for next fix.

>
> That said, this does not apply to riscv/for-next:
> b4 shazam [email protected]
> Grabbing thread from lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
> Checking for newer revisions on https://lore.kernel.org/all/
> Analyzing 6 messages in the thread
> Checking attestation on all messages, may take a moment...
> ---
> [PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of smp_processor_id()
> [PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
> [PATCH v2 3/5] riscv: Add modules to virtual kernel memory layout dump
> [PATCH v2 4/5] RISC-V: Fixup getting correct current pc
> [PATCH v2 5/5] riscv: crash_core: Export kernel vm layout, phys_ram_base
> ---
> Total patches: 5
> ---
> Applying: RISC-V: use __smp_processor_id() instead of smp_processor_id()
> Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
> Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support

patch 2 apply is OK for me, I don't know why you failed :(  Do you have
more detals for this?

> When you fix that, could you also pick either "riscv" or "RISC-V" as a
> prefix the series?
thanks for the comments, I will fix it in V4.
> Thanks,
> Conor.
>
>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>
>> I ever sent the patch 1 in the link:
>> https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
>> And patch 2,3 in the link:
>> https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
>> https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
>>
>> This patch series just put these patches together, and with two new patch 4, 5.
>> these five patches are the fixups for machine_kexec, kernel mode PC for vmcore
>> and improvements for vmcoreinfo and memory layout dump.
>>
>> The main changes in the five patchs as below,
>> Patch 1: use __smp_processor_id() instead of smp_processor_id() to cleanup
>> the console prints.
>> Patch 2: Add VM layout, va bits, ram base to vmcoreinfo, which can simplify
>> the development of crash tool as ARM64 already did
>> (arch/arm64/kernel/crash_core.c).
>> Patch 3: Add modules to virtual kernel memory layout dump.
>> Patch 4: Fixup to get correct kernel mode PC for vmcore.
>> Patch 5: Updates vmcoreinfo.rst.
>>
>> With these 5 patches(patch 2 is must), crash tool can work well to analyze
>> a vmcore. The patches for crash tool for RISCV64 is in the link:
>> https://lore.kernel.org/linux-riscv/[email protected]/
>>
>> Changes v1 -> v2:
>> 1, remove the patch "Add a fast call path of crash_kexec()" from this series
>> of patches, as it already applied to riscv git.
>> https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/commit/?h=for-next&id=3f1901110a89b0e2e13adb2ac8d1a7102879ea98
>> 2, add 'Reviewed-by' based on the comments of v1.
>>
>> Xianting Tian (5):
>> RISC-V: use __smp_processor_id() instead of smp_processor_id()
>> RISC-V: Add arch_crash_save_vmcoreinfo support
>> riscv: Add modules to virtual kernel memory layout dump
>> RISC-V: Fixup getting correct current pc
>> riscv64: crash_core: Export kernel vm layout, phys_ram_base
>>
>> .../admin-guide/kdump/vmcoreinfo.rst | 31 +++++++++++++++++++
>> arch/riscv/kernel/Makefile | 1 +
>> arch/riscv/kernel/crash_core.c | 29 +++++++++++++++++
>> arch/riscv/kernel/crash_save_regs.S | 2 +-
>> arch/riscv/kernel/machine_kexec.c | 2 +-
>> arch/riscv/mm/init.c | 4 +++
>> 6 files changed, 67 insertions(+), 2 deletions(-)
>> create mode 100644 arch/riscv/kernel/crash_core.c
>>
>> --
>> 2.17.1
>>
>>
>> _______________________________________________
>> linux-riscv mailing list
>> [email protected]
>> http://lists.infradead.org/mailman/listinfo/linux-riscv

2022-07-26 08:10:30

by Conor Dooley

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool

On 26/07/2022 08:54, tianxianting wrote:
>
> 在 2022/7/26 上午1:13, [email protected] 写道:
>> That said, this does not apply to riscv/for-next:
>> b4 shazam [email protected]
>> Grabbing thread from lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
>> Checking for newer revisions on https://lore.kernel.org/all/
>> Analyzing 6 messages in the thread
>> Checking attestation on all messages, may take a moment...
>> ---
>>    [PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of smp_processor_id()
>>    [PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
>>    [PATCH v2 3/5] riscv: Add modules to virtual kernel memory layout dump
>>    [PATCH v2 4/5] RISC-V: Fixup getting correct current pc
>>    [PATCH v2 5/5] riscv: crash_core: Export kernel vm layout, phys_ram_base
>> ---
>> Total patches: 5
>> ---
>> Applying: RISC-V: use __smp_processor_id() instead of smp_processor_id()
>> Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
>> Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support
>
> patch 2 apply is OK for me, I don't know why you failed :(
> Do you have more detals for this?
>

What did you apply it to? It does not apply for me to riscv/for-next:
https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/log/?h=for-next

Thanks,
Conor.

2022-07-26 08:22:08

by Xianting Tian

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool


在 2022/7/26 下午4:01, [email protected] 写道:
> On 26/07/2022 08:54, tianxianting wrote:
>> 在 2022/7/26 上午1:13, [email protected] 写道:
>>> That said, this does not apply to riscv/for-next:
>>> b4 shazam [email protected]
>>> Grabbing thread from lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
>>> Checking for newer revisions on https://lore.kernel.org/all/
>>> Analyzing 6 messages in the thread
>>> Checking attestation on all messages, may take a moment...
>>> ---
>>>    [PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of smp_processor_id()
>>>    [PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
>>>    [PATCH v2 3/5] riscv: Add modules to virtual kernel memory layout dump
>>>    [PATCH v2 4/5] RISC-V: Fixup getting correct current pc
>>>    [PATCH v2 5/5] riscv: crash_core: Export kernel vm layout, phys_ram_base
>>> ---
>>> Total patches: 5
>>> ---
>>> Applying: RISC-V: use __smp_processor_id() instead of smp_processor_id()
>>> Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
>>> Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support
>> patch 2 apply is OK for me, I don't know why you failed :(
>> Do you have more detals for this?
>>
> What did you apply it to? It does not apply for me to riscv/for-next:
> https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/log/?h=for-next

This 5 patches are based on the master branch of below git:

https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git

"git am 0002-RISC-V-Add-arch_crash_save_vmcoreinfo-support.patch" to
this git is ok for me.

All is correct?

>
> Thanks,
> Conor.
>

2022-07-26 09:39:05

by Xianting Tian

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool


在 2022/7/26 下午4:16, Xianting Tian 写道:
>
> 在 2022/7/26 下午4:01, [email protected] 写道:
>> On 26/07/2022 08:54, tianxianting wrote:
>>> 在 2022/7/26 上午1:13, [email protected] 写道:
>>>> That said, this does not apply to riscv/for-next:
>>>> b4 shazam [email protected]
>>>> Grabbing thread from
>>>> lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
>>>> Checking for newer revisions on https://lore.kernel.org/all/
>>>> Analyzing 6 messages in the thread
>>>> Checking attestation on all messages, may take a moment...
>>>> ---
>>>>     [PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of
>>>> smp_processor_id()
>>>>     [PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>     [PATCH v2 3/5] riscv: Add modules to virtual kernel memory
>>>> layout dump
>>>>     [PATCH v2 4/5] RISC-V: Fixup getting correct current pc
>>>>     [PATCH v2 5/5] riscv: crash_core: Export kernel vm layout,
>>>> phys_ram_base
>>>> ---
>>>> Total patches: 5
>>>> ---
>>>> Applying: RISC-V: use __smp_processor_id() instead of
>>>> smp_processor_id()
>>>> Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
>>>> Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support
>>> patch 2 apply is OK for me, I don't know why you failed :(
>>> Do you have more detals for this?
>>>
>> What did you apply it to? It does not apply for me to riscv/for-next:
>> https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/log/?h=for-next
>>
>
> This 5 patches are based on the master branch of below git:
>
> https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
>
>
> "git am 0002-RISC-V-Add-arch_crash_save_vmcoreinfo-support.patch" to
> this git is ok for me.
>
> All is correct?

I figured out the reason, there is one difference in
arch/riscv/kernel/Makefile between riscv/for-next and torvalds/linux.

For riscv/for-next, in line 81 of arch/riscv/kernel/Makefile, it is:

    obj-$(CONFIG_KEXEC)        += kexec_relocate.o crash_save_regs.o
machine_kexec.o

But for torvalds/linux, in line 81 of arch/riscv/kernel/Makefile, it is:

    obj-$(CONFIG_KEXEC_CORE)        += kexec_relocate.o
crash_save_regs.o machine_kexec.o

torvalds/linux is newer than riscv/for-next,  commit 3a66a08759
("RISC-V: kexec: Fix build error without CONFIG_KEXEC") added
"CONFIG_KEXEC_CORE" for torvalds/linux, But riscv/for-next

doesn't contain the commit.


>
>>
>> Thanks,
>> Conor.
>>

2022-07-26 09:45:54

by Conor Dooley

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool

On 26/07/2022 10:28, Xianting Tian wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> 在 2022/7/26 下午4:16, Xianting Tian 写道:
>>
>> 在 2022/7/26 下午4:01, [email protected] 写道:
>>> On 26/07/2022 08:54, tianxianting wrote:
>>>> 在 2022/7/26 上午1:13, [email protected] 写道:
>>>>> That said, this does not apply to riscv/for-next:
>>>>> b4 shazam [email protected]
>>>>> Grabbing thread from
>>>>> lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
>>>>> Checking for newer revisions on https://lore.kernel.org/all/
>>>>> Analyzing 6 messages in the thread
>>>>> Checking attestation on all messages, may take a moment...
>>>>> ---
>>>>>     [PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of
>>>>> smp_processor_id()
>>>>>     [PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>>     [PATCH v2 3/5] riscv: Add modules to virtual kernel memory
>>>>> layout dump
>>>>>     [PATCH v2 4/5] RISC-V: Fixup getting correct current pc
>>>>>     [PATCH v2 5/5] riscv: crash_core: Export kernel vm layout,
>>>>> phys_ram_base
>>>>> ---
>>>>> Total patches: 5
>>>>> ---
>>>>> Applying: RISC-V: use __smp_processor_id() instead of
>>>>> smp_processor_id()
>>>>> Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>> Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support
>>>> patch 2 apply is OK for me, I don't know why you failed :(
>>>> Do you have more detals for this?
>>>>
>>> What did you apply it to? It does not apply for me to riscv/for-next:
>>> https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/log/?h=for-next
>>>
>>
>> This 5 patches are based on the master branch of below git:
>>
>> https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
>>
>>
>> "git am 0002-RISC-V-Add-arch_crash_save_vmcoreinfo-support.patch" to
>> this git is ok for me.
>>
>> All is correct?
>
> I figured out the reason, there is one difference in
> arch/riscv/kernel/Makefile between riscv/for-next and torvalds/linux.
>
> For riscv/for-next, in line 81 of arch/riscv/kernel/Makefile, it is:
>
>     obj-$(CONFIG_KEXEC)        += kexec_relocate.o crash_save_regs.o
> machine_kexec.o
>
> But for torvalds/linux, in line 81 of arch/riscv/kernel/Makefile, it is:
>
>     obj-$(CONFIG_KEXEC_CORE)        += kexec_relocate.o
> crash_save_regs.o machine_kexec.o
>
> torvalds/linux is newer than riscv/for-next,  commit 3a66a08759
> ("RISC-V: kexec: Fix build error without CONFIG_KEXEC") added
> "CONFIG_KEXEC_CORE" for torvalds/linux, But riscv/for-next
>
> doesn't contain the commit.

Ah right, since it's late in the cycle (mw is next week) maybe
it's best to wait for rc1 then and rebase when for-next & fixes
have been synced. Conflict doesn't seem to hard to sort out for
those who use kexec ;)

Thanks,
Conor.

2022-07-26 09:58:42

by Xianting Tian

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool


在 2022/7/26 下午5:28, Xianting Tian 写道:
>
> 在 2022/7/26 下午4:16, Xianting Tian 写道:
>>
>> 在 2022/7/26 下午4:01, [email protected] 写道:
>>> On 26/07/2022 08:54, tianxianting wrote:
>>>> 在 2022/7/26 上午1:13, [email protected] 写道:
>>>>> That said, this does not apply to riscv/for-next:
>>>>> b4 shazam [email protected]
>>>>> Grabbing thread from
>>>>> lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
>>>>> Checking for newer revisions on https://lore.kernel.org/all/
>>>>> Analyzing 6 messages in the thread
>>>>> Checking attestation on all messages, may take a moment...
>>>>> ---
>>>>>     [PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of
>>>>> smp_processor_id()
>>>>>     [PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>>     [PATCH v2 3/5] riscv: Add modules to virtual kernel memory
>>>>> layout dump
>>>>>     [PATCH v2 4/5] RISC-V: Fixup getting correct current pc
>>>>>     [PATCH v2 5/5] riscv: crash_core: Export kernel vm layout,
>>>>> phys_ram_base
>>>>> ---
>>>>> Total patches: 5
>>>>> ---
>>>>> Applying: RISC-V: use __smp_processor_id() instead of
>>>>> smp_processor_id()
>>>>> Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>> Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support
>>>> patch 2 apply is OK for me, I don't know why you failed :(
>>>> Do you have more detals for this?
>>>>
>>> What did you apply it to? It does not apply for me to riscv/for-next:
>>> https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/log/?h=for-next
>>>
>>
>> This 5 patches are based on the master branch of below git:
>>
>> https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
>>
>>
>> "git am 0002-RISC-V-Add-arch_crash_save_vmcoreinfo-support.patch" to
>> this git is ok for me.
>>
>> All is correct?
>
> I figured out the reason, there is one difference in
> arch/riscv/kernel/Makefile between riscv/for-next and torvalds/linux.
>
> For riscv/for-next, in line 81 of arch/riscv/kernel/Makefile, it is:
>
>     obj-$(CONFIG_KEXEC)        += kexec_relocate.o crash_save_regs.o
> machine_kexec.o
>
> But for torvalds/linux, in line 81 of arch/riscv/kernel/Makefile, it is:
>
>     obj-$(CONFIG_KEXEC_CORE)        += kexec_relocate.o
> crash_save_regs.o machine_kexec.o
>
> torvalds/linux is newer than riscv/for-next,  commit 3a66a08759
> ("RISC-V: kexec: Fix build error without CONFIG_KEXEC") added
> "CONFIG_KEXEC_CORE" for torvalds/linux, But riscv/for-next
>
> doesn't contain the commit.

Hi Dooley

I think riscv git needs to be updated from linus git, and then I think
V4 can be applied normally.

V4: https://lkml.org/lkml/2022/7/26/317

>
>
>>
>>>
>>> Thanks,
>>> Conor.
>>>

2022-07-26 10:12:53

by Xianting Tian

[permalink] [raw]
Subject: Re: [RESEND PATCH V2 0/5] Fixups to work with crash tool


在 2022/7/26 下午5:42, [email protected] 写道:
> On 26/07/2022 10:28, Xianting Tian wrote:
>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>
>> 在 2022/7/26 下午4:16, Xianting Tian 写道:
>>> 在 2022/7/26 下午4:01, [email protected] 写道:
>>>> On 26/07/2022 08:54, tianxianting wrote:
>>>>> 在 2022/7/26 上午1:13, [email protected] 写道:
>>>>>> That said, this does not apply to riscv/for-next:
>>>>>> b4 shazam [email protected]
>>>>>> Grabbing thread from
>>>>>> lore.kernel.org/all/20220725014539.1037627-1-xianting.tian%40linux.alibaba.com/t.mbox.gz
>>>>>> Checking for newer revisions on https://lore.kernel.org/all/
>>>>>> Analyzing 6 messages in the thread
>>>>>> Checking attestation on all messages, may take a moment...
>>>>>> ---
>>>>>>     [PATCH v2 1/5] RISC-V: use __smp_processor_id() instead of
>>>>>> smp_processor_id()
>>>>>>     [PATCH v2 2/5] RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>>>     [PATCH v2 3/5] riscv: Add modules to virtual kernel memory
>>>>>> layout dump
>>>>>>     [PATCH v2 4/5] RISC-V: Fixup getting correct current pc
>>>>>>     [PATCH v2 5/5] riscv: crash_core: Export kernel vm layout,
>>>>>> phys_ram_base
>>>>>> ---
>>>>>> Total patches: 5
>>>>>> ---
>>>>>> Applying: RISC-V: use __smp_processor_id() instead of
>>>>>> smp_processor_id()
>>>>>> Applying: RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>>> Patch failed at 0002 RISC-V: Add arch_crash_save_vmcoreinfo support
>>>>> patch 2 apply is OK for me, I don't know why you failed :(
>>>>> Do you have more detals for this?
>>>>>
>>>> What did you apply it to? It does not apply for me to riscv/for-next:
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/log/?h=for-next
>>>>
>>> This 5 patches are based on the master branch of below git:
>>>
>>> https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
>>>
>>>
>>> "git am 0002-RISC-V-Add-arch_crash_save_vmcoreinfo-support.patch" to
>>> this git is ok for me.
>>>
>>> All is correct?
>> I figured out the reason, there is one difference in
>> arch/riscv/kernel/Makefile between riscv/for-next and torvalds/linux.
>>
>> For riscv/for-next, in line 81 of arch/riscv/kernel/Makefile, it is:
>>
>>     obj-$(CONFIG_KEXEC)        += kexec_relocate.o crash_save_regs.o
>> machine_kexec.o
>>
>> But for torvalds/linux, in line 81 of arch/riscv/kernel/Makefile, it is:
>>
>>     obj-$(CONFIG_KEXEC_CORE)        += kexec_relocate.o
>> crash_save_regs.o machine_kexec.o
>>
>> torvalds/linux is newer than riscv/for-next,  commit 3a66a08759
>> ("RISC-V: kexec: Fix build error without CONFIG_KEXEC") added
>> "CONFIG_KEXEC_CORE" for torvalds/linux, But riscv/for-next
>>
>> doesn't contain the commit.
> Ah right, since it's late in the cycle (mw is next week) maybe
> it's best to wait for rc1 then and rebase when for-next & fixes
> have been synced. Conflict doesn't seem to hard to sort out for
> those who use kexec ;)
Okay, thanks.
>
> Thanks,
> Conor.
>