Commit fbf2f134 authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Michael Ellerman

powerpc/lmb-size: Use addr #size-cells value when fetching lmb-size

Make it consistent with other usages.
Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201007114836.282468-5-aneesh.kumar@linux.ibm.com
parent 950805f4
...@@ -498,7 +498,7 @@ static int __init probe_memory_block_size(unsigned long node, const char *uname, ...@@ -498,7 +498,7 @@ static int __init probe_memory_block_size(unsigned long node, const char *uname,
depth, void *data) depth, void *data)
{ {
unsigned long *mem_block_size = (unsigned long *)data; unsigned long *mem_block_size = (unsigned long *)data;
const __be64 *prop; const __be32 *prop;
int len; int len;
if (depth != 1) if (depth != 1)
...@@ -508,13 +508,14 @@ static int __init probe_memory_block_size(unsigned long node, const char *uname, ...@@ -508,13 +508,14 @@ static int __init probe_memory_block_size(unsigned long node, const char *uname,
return 0; return 0;
prop = of_get_flat_dt_prop(node, "ibm,lmb-size", &len); prop = of_get_flat_dt_prop(node, "ibm,lmb-size", &len);
if (!prop || len < sizeof(__be64))
if (!prop || len < dt_root_size_cells * sizeof(__be32))
/* /*
* Nothing in the device tree * Nothing in the device tree
*/ */
*mem_block_size = MIN_MEMORY_BLOCK_SIZE; *mem_block_size = MIN_MEMORY_BLOCK_SIZE;
else else
*mem_block_size = be64_to_cpup(prop); *mem_block_size = of_read_number(prop, dt_root_size_cells);
return 1; return 1;
} }
......
...@@ -30,12 +30,17 @@ unsigned long pseries_memory_block_size(void) ...@@ -30,12 +30,17 @@ unsigned long pseries_memory_block_size(void)
np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory");
if (np) { if (np) {
const __be64 *size; int len;
int size_cells;
const __be32 *prop;
size = of_get_property(np, "ibm,lmb-size", NULL); size_cells = of_n_size_cells(np);
if (size)
memblock_size = be64_to_cpup(size); prop = of_get_property(np, "ibm,lmb-size", &len);
if (prop && len >= size_cells * sizeof(__be32))
memblock_size = of_read_number(prop, size_cells);
of_node_put(np); of_node_put(np);
} else if (machine_is(pseries)) { } else if (machine_is(pseries)) {
/* This fallback really only applies to pseries */ /* This fallback really only applies to pseries */
unsigned int memzero_size = 0; unsigned int memzero_size = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment