Commit 1bc2a3bb authored by Anton Blanchard's avatar Anton Blanchard Committed by Linus Torvalds

[PATCH] ppc64: Fix issue with non zero boot cpu

The new version of the flattened device tree passes the boot cpuid in the
header instead of via a linux,boot-cpu property.

We need to update the in kernel OF parsing code to do this, otherwise
machines with a non zero boot cpuid fail to come up.
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d6dbf42e
...@@ -1711,6 +1711,7 @@ static void __init flatten_device_tree(void) ...@@ -1711,6 +1711,7 @@ static void __init flatten_device_tree(void)
unsigned long offset = reloc_offset(); unsigned long offset = reloc_offset();
unsigned long mem_start, mem_end, room; unsigned long mem_start, mem_end, room;
struct boot_param_header *hdr; struct boot_param_header *hdr;
struct prom_t *_prom = PTRRELOC(&prom);
char *namep; char *namep;
u64 *rsvmap; u64 *rsvmap;
...@@ -1765,6 +1766,7 @@ static void __init flatten_device_tree(void) ...@@ -1765,6 +1766,7 @@ static void __init flatten_device_tree(void)
RELOC(dt_struct_end) = PAGE_ALIGN(mem_start); RELOC(dt_struct_end) = PAGE_ALIGN(mem_start);
/* Finish header */ /* Finish header */
hdr->boot_cpuid_phys = _prom->cpu;
hdr->magic = OF_DT_HEADER; hdr->magic = OF_DT_HEADER;
hdr->totalsize = RELOC(dt_struct_end) - RELOC(dt_header_start); hdr->totalsize = RELOC(dt_struct_end) - RELOC(dt_header_start);
hdr->off_dt_struct = RELOC(dt_struct_start) - RELOC(dt_header_start); hdr->off_dt_struct = RELOC(dt_struct_start) - RELOC(dt_header_start);
...@@ -1854,7 +1856,6 @@ static void __init prom_find_boot_cpu(void) ...@@ -1854,7 +1856,6 @@ static void __init prom_find_boot_cpu(void)
cpu_pkg = call_prom("instance-to-package", 1, 1, prom_cpu); cpu_pkg = call_prom("instance-to-package", 1, 1, prom_cpu);
prom_setprop(cpu_pkg, "linux,boot-cpu", NULL, 0);
prom_getprop(cpu_pkg, "reg", &getprop_rval, sizeof(getprop_rval)); prom_getprop(cpu_pkg, "reg", &getprop_rval, sizeof(getprop_rval));
_prom->cpu = getprop_rval; _prom->cpu = getprop_rval;
......
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