hw/riscv: More flexible FDT placement for MPFS

If the kernel entry is in the high DRAM area, place the FDT into this
area.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20250319061342.26435-3-sebastian.huber@embedded-brains.de>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
Sebastian Huber 2025-03-19 07:13:34 +01:00 committed by Alistair Francis
parent 4c1a39eebc
commit cae44a92ab

View file

@ -626,8 +626,15 @@ static void microchip_icicle_kit_machine_init(MachineState *machine)
kernel_entry = boot_info.image_low_addr;
/* Compute the fdt load address in dram */
fdt_load_addr = riscv_compute_fdt_addr(memmap[MICROCHIP_PFSOC_DRAM_LO].base,
memmap[MICROCHIP_PFSOC_DRAM_LO].size,
hwaddr kernel_ram_base = memmap[MICROCHIP_PFSOC_DRAM_LO].base;
hwaddr kernel_ram_size = memmap[MICROCHIP_PFSOC_DRAM_LO].size;
if (kernel_entry - kernel_ram_base >= kernel_ram_size) {
kernel_ram_base = memmap[MICROCHIP_PFSOC_DRAM_HI].base;
kernel_ram_size = mem_high_size;
}
fdt_load_addr = riscv_compute_fdt_addr(kernel_ram_base, kernel_ram_size,
machine, &boot_info);
riscv_load_fdt(fdt_load_addr, machine->fdt);