[POWERPC] Fix parse_drconf_memory() for 64-bit start addresses
Some new machines use the "ibm,dynamic-reconfiguration-memory" property to provide memory layout information, rather than via memory nodes. There is a bug in the code to parse this property for start addresses over 4GB; we store the start address in an unsigned int, which means we throw away the high bits and add apparently duplicate regions. This results in a BUG() in free_bootmem_core(). This fixes it by using an unsigned long instead. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
17aa3a82aa
Коммит
b9c3fdb0f0
|
@ -307,9 +307,9 @@ static void __init parse_drconf_memory(struct device_node *memory)
|
||||||
const unsigned int *lm, *dm, *aa;
|
const unsigned int *lm, *dm, *aa;
|
||||||
unsigned int ls, ld, la;
|
unsigned int ls, ld, la;
|
||||||
unsigned int n, aam, aalen;
|
unsigned int n, aam, aalen;
|
||||||
unsigned long lmb_size, size;
|
unsigned long lmb_size, size, start;
|
||||||
int nid, default_nid = 0;
|
int nid, default_nid = 0;
|
||||||
unsigned int start, ai, flags;
|
unsigned int ai, flags;
|
||||||
|
|
||||||
lm = of_get_property(memory, "ibm,lmb-size", &ls);
|
lm = of_get_property(memory, "ibm,lmb-size", &ls);
|
||||||
dm = of_get_property(memory, "ibm,dynamic-memory", &ld);
|
dm = of_get_property(memory, "ibm,dynamic-memory", &ld);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче