Skip to content

Commit

Permalink
mips: xlp: copy built-in DTB out of init section
Browse files Browse the repository at this point in the history
The existing code is buggy because built-in DTBs are in init memory.
It is also broken because the reserved bootmem was then freed after
unflattening, but the unflattened tree points to data in the flat tree.
Fix this by using the unflatten_and_copy_device_tree function.

This removes all accesses to FDT header data by the arch code.

Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Tested-by: Grant Likely <grant.likely@linaro.org>
  • Loading branch information
Rob Herring committed Apr 30, 2014
1 parent 10fbdaa commit e1b77ba
Showing 1 changed file with 1 addition and 16 deletions.
17 changes: 1 addition & 16 deletions arch/mips/netlogic/xlp/dt.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,22 +87,7 @@ void __init xlp_early_init_devtree(void)

void __init device_tree_init(void)
{
unsigned long base, size;
struct boot_param_header *fdtp = xlp_fdt_blob;

if (!fdtp)
return;

base = virt_to_phys(fdtp);
size = be32_to_cpu(fdtp->totalsize);

/* Before we do anything, lets reserve the dt blob */
reserve_bootmem(base, size, BOOTMEM_DEFAULT);

unflatten_device_tree();

/* free the space reserved for the dt blob */
free_bootmem(base, size);
unflatten_and_copy_device_tree();
}

static struct of_device_id __initdata xlp_ids[] = {
Expand Down

0 comments on commit e1b77ba

Please sign in to comment.