On Fri, Feb 14, 2025 at 4:26 PM Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > If the kernel entry is in the high DRAM area, place the FDT into this > area. > > Signed-off-by: Sebastian Huber <sebastian.hu...@embedded-brains.de>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > hw/riscv/microchip_pfsoc.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c > index ec7e2e4226..2ddc3464bb 100644 > --- a/hw/riscv/microchip_pfsoc.c > +++ b/hw/riscv/microchip_pfsoc.c > @@ -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); > > -- > 2.43.0 > >