Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 672c5446 authored by Grant Likely's avatar Grant Likely
Browse files

dt/flattree: Return virtual address from early_init_dt_alloc_memory_arch()



The physical address is never used by the device tree code when
allocating memory for unflattening.  Change the architecture's alloc
hook to return the virutal address instead.

Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 1b59be2a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -47,9 +47,9 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
	memblock_add(base, size);
}

u64 __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
	return memblock_alloc(size, align);
	return __va(memblock_alloc(size, align));
}

#ifdef CONFIG_EARLY_PRINTK
+2 −4
Original line number Diff line number Diff line
@@ -45,11 +45,9 @@ void __init free_mem_mach(unsigned long addr, unsigned long size)
	return free_bootmem(addr, size);
}

u64 __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
	return virt_to_phys(
		__alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS))
		);
	return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS));
}

#ifdef CONFIG_BLK_DEV_INITRD
+2 −2
Original line number Diff line number Diff line
@@ -519,9 +519,9 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
	memblock_add(base, size);
}

u64 __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
	return memblock_alloc(size, align);
	return __va(memblock_alloc(size, align));
}

#ifdef CONFIG_BLK_DEV_INITRD
+1 −7
Original line number Diff line number Diff line
@@ -692,12 +692,6 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
	return 1;
}

static void *__init early_device_tree_alloc(u64 size, u64 align)
{
	unsigned long mem = early_init_dt_alloc_memory_arch(size, align);
	return __va(mem);
}

/**
 * unflatten_device_tree - create tree of device_nodes from flat blob
 *
@@ -709,7 +703,7 @@ static void *__init early_device_tree_alloc(u64 size, u64 align)
void __init unflatten_device_tree(void)
{
	__unflatten_device_tree(initial_boot_params, &allnodes,
				early_device_tree_alloc);
				early_init_dt_alloc_memory_arch);

	/* Get pointer to OF "/chosen" node for use everywhere */
	of_chosen = of_find_node_by_path("/chosen");
+1 −1
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ extern void early_init_dt_check_for_initrd(unsigned long node);
extern int early_init_dt_scan_memory(unsigned long node, const char *uname,
				     int depth, void *data);
extern void early_init_dt_add_memory_arch(u64 base, u64 size);
extern u64 early_init_dt_alloc_memory_arch(u64 size, u64 align);
extern void * early_init_dt_alloc_memory_arch(u64 size, u64 align);
extern u64 dt_mem_next_cell(int s, __be32 **cellp);

/*