Re: [PATCH v3] x86/boot: Use efi_setup_data for searching RSDP on kexec-ed kernel

From: Junichi Nomura
Date: Fri Apr 05 2019 - 00:23:07 EST


On 4/4/19 4:32 PM, Dave Young wrote:
> While we are still debuggin the bug I reproduced, but for this patch
> I have still some comments inline.
>
> BTW, it would be good to start a new thread when you send V4 :)

Sure.

>> + /* Get systab from boot params. */
>> + systab = (efi_system_table_64_t *) (ei->efi_systab | ((__u64)ei->efi_systab_hi << 32));
>> + if (!systab)
>> + error("EFI system table not found in kexec boot_params.");
>
> Instead of hang the system, return 0 should be better

OK. I'll make it something like:
if (!systab) {
debug_putstr(...);
return 0;
}

>> if (!pa)
>> + pa = kexec_get_rsdp_addr();
>> +
>> + if (!pa)
>> pa = efi_get_rsdp_addr();
>
> In case kexec_get_rsdp_addr failed, above code will try efi_get.. again,
> but that will also fail for same issue this patch is fixing. In case
> kexec we should avoid the efi_get_rsdp_addr.

Yeah, I'll set efi_kexec_booted to true in kexec_get_rsdp_addr() if it's
kexec booted so that efi_get_rsdp_addr() can exit early in such a case.

--
Jun'ichi Nomura, NEC Corporation / NEC Solution Innovators, Ltd.