On 4/22/25 19:22, Björn Töpel wrote:
From: Björn Töpel <bj...@rivosinc.com>

Hi!

*Patch history*

v1: https://lore.kernel.org/kexec/20250409201428.648717-1-bj...@kernel.org/
v2: Added Github Actions support for riscv64 (Simon)
     Sorted filenames in Makefile (Simon)
     Added missing dist files (Simon)
     Fixed mips build (Simon)

Here's a passed CI run with this series on master:
https://github.com/bjoto/kexec-tools/actions/runs/14597988952/job/40948715214


*Cover*

This is an attempt to finally get the RISC-V patches for kexec-tools
upstream.

Simon suggested in [1] that:

In my mind the big question is how to move RISC-V support from that
branch, to being merged into main.

IIRC there were some issues that needed to be addressed. Perhaps they
are all addressed by this series, and with some appropriate squashing
we can move forwards with a series based on main?

I talked to Nick last week, and he suggested that we'd work the RISC-V
collab Github [2], but I think it's just easier to do it on the list.

I've been collecting a number of different trees out there, and tried
to group them in a series.

Given that there is not support for RISC-V upstream yet, I didn't see
the need to carry all the fixes/updates ("development history") as
separate commits -- it doesn't help bugtracking/bisectability.

Instead the first commit message is a big one, and tries to give
attribution to all involved parties. Input/thoughts are very much
welcome!

To properly test this on RISC-V, the upstream Linux kernel has most
things in 6.15-rc1, e.g.:
commit 28093cfef5dd ("riscv/kexec_file: Handle R_RISCV_64 in purgatory 
relocator")
commit 3f7023171df4 ("riscv/purgatory: 4B align purgatory_start")

To cross-build kexec-tools:
   | ./bootstrap
   | ./configure --host=riscv64-linux-gnu
   | make

For some tests, additional kernel patches are needed, that as of today
is not in 6.15-rc1:
  * To test "kexec -s -l Image", kexec_file_load with Image support is
    needed [3]
  * To test "kexec -c -l vmlinux" with CONFIG_RELOCATABLE, a kbuild fix
    is needed [4]
  * Typically if you load initrd, or a large kernel [5] (since a bunch
    of Reserved regions are not properly exposed).

I've tested combinations with crashkernel (-p), and regular (-c/-s + -e) for:
  * ACPI/UEFI
  * DT/UEFI
  * DT
  * w/ initrd
  * w/o initrd
  * ELF (userland loader + kexec_load, and kexec_file_load)
  * Image (userland loader + kexec_load, and kexec_file_load)

I'm sure there are combinations I've missed, but at least from my POV
we're in a pretty good shape.

All authors: Please let me know if you prefer another split of the
patches. Or something else for that matter! ;-)


Let's get the ball rolling!
Björn

[1] https://lore.kernel.org/kexec/20230920115634.gg224...@kernel.org/
[2] https://github.com/riscv-collab/kexec-tools.git
[3] 
https://lore.kernel.org/linux-riscv/20250409193004.643839-1-bj...@kernel.org/
[4] 
https://lore.kernel.org/linux-riscv/20250408072851.90275-1-alexgh...@rivosinc.com/
[5] 
https://lore.kernel.org/linux-riscv/20250409182129.634415-1-bj...@kernel.org/

Li Zhengyu (1):
   RISC-V: Enable kexec_file_load syscall

Nick Kossifidis (1):
   RISC-V: Add support for riscv kexec/kdump on kexec-tools

Song Shuai (2):
   RISC-V: Separate elf_riscv_find_pbase out
   RISC-V: Support loading Image binary file

  .github/workflows/build.yml             |   1 +
  configure.ac                            |   3 +
  include/elf.h                           |   1 +
  kexec/Makefile                          |   1 +
  kexec/arch/mips/Makefile                |   2 +
  kexec/arch/riscv/Makefile               |  38 ++
  kexec/arch/riscv/crashdump-riscv.c      | 140 +++++++
  kexec/arch/riscv/image-header.h         |  88 ++++
  kexec/arch/riscv/include/arch/options.h |  43 ++
  kexec/arch/riscv/iomem.h                |  10 +
  kexec/arch/riscv/kexec-elf-riscv.c      | 184 +++++++++
  kexec/arch/riscv/kexec-image-riscv.c    |  95 +++++
  kexec/arch/riscv/kexec-riscv.c          | 526 ++++++++++++++++++++++++
  kexec/arch/riscv/kexec-riscv.h          |  53 +++
  kexec/dt-ops.c                          | 442 +++++++++++++++++++-
  kexec/dt-ops.h                          |   7 +
  kexec/kexec-syscall.h                   |   7 +
  purgatory/Makefile                      |   1 +
  purgatory/arch/riscv/Makefile           |   7 +
  19 files changed, 1648 insertions(+), 1 deletion(-)
  create mode 100644 kexec/arch/riscv/Makefile
  create mode 100644 kexec/arch/riscv/crashdump-riscv.c
  create mode 100644 kexec/arch/riscv/image-header.h
  create mode 100644 kexec/arch/riscv/include/arch/options.h
  create mode 100644 kexec/arch/riscv/iomem.h
  create mode 100644 kexec/arch/riscv/kexec-elf-riscv.c
  create mode 100644 kexec/arch/riscv/kexec-image-riscv.c
  create mode 100644 kexec/arch/riscv/kexec-riscv.c
  create mode 100644 kexec/arch/riscv/kexec-riscv.h
  create mode 100644 purgatory/arch/riscv/Makefile


base-commit: 14f48ea80e510e5af79ca6c46fa28e99a3695d1c


Thanks for doing this :-)

Regards,
Nick

Reply via email to