2
0
Fork 0
mirror of https://github.com/AsahiLinux/u-boot synced 2025-02-13 12:43:42 +00:00
u-boot/arch
Bin Meng 002610f620 x86: fsp: Load GDT before calling FspInitEntry
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: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Andrew Bradford <andrew.bradford@kodakalaris.com>
Tested-by: Simon Glass <sjg@chromium.org>
Acked-by: Simon Glass <sjg@chromium.org>
2015-07-14 18:03:15 -06:00
..
arc arc: significant cache rework 2015-07-01 17:17:27 +03:00
arm usb: Add EHCI support for Armada 38x (mvebu) 2015-07-10 14:55:50 +02:00
avr32 avr32: delete ancient board.c 2015-06-10 14:03:26 +02:00
blackfin arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
m68k arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
microblaze arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
mips MIPS: change 'extern inline' to 'static inline' 2015-07-02 11:29:33 +02:00
nds32 arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
nios2 arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
openrisc arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
powerpc powerpc: gitignore: ignore PowerPC DTBs 2015-05-28 08:18:20 -04:00
sandbox sandbox: Add an implementation for cleanup_before_linux_select() 2015-06-10 19:26:54 -06:00
sh Move default y configs out of arch/board Kconfig 2015-06-25 22:17:55 -04:00
sparc arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
x86 x86: fsp: Load GDT before calling FspInitEntry 2015-07-14 18:03:15 -06:00
.gitignore .gitignore: drop include/asm/proc from ignore pattern 2014-06-19 11:18:54 -04:00
Kconfig ARM: disable HAVE_PRIVATE_LIBGCC for ARM64 2015-07-07 11:39:51 +02:00