• Matt Fleming's avatar
    x86/efi: Fixup GOT in all boot code paths · 9cb0e394
    Matt Fleming authored
    Maarten reported that his Macbook pro 8.2 stopped booting after commit
    f23cf8bd ("efi/x86: efistub: Move shared dependencies to
    <asm/efi.h>"), the main feature of which is changing the visibility of
    symbol 'efi_early' from local to global.
    
    By making 'efi_early' global we end up requiring an entry in the Global
    Offset Table. Unfortunately, while we do include code to fixup GOT
    entries in the early boot code, it's only called after we've executed
    the EFI boot stub.
    
    What this amounts to is that references to 'efi_early' in the EFI boot
    stub don't point to the correct place.
    
    Since we've got multiple boot entry points we need to be prepared to
    fixup the GOT in multiple places, while ensuring that we never do it
    more than once, otherwise the GOT entries will still point to the wrong
    place.
    Reported-by: default avatarMaarten Lankhorst <maarten.lankhorst@canonical.com>
    Tested-by: default avatarMaarten Lankhorst <maarten.lankhorst@canonical.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
    9cb0e394
head_64.S 10.4 KB