Re: [PATCH] kexec/x86: Unconditionally add the acpi_rsdp command line
在 2019年05月13日 14:40, Kairui Song 写道: > On Fri, Mar 15, 2019 at 5:36 PM Lianbo Jiang wrote: >> >> The Linux kernel commit 3a63f70bf4c3 introduces the early parsing >> of the RSDP. This means that boot loader must either set the >> boot_params.acpi_rsdp_addr or pass a command line 'acpi_rsdp=xxx' >> to tell the RDSP physical address. >> >> Currently, kexec neither sets the boot_params.acpi_rsdp or passes >> acpi_rsdp command line if it sees the first kernel support efi >> runtime. This is causing the second kernel boot failure. >> The EFI runtime is not available so early in the boot process so >> unconditionally pass the 'acpi_rsdp=xxx' to the second kernel. >> >> Signed-off-by: Lianbo Jiang >> Signed-off-by: Brijesh Singh >> --- >> kexec/arch/i386/crashdump-x86.c | 17 + >> 1 file changed, 1 insertion(+), 16 deletions(-) >> >> diff --git a/kexec/arch/i386/crashdump-x86.c >> b/kexec/arch/i386/crashdump-x86.c >> index 140f45b..a29b15b 100644 >> --- a/kexec/arch/i386/crashdump-x86.c >> +++ b/kexec/arch/i386/crashdump-x86.c >> @@ -35,7 +35,6 @@ >> #include >> #include >> #include >> -#include >> #include "../../kexec.h" >> #include "../../kexec-elf.h" >> #include "../../kexec-syscall.h" >> @@ -772,18 +771,6 @@ static enum coretype get_core_type(struct >> crash_elf_info *elf_info, >> } >> } >> >> -static int sysfs_efi_runtime_map_exist(void) >> -{ >> - DIR *dir; >> - >> - dir = opendir("/sys/firmware/efi/runtime-map"); >> - if (!dir) >> - return 0; >> - >> - closedir(dir); >> - return 1; >> -} >> - >> /* Appends 'acpi_rsdp=' commandline for efi boot crash dump */ >> static void cmdline_add_efi(char *cmdline) >> { >> @@ -978,9 +965,7 @@ int load_crashdump_segments(struct kexec_info *info, >> char* mod_cmdline, >> dbgprintf("Created elf header segment at 0x%lx\n", elfcorehdr); >> if (delete_memmap(memmap_p, _memmap, elfcorehdr, memsz) < 0) >> return -1; >> - if (!bzImage_support_efi_boot || arch_options.noefi || >> - !sysfs_efi_runtime_map_exist()) >> - cmdline_add_efi(mod_cmdline); >> + cmdline_add_efi(mod_cmdline); >> cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr); >> >> /* Inform second kernel about the presence of ACPI tables. */ >> -- >> 2.17.1 >> >> >> ___ >> kexec mailing list >> kexec@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/kexec > > Hi Lianbo, > > I've sent another patch similiar to yours: > [PATCH] x86: Always try to fill acpi_rsdp_addr in boot params > > I'll update V2 and your use case should also be covered in that patch, > as we have talked in IRC previously, thanks! OK. I noticed that the RSDP parsing was disabled in upsream kernel. Please refer to the following heading: "x86/boot: Disable RSDP parsing temporarily" So, for this case, no longer need it. Please ignore it. Thanks. Lianbo > > -- > Best Regards, > Kairui Song > ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
Re: [PATCH] kexec/x86: Unconditionally add the acpi_rsdp command line
On Fri, Mar 15, 2019 at 5:36 PM Lianbo Jiang wrote: > > The Linux kernel commit 3a63f70bf4c3 introduces the early parsing > of the RSDP. This means that boot loader must either set the > boot_params.acpi_rsdp_addr or pass a command line 'acpi_rsdp=xxx' > to tell the RDSP physical address. > > Currently, kexec neither sets the boot_params.acpi_rsdp or passes > acpi_rsdp command line if it sees the first kernel support efi > runtime. This is causing the second kernel boot failure. > The EFI runtime is not available so early in the boot process so > unconditionally pass the 'acpi_rsdp=xxx' to the second kernel. > > Signed-off-by: Lianbo Jiang > Signed-off-by: Brijesh Singh > --- > kexec/arch/i386/crashdump-x86.c | 17 + > 1 file changed, 1 insertion(+), 16 deletions(-) > > diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c > index 140f45b..a29b15b 100644 > --- a/kexec/arch/i386/crashdump-x86.c > +++ b/kexec/arch/i386/crashdump-x86.c > @@ -35,7 +35,6 @@ > #include > #include > #include > -#include > #include "../../kexec.h" > #include "../../kexec-elf.h" > #include "../../kexec-syscall.h" > @@ -772,18 +771,6 @@ static enum coretype get_core_type(struct crash_elf_info > *elf_info, > } > } > > -static int sysfs_efi_runtime_map_exist(void) > -{ > - DIR *dir; > - > - dir = opendir("/sys/firmware/efi/runtime-map"); > - if (!dir) > - return 0; > - > - closedir(dir); > - return 1; > -} > - > /* Appends 'acpi_rsdp=' commandline for efi boot crash dump */ > static void cmdline_add_efi(char *cmdline) > { > @@ -978,9 +965,7 @@ int load_crashdump_segments(struct kexec_info *info, > char* mod_cmdline, > dbgprintf("Created elf header segment at 0x%lx\n", elfcorehdr); > if (delete_memmap(memmap_p, _memmap, elfcorehdr, memsz) < 0) > return -1; > - if (!bzImage_support_efi_boot || arch_options.noefi || > - !sysfs_efi_runtime_map_exist()) > - cmdline_add_efi(mod_cmdline); > + cmdline_add_efi(mod_cmdline); > cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr); > > /* Inform second kernel about the presence of ACPI tables. */ > -- > 2.17.1 > > > ___ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec Hi Lianbo, I've sent another patch similiar to yours: [PATCH] x86: Always try to fill acpi_rsdp_addr in boot params I'll update V2 and your use case should also be covered in that patch, as we have talked in IRC previously, thanks! -- Best Regards, Kairui Song ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
[PATCH] kexec/x86: Unconditionally add the acpi_rsdp command line
The Linux kernel commit 3a63f70bf4c3 introduces the early parsing of the RSDP. This means that boot loader must either set the boot_params.acpi_rsdp_addr or pass a command line 'acpi_rsdp=xxx' to tell the RDSP physical address. Currently, kexec neither sets the boot_params.acpi_rsdp or passes acpi_rsdp command line if it sees the first kernel support efi runtime. This is causing the second kernel boot failure. The EFI runtime is not available so early in the boot process so unconditionally pass the 'acpi_rsdp=xxx' to the second kernel. Signed-off-by: Lianbo Jiang Signed-off-by: Brijesh Singh --- kexec/arch/i386/crashdump-x86.c | 17 + 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c index 140f45b..a29b15b 100644 --- a/kexec/arch/i386/crashdump-x86.c +++ b/kexec/arch/i386/crashdump-x86.c @@ -35,7 +35,6 @@ #include #include #include -#include #include "../../kexec.h" #include "../../kexec-elf.h" #include "../../kexec-syscall.h" @@ -772,18 +771,6 @@ static enum coretype get_core_type(struct crash_elf_info *elf_info, } } -static int sysfs_efi_runtime_map_exist(void) -{ - DIR *dir; - - dir = opendir("/sys/firmware/efi/runtime-map"); - if (!dir) - return 0; - - closedir(dir); - return 1; -} - /* Appends 'acpi_rsdp=' commandline for efi boot crash dump */ static void cmdline_add_efi(char *cmdline) { @@ -978,9 +965,7 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline, dbgprintf("Created elf header segment at 0x%lx\n", elfcorehdr); if (delete_memmap(memmap_p, _memmap, elfcorehdr, memsz) < 0) return -1; - if (!bzImage_support_efi_boot || arch_options.noefi || - !sysfs_efi_runtime_map_exist()) - cmdline_add_efi(mod_cmdline); + cmdline_add_efi(mod_cmdline); cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr); /* Inform second kernel about the presence of ACPI tables. */ -- 2.17.1 ___ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec