Skip to content
  • Bin Meng's avatar
    x86: fsp: Load GDT before calling FspInitEntry · 002610f6
    Bin Meng authored
    
    
    Currently the FSP execution environment GDT is setup by U-Boot in
    arch/x86/cpu/start16.S, which works pretty well. But if we try to
    move the FspInitEntry call a little bit later to better fit into
    U-Boot's initialization sequence, FSP will fail to bring up the AP
    due to #GP fault as AP's GDT is duplicated from BSP whose GDT is
    now moved into CAR, and unfortunately FSP calls AP initialization
    after it disables the CAR. So basically the BSP's GDT still refers
    to the one in the CAR, whose content is no longer available, so
    when AP starts up and loads its segment register, it blows up.
    
    To resolve this, we load GDT before calling into FspInitEntry.
    The GDT is the same one used in arch/x86/cpu/start16.S, which is
    in the ROM and exists forever.
    
    Signed-off-by: default avatarBin Meng <bmeng.cn@gmail.com>
    Tested-by: default avatarAndrew Bradford <andrew.bradford@kodakalaris.com>
    Tested-by: default avatarSimon Glass <sjg@chromium.org>
    Acked-by: default avatarSimon Glass <sjg@chromium.org>
    002610f6