diff --git a/debian/changelog b/debian/changelog index ac85d58de..a2f6510f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -50,7 +50,12 @@ linux-2.6 (2.6.15-3) UNRELEASED; urgency=low * Drop merged patch: - sparc64-atyfb-xl-gr-final.patch - -- maximilian attems Sun, 15 Jan 2006 12:12:10 +0100 + [ Simon Horman ] + * Fix booting on PReP machines + (Closes: #348040) + powerpc-relocate_code.patch + + -- Simon Horman Tue, 17 Jan 2006 18:01:17 +0900 linux-2.6 (2.6.15-2) unstable; urgency=low diff --git a/debian/patches/powerpc-relocate_code.patch b/debian/patches/powerpc-relocate_code.patch new file mode 100644 index 000000000..98762fdce --- /dev/null +++ b/debian/patches/powerpc-relocate_code.patch @@ -0,0 +1,76 @@ +commit aed9c6ccb87d96c333bd6ae631d9e90f3b6d7271 +tree 65366c1ddedfbec62cb422686a5c6b0d734ce5e5 +parent 2fb9d2063626374dd8a2514b3a730facac8235d8 +author Paul Janzen Wed, 04 Jan 2006 21:40:48 -0800 +committer Paul Mackerras Mon, 09 Jan 2006 15:47:08 +1100 + + [PATCH] ppc32: Put cache flush routines back into .relocate_code section + + In 2.6.14, we had the following definition of _GLOBAL() in + include/asm-ppc/processor.h: + + #define _GLOBAL(n)\ + .stabs __stringify(n:F-1),N_FUN,0,0,n;\ + .globl n;\ + n: + + In 2.6.15, as part of the great powerpc merge, we moved this definition to + include/asm-powerpc/ppc_asm.h, where it appears (to 32-bit code) as: + + #define _GLOBAL(n) \ + .text; \ + .stabs __stringify(n:F-1),N_FUN,0,0,n;\ + .globl n; \ + n: + + Mostly, this is fine. However, we also have the following, in + arch/ppc/boot/common/util.S: + + .section ".relocate_code","xa" + [...] + _GLOBAL(flush_instruction_cache) + [...] + _GLOBAL(flush_data_cache) + [...] + + The addition of the .text section definition in the definition of + _GLOBAL overrides the .relocate_code section definition. As a result, + these two functions don't end up in .relocate_code, so they don't get + relocated correctly, and the boot fails. + + There's another suspicious-looking usage at kernel/swsusp.S:37 that + someone should look into. I did not exhaustively search the source + tree, though. + + The following is the minimal patch that fixes the immediate problem. + I could easily be convinced that the _GLOBAL definition should be + modified to remove the ".text;" line either instead of, or in addition + to, this fix. + + Signed-off-by: Paul Janzen + Signed-off-by: Paul Mackerras + +diff --git a/arch/ppc/boot/common/util.S b/arch/ppc/boot/common/util.S +index c96c9f8..368ec03 100644 +--- a/arch/ppc/boot/common/util.S ++++ b/arch/ppc/boot/common/util.S +@@ -234,7 +234,8 @@ udelay: + * First, flush the data cache in case it was enabled and may be + * holding instructions for copy back. + */ +-_GLOBAL(flush_instruction_cache) ++ .globl flush_instruction_cache ++flush_instruction_cache: + mflr r6 + bl flush_data_cache + +@@ -279,7 +280,8 @@ _GLOBAL(flush_instruction_cache) + * Flush data cache + * Do this by just reading lots of stuff into the cache. + */ +-_GLOBAL(flush_data_cache) ++ .globl flush_data_cache ++flush_data_cache: + lis r3,cache_flush_buffer@h + ori r3,r3,cache_flush_buffer@l + li r4,NUM_CACHE_LINES diff --git a/debian/patches/series/3 b/debian/patches/series/3 index c76066c9b..f8740f60e 100644 --- a/debian/patches/series/3 +++ b/debian/patches/series/3 @@ -3,3 +3,4 @@ + mtdpart-redboot-fis-byteswap.patch - sparc64-atyfb-xl-gr-final.patch + 2.6.15.1.patch ++ powerpc-relocate_code.patch