Skip to contentSkip to conversation

RISC-V: Add kexec/kdump support

PATCH Superseded Nick Kossifidis 4 participants 13 messages Apr 24, 2020 – Jun 19, 2020

Subsystems (3)

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

cover RISC-V: Add kexec/kdump support

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Nick Kossifidis (3):
RISC-V: Add kexec support
RISC-V: Add kdump support
RISC-V: Add crash kernel support

 arch/riscv/Kconfig                  |  24 +++
 arch/riscv/include/asm/kexec.h      |  54 +++++++
 arch/riscv/include/uapi/asm/elf.h   |   6 +
 arch/riscv/kernel/Makefile          |   3 +-
 arch/riscv/kernel/crash_dump.c      |  46 ++++++
 arch/riscv/kernel/crash_save_regs.S |  56 +++++++
 arch/riscv/kernel/kexec_relocate.S  | 217 ++++++++++++++++++++++++++++
 arch/riscv/kernel/machine_kexec.c   | 193 +++++++++++++++++++++++++
 arch/riscv/kernel/setup.c           |  63 ++++++++
 arch/riscv/mm/init.c                | 173 ++++++++++++++++++++++
 include/uapi/linux/kexec.h          |   1 +
 11 files changed, 835 insertions(+), 1 deletion(-)
 create mode 100644 arch/riscv/include/asm/kexec.h
 create mode 100644 arch/riscv/kernel/crash_dump.c
 create mode 100644 arch/riscv/kernel/crash_save_regs.S
 create mode 100644 arch/riscv/kernel/kexec_relocate.S
 create mode 100644 arch/riscv/kernel/machine_kexec.c
Signature · 1 line
2.24.1
#1 lore raw

PATCH 1/3 RISC-V: Add kexec support

This patch adds support for kexec on RISC-V. On SMP systems it depends on HOTPLUG_CPU in order to be able to bring up all harts after kexec. It also needs a recent OpenSBI version that supports the HSM extension. I tested it on riscv64 QEMU on both an smp and a non-smp system.

Note that on my tests although all harts seem to go down properly, when using more than 2 harts on qemu, they don't seem to come back as expected.

The older version of this patch can be found at:
https://patchwork.kernel.org/patch/11486653/

v3:
* Use the new smp_shutdown_nonboot_cpus() call.
* Move riscv_kexec_relocate to .rodata

v2:
* Pass needed parameters as arguments to riscv_kexec_relocate instead of using global variables.
* Use kimage_arch to hold the fdt address of the included fdt.
* Use SYM_* macros on kexec_relocate.S.
* Compatibility with STRICT_KERNEL_RWX.
* Compatibility with HOTPLUG_CPU for SMP
* Small cleanups

---
 arch/riscv/Kconfig                 |  14 +++
 arch/riscv/include/asm/kexec.h     |  47 ++++++++
 arch/riscv/kernel/Makefile         |   1 +
 arch/riscv/kernel/kexec_relocate.S | 158 ++++++++++++++++++++++++
 arch/riscv/kernel/machine_kexec.c  | 188 +++++++++++++++++++++++++++++
 include/uapi/linux/kexec.h         |   1 +
 6 files changed, 409 insertions(+)
 create mode 100644 arch/riscv/include/asm/kexec.h
 create mode 100644 arch/riscv/kernel/kexec_relocate.S
 create mode 100644 arch/riscv/kernel/machine_kexec.c
arch/riscv/Kconfig +14 -0
index cbc652754..4934b2f62 100644
@@ -331,6 +331,20 @@ config RISCV_SBI_V01
 	help
 	  This config allows kernel to use SBI v0.1 APIs. This will be
 	  deprecated in future once legacy M-mode software are no longer in use.
+
+config KEXEC
+	bool "Kexec system call"
+	select KEXEC_CORE
+	select HOTPLUG_CPU if SMP
+	help
+	  kexec is a system call that implements the ability to shutdown your
+	  current kernel, and to start another kernel. It is like a reboot
+	  but it is independent of the system firmware. And like a reboot
+	  you can start any kernel with it, not just Linux.
+
+	  The name comes from the similarity to the exec system call.
+
+
 endmenu
 
 menu "Boot options"
arch/riscv/include/asm/kexec.h new file +47 -0

47 lines not on this page · raw message

arch/riscv/kernel/Makefile +1 -0
index 86c830810..28dccbbe6 100644
@@ -51,5 +51,6 @@ ifeq ($(CONFIG_RISCV_SBI), y)
 obj-$(CONFIG_SMP) += cpu_ops_sbi.o
 endif
 obj-$(CONFIG_HOTPLUG_CPU)	+= cpu-hotplug.o
+obj-${CONFIG_KEXEC}		+= kexec_relocate.o machine_kexec.o
 
 clean:
arch/riscv/kernel/kexec_relocate.S new file +158 -0

158 lines not on this page · raw message

arch/riscv/kernel/machine_kexec.c new file +188 -0

188 lines not on this page · raw message

include/uapi/linux/kexec.h +1 -0
index 05669c87a..778dc191c 100644
@@ -42,6 +42,7 @@
 #define KEXEC_ARCH_MIPS_LE (10 << 16)
 #define KEXEC_ARCH_MIPS    ( 8 << 16)
 #define KEXEC_ARCH_AARCH64 (183 << 16)
+#define KEXEC_ARCH_RISCV   (243 << 16)
 
 /* The artificial cap on the number of segments passed to kexec_load. */
 #define KEXEC_SEGMENT_MAX 16
Signature · 1 line
2.24.1
#2 lore raw

PATCH 2/3 RISC-V: Add kdump support

In reply to Nick Kossifidis

This patch adds support for kdump, the kernel will reserve a region for the crash kernel and jump there on panic. In order for userspace tools (kexec-tools) to prepare the crash kernel kexec image, we also need to expose some information on /proc/iomem for the memory regions used by the kernel and for the region reserved for crash kernel. Note that on userspace the device tree is used to determine the system's memory layout so the "System RAM" on /proc/iomem is ignored. I just put it there for compatibility with other archs.

I tested this on riscv64 qemu and works as expected, you may test it by triggering a crash through /proc/sysrq_trigger:

echo c > /proc/sysrq_trigger

---
 arch/riscv/include/asm/kexec.h      | 19 ++++---
 arch/riscv/include/uapi/asm/elf.h   |  6 +++
 arch/riscv/kernel/Makefile          |  2 +-
 arch/riscv/kernel/crash_save_regs.S | 56 +++++++++++++++++++++
 arch/riscv/kernel/kexec_relocate.S  | 61 +++++++++++++++++++++-
 arch/riscv/kernel/machine_kexec.c   | 31 +++++++-----
 arch/riscv/kernel/setup.c           | 50 ++++++++++++++++++
 arch/riscv/mm/init.c                | 78 +++++++++++++++++++++++++++++
 8 files changed, 282 insertions(+), 21 deletions(-)
 create mode 100644 arch/riscv/kernel/crash_save_regs.S
arch/riscv/include/asm/kexec.h +13 -6
index edff8a84a..5bfb3431f 100644
@@ -21,11 +21,16 @@
 
 #define KEXEC_ARCH KEXEC_ARCH_RISCV
 
+extern void riscv_crash_save_regs(struct pt_regs *newregs);
+
 static inline void
 crash_setup_regs(struct pt_regs *newregs,
 		 struct pt_regs *oldregs)
 {
-	/* Dummy implementation for now */
+	if (oldregs)
+		memcpy(newregs, oldregs, sizeof(struct pt_regs));
+	else
+		riscv_crash_save_regs(newregs);
 }
 
 
@@ -38,10 +43,12 @@ struct kimage_arch {
 const extern unsigned char riscv_kexec_relocate[];
 const extern unsigned int riscv_kexec_relocate_size;
 
-typedef void (*riscv_kexec_do_relocate)(unsigned long first_ind_entry,
-					unsigned long jump_addr,
-					unsigned long fdt_addr,
-					unsigned long hartid,
-					unsigned long va_pa_off);
+typedef void (*riscv_kexec_method)(unsigned long first_ind_entry,
+				   unsigned long jump_addr,
+				   unsigned long fdt_addr,
+				   unsigned long hartid,
+				   unsigned long va_pa_off);
+
+extern riscv_kexec_method riscv_kexec_norelocate;
 
 #endif
arch/riscv/include/uapi/asm/elf.h +6 -0
index d696d6610..5b19f5547 100644
@@ -19,6 +19,12 @@ typedef unsigned long elf_greg_t;
 typedef struct user_regs_struct elf_gregset_t;
 #define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
 
+#define ELF_CORE_COPY_REGS(dest, regs)			\
+do {							\
+	*(struct user_regs_struct *)&(dest) =		\
+		*(struct user_regs_struct *)regs;	\
+} while (0);
+
 /* We don't support f without d, or q.  */
 typedef __u64 elf_fpreg_t;
 typedef union __riscv_fp_state elf_fpregset_t;
arch/riscv/kernel/Makefile +1 -1
index 28dccbbe6..65f6c9f1d 100644
@@ -51,6 +51,6 @@ ifeq ($(CONFIG_RISCV_SBI), y)
 obj-$(CONFIG_SMP) += cpu_ops_sbi.o
 endif
 obj-$(CONFIG_HOTPLUG_CPU)	+= cpu-hotplug.o
-obj-${CONFIG_KEXEC}		+= kexec_relocate.o machine_kexec.o
+obj-${CONFIG_KEXEC}		+= kexec_relocate.o crash_save_regs.o machine_kexec.o
 
 clean:
arch/riscv/kernel/crash_save_regs.S new file +56 -0

56 lines not on this page · raw message

arch/riscv/kernel/kexec_relocate.S +60 -1

67 lines not on this page · raw message

arch/riscv/kernel/machine_kexec.c +18 -13
index b9fc735c3..14e9622eb 100644
@@ -58,11 +58,6 @@ machine_kexec_prepare(struct kimage *image)
 
 	kexec_image_info(image);
 
-	if (image->type == KEXEC_TYPE_CRASH) {
-		pr_warn("Loading a crash kernel is unsupported for now.\n");
-		return -EINVAL;
-	}
-
 	/* Find the Flattened Device Tree and save its physical address */
 	for (i = 0; i < image->nr_segments; i++) {
 		if (image->segment[i].memsz <= sizeof(fdt))
@@ -84,12 +79,14 @@ machine_kexec_prepare(struct kimage *image)
 	}
 
 	/* Copy the assembler code for relocation to the control page */
-	control_code_buffer = page_address(image->control_code_page);
-	memcpy(control_code_buffer, riscv_kexec_relocate,
-		riscv_kexec_relocate_size);
+	if (image->type != KEXEC_TYPE_CRASH) {
+		control_code_buffer = page_address(image->control_code_page);
+		memcpy(control_code_buffer, riscv_kexec_relocate,
+		       riscv_kexec_relocate_size);
 
-	/* Mark the control page executable */
-	set_memory_x((unsigned long) control_code_buffer, 1);
+		/* Mark the control page executable */
+		set_memory_x((unsigned long) control_code_buffer, 1);
+	}
 
 #ifdef CONFIG_SMP
 	/*
@@ -149,6 +146,9 @@ void machine_shutdown(void)
 void
 machine_crash_shutdown(struct pt_regs *regs)
 {
+	machine_shutdown();
+	crash_save_cpu(regs, smp_processor_id());
+	pr_info("Starting crashdump kernel...\n");
 }
 
 /**
@@ -171,7 +171,12 @@ machine_kexec(struct kimage *image)
 	unsigned long this_hart_id = raw_smp_processor_id();
 	unsigned long fdt_addr = internal->fdt_addr;
 	void *control_code_buffer = page_address(image->control_code_page);
-	riscv_kexec_do_relocate do_relocate = control_code_buffer;
+	riscv_kexec_method kexec_method = NULL;
+
+	if (image->type != KEXEC_TYPE_CRASH)
+		kexec_method = control_code_buffer;
+	else
+		kexec_method = (riscv_kexec_method) &riscv_kexec_norelocate;
 
 	pr_notice("Will call new kernel at %08lx from hart id %lx\n",
 		  jump_addr, this_hart_id);
@@ -182,7 +187,7 @@ machine_kexec(struct kimage *image)
 
 	/* Jump to the relocation code */
 	pr_notice("Bye...\n");
-	do_relocate(first_ind_entry, jump_addr, fdt_addr,
-		    this_hart_id, va_pa_offset);
+	kexec_method(first_ind_entry, jump_addr, fdt_addr,
+		     this_hart_id, va_pa_offset);
 	unreachable();
 }
arch/riscv/kernel/setup.c +50 -0

74 lines not on this page · raw message

arch/riscv/mm/init.c +78 -0

102 lines not on this page · raw message

Signature · 1 line
2.24.1
#3 lore raw

PATCH 3/3 RISC-V: Add crash kernel support

In reply to Nick Kossifidis

This patch allows Linux to act as a crash kernel for use with kdump. Userspace will let the crash kernel know about the memory region it can use through linux,usable-memory-range property, and about the memory region where the elf core header of the previous kernel is saved, through the linux,elfcorehdr property (both on /chosen). These dtb bindings are also used on arm64.

I tested this on riscv64 qemu and it works as expected, you may test it by retrieving the dmesg of the previous kernel through /proc/vmcore, using the vmcore-dmesg utility from kexec-tools.

---
 arch/riscv/Kconfig             | 10 ++++
 arch/riscv/kernel/Makefile     |  4 +-
 arch/riscv/kernel/crash_dump.c | 46 ++++++++++++++++
 arch/riscv/kernel/setup.c      | 13 +++++
 arch/riscv/mm/init.c           | 97 +++++++++++++++++++++++++++++++++-
 5 files changed, 167 insertions(+), 3 deletions(-)
 create mode 100644 arch/riscv/kernel/crash_dump.c
arch/riscv/Kconfig +10 -0
index 4934b2f62..3802c8888 100644
@@ -344,6 +344,16 @@ config KEXEC
 
 	  The name comes from the similarity to the exec system call.
 
+config CRASH_DUMP
+	bool "Build kdump crash kernel"
+	help
+	  Generate crash dump after being started by kexec. This should
+	  be normally only set in special crash dump kernels which are
+	  loaded in the main kernel with kexec-tools into a specially
+	  reserved region and then later executed after a crash by
+	  kdump/kexec.
+
+	  For more details see Documentation/admin-guide/kdump/kdump.rst
 
 endmenu
 
arch/riscv/kernel/Makefile +2 -2
index 65f6c9f1d..6374b0db5 100644
@@ -51,6 +51,6 @@ ifeq ($(CONFIG_RISCV_SBI), y)
 obj-$(CONFIG_SMP) += cpu_ops_sbi.o
 endif
 obj-$(CONFIG_HOTPLUG_CPU)	+= cpu-hotplug.o
-obj-${CONFIG_KEXEC}		+= kexec_relocate.o crash_save_regs.o machine_kexec.o
-
+obj-$(CONFIG_KEXEC)		+= kexec_relocate.o crash_save_regs.o machine_kexec.o
+obj-$(CONFIG_CRASH_DUMP)	+= crash_dump.o
 clean:
arch/riscv/kernel/crash_dump.c new file +46 -0

46 lines not on this page · raw message

arch/riscv/kernel/setup.c +13 -0
index 52d057bde..cbd8c8ba6 100644
@@ -64,6 +64,9 @@ static struct resource code_res = { .name = "Kernel code", };
 static struct resource data_res = { .name = "Kernel data", };
 static struct resource rodata_res = { .name = "Kernel rodata", };
 static struct resource bss_res = { .name = "Kernel bss", };
+#ifdef CONFIG_CRASH_DUMP
+static struct resource elfcorehdr_res = { .name = "ELF Core hdr", };
+#endif
 
 static void __init kdump_resource_init(void)
 {
@@ -97,6 +100,16 @@ static void __init kdump_resource_init(void)
 	if (crashk_res.end > crashk_res.start)
 		insert_resource(&sysram_res, &crashk_res);
 #endif
+
+#ifdef CONFIG_CRASH_DUMP
+	if (elfcorehdr_size) {
+		elfcorehdr_res.start = elfcorehdr_addr;
+		elfcorehdr_res.end = elfcorehdr_addr + elfcorehdr_size;
+		elfcorehdr_res.flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM;
+		insert_resource(&sysram_res, &elfcorehdr_res);
+	}
+#endif
+
 }
 
 void __init parse_dtb(void)
arch/riscv/mm/init.c +96 -1

123 lines not on this page · raw message

Signature · 1 line
2.24.1
#4 lore raw
In reply to Nick Kossifidis

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

#5 lore raw

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 6 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 5 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

Quoted 7 lines
Quoted 2 lines

http://riscv.ics.forth.gr/kexec-tools.patch

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Anyone ?

maintainer
#6 lore raw
Quoted 10 lines · On Thu, 11 Jun 2020 12:09:08 PDT (-0700), [email protected] wrote:

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 9 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Quoted 6 lines
Quoted 4 lines

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Anyone ?

Sorry, I dropped the ball on this one. After the CPU hotplug breakage I decided I need to get a pre-merge test for all these new features, and I haven't gotten around to actually doing so yet. The merge window is closing right now, so with any luck I'll have some time to get around to my patch backlog -- first I need to go spin up some better testing, though.

#7 lore raw

Στις 2020-06-11 22:39, Palmer Dabbelt έγραψε:

Quoted 16 lines · On Thu, 11 Jun 2020 12:09:08 PDT (-0700), [email protected] wrote:
Quoted 15 lines

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 13 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Quoted 7 lines
Quoted 1 line

Anyone ?

Sorry, I dropped the ball on this one. After the CPU hotplug breakage I decided I need to get a pre-merge test for all these new features, and I haven't gotten around to actually doing so yet. The merge window is closing right now, so with any luck I'll have some time to get around to my patch backlog -- first I need to go spin up some better testing, though.

Anything I can do to help ? I have a bunch of hw available (unleashed, genesys2 and nexys 2 ddr for Ariane / LowRISC SoC) and I'll probably also need to have a CI flow for the stuff I do internally.

#8 lore raw
Quoted 39 lines

-----Original Message-----
From: linux-riscv <[email protected]> On Behalf Of Nick Kossifidis
Sent: 13 June 2020 12:54
To: Palmer Dabbelt <[email protected]>
Cc: [email protected]; [email protected]; Atish Patra <[email protected]>; [email protected]; Paul Walmsley <[email protected]>; [email protected]; linux- [email protected]
Subject: Re: [PATCH 0/3] RISC-V: Add kexec/kdump support

Στις 2020-06-11 22:39, Palmer Dabbelt έγραψε:

Quoted 16 lines · On Thu, 11 Jun 2020 12:09:08 PDT (-0700), [email protected] wrote:
Quoted 15 lines

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 13 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Quoted 8 lines
Quoted 1 line

Anyone ?

Sorry, I dropped the ball on this one. After the CPU hotplug breakage I decided I need to get a pre-merge test for all these new features, and I haven't gotten around to actually doing so yet. The merge window is closing right now, so with any luck I'll have some time to get around to my patch backlog -- first I need to go spin up some better testing, though.

Quoted 3 lines

Anything I can do to help ? I have a bunch of hw available (unleashed, genesys2 and nexys 2 ddr for Ariane / LowRISC SoC) and I'll probably also need to have a CI flow for the stuff I do internally.

I had send-out a fix for CPU hotplug which can be taken for any of the Linux-5.8-rcX.

These patches should be based upon the CPU hotplug fix.

Regards,
Anup

#9 lore raw

Στις 2020-06-13 11:17, Anup Patel έγραψε:

Quoted 41 lines
Quoted 37 lines

-----Original Message-----
From: linux-riscv <[email protected]> On Behalf Of Nick Kossifidis
Sent: 13 June 2020 12:54
To: Palmer Dabbelt <[email protected]>
Cc: [email protected]; [email protected]; Atish Patra <[email protected]>; [email protected]; Paul Walmsley <[email protected]>; [email protected]; linux- [email protected]
Subject: Re: [PATCH 0/3] RISC-V: Add kexec/kdump support

Στις 2020-06-11 22:39, Palmer Dabbelt έγραψε:

Quoted 16 lines · On Thu, 11 Jun 2020 12:09:08 PDT (-0700), [email protected] wrote:
Quoted 15 lines

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 13 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Quoted 8 lines
Quoted 1 line

Anyone ?

Sorry, I dropped the ball on this one. After the CPU hotplug breakage I decided I need to get a pre-merge test for all these new features, and I haven't gotten around to actually doing so yet. The merge window is closing right now, so with any luck I'll have some time to get around to my patch backlog -- first I need to go spin up some better testing, though.

Quoted 3 lines

Anything I can do to help ? I have a bunch of hw available (unleashed, genesys2 and nexys 2 ddr for Ariane / LowRISC SoC) and I'll probably also need to have a CI flow for the stuff I do internally.

Quoted 7 lines

I had send-out a fix for CPU hotplug which can be taken for any of the Linux-5.8-rcX.

These patches should be based upon the CPU hotplug fix.

Regards,
Anup

I only call smp_shutdown_nonboot_cpus(), the patches shouldn't need any updates but I'll do a re-check just in case.

maintainer
#10 lore raw
In reply to Nick Kossifidis
Quoted 29 lines · On Sat, 13 Jun 2020 00:24:01 PDT (-0700), [email protected] wrote:

Στις 2020-06-11 22:39, Palmer Dabbelt έγραψε:

Quoted 18 lines · On Thu, 11 Jun 2020 12:09:08 PDT (-0700), [email protected] wrote:
Quoted 10 lines

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 9 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Quoted 6 lines
Quoted 4 lines

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Anyone ?

Quoted 9 lines

Sorry, I dropped the ball on this one. After the CPU hotplug breakage I
decided I need to get a pre-merge test for all these new features, and I
haven't gotten around to actually doing so yet. The merge window is closing
right now, so with any luck I'll have some time to get around to my patch
backlog -- first I need to go spin up some better testing, though.

Quoted 3 lines

Anything I can do to help ? I have a bunch of hw available (unleashed, genesys2 and nexys 2 ddr for Ariane / LowRISC SoC) and I'll probably also need to have a CI flow for the stuff I do internally.

Well, getting CI up and running would be great -- specifically, running stress tests on real hardware is something we're missing.

#11 lore raw

Στις 2020-06-19 02:06, Palmer Dabbelt έγραψε:

Quoted 30 lines · On Sat, 13 Jun 2020 00:24:01 PDT (-0700), [email protected] wrote:
Quoted 29 lines

Στις 2020-06-11 22:39, Palmer Dabbelt έγραψε:

Quoted 27 lines · On Thu, 11 Jun 2020 12:09:08 PDT (-0700), [email protected] wrote:
Quoted 10 lines

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 9 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Quoted 6 lines
Quoted 4 lines

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Anyone ?

Sorry, I dropped the ball on this one. After the CPU hotplug breakage I
decided I need to get a pre-merge test for all these new features, and I
haven't gotten around to actually doing so yet. The merge window is closing
right now, so with any luck I'll have some time to get around to my patch
backlog -- first I need to go spin up some better testing, though.

Quoted 6 lines
Quoted 3 lines

Anything I can do to help ? I have a bunch of hw available (unleashed, genesys2 and nexys 2 ddr for Ariane / LowRISC SoC) and I'll probably also need to have a CI flow for the stuff I do internally.

Well, getting CI up and running would be great -- specifically, running stress tests on real hardware is something we're missing.

Any particular tests / test suites in mind ?

#12 lore raw
Quoted 38 lines · Nick Kossifidis

Στις 2020-06-19 02:06, Palmer Dabbelt έγραψε:

Quoted 36 lines · On Sat, 13 Jun 2020 00:24:01 PDT (-0700), [email protected] wrote:
Quoted 34 lines

Στις 2020-06-11 22:39, Palmer Dabbelt έγραψε:

Quoted 18 lines · On Thu, 11 Jun 2020 12:09:08 PDT (-0700), [email protected] wrote:
Quoted 10 lines

Στις 2020-05-21 21:42, Nick Kossifidis έγραψε:

Quoted 9 lines

Στις 2020-04-24 20:12, Nick Kossifidis έγραψε:

Quoted 7 lines

This patch series adds kexec/kdump and crash kernel support on RISC-V. For testing the patches a patched version of kexec-tools is needed. The patch is still a work in progress but a draft version can be found at:

http://riscv.ics.forth.gr/kexec-tools.patch

Quoted 6 lines
Quoted 4 lines

Any comments / feedback on this ? Should we get it in ?

Regards,
Nick

Anyone ?

Quoted 11 lines

Sorry, I dropped the ball on this one. After the CPU hotplug breakage
I
decided I need to get a pre-merge test for all these new features, and
I
haven't gotten around to actually doing so yet. The merge window is closing
right now, so with any luck I'll have some time to get around to my patch
backlog -- first I need to go spin up some better testing, though.

Anything I can do to help ? I have a bunch of hw available (unleashed, genesys2 and nexys 2 ddr for Ariane / LowRISC SoC) and I'll probably also need to have a CI flow for the stuff I do internally.

Quoted 6 lines
Quoted 3 lines

Well, getting CI up and running would be great -- specifically, running stress
tests on real hardware is something we're missing.

Any particular tests / test suites in mind ?

I quickly checked kerneci project. They regularly build and does a boot test on HiFive unleashed. Here is the log for the last successful boot test on 5.8-rc1.
https://kernelci.org/test/case/id/5ee3959b44cd149f2b97bf1b/

Can we leverage the same setup locally ?

+kevin

Is there any way to add more tests (lkp test may be ?) for riscv to kernelci infrastructure ?

Signature · 2 lines
Regards,
Atish