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