problem with mpc8536 and kernel 2.6.32 and interrupts

Koen Swinters Koen.Swinters at otnsystems.com
Thu Nov 22 23:12:03 EST 2012


Hi all,

I have a problem. This is on a MPC8536 based platform with 36-bit address space and linux kernel 2.6.32 (32bit).
after X time we get coredumps from userspace applications(random):

one of the coredumps:
****************************************************
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "powerpc-none-linux-gnuspe"...

warning: core file may not match specified executable file.

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld.so.1...done.
Loaded symbols for /lib/ld.so.1
Core was generated by `wc -l'.
Program terminated with signal 11, Segmentation fault.
[New process 4782]
#0  0x4800e778 in call_init () from /lib/ld.so.1
(gdb) bt
#0  0x4800e778 in call_init () from /lib/ld.so.1
#1  0x4800e9d8 in _dl_init_internal () from /lib/ld.so.1
#2  0x48015fc8 in _start () from /lib/ld.so.1
Backtrace stopped: frame did not save the PC
(gdb) info frame
Stack level 0, frame at 0xbfc4bc70:
 pc = 0x4800e778 in call_init; saved pc 0x4800e9d8
 called by frame at 0xbfc4bca0
 Arglist at 0xbfc4bc40, args: 
 Locals at 0xbfc4bc40, Previous frame's sp is 0xbfc4bc70
 Saved registers:
  r25 at 0xbfc4bc54, r26 at 0xbfc4bc58, r27 at 0xbfc4bc5c, r28 at 0xbfc4bc60,
  r29 at 0xbfc4bc64, r30 at 0xbfc4bc68, r31 at 0xbfc4bc6c, pc at 0xbfc4bc74,
  lr at 0xbfc4bc74
(gdb) frame
#0  0x4800e778 in call_init () from /lib/ld.so.1
(gdb) frame 0
#0  0x4800e778 in call_init () from /lib/ld.so.1
(gdb) frame 1
#1  0x4800e9d8 in _dl_init_internal () from /lib/ld.so.1
(gdb) frame 2
#2  0x48015fc8 in _start () from /lib/ld.so.1
(gdb) frame 3
#0  0x00000000 in ?? ()
(gdb) 

*************************************************

another cordump is:

GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "powerpc-none-linux-gnuspe"...

warning: core file may not match specified executable file.
Core was generated by `/bin/bash /usr/bin/check_apps'.
Program terminated with signal 11, Segmentation fault.
[New process 7823]
#0  0x10057ae8 in print_stats_cpu_struct (stats=0x100c3008)
    at procps/iostat.c:247
247     procps/iostat.c: No such file or directory.
        in procps/iostat.c
(gdb) bt
#0  0x10057ae8 in print_stats_cpu_struct (stats=0x100c3008)
    at procps/iostat.c:247
#1  0x100b5c68 in nvalloc (n=269193816) at editors/awk.c:933
#2  0x4801fab8 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) info frame
Stack level 0, frame at 0xbfb395a0:
 pc = 0x10057ae8 in print_stats_cpu_struct (procps/iostat.c:247); 
    saved pc 0x100b5c68
 called by frame at 0xbfb395d0
 source language c.
 Arglist at 0xbfb394e0, args: stats=0x100c3008
 Locals at 0xbfb394e0, Previous frame's sp is 0xbfb395a0
 Saved registers:
  r25 at 0xbfb3956c, r26 at 0xbfb39574, r27 at 0xbfb3957c, r28 at 0xbfb39584,
  r29 at 0xbfb3958c, pc at 0xbfb395a4, lr at 0xbfb395a4, ev25 at 0xbfb39568,
  ev26 at 0xbfb39570, ev27 at 0xbfb39578, ev28 at 0xbfb39580,
  ev29 at 0xbfb39588
(gdb) info frame 1
Stack frame at 0xbfb395d0:
 pc = 0x100b5c68 in nvalloc (editors/awk.c:933); saved pc 0x4801fab8
 called by frame at 0x12, caller of frame at 0xbfb395a0
 source language c.
 Arglist at 0xbfb395a0, args: n=269193816
 Locals at 0xbfb395a0, Previous frame's sp is 0xbfb395d0
 Saved registers:
  r29 at 0xbfb395c4, pc at 0xbfb395d4, lr at 0xbfb395d4
(gdb) info frame 2
Stack frame at 0x12:
 pc = 0x4801fab8; saved pc Cannot access memory at address 0x16
(gdb) info frame 3
Stack frame at 0x3:
 pc = 0x0; saved pc 0xfe7bcc8
 Outermost frame: unwinder did not report frame ID
 Arglist at 0xbfb394e0, args: 
 Locals at 0xbfb394e0, Previous frame's sp is 0xbfb394e0
(gdb) info frame 4
Stack frame at 0x4:
 pc = 0x0; saved pc 0xfe7bcc8
 Outermost frame: unwinder did not report frame ID
 Arglist at 0xbfb394e0, args: 
 Locals at 0xbfb394e0, Previous frame's sp is 0xbfb394e0
(gdb) 

******************************************************************



We have a module from broadcom loaded that makes use of interrupts via PCI and interrupt driver FSL-MSI . When we disable this interrupt the coredumps dissapear.
I`ve tried the following patch: 78e2e68a2b79f394b7cd61e07987a8a89af907f7. But is does not fix this problem.
Does some-one know what is happenging here.


Thanks,

Koen





More information about the Linuxppc-dev mailing list