Hi Rick, Thanks for the feedback! I did make those changes to binman.dtsi. Ultimately, I think the issue is with the "ERROR: Out of memory" error which comes from the EFI loader (lib/efi_loader) because there's no conventional memory (i.e. something with a memory address below 4GB). The allocation error afterward (from boot/image_board.c::boot_ramdisk_high) is a knock-on effect since there's no location available to move initramfs to.
As I've dug into this more today though, it seems like so many backend things for RISC-V in U-Boot are set up to only support 32-bit DRAM. I think there will be quite a lot of adjustments to be made to support the memory map I have. Thanks, Phil -----Original Message----- From: Rick Chen <rickche...@gmail.com> Sent: Thursday, February 23, 2023 10:33 PM To: Bernard, Philip <philip.bern...@intel.com> Cc: U-Boot Mailing List <u-boot@lists.denx.de>; Leo Liang <ycli...@andestech.com>; peter...@andestech.com; rick <r...@andestech.com> Subject: Re: Boot from 64-bit memory address? Hi Philip, > From: U-Boot <u-boot-boun...@lists.denx.de> On Behalf Of Bernard, > Philip > Sent: Thursday, February 23, 2023 9:21 AM > To: u-boot@lists.denx.de > Subject: Boot from 64-bit memory address? > > Hi, > > Is it possible to boot from a DRAM memory address beyond the 32-bit > boundary? I'm trying to configure a new RISC-V board which has 2GB of > DRAM starting at offset 0x40_0000_0000. I started from the settings > for an existing RISC-V board and made I think it is possible to boot from a DRAM memory beyond the 32-bit boundary. But maybe you need to modify some code to achieve that. I have tried to boot an internal AE350-like platform whose DRAM base is at 0x400000000. adjustments for my HW, but when I try to boot, I run into an "out of memory" error. > > From > https://u-boot.readthedocs.io/en/latest/develop/uefi/u-boot_on_efi.html#tables > I noticed that U-Boot will only use "conventional" memory which is 4GB and > below, so it seems like this may not be possible? Looking through the repo, I > also noticed that nearly every device is configuring settings like > CONFIG_SYS_LOAD_ADDR with a 32-bit value, so I haven't found any examples to > emulate for my use case. CONFIG_SYS_LOAD_ADDR is not important. Maybe you shall notice CONFIG_SYS_TEXT_BASE and CONFIG_SPL_OPENSBI_LOAD_ADDR which will be parsed from binman.dtsi You can change them like this: load = /bits/64 <CONFIG_SYS_TEXT_BASE>; load = /bits/64 <CONFIG_SPL_OPENSBI_LOAD_ADDR>; > > I'm hoping someone knows the mistake I'm making or can confirm that this > isn't possible. Appreciate the help. > > Best, > Phil > > > Below is the output from U-Boot: > > U-Boot SPL 2022.07 (Feb 23 2023 - 00:50:44 +0000) Trying to boot from > RAM > > OpenSBI v1.1 > ____ _____ ____ _____ > / __ \ / ____| _ \_ _| > | | | |_ __ ___ _ __ | (___ | |_) || | > | | | | '_ \ / _ \ '_ \ \___ \| _ < | | __| | |_) | __/ | | |____) > | | | > | ||_) || |_ > \____/| .__/ \___|_| |_|_____/|____/_____| > | | > |_| > > Platform Name : test,test > Platform Features : medeleg > Platform HART Count : 1 > Platform IPI Device : aclint-mswi > Platform Timer Device : aclint-mtimer @ 1000000Hz > Platform Console Device : uart8250 > Platform HSM Device : --- > Platform Reboot Device : --- > Platform Shutdown Device : --- > Firmware Base : 0x80000000 > Firmware Size : 276 KB > Runtime SBI Version : 1.0 > > Domain0 Name : root > Domain0 Boot HART : 0 > Domain0 HARTs : 0* > Domain0 Region00 : 0x0000000002000000-0x000000000200ffff (I) > Domain0 Region01 : 0x0000000080000000-0x000000008007ffff () > Domain0 Region02 : 0x0000000000000000-0xffffffffffffffff (R,W,X) > Domain0 Next Address : 0x0000004001200000 > Domain0 Next Arg1 : 0x0000004001267830 > Domain0 Next Mode : S-mode > Domain0 SysReset : yes > > Boot HART ID : 0 > Boot HART Domain : root > Boot HART Priv Version : v1.10 > Boot HART Base ISA : rv64imafdcb > Boot HART ISA Extensions : time > Boot HART PMP Count : 8 > Boot HART PMP Granularity : 4 > Boot HART PMP Address Bits: 54 > Boot HART MHPM Count : 0 > Boot HART MIDELEG : 0x0000000000000222 > Boot HART MEDELEG : 0x000000000000b109 > > > U-Boot 2022.07 (Feb 23 2023 - 00:50:44 +0000) > > CPU: rv64imafdc > Model: test,test > DRAM: 2 GiB > Core: 11 devices, 8 uclasses, devicetree: separate > ERROR: Out of memory > Loading Environment from nowhere... OK > In: serial@131400000 > Out: serial@131400000 > Err: serial@131400000 > Model: test,test > Net: No ethernet found. > Hit any key to stop autoboot: 0 > Moving Image from 0x4006000000 to 0x4000200000, end=4000b01c8c ## Flattened > Device Tree blob at ff76a1d0 > Booting using the fdt blob at 0xff76a1d0 > ERROR: Failed to allocate 0x1000000 bytes below 0x100000000. Can you dig in where to print this ERROR ? Thanks, Rick > ramdisk - allocation error