[PATCH 1/2] kexec: Default __NR_kexec_file_load is set to undefined
Philipp Rudo
prudo at redhat.com
Mon Feb 27 07:19:19 PST 2023
Hi Youling,
On Fri, 24 Feb 2023 17:51:07 +0800
Youling Tang <tangyouling at loongson.cn> wrote:
> The initial reason is that after the merger of 29fe5067ed07
> ("kexec: make -a the default"), kexec cannot be used on LoongArch,
> MIPS .etc architectures. We need to add "-c" for normal use. The
> current kexec_file_load system call is not implemented in
> architectures such as LoongArch, so it needs to pass kexec_load.
> So we need to set __NR_kexec_file_load to undefined in unsupported
> architectures. This will return EFALLBACK via is_kexec_file_load_implemented,
> and then via kexec_load.
>
> Signed-off-by: Youling Tang <tangyouling at loongson.cn>
> ---
> kexec/kexec-syscall.h | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
> index be6ccd5..ea77936 100644
> --- a/kexec/kexec-syscall.h
> +++ b/kexec/kexec-syscall.h
> @@ -59,9 +59,7 @@
> #endif
> #endif /*ifndef __NR_kexec_load*/
>
> -#ifdef __arm__
> #undef __NR_kexec_file_load
> -#endif
>
> #ifndef __NR_kexec_file_load
I don't think this will work as intended.
On the top of the file sys/syscall.h gets included. In there
architectures that support kexec_file_load define __NR_kexec_file_load.
This also means that if an architecture doesn't support kexec_file_load
__NR_kexec_file_load shouldn't be defined in the first place. Thus I
suggest that you find out why sys/syscall.h defines
__NR_kexec_file_load for LoongArch even when the system call is not
supported and fix it there.
Thanks
Philipp
More information about the kexec
mailing list