• Bart Kuivenhoven's avatar
    x86 efi: bugfix interrupt disabling sequence · 0ce6cda2
    Bart Kuivenhoven authored
    The problem in efi_main was that the idt was cleared before the
    interrupts were disabled.
    
    The UEFI spec states that interrupts aren't used so this shouldn't be
    too much of a problem. Peripherals however don't necessarily know about
    this and thus might cause interrupts to happen anyway. Even if
    ExitBootServices() has been called.
    
    This means there is a risk of an interrupt being triggered while the IDT
    register is nullified and the interrupt bit hasn't been cleared,
    allowing for a triple fault.
    
    This patch disables the interrupt flag, while leaving the existing IDT
    in place. The CPU won't care about the IDT at all as long as the
    interrupt bit is off, so it's safe to leave it in place as nothing will
    ever happen to it.
    
    [ Removed the now unused 'idt' variable - Matt ]
    Signed-off-by: default avatarBart Kuivenhoven <bemk@redhat.com>
    Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
    0ce6cda2
eboot.c 20.6 KB