Steven Rostedt wrote:
On Tue, 2009-10-06 at 07:20 +1100, Benjamin Herrenschmidt wrote:
On Mon, 2009-10-05 at 09:25 -0400, Steven Rostedt wrote:
Sachin, can you give me more details on how you built that kernel ? (or
give them again in case I missed them the first time around :-), ie,
what toolchain, options, etc... or even better, give me remote access to
the build host ?
Ok, got access and had a quick look... seems to be a toolchain problem
to me. I'll investigate more tomorrow.
Hi Ben,

Any more word on this issue?
Didn't you fix it using a TOC access ?

Unless I'm confusing things, I think the problem is the usage
of LOAD_REG_IMMEDIATE which generates relocs that we don't support
when CONFIG_RELOCATABLE is set.

I've merged a patch that post-processes the kernel now, to check
for such relocs so at least you should be warned at build time.

I thought we had two issues. One was the use of the relocs that did
cause issues. But then there was still crashes reported after that.
IIRC. I'm still suffering jetlag, so my memory is not that fresh about
As Ben suggested, i changed LOAD_REG_IMMEDIATE() to LOAD_REG_ADDR()
as follows.

-       LOAD_REG_IMMEDIATE(r4,ftrace_return_to_handler)
+       LOAD_REG_ADDR(r4,ftrace_return_to_handler)

With this change compile time warnings about bad relocations
related to ftrace are gone.

Before the change :
WARNING: 6 bad relocations
c000000000008f1a R_PPC64_ADDR16_HIGHEST  __ksymtab+0x0000000000742110
c000000000008f1e R_PPC64_ADDR16_HIGHER  __ksymtab+0x0000000000742110
c000000000008f26 R_PPC64_ADDR16_HI  __ksymtab+0x0000000000742110
c000000000008f2a R_PPC64_ADDR16_LO  __ksymtab+0x0000000000742110
c00000000085e118 R_PPC64_ADDR64    __crc_per_cpu__softirq_work_list
c0000000008662d0 R_PPC64_ADDR64    __crc_simple_prepare_write

After the change :
WARNING: 2 bad relocations
c00000000085e118 R_PPC64_ADDR64    __crc_per_cpu__softirq_work_list
c0000000008662d0 R_PPC64_ADDR64    __crc_simple_prepare_write

But i still run into oops while using ftrace function_graph.

Thanks
-Sachin



--

---------------------------------
Sachin Sant
IBM Linux Technology Center
India Systems and Technology Labs
Bangalore, India
---------------------------------

diff -Naurp a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
--- a/arch/powerpc/kernel/entry_64.S	2009-10-06 15:31:29.000000000 +0530
+++ b/arch/powerpc/kernel/entry_64.S	2009-10-06 15:34:00.000000000 +0530
@@ -1038,7 +1038,7 @@ _GLOBAL(mod_return_to_handler)
 	 * We are in a module using the module's TOC.
 	 * Switch to our TOC to run inside the core kernel.
 	 */
-	LOAD_REG_IMMEDIATE(r4,ftrace_return_to_handler)
+	LOAD_REG_ADDR(r4,ftrace_return_to_handler)
 	ld	r2, 8(r4)
 
 	bl	.ftrace_return_to_handler
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to