• Matt Fleming's avatar
    x86/efi: Re-disable interrupts after calling firmware services · 18c46461
    Matt Fleming authored
    Some firmware appears to enable interrupts during boot service calls,
    even if we've explicitly disabled them prior to the call. This is
    actually allowed per the UEFI spec because boottime services expect to
    be called with interrupts enabled.
    
    So that's fine, we just need to ensure that we disable them again in
    efi_enter32() before switching to a 64-bit GDT, otherwise an interrupt
    may fire causing a 32-bit IRQ handler to run after we've left
    compatibility mode.
    
    Despite efi_enter32() being called both for boottime and runtime
    services, this really only affects boottime because the runtime services
    callchain is executed with interrupts disabled. See efi_thunk().
    Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
    18c46461
efi_stub_64.S 5.27 KB