[PATCH v5] kexec-tools: mips: Pass initrd parameter via cmdline

Simon Horman horms at kernel.org
Fri Jun 24 07:47:53 PDT 2022


On Fri, Jun 24, 2022 at 05:32:19PM +0800, Hui Li wrote:
> Under loongson platform, use command:
> kexec -l vmlinux... --append="root=UUID=28e1..." --initrd=...
> kexec -e
> quick restart failed like this:
> 
> ********************************************************************
> [    3.420791] VFS: Cannot open root device "UUID=6462a8a4-02fb-49..."
> [    3.431262] Please append a correct "root=" boot option; ...
> ...
> ...
> ...
> [    3.543175]   0801         4194304 sda1 554e69cc-01
> [    3.543175]
> [    3.549494]   0802        62914560 sda2 554e69cc-02
> [    3.549495]
> [    3.555818]   0803         8388608 sda3 554e69cc-03
> [    3.555819]
> [    3.562139]   0804       174553229 sda4 554e69cc-04
> [    3.562139]
> [    3.568463] 0b00         1048575 sr0
> [    3.568464]  driver: sr
> [    3.574524] Kernel panic - not syncing: VFS: Unable to mount root fs...
> [    3.582750] ---[ end Kernel panic - not syncing: VFS:...
> *******************************************************************
> 
> The kernel cannot parse the UUID, the UUID is parsed in the initrd.
> For compatibility with previous platforms, loongson platform obtain
> initrd parameter through cmdline in kernel, the kernel supports use
> cmdline to parse initrd. But under the mips architecture, kexec-tools
> pass the initrd through DTB.
> 
> Made the following modifications:
> 
> (1) in kexec/arch/mips/kexec-elf-mips.c
>     Add patch_initrd_info(), at runtime to distinguish different cpu,
>     only for loongson cpu, add initrd parameter to cmdline.
> 
> (2) in kexec/arch/mips/crashdump-mips.c
>     Because loongson uses a different page_offset, it should be modified
>     to ensure that crashdump functionality is correct and reliable.
> 
> (3) in kexec/arch/mips/crashdump-mips.h
>     Added platform-specific page_offset macro definition.
> 
> Signed-off-by: Hui Li <lihui at loongson.cn>

Sorry, I seem to see a compile failure with this version:

$ make
...
 mipsel-linux-gnu-gcc -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -I../../include -I../../util_lib/include -Iinclude/ -I../../kexec/libfdt -I../../kexec/arch/mips/include  -c -MD -o kexec/arch/mips/kexec-elf-mips.o ../../kexec/arch/mips/kexec-elf-mips.c
../../kexec/arch/mips/kexec-elf-mips.c: In function ‘patch_initrd_info’:
../../kexec/arch/mips/kexec-elf-mips.c:102:20: error: ‘LOONGSON_PAGE_OFFSET’ undeclared (first use in this function)
  102 |      page_offset = LOONGSON_PAGE_OFFSET;
      |                    ^~~~~~~~~~~~~~~~~~~~
../../kexec/arch/mips/kexec-elf-mips.c:102:20: note: each undeclared identifier is reported only once for each function it appears in

Ref: https://github.com/horms/kexec-tools/runs/7043602833?check_suite_focus=true




More information about the kexec mailing list