• Ard Biesheuvel's avatar
    efi/x86: Re-disable RT services for 32-bit kernels running on 64-bit EFI · 6cfcd6f0
    Ard Biesheuvel authored
    Commit a8147dba ("efi/x86: Rename efi_is_native() to efi_is_mixed()")
    renamed and refactored efi_is_native() into efi_is_mixed(), but failed
    to take into account that these are not diametrical opposites.
    
    Mixed mode is a construct that permits 64-bit kernels to boot on 32-bit
    firmware, but there is another non-native combination which is supported,
    i.e., 32-bit kernels booting on 64-bit firmware, but only for boot and not
    for runtime services. Also, mixed mode can be disabled in Kconfig, in
    which case the 64-bit kernel can still be booted from 32-bit firmware,
    but without access to runtime services.
    
    Due to this oversight, efi_runtime_supported() now incorrectly returns
    true for such configurations, resulting in crashes at boot. So fix this
    by making efi_runtime_supported() aware of this.
    
    As a side effect, some efi_thunk_xxx() stubs have become obsolete, so
    remove them as well.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Arvind Sankar <nivedita@alum.mit.edu>
    Cc: Matthew Garrett <mjg59@google.com>
    Cc: linux-efi@vger.kernel.org
    Link: https://lkml.kernel.org/r/20200103113953.9571-4-ardb@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    6cfcd6f0
efi.h 7.21 KB