kernel thinks it's in an interrupt - Embedded

This is a discussion on kernel thinks it's in an interrupt - Embedded ; 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 ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: kernel thinks it's in an interrupt

  1. kernel thinks it's in an interrupt

    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. (source@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..

    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



  2. Re: kernel thinks it's in an interrupt

    Anonymous wrote:
    > 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. (source@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..
    >
    > 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



    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


+ Reply to Thread