Am 09.03.2013 um 08:29 schrieb Benjamin Herrenschmidt <b...@kernel.crashing.org>:
> On Sat, 2013-03-09 at 02:02 +0100, Alexander Graf wrote: >> Commit 5ac47f7a introduced dynamic relocation of code by manually >> relocating TOC entries. However, we need to access the TOC using >> the physical address that we have for it, not the virtual address >> that we can't even access yet. >> >> Drop the offset from the TOC accessing pointer. >> >> This fixes Linux 3.9 booting on OpenBIOS for me. >> >> Signed-off-by: Alexander Graf <ag...@suse.de> >> >> --- >> >> I've also encountered breakage on a G5 Mac, not sure if it's related. >> I'll have to test whether this is the culprit on that one too. > > That might fix the mac too.. Anton's patch assumed OF ran in real mode > in which case the top bits of the address are ignored, meaning we could > use kernel virtual addresses but that isn't the case with Apple OF which > has MMU enabled and maps memory 1:1. I suppose OpenBIOS has the same > problem ? Or is this a 32-bit issue as well ? That's exactly what OpenBIOS does, yes :). Alex > >> Ben, please make sure that this gets into 3.9. >> --- >> arch/powerpc/kernel/prom_init.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/arch/powerpc/kernel/prom_init.c >> b/arch/powerpc/kernel/prom_init.c >> index 7f7fb7f..2bf7cc3 100644 >> --- a/arch/powerpc/kernel/prom_init.c >> +++ b/arch/powerpc/kernel/prom_init.c >> @@ -2851,7 +2851,7 @@ static void reloc_toc(void) >> (__prom_init_toc_end - __prom_init_toc_start) / sizeof(long); >> >> /* Need to add offset to get at __prom_init_toc_start */ >> - __reloc_toc(__prom_init_toc_start + offset, offset, nr_entries); >> + __reloc_toc(__prom_init_toc_start, offset, nr_entries); >> >> mb(); >> } > > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev