Re: Dynamic-ftrace not working in PlayStation3
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2009-01-30 03:38:18
On Thu, 29 Jan 2009, Geoff Levand wrote:
quoted
//************************************************************************************************************************************* ip:d000000000045aec jumps to d000000000046340 r2: d000000000050c00 3d82ffff 398c5740 ffff5740 toc: d000000000046360 c0000000 00007cac ip:d0000000000458d0 jumps to d000000000046340 r2: d000000000050c00 3d82ffff 398c5740 ffff5740 toc: d000000000046360 c0000000 00007cac ip:d000000000045838 jumps to d000000000046340 r2: d000000000050c00 3d82ffff 398c5740 ffff5740 toc: d000000000046360 c0000000 00007cac ip:d0000000000456dc jumps to d000000000046340 r2: d000000000050c00 3d82ffff 398c5740 ffff5740 toc: d000000000046360 c0000000 00007cac...
So I take it that the above showed that the code worked for some?
quoted
ps3_system_bus_match:362: dev=11.0(lpm_01), drv=11.0(ps3-lpm): match ps3_system_bus_match:362: dev=11.0(lpm_01), drv=11.0(ps3-lpm): match ps3-lpm lpm_01: <- ps3_lpm_probe:1245: ip:d0000000003fe280 jumps to d0000000003ffad8 r2: d000000000422c70
Could you find out what that function is? Perhaps do a:
printk("ip:%pF\n", ip);
As long as you have kallsyms on, that should point to the function that's
the problem.
quoted
3d82fffe 398cce68 fffece68 toc: d00000000040faf8 6c656400 5f5f6b73 addr does not match ptr: 6c6564005f5f6b73
ptr is the same info as the last line above.
quoted hunk ↗ jump to hunk
quoted
addr: c0000000004ff128 GET_ADDR(addr): c000000000007cacI don't know so much about ftrace, but to get a better idea of the problem, could you try with the patch below? Is ps3-lpm built as a loadable module, and if so, is it the first one that got loaded? Also, try to either build with CONFIG_PS3_LPM=n, or delete ps3-lpm.ko so it does not get loaded to see what happens. -Geoff--- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c@@ -23,7 +23,7 @@ #if 0
Heh, I would have just done: - #if 0 + #if 1 ;-) -- Steve
quoted hunk ↗ jump to hunk
#define DEBUGP printk #else -#define DEBUGP(fmt , ...) do { } while (0) +#define DEBUGP printk #endif static unsigned int ftrace_nop = PPC_NOP_INSTR;@@ -213,6 +213,8 @@ __ftrace_make_nop(struct module *mod, ptr = ((unsigned long)jmp[0] << 32) + jmp[1]; + printk("ptr %lx, addr %lx, GET_ADDR %lx\n", ptr, addr, GET_ADDR(addr)); + /* This should match what was called */ if (ptr != GET_ADDR(addr)) { printk(KERN_ERR "addr does not match %lx\n", ptr);