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 <david@gibson.dropbear.id.au> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
a19f7fb045
commit
cf6e522390
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user