mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-21 17:21:42 +00:00
The stack locking and stack assignment macro LOAD_REALMODE_ESP fails to
work when invoked from the 64bit trampoline entry point:
trampoline_start64
trampoline_compat
LOAD_REALMODE_ESP <- lock
Accessing tr_lock is only possible from 16bit mode. For the compat entry
point this needs to be pa_tr_lock so that the required relocation entry is
generated. Otherwise it locks the non-relocated address which is
aside of being wrong never cleared in secondary_startup_64() causing all
but the first CPU to get stuck on the lock.
Make the macro take an argument lock_pa which defaults to 0 and rename it
to LOCK_AND_LOAD_REALMODE_ESP to make it clear what this is about.
Fixes:
|
||
|---|---|---|
| .. | ||
| .gitignore | ||
| bioscall.S | ||
| copy.S | ||
| header.S | ||
| Makefile | ||
| realmode.h | ||
| realmode.lds.S | ||
| reboot.S | ||
| regs.c | ||
| stack.S | ||
| trampoline_32.S | ||
| trampoline_64.S | ||
| trampoline_common.S | ||
| video-bios.c | ||
| video-mode.c | ||
| video-vesa.c | ||
| video-vga.c | ||
| wakemain.c | ||
| wakeup_asm.S | ||
| wakeup.h | ||