Patrick Rudolph has uploaded a new patch set (#2). ( https://review.coreboot.org/c/coreboot/+/43136 )
Change subject: arch/x86/gdt: Work around assembler bug ......................................................................
arch/x86/gdt: Work around assembler bug
The GDT loading did work fine a few month ago, but today it only works in QEMU, but not on real hardware or KVM enabled. This might be related to toolchain changes.
Use 64bit GDT loading on x86_64 and force the assembler to generate a 64bit address load on the GDT. This will make sure no 32bit (signed) displacement op is being generated, which points to the wrong address in longmode.
Veryfied using readelf and made sure no R_X86_64_32S relocation symbol is emitted. Disassembled the romstage ELF and made sure the GDT address is 64bit in size.
Tested on QEMU and KVM enabled QEMU: Doesn't crash any more on KVM.
Signed-off-by: Patrick Rudolph siro@das-labor.org
Change-Id: Ia824f90d9611e6e8db09bd62a05e6f990581f09a --- M src/arch/x86/assembly_entry.S M src/arch/x86/gdt_init.S 2 files changed, 24 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/36/43136/2