Skip to content
  • Ard Biesheuvel's avatar
    efi/x86: Revert struct layout change to fix kexec boot regression · a088b858
    Ard Biesheuvel authored
    Commit
    
      0a67361d ("efi/x86: Remove runtime table address from kexec EFI setup data")
    
    removed the code that retrieves the non-remapped UEFI runtime services
    pointer from the data structure provided by kexec, as it was never really
    needed on the kexec boot path: mapping the runtime services table at its
    non-remapped address is only needed when calling SetVirtualAddressMap(),
    which never happens during a kexec boot in the first place.
    
    However, dropping the 'runtime' member from struct efi_setup_data was a
    mistake. That struct is shared ABI between the kernel and the kexec tooling
    for x86, and so we cannot simply change its layout. So let's put back the
    removed field, but call it 'unused' to reflect the fact that we never look
    at its contents. While at it, add a comment to remind our future selves
    that the layout is external ABI.
    
    Fixes: 0a67361d
    
     ("efi/x86: Remove runtime table address from kexec EFI setup data")
    Reported-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Tested-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Reviewed-by: default avatarDave Young <dyoung@redhat.com>
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    a088b858