x86: Use find_e820() instead of hard coded trampoline address
Jens found the following crash/regression: [ 0.000000] found SMP MP-table at [ffff8800000fdd80] fdd80 [ 0.000000] Kernel panic - not syncing: Overlapping early reservations 12-f011 MP-table mpc to 0-fff BIOS data page and [ 0.000000] Kernel panic - not syncing: Overlapping early reservations 12-f011 MP-table mpc to 6000-7fff TRAMPOLINE and bisected it to b24c2a92 ("x86: Move find_smp_config() earlier and avoid bootmem usage"). It turns out the BIOS is using the first 64k for mptable, without reserving it. So try to find good range for the real-mode trampoline instead of hard coding it, in case some bios tries to use that range for sth. Reported-by:Jens Axboe <jens.axboe@oracle.com> Signed-off-by:
Yinghai Lu <yinghai@kernel.org> Tested-by:
Jens Axboe <jens.axboe@oracle.com> Cc: Randy Dunlap <randy.dunlap@oracle.com> LKML-Reference: <4B21630A.6000308@kernel.org> Signed-off-by:
Ingo Molnar <mingo@elte.hu>
Showing
- arch/x86/include/asm/trampoline.h 0 additions, 1 deletionarch/x86/include/asm/trampoline.h
- arch/x86/kernel/e820.c 10 additions, 1 deletionarch/x86/kernel/e820.c
- arch/x86/kernel/head32.c 0 additions, 2 deletionsarch/x86/kernel/head32.c
- arch/x86/kernel/head64.c 0 additions, 2 deletionsarch/x86/kernel/head64.c
- arch/x86/kernel/mpparse.c 0 additions, 3 deletionsarch/x86/kernel/mpparse.c
- arch/x86/kernel/setup.c 8 additions, 5 deletionsarch/x86/kernel/setup.c
- arch/x86/kernel/trampoline.c 9 additions, 11 deletionsarch/x86/kernel/trampoline.c
Please register or sign in to comment