On Mon, 5 Aug 2019 at 11:36, Dave Young <dyoung@xxxxxxxxxx> wrote: > > kexec reboot fails randomly in UEFI based kvm guest. The firmware > just reset while calling efi_delete_dummy_variable(); Unfortunately > I don't know how to debug the firmware, it is also possible a potential > problem on real hardware as well although nobody reproduced it. > > The intention of efi_delete_dummy_variable is to trigger garbage collection > when entering virtual mode. But SetVirtualAddressMap can only run once > for each physical reboot, thus kexec_enter_virtual_mode is not necessarily > a good place to clean dummy object. > I would argue that this means it is not a good place to *create* the dummy variable, and if we don't create it, we don't have to delete it either. > Drop efi_delete_dummy_variable so that kexec reboot can work. > Creating it and not deleting it is bad, so please try and see if we can omit the creation on this code path instead. > Signed-off-by: Dave Young <dyoung@xxxxxxxxxx> > --- > arch/x86/platform/efi/efi.c | 3 --- > 1 file changed, 3 deletions(-) > > --- linux-x86.orig/arch/x86/platform/efi/efi.c > +++ linux-x86/arch/x86/platform/efi/efi.c > @@ -894,9 +894,6 @@ static void __init kexec_enter_virtual_m > > if (efi_enabled(EFI_OLD_MEMMAP) && (__supported_pte_mask & _PAGE_NX)) > runtime_code_page_mkexec(); > - > - /* clean DUMMY object */ > - efi_delete_dummy_variable(); > #endif > } >