Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
kernel thinks it's in an interrupt
- 09-21-2006
- Anonymous
September 21, 2006, 12:29 pm

Hi,
I am building an MV linux 2.6 kernel for a xilinx mini-module evm and I get
the following crash:
Linux/PPC load: console=tty1 console=ttyS0,9600 ip=on root=/dev/ram rw
Uncompressing Linux...done.
Now booting the kernel
Linux version 2.6.10_mvl401-ml40x (Administrator@Rachel_d600) (gcc version
3.4.3
(MontaVista 3.4.3-25.0.100.0600797 2006-06-06)) #8 Wed Sep 20 20:01:03 EDT
2006
Xilinx ML40x Reference System (Virtex-4 FX)
Port by MontaVista Software, Inc. ( snipped-for-privacy@mvista.com)
Built 1 zonelists
Kernel command line: console=tty1 console=ttyS0,9600 ip=on root=/dev/ram rw
Xilinx INTC #0 at 0x41200000 mapped to 0xFDFFE000
PID hash table entries: 512 (order: 9, 8192 bytes)
hr_time_init: arch_to_nsec = 20971520, nsec_to_arch = 429496729
Console: colour dummy device 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 62848k available (1452k kernel code, 452k data, 116k init, 0k
highmem)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Badness in __schedule at kernel/sched.c:2842
Call trace:
[c0003a64] check_bug_trap+0x98/0xdc
[c0003c98] ProgramCheckException+0x1f0/0x2b4
[c00032a4] ret_from_except_full+0x0/0x4c
[c01674c4] __schedule+0x28/0x728
[c0167c34] preempt_schedule+0x70/0xa4
[c003e04c] buffered_rmqueue+0x2ec/0x2f8
[c003e120] __alloc_pages+0xc8/0x3ac
[c003e42c] __get_free_pages+0x28/0x68
[c0042c80] cache_alloc_refill+0x32c/0x5d0
[c00426dc] kmem_cache_alloc+0x68/0x6c
[c006436c] sget+0xc4/0x3fc
[c006558c] get_sb_single+0x34/0xcc
[c009b700] sysfs_get_sb+0x1c/0x2c
[c0065680] do_kern_mount+0x5c/0x118
[c01d2e60] sysfs_init+0x48/0x80
kmem_cache_create: Early error in slab bdev_cache
kernel BUG in kmem_cache_create at mm/slab.c:1209!
Oops: Exception in kernel mode, sig: 5 [#1]
PREEMPT
NIP: C0043C94 LR: C0043C94 SP: C01BFF60 REGS: c01bfeb0 TRAP: 0700 Not
tainted
MSR: 00029030 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c0198710[0] 'swapper' THREAD: c01be000
Last syscall: 0
GPR00: C0043C94 C01BFF60 C0198710 00000035 000006FE FFFFFFFF 00000001
00000720
GPR08: C01F0000 C01C0000 00000000 C01BE000 44000028 00003570 02001400
00000000
GPR16: 00000001 00000001 FFFFFFFF 007FFF00 01FFAA80 C0065E54 00000003
00000000
GPR24: 00000000 C0176A14 FF950040 6F743D2F 00062000 C01A0000 00000000
00000188
NIP [c0043c94] kmem_cache_create+0x5c/0x5e0
LR [c0043c94] kmem_cache_create+0x5c/0x5e0
Call trace:
[c01d204c] bdev_cache_init+0x3c/0xb0
[c01d23f8] vfs_caches_init+0xf0/0x108
[c01c05dc] start_kernel+0x12c/0x170
[c000225c] start_here+0x44/0xb0
Kernel panic - not syncing: Aiee, killing interrupt handler!
<0>Rebooting in 180 seconds..<NULL>
Which I traced to the in_interrupt() function returning true while it is
trying to allocate the kernel cache memory. I assume my interrupt controller
is messed up but I don't know how to fix. Any ideas?
Thanks,
Clark
I am building an MV linux 2.6 kernel for a xilinx mini-module evm and I get
the following crash:
Linux/PPC load: console=tty1 console=ttyS0,9600 ip=on root=/dev/ram rw
Uncompressing Linux...done.
Now booting the kernel
Linux version 2.6.10_mvl401-ml40x (Administrator@Rachel_d600) (gcc version
3.4.3
(MontaVista 3.4.3-25.0.100.0600797 2006-06-06)) #8 Wed Sep 20 20:01:03 EDT
2006
Xilinx ML40x Reference System (Virtex-4 FX)
Port by MontaVista Software, Inc. ( snipped-for-privacy@mvista.com)
Built 1 zonelists
Kernel command line: console=tty1 console=ttyS0,9600 ip=on root=/dev/ram rw
Xilinx INTC #0 at 0x41200000 mapped to 0xFDFFE000
PID hash table entries: 512 (order: 9, 8192 bytes)
hr_time_init: arch_to_nsec = 20971520, nsec_to_arch = 429496729
Console: colour dummy device 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 62848k available (1452k kernel code, 452k data, 116k init, 0k
highmem)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Badness in __schedule at kernel/sched.c:2842
Call trace:
[c0003a64] check_bug_trap+0x98/0xdc
[c0003c98] ProgramCheckException+0x1f0/0x2b4
[c00032a4] ret_from_except_full+0x0/0x4c
[c01674c4] __schedule+0x28/0x728
[c0167c34] preempt_schedule+0x70/0xa4
[c003e04c] buffered_rmqueue+0x2ec/0x2f8
[c003e120] __alloc_pages+0xc8/0x3ac
[c003e42c] __get_free_pages+0x28/0x68
[c0042c80] cache_alloc_refill+0x32c/0x5d0
[c00426dc] kmem_cache_alloc+0x68/0x6c
[c006436c] sget+0xc4/0x3fc
[c006558c] get_sb_single+0x34/0xcc
[c009b700] sysfs_get_sb+0x1c/0x2c
[c0065680] do_kern_mount+0x5c/0x118
[c01d2e60] sysfs_init+0x48/0x80
kmem_cache_create: Early error in slab bdev_cache
kernel BUG in kmem_cache_create at mm/slab.c:1209!
Oops: Exception in kernel mode, sig: 5 [#1]
PREEMPT
NIP: C0043C94 LR: C0043C94 SP: C01BFF60 REGS: c01bfeb0 TRAP: 0700 Not
tainted
MSR: 00029030 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c0198710[0] 'swapper' THREAD: c01be000
Last syscall: 0
GPR00: C0043C94 C01BFF60 C0198710 00000035 000006FE FFFFFFFF 00000001
00000720
GPR08: C01F0000 C01C0000 00000000 C01BE000 44000028 00003570 02001400
00000000
GPR16: 00000001 00000001 FFFFFFFF 007FFF00 01FFAA80 C0065E54 00000003
00000000
GPR24: 00000000 C0176A14 FF950040 6F743D2F 00062000 C01A0000 00000000
00000188
NIP [c0043c94] kmem_cache_create+0x5c/0x5e0
LR [c0043c94] kmem_cache_create+0x5c/0x5e0
Call trace:
[c01d204c] bdev_cache_init+0x3c/0xb0
[c01d23f8] vfs_caches_init+0xf0/0x108
[c01c05dc] start_kernel+0x12c/0x170
[c000225c] start_here+0x44/0xb0
Kernel panic - not syncing: Aiee, killing interrupt handler!
<0>Rebooting in 180 seconds..<NULL>
Which I traced to the in_interrupt() function returning true while it is
trying to allocate the kernel cache memory. I assume my interrupt controller
is messed up but I don't know how to fix. Any ideas?
Thanks,
Clark

Re: kernel thinks it's in an interrupt

There is a problem indeed in interrupt controller in 2.6.17 for ppc,
this is the patch...wonder if it'll work there or not...try this out
and lemme know if it works..
--- linux-2.6.16-rc1.orig/arch/powerpc/platforms/cell/spider-pic.c
+++ linux-2.6.16-rc1/arch/powerpc/platforms/cell/spider-pic.c
@@ -196,10 +196,11 @@ void spider_init_IRQ(void)
if (strstr(compatible, "CBEA,platform-spider-pic"))
spider_reg = *(long *)get_property(dn,"reg", NULL);
- else {
+ else if (strstr(compatible, "sti,platform-spider-pic")) {
spider_init_IRQ_hardcoded();
return;
- }
+ } else
+ continue;
if (!spider_reg)
printk("interrupt controller does not have reg property !\n");
~Sudip
Site Timeline
- » pSos partition with linux
- — Next thread in » Embedded Linux
-
- » Real time Linux
- — Previous thread in » Embedded Linux
-
- » Crosscompiling for ARM: reloc type R_ARM_ABS32 is not supported for PIC - ...
- — Newest thread in » Embedded Linux
-
- » Fixed Point Arithmetic is a PITA!
- — The site's Newest Thread. Posted in » Electronics Design
-