From cf6e522390126bdd20406481f3df79c194a431bd Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 20 Oct 2016 15:34:59 +1100 Subject: [PATCH] pseries: Move adding of fdt reserve map entries The flattened device tree passed to pseries guests contains a list of reserved memory areas. Currently we construct this list early in spapr_create_fdt_skel() as we sequentially write the fdt. This will be inconvenient for upcoming cleanups, so this patch moves the reserve map changes to the end of fdt construction. This changes fdt_add_reservemap_entry() calls - which work when writing the fdt sequentially to fdt_add_mem_rsv() calls used when altering the fdt in random access mode. Signed-off-by: David Gibson Reviewed-by: Thomas Huth Reviewed-by: Michael Roth --- hw/ppc/spapr.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 3b23920f5d..8e58d8670d 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -301,14 +301,6 @@ static void *spapr_create_fdt_skel(sPAPRMachineState *spapr) fdt = g_malloc0(FDT_MAX_SIZE); _FDT((fdt_create(fdt, FDT_MAX_SIZE))); - if (spapr->kernel_size) { - _FDT((fdt_add_reservemap_entry(fdt, KERNEL_LOAD_ADDR, - spapr->kernel_size))); - } - if (spapr->initrd_size) { - _FDT((fdt_add_reservemap_entry(fdt, spapr->initrd_base, - spapr->initrd_size))); - } _FDT((fdt_finish_reservemap(fdt))); /* Root node */ @@ -997,6 +989,15 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr, } g_free(bootlist); + + /* Build memory reserve map */ + if (spapr->kernel_size) { + _FDT((fdt_add_mem_rsv(fdt, KERNEL_LOAD_ADDR, spapr->kernel_size))); + } + if (spapr->initrd_size) { + _FDT((fdt_add_mem_rsv(fdt, spapr->initrd_base, spapr->initrd_size))); + } + return fdt; } -- 2.11.0