
Am 31.01.2019 um 17:22 schrieb Bin Meng bmeng.cn@gmail.com:
At present the 4-level page table base address for 64-bit U-Boot proper is assigned an address that conflicts with CONFIG_LOADADDR. Change it to an address within the low memory range instead.
Can't you dynamically allocate the PT too?
Alex
Fixes crashes seen when 'dhcp' on QEMU x86_64 with "-net nic -net user,tftp=.,bootfile=u-boot".
Reported-by: Alexander Graf agraf@suse.de Signed-off-by: Bin Meng bmeng.cn@gmail.com
arch/x86/cpu/i386/cpu.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/x86/cpu/i386/cpu.c b/arch/x86/cpu/i386/cpu.c index 208ef08..af42431 100644 --- a/arch/x86/cpu/i386/cpu.c +++ b/arch/x86/cpu/i386/cpu.c @@ -462,6 +462,7 @@ int cpu_has_64bit(void) has_long_mode(); }
+#define PAGETABLE_BASE 0x80000 #define PAGETABLE_SIZE (6 * 4096)
/** @@ -523,10 +524,7 @@ int cpu_jump_to_64bit_uboot(ulong target) uint32_t *pgtable; func_t func;
- /* TODO(sjg@chromium.org): Find a better place for this */
- pgtable = (uint32_t *)0x1000000;
- if (!pgtable)
return -ENOMEM;
pgtable = (uint32_t *)PAGETABLE_BASE;
build_pagetable(pgtable);
-- 2.7.4