[U-Boot] [PATCH 1/3] x86: Change 4-level page table base address to low memory

Alexander Graf agraf at suse.de
Thu Jan 31 18:30:31 UTC 2019



> Am 31.01.2019 um 17:22 schrieb Bin Meng <bmeng.cn at 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 at suse.de>
> Signed-off-by: Bin Meng <bmeng.cn at 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 at 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
> 


More information about the U-Boot mailing list