[PATCH V2] RISC-V: Add support for riscv kexec/kdump on kexec-tools

Xianting Tian xianting.tian at linux.alibaba.com
Tue Oct 25 19:13:48 PDT 2022


Hi Simon

thanks for the comments

在 2022/10/21 下午11:27, Simon Horman 写道:
> On Thu, Oct 20, 2022 at 11:15:48AM +0800, Xianting Tian wrote:
>> From: Nick Kossifidis <mick at ics.forth.gr>
>>
>> This patch adds support for loading the ELF kernel image. It parses
>> the current/provided device tree to determine the system's memory
>> layout, and /proc/iomem for the various kernel segments.
>>
>> This patch was firstly developed by Nick Kossifidis, and two fixes (
>>     1: fail to find free memory area for dtb load when using initrd image,
>>        lists.infradead.org/pipermail/linux-riscv/2022-August/018398.html;
>>     2: fix memory range size calculation,
>>         kexec/arch/riscv/crashdump-riscv.c:line 85
>> ) are contributed by Yixun Lan, Xianting Tian.
>>
>> Tested on Qemu's rv64 virt machine and SoC of T-Head RISC-V Xuantie 910 CPU.
> Hi,
>
> thanks for some patch.
>
> Some minor feedback follows.
>
> Separately, I'll post a patch to add RISC-V builds to the github
> workflow. If you could include that in V3 I'd be most grateful.
>
>> Tested-by: Yixun Lan <yixun.lan at gmail.com>
>> Co-developed-by: Xianting Tian <xianting.tian at linux.alibaba.com>
>> Co-developed-by: Yixun Lan <yixun.lan at gmail.com>
>> Signed-off-by: Nick Kossifidis <mick at ics.forth.gr>
> ...
>
>> +	ret = mem_regions_alloc_and_add(mem_ranges, start,
>> +					end - start, type);
> mem_regions_alloc_and_add isn't always available.
> f.e. on mips this causes a build failure.
>
> Ref: https://github.com/horms/kexec-tools/actions/runs/3298491143/jobs/5440677595

As you know, mem_regions_sort, mem_regions_alloc_and_add are the common 
funtions,

The build error of mips is caused by this riscv patch?

kexec/mem_regions.c:void mem_regions_sort(struct memory_ranges *ranges)
kexec/mem_regions.h:void mem_regions_sort(struct memory_ranges *ranges);


kexec/mem_regions.c:int mem_regions_alloc_and_add(struct memory_ranges 
*ranges,
kexec/mem_regions.h:int mem_regions_alloc_and_add(struct memory_ranges 
*ranges,

>
> ...
>
>> +int dtb_get_memory_ranges(char *dtb, struct memory_ranges *mem_ranges, struct memory_ranges *extra_ranges)
>> +{
> ...
>
>> +	mem_regions_sort(mem_ranges);
> Likewise, mem_regions_sort isn't always available.
> f.e. on mips this causes a build failure.
>
> ...
>
>> diff --git a/purgatory/arch/riscv/Makefile b/purgatory/arch/riscv/Makefile
>> new file mode 100644
>> index 0000000..8bded71
>> --- /dev/null
>> +++ b/purgatory/arch/riscv/Makefile
>> @@ -0,0 +1,7 @@
>> +#
>> +# Purgatory riscv
>> +#
>> +
>> +riscv_PURGATORY_SRCS =
>> +
>> +dist += purgatory/arch/sh/Makefile $(riscv_PURGATORY_SRCS)
> s/sh/riscv/
>
> Else the distribution tarball won't include this Makefile
>
> You can exercise this using:
>    make distcheck DISTCHECK_CONFIGURE_FLAGS="--host=riscv64-linux-gnu"
thanks, I will fix this.



More information about the kexec mailing list