[PATCH 0/7] Allow booting a 32-bit system with a top memory address beyond 4 GiB

Bin Meng bmeng.cn at gmail.com
Thu Jan 21 16:00:08 CET 2021


When testing QEMU RISC-V 'virt' machine with a 2 GiB memory
configuration, it was discovered gd->ram_top is assigned to
value zero in setup_dest_addr().

While 2 GiB QEMU RISC-V 'virt' happens to work with U-Boot today,
increasing more memory doesn't make a bootable system. There are
various places in U-Boot that prevents such from working.

While this is seen and tested on RISC-V, it's not RISC-V centric,
but a generic issue that may affect all architectures.


Bin Meng (7):
  riscv: Adjust board_get_usable_ram_top() for 32-bit
  global_data.h: Change ram_top type to phys_addr_t
  serial: sifive: Cast dev_read_addr() with uintptr_t
  fdtdec: Cast prior_stage_fdt_address with uintptr_t
  riscv: Change phys_addr_t and phys_size_t to 64-bit
  bdinfo: Rename function names to be clearer
  bdinfo: Change to use bdinfo_print_num_ll() where the number could be
    64-bit

 arch/arm/lib/bdinfo.c             | 16 +++++-----
 arch/m68k/lib/bdinfo.c            |  2 +-
 arch/powerpc/lib/bdinfo.c         |  4 +--
 arch/riscv/cpu/fu540/dram.c       |  7 ++---
 arch/riscv/cpu/generic/dram.c     |  7 ++---
 arch/riscv/include/asm/types.h    |  4 +--
 cmd/bdinfo.c                      | 52 +++++++++++++++----------------
 drivers/serial/serial_sifive.c    |  2 +-
 include/asm-generic/global_data.h |  2 +-
 include/init.h                    |  3 +-
 lib/fdtdec.c                      |  2 +-
 11 files changed, 50 insertions(+), 51 deletions(-)

-- 
2.25.1



More information about the U-Boot mailing list