[PATCH] kexec/x86: Unconditionally add the acpi_rsdp command line

lijiang lijiang at redhat.com
Mon May 13 00:47:56 PDT 2019


在 2019年05月13日 14:40, Kairui Song 写道:
> On Fri, Mar 15, 2019 at 5:36 PM Lianbo Jiang <lijiang at redhat.com> 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 <lijiang at redhat.com>
>> Signed-off-by: Brijesh Singh <brijesh.singh at amd.com>
>> ---
>>  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 <sys/types.h>
>>  #include <sys/stat.h>
>>  #include <unistd.h>
>> -#include <dirent.h>
>>  #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, &nr_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 at 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
> 



More information about the kexec mailing list