[PATCH] powerpc: Fix dynamic relocation

Alexander Graf agraf at suse.de
Sat Mar 9 12:02:30 EST 2013

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 <agraf at 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.

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);

More information about the Linuxppc-dev mailing list