u-boot/arch/x86/lib
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
..
fsp x86: fsp: Load GDT before calling FspInitEntry 2015-07-14 18:03:15 -06:00
asm-offsets.c x86: Support Intel FSP initialization path in start.S 2014-12-13 22:32:05 -07:00
bios.c x86: Tidy up VESA mode numbers 2015-01-13 07:24:59 -08:00
bios.h x86: move arch-specific asmlinkage to <asm/linkage.h> 2014-12-15 07:22:53 -07:00
bios_asm.S x86: Add support for running option ROMs natively 2014-11-25 06:38:57 -07:00
bios_interrupts.c x86: Add a x86_ prefix to the x86-specific PCI functions 2015-04-16 19:27:41 -06:00
bootm.c x86: Correct a few progress message nits 2014-10-28 20:44:27 -06:00
cmd_boot.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
cmd_hob.c x86: Move common FSP code into a common location 2015-02-05 22:16:43 -07:00
cmd_mtrr.c x86: Add an 'mtrr' command to list and adjust MTRRs 2015-01-13 07:25:02 -08:00
gcc.c x86: Support tracing function 2013-06-26 10:18:56 -04:00
init_helpers.c dm: x86: spi: Convert ICH SPI driver to driver model 2015-04-18 11:11:14 -06:00
interrupts.c x86: Fix out of bounds irq handlers access 2015-01-23 17:24:54 -07:00
lpc-uclass.c dm: x86: Add a uclass for an Low Pin Count (LPC) device 2015-04-18 11:11:14 -06:00
Makefile x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
pcat_interrupts.c x86: Refactor interrupt_init() 2014-11-25 06:34:02 -07:00
pcat_timer.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pch-uclass.c dm: x86: Add a uclass for a Platform Controller Hub 2015-04-18 11:11:14 -06:00
pci_type1.c x86: Define macros for pci configuration space access 2015-02-06 12:07:40 -07:00
physmem.c x86: Move paging functions into cpu.c 2014-10-28 20:42:51 -06:00
pirq_routing.c x86: Check PIRQ routing table sanity in the F segment 2015-04-29 18:51:50 -06:00
ramtest.c x86: ivybridge: Implement SDRAM init 2014-11-21 07:34:15 +01:00
relocate.c x86: Panic if there is no relocation data 2014-11-25 06:33:59 -07:00
sfi.c x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
string.c Replace <compiler.h> with <linux/compiler.h> 2014-12-08 09:35:46 -05:00
tables.c x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
tsc_timer.c x86: Allow a hardcoded TSC frequency provided by Kconfig 2015-01-13 07:25:02 -08:00
zimage.c x86: Install a default e820 table in the __weak install_e820_map() 2015-04-29 18:51:49 -06:00