[#5066] 518f-ezbrd: SDH driver causes kernel panic

Document created by Aaronwu Employee on Sep 3, 2013
Version 1Show Document
  • View in full screen mode

[#5066] 518f-ezbrd: SDH driver causes kernel panic

Submitted By: Yi Li

Open Date

2009-04-13 22:28:51     Close Date

2010-06-11 04:48:20

Priority:

Medium     Assignee:

Cliff Cai

Status:

Closed     Fixed In Release:

N/A

Found In Release:

snaps     Release:

Category:

N/A     Board:

EZBRD

Processor:

BF518     Silicon Revision:

0.0

Is this bug repeatable?:

Yes     Resolution:

Fixed

Uboot version or rev.:

    Toolchain version or rev.:

4.1 svn-3305

App binary format:

N/A     

Summary: 518f-ezbrd: SDH driver causes kernel panic

Details:

 

linux-kernel: r6259

board: 0.1

 

Build bfin-SDH driver into kernel, and libertas driver as kernel module.

 

NULL pointer access

Kernel OOPS in progress

Deferred Exception context

CURRENT PROCESS:

COMM=swapper PID=1

CPU = 0

invalid mm

return address: [0x00009e20]; contents of:

0x00009e00:  0004  e10a  0084  3220  9110  4830  3032  6000

0x00009e10:  3039  0730  304f  3044  67e1  e3ff  fa75  3228

0x00009e20: [9120] 5438  0c00  141e  6007  3046  4d68  4f68

0x00009e30:  3208  914a  e410  0015  e411  0016  e611  001c

 

SEQUENCER STATUS:        Not tainted

SEQSTAT: 00060027  IPEND: 80b0  SYSCFG: 0006

  EXCAUSE   : 0x27

  interrupts disabled

  physical IVG5 asserted : <0xffa00aec> { _evt_ivhw + 0x0 }

  physical IVG7 asserted : <0xffa00be8> { _evt_evt7 + 0x0 }

  physical IVG15 asserted : <0xffa00c3c> { _evt_system_call + 0x0 }

  logical irq   6 mapped  : <0xffa00328> { _timer_interrupt + 0x0 }

  logical irq  21 mapped  : <0x000b2de4> { _bfin_rtc_interrupt + 0x0 }

  logical irq  24 mapped  : <0x000bc570> { _sdh_dma_irq + 0x0 }

  logical irq  27 mapped  : <0x000b5c3c> { _bfin_twi_interrupt_entry + 0x0 }

  logical irq  35 mapped  : <0x000a9524> { _bfin_mac_interrupt + 0x0 }

  logical irq  58 mapped  : <0x000bc594> { _sdh_stat_irq + 0x0 }

RETE: <0x00000000> { _do_one_initcall + 0xfffff000 }

RETN: <0x03ee9bbc> /* kernel dynamic memory */

RETX: <0x00000480> /* Maybe fixed code section */

RETS: <0x00009e1e> { _try_to_wake_up + 0x26 }

PC  : <0x00009e20> { _try_to_wake_up + 0x28 }

DCPLB_FAULT_ADDR: <0x00000000> { _do_one_initcall + 0xfffff000 }

ICPLB_FAULT_ADDR: <0x00009e20> { _try_to_wake_up + 0x28 }

 

PROCESSOR STATE:

R0 : 0018cbb0    R1 : 03ee9bc8    R2 : 00000000    R3 : 007e34c0

R4 : 00000000    R5 : 0000003a    R6 : 00000000    R7 : 0000000f

P0 : 00000366    P1 : 00000000    P2 : 03ee9bc8    P3 : 0302f5bc

P4 : 00000000    P5 : 0018cbb0    FP : 03ee9bcc    SP : 03ee9ae0

LB0: 00087cf8    LT0: 00087cf6    LC0: 00000000

LB1: 000160f6    LT1: 000160e0    LC1: 00000000

B0 : 00000000    L0 : 00000000    M0 : 00000000    I0 : 03ee9c6c

B1 : 00000000    L1 : 00000000    M1 : 00000000    I1 : 03017d48

B2 : 00000000    L2 : 00000000    M2 : 00000000    I2 : 00000000

B3 : 00000000    L3 : 00000000    M3 : 00000000    I3 : 00000000

A0.w: 00000064   A0.x: 00000000   A1.w: 00000014   A1.x: 00000000

USP : 00000000  ASTAT: 00003004

 

Hardware Trace:

   0 Target : <0x00004a30> { _trap_c + 0x0 }

     Source : <0xffa005aa> { _exception_to_level5 + 0x9e } CALL pcrel

   1 Target : <0xffa0050c> { _exception_to_level5 + 0x0 }

     Source : <0xffa003de> { _bfin_return_from_exception + 0x6 } RTX

   2 Target : <0xffa003d8> { _bfin_return_from_exception + 0x0 }

     Source : <0xffa00466> { _ex_trap_c + 0x66 } JUMP.S

   3 Target : <0xffa00400> { _ex_trap_c + 0x0 }

     Source : <0xffa00636> { _trap + 0x2a } JUMP (P4)

   4 Target : <0xffa0060c> { _trap + 0x0 }

     Source : <0x00009e1e> { _try_to_wake_up + 0x26 } 0x3228

   5 Target : <0x00009e1e> { _try_to_wake_up + 0x26 }

     Source : <0x0000931a> { _task_rq_lock + 0x16 } RTS

   6 Target : <0x00009304> { _task_rq_lock + 0x0 }

     Source : <0x00009e1a> { _try_to_wake_up + 0x22 } CALL pcrel

   7 Target : <0x00009df8> { _try_to_wake_up + 0x0 }

     Source : <0x00009ed0> { _wake_up_process + 0xc } JUMP.L

   8 Target : <0x00009ec4> { _wake_up_process + 0x0 }

     Source : <0x000bc70c> { _sdh_stat_irq + 0x178 } CALL pcrel

   9 Target : <0x000bc708> { _sdh_stat_irq + 0x174 }

     Source : <0x000bc344> { _sdh_enable_sdio_irq + 0x0 } RTS

  10 Target : <0x000bc344> { _sdh_enable_sdio_irq + 0x0 }

     Source : <0x000bc706> { _sdh_stat_irq + 0x172 } CALL (P2)

  11 Target : <0x000bc6f2> { _sdh_stat_irq + 0x15e }

     Source : <0x0001b058> { _queue_work_on + 0x34 } RTS

  12 Target : <0x0001b024> { _queue_work_on + 0x0 }

     Source : <0x0001b0c8> { _queue_work + 0x8 } JUMP.L

  13 Target : <0x0001b0c0> { _queue_work + 0x0 }

     Source : <0x0001b5e0> { _queue_delayed_work + 0x10 } JUMP.L

  14 Target : <0x0001b5d0> { _queue_delayed_work + 0x0 }

     Source : <0x000b6c0c> { _mmc_schedule_delayed_work + 0x10 } JUMP.L

  15 Target : <0x000b6bfc> { _mmc_schedule_delayed_work + 0x0 }

     Source : <0x000b6c16> { _mmc_detect_change + 0x6 } JUMP.L

 

Kernel Stack

Stack info:

SP: [0x03ee9bbc] <0x03ee9bbc> /* kernel dynamic memory */

FP: (0x03ee9d94)

Memory from 0x03ee9bb0 to 03eea000

03ee9bb0: 0018cbb0  00000366  00000006 [00028126] 03014fc0  0000003a  0000ffff  001a0058

03ee9bd0:<000bc710> 0302f400  ffc038c0  00000012  00000000  0000003a  00000000  00000016

03ee9bf0: 00000002 <00028126> 03014fc0  0000003a  0019fcac  00000000  00000000  00000000

03ee9c10: 0018cbe0  00000001 <000296c0> 001a2a58  0000003a  00000000  001b0a64  001a0058

03ee9c30:<00012bce> 00005e7c <ffa002b4> 00198f9c  0302f5bc  00000000  00000000  00005e7c

03ee9c50:<ffa00a82> 0302f400  00000000  00001000  00087cf8  000160e0  00087cf6  00064c72

03ee9c70: 00000180  00000026  00000000  00000000  00000000  00064c72 <00129d72> 00000007

03ee9c90: 00002020  000160f6  00087cf8  000160e0  00087cf6  00000000  00000000  00000014

03ee9cb0: 00000000  00000064  00000000  00000000  00000000  00000000  00000000  00000000

03ee9cd0: 00000000  00000000  00000000  00000000  00000000  00000000  00000000  00000000

03ee9cf0: 00000000  03017d48  00000000  00000000  001a0058  0302f400  0302f5bc  0019fcac

03ee9d10: ffc038c8  00162805  0018b130  00000000  00001000  001b0a64  00000000  00000005

03ee9d30: 00000000  00000180  0017279c  0017279c  0018b130  00000006  0302f400  0302f5bc

03ee9d50:<00129d3a> 0302f400 <00129d72> 00000000  00001000  001d333c  001b0a64 <0006992a>

03ee9d70: 000000d0  0302f5bc  001b0a64 <000a3a4c> 0019fcac  001b0a64  0019b4e4  0019fd58

03ee9d90: 000000ac (00000000)<001287a0><001287c8> 0019fbc0 <000a3ba4> 0019fcac  001b0a64

03ee9db0: 001d333c  0019fd58  001af910  001d333c  00000000 <000a3262> 000a3b38  001af910

03ee9dd0: 00000000  03ee9de4  03015d40 <00083a48> 0018a664  03efb5d8  0019fcf4 <000a38fa>

03ee9df0: 0018a664  00000000  03015d40  00000000  03ee9e24  03ee9e24 <000a3614> 000a3b38

03ee9e10:<000a3632> 0018a664  001b05f0 <000a4bf6> 0015c63c  001627fc  00000000 <000a3cf4>

03ee9e30: 0018a664  001b0a64  001d333c  00000000  00000000  00000000  00000000  0301c660

03ee9e50:<00001028> 0018a664  001cbc98  00000000  00000000  00000000  03ee7bc0  001b577c

03ee9e70: 00000010  03ee8000  000040d0  00000000  00000001  000240d0  00000000  00000000

03ee9e90: 001b577c  00000001  00000044  03ee8000  03ee8000  03ee8000  000240d0  03ee8000

03ee9eb0: 00000010  007be8e0  00000000  00000000  00000000  00000000  00000000  00000001

03ee9ed0: 00000000  00000000  ffffffff  03ee9f0c <00082d00> 03ec7940  03ec6a40  00193a2c

03ee9ef0:<00082d74> 03efb6a4  00000000  000000fc  00193a2c  000000d0  03ee9f0c  03ee6e10

03ee9f10: 00000000  00000000 <001653c0><00082eda> 00193a2c  03ec6a40  00000000 <00064a84>

03ee9f30: 03ec7940  03ec6a40  001d333c  03ee9f60  00004000  00000000  00000000  00000000

03ee9f50: 00193a2c  03ee9f60 <00064ca8> 001a3868  000000fc <00064cb6> 001a3868  00192f38

03ee9f70: 03ec7940  03ec6a40  03ee9f9c  7fffff00  00000001 <00029d36> 03ee9f9c  00000076

03ee9f90: 0000000e <00064d7a> 03ec6a40  00383131  00000000  001c0000 <00029d92> 001a1cbc

03ee9fb0: 001d30e0  00000076  001a3868 <001b83a0> 001d32d4  001d30e0  00000000  00000000

03ee9fd0: 00000000  00000000  00000000  00000000  00000000 <0000145e> 00000000  00000000

03ee9ff0: 00000000  00000000  ffffffff  00000006  03ef73a8

Return addresses in stack:

    address : <0x00028126> { _handle_IRQ_event + 0x36 }

    address : <0x000bc710> { _sdh_stat_irq + 0x17c }

    address : <0x00028126> { _handle_IRQ_event + 0x36 }

    address : <0x000296c0> { _handle_simple_irq + 0x48 }

    address : <0x00012bce> { _irq_enter + 0xa }

    address : <0xffa002b4> { _asm_do_IRQ + 0x34 }

    address : <0xffa00a82> { __common_int_entry + 0x62 }

    address : <0x00129d72> { _sdh_probe + 0x1e2 }

    address : <0x00129d3a> { _sdh_probe + 0x1aa }

    address : <0x00129d72> { _sdh_probe + 0x1e2 }

    address : <0x0006992a> { _create_dir + 0x3a }

    address : <0x000a3a4c> { _driver_probe_device + 0x80 }

   frame  1 : <0x001287a0> { _klist_next + 0x20 }

    address : <0x001287c8> { _klist_next + 0x48 }

    address : <0x000a3ba4> { ___driver_attach + 0x6c }

    address : <0x000a3262> { _bus_for_each_dev + 0x3a }

    address : <0x00083a48> { _kobject_init_and_add + 0x24 }

    address : <0x000a38fa> { _driver_attach + 0x1a }

    address : <0x000a3614> { _bus_add_driver + 0x64 }

    address : <0x000a3632> { _bus_add_driver + 0x82 }

    address : <0x000a4bf6> { _platform_device_register_simple + 0x22 }

    address : <0x000a3cf4> { _driver_register + 0x40 }

    address : <0x00001028> { _do_one_initcall + 0x28 }

    address : <0x00082d00> { _ida_get_new_above + 0x94 }

    address : <0x00082d74> { _ida_get_new_above + 0x108 }

    address : <0x001653c0> /* kernel dynamic memory */

    address : <0x00082eda> { _ida_pre_get + 0xe }

    address : <0x00064a84> { _proc_register + 0x30 }

    address : <0x00064ca8> { _create_proc_entry + 0x3c }

    address : <0x00064cb6> { _create_proc_entry + 0x4a }

    address : <0x00029d36> { _register_irq_proc + 0x76 }

    address : <0x00064d7a> { _proc_mkdir_mode + 0x2e }

    address : <0x00029d92> { _init_irq_proc + 0x42 }

    address : <0x001b83a0> { _kernel_init + 0x84 }

    address : <0x0000145e> { _kernel_thread_helper + 0x6 }

Modules linked in:

Kernel panic - not syncing: Kernel exception

 

Follow-ups

 

--- Sonic Zhang                                              2009-04-20 03:51:01

Only occur when sdio interrupt is enabled on bf518. works well on bf548.

 

--- Cliff Cai                                                2009-04-20 05:20:10

it works for me on one BF518 ezkit 0.1 board,So I think it's a problem of sd

socket,it causes an unexcepted interrupt.

 

Cliff

 

--- Mike Frysinger                                           2009-04-20 10:21:19

a spurious interrupt should not cause the kernel to crash

 

--- Yi Li                                                    2009-04-21 00:45:32

This bug cannot be reproduced all the time. And some time, even blackfin RTC

driver cause a similar panic. Attached the configuration. Disable RTC driver and

this exception will disappear.

 

bfin> bootm

## Booting kernel from Legacy Image at 02000000 ...

   Image Name:   Linux-2.6.28.9-ADI-2009R1-pre-sv

   Created:      2009-04-21   4:33:00 UTC

   Image Type:   Blackfin Linux Kernel Image (gzip compressed)

   Data Size:    4574119 Bytes =  4.4 MB

   Load Address: 00001000

   Entry Point:  001c454c

   Verifying Checksum ... OK

   Uncompressing Kernel Image ... OK

Starting Kernel at = 001c454c

Linux version 2.6.28.9-ADI-2009R1-pre-svn6280 (adam@adam-desktop) (gcc version

4.1.2 (ADI svn)) #15 Tue Apr 21 12:32:55 CST 2009

console [early_BFuart0] enabled

early printk enabled on early_BFuart0

Board Memory: 64MB

Kernel Managed Memory: 64MB

Memory map:

  fixedcode = 0x00000400-0x00000490

  text      = 0x00001000-0x0012b300

  rodata    = 0x0012b300-0x0018a6b8

  bss       = 0x0018a6c0-0x0019dbe4

  data      = 0x0019dbe4-0x001b8000

    stack   = 0x001b6000-0x001b8000

  init      = 0x001b8000-0x0085b000

  available = 0x0085b000-0x03eff000

  DMA Zone  = 0x03f00000-0x04000000

Hardware Trace Active and Enabled

Boot Mode: 3

Blackfin support (C) 2004-2009 Analog Devices, Inc.

Compiled for ADSP-BF518 Rev 0.0

Blackfin Linux support by   blackfin.uclinux.org/

Processor Speed: 400 MHz core clock and 80 MHz System Clock

NOMPU: setting up cplb tables

Instruction Cache Enabled for CPU0

Data Cache Enabled for CPU0 (write-back)

Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 16001

Kernel command line: root=/dev/mtdblock0 rw earlyprintk=serial,uart0,57600

console=ttyBF0,57600

Configuring Blackfin Priority Driven Interrupts

PID hash table entries: 256 (order: 8, 1024 bytes)

Console: colour dummy device 80x25

console handover: boot [early_BFuart0] -> real [ttyBF0]

Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)

Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)

Memory available: 55368k/65536k RAM, (6796k init code, 1192k kernel code, 564k

data, 1024k dma, 588k reserved)

Calibrating delay loop... 796.67 BogoMIPS (lpj=1593344)

Security Framework initialized

Mount-cache hash table entries: 512

Blackfin Scratchpad data SRAM: 4 KB

Blackfin L1 Data A SRAM: 16 KB (15 KB free)

Blackfin L1 Data B SRAM: 16 KB (16 KB free)

Blackfin L1 Instruction SRAM: 48 KB (42 KB free)

PDA for CPU0 reserved at 0018b56c

net_namespace: 288 bytes

NET: Registered protocol family 16

Blackfin GPIO Controller

Blackfin DMA Controller

ezbrd_init(): registering device resources

cfg80211: Using static regulatory domain info

cfg80211: Regulatory domain: US

    (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)

    (2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)

    (5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)

    (5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)

    (5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)

    (5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)

    (5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)

cfg80211: Calling CRDA for country: US

NET: Registered protocol family 2

IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

TCP established hash table entries: 2048 (order: 2, 16384 bytes)

TCP bind hash table entries: 2048 (order: 1, 8192 bytes)

TCP: Hash tables configured (established 2048 bind 2048)

TCP reno registered

NET: Registered protocol family 1

msgmni has been set to 108

alg: No test for stdrng (krng)

io scheduler noop registered (default)

Serial: Blackfin serial driver

bfin-uart.1: ttyBF0 at MMIO 0xffc00400 (irq = 29) is a BFIN-UART

brd: module loaded

bfin_mii_bus: probed

bfin_mac: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:03, irq=-1,

mdc_clk=2500000Hz(mdc_div=15)@sclk=80MHz)

bfin_mac bfin_mac.0: Blackfin on-chip Ethernet MAC driver, Version 1.1

bfin-spi bfin-spi.0: Blackfin on-chip SPI Controller Driver, Version 1.0,

regs_base@ffc00500, dma channel@7

bfin-spi bfin-spi.1: Blackfin on-chip SPI Controller Driver, Version 1.0,

regs_base@ffc03400, dma channel@5

NULL pointer access

Kernel OOPS in progress

Deferred Exception context

CURRENT PROCESS:

COMM=swapper PID=1

CPU = 0

invalid mm

return address: [0x000b1d82]; contents of:

0x000b1d60:  9110  0040  6c86  3041  0127  0010  3041  e3ff

0x000b1d70:  7bb7  6801  2ff8  0000  04c5  3228  0167  4f41

0x000b1d80:  6f86 [e52a] 0068  e428  0064  5041  5651  0c42

0x000b1d90:  e629  0064  1804  a050  9152  0062  304d  e120

 

SEQUENCER STATUS:        Not tainted

SEQSTAT: 00060027  IPEND: 8030  SYSCFG: 0006

  EXCAUSE   : 0x27

  interrupts disabled

  physical IVG5 asserted : <0xffa00aec> { _evt_ivhw + 0x0 }

  physical IVG15 asserted : <0xffa00c3c> { _evt_system_call + 0x0 }

  logical irq   6 mapped  : <0xffa00328> { _timer_interrupt + 0x0 }

  logical irq  21 mapped  : <0x000b2ea0> { _bfin_rtc_interrupt + 0x0 }

  logical irq  35 mapped  : <0x000a95e0> { _bfin_mac_interrupt + 0x0 }

RETE: <0x00000000> { _do_one_initcall + 0xfffff000 }

RETN: <0x03ee1d04> /* kernel dynamic memory */

RETX: <0x00000480> /* Maybe fixed code section */

RETS: <0x000b2f16> { _bfin_rtc_interrupt + 0x76 }

PC  : <0x000b1d82> { _rtc_update_irq + 0xa }

DCPLB_FAULT_ADDR: <0x000001a0> /* Maybe null pointer? */

ICPLB_FAULT_ADDR: <0x000b1d82> { _rtc_update_irq + 0xa }

 

PROCESSOR STATE:

R0 : 00000000    R1 : 00000100    R2 : 00000090    R3 : 0000001f

R4 : 0019f38c    R5 : 00000000    R6 : 00000090    R7 : 00000004

P0 : 00000000    P1 : ffc00308    P2 : ffc00308    P3 : 00000000

P4 : 000b2ea0    P5 : 00000000    FP : 03a45860    SP : 03ee1c28

LB0: 00087e90    LT0: 00087e90    LC0: 00000000

LB1: 000160a2    LT1: 0001608c    LC1: 00000000

B0 : 00000000    L0 : 00000000    M0 : 00000000    I0 : 00000000

B1 : 00000000    L1 : 00000000    M1 : 00000000    I1 : 03a8fd48

B2 : 00000000    L2 : 00000000    M2 : 00000000    I2 : 00000000

B3 : 00000000    L3 : 00000000    M3 : 00000000    I3 : 00000000

A0.w: 00000000   A0.x: 00000000   A1.w: 00000000   A1.x: 00000000

USP : 00000000  ASTAT: 00002000

 

Hardware Trace:

   0 Target : <0x00004a44> { _trap_c + 0x0 }

     Source : <0xffa005aa> { _exception_to_level5 + 0x9e } CALL pcrel

   1 Target : <0xffa0050c> { _exception_to_level5 + 0x0 }

     Source : <0xffa003de> { _bfin_return_from_exception + 0x6 } RTX

   2 Target : <0xffa003d8> { _bfin_return_from_exception + 0x0 }

     Source : <0xffa00466> { _ex_trap_c + 0x66 } JUMP.S

   3 Target : <0xffa00400> { _ex_trap_c + 0x0 }

     Source : <0xffa00636> { _trap + 0x2a } JUMP (P4)

   4 Target : <0xffa0060c> { _trap + 0x0 }

     Source : <0x000b1d80> { _rtc_update_irq + 0x8 } 0x6f86

   5 Target : <0x000b1d78> { _rtc_update_irq + 0x0 }

     Source : <0x000b2f12> { _bfin_rtc_interrupt + 0x72 } CALL pcrel

   6 Target : <0x000b2efa> { _bfin_rtc_interrupt + 0x5a }

     Source : <0x000b2ee6> { _bfin_rtc_interrupt + 0x46 } IF CC JUMP

   7 Target : <0x000b2ea0> { _bfin_rtc_interrupt + 0x0 }

     Source : <0x00028a10> { _request_irq + 0xa8 } CALL (P4)

   8 Target : <0x00028a0a> { _request_irq + 0xa2 }

     Source : <0x00028666> { _disable_irq + 0x3e } RTS

   9 Target : <0x0002865a> { _disable_irq + 0x32 }

     Source : <0x00028616> { _disable_irq_nosync + 0x56 } RTS

  10 Target : <0x000285fe> { _disable_irq_nosync + 0x3e }

     Source : <0x00028626> { _disable_irq_nosync + 0x66 } JUMP.S

  11 Target : <0x00028626> { _disable_irq_nosync + 0x66 }

     Source : <0x00007fbc> { _bfin_internal_mask_irq + 0x38 } RTS

  12 Target : <0x00007fbc> { _bfin_internal_mask_irq + 0x38 }

     Source : <0x00007fae> { _bfin_internal_mask_irq + 0x2a } IF !CC

JUMP

  13 Target : <0x00007f84> { _bfin_internal_mask_irq + 0x0 }

     Source : <0x00028624> { _disable_irq_nosync + 0x64 } CALL (P2)

  14 Target : <0x00028618> { _disable_irq_nosync + 0x58 }

     Source : <0x000285fc> { _disable_irq_nosync + 0x3c } IF !CC JUMP

  15 Target : <0x000285c0> { _disable_irq_nosync + 0x0 }

     Source : <0x00028656> { _disable_irq + 0x2e } CALL pcrel

 

Kernel Stack

Stack info:

SP: [0x03ee1cb8] <0x03ee1cb8> /* kernel dynamic memory */

FP: (0x03ee1d68)

Memory from 0x03ee1cb0 to 03ee2000

03ee1cb0: 03a8fd48  00000000 [00000000] 03a45860  00000000  000b2ea0  00000000

ffc00308

03ee1cd0: ffc00308  00000000  00000004  00000090  00000000  0019f38c  0000001f

00000090

03ee1cf0: 00000100  00000000  00000000  00000000  00000006  001a222c  001a2244

03a45860

03ee1d10: 0019b564 <000b2f16> 03a5e720  03ee1d40 <0002865a>

00000080 <00028a12> 001a222c

03ee1d30: 0000ffff  00000000  00000015  03eee1c4  03eee6ec  001b0398  001b0398

<00129b36>

03ee1d50: 0019f38c  03a5e720  0019f384  0019f438  000000ac  001b0398

(00000000)<000699ea>

03ee1d70: 00000001 <000a3a00> 00162810  0019f38c <000a3b08>

0019f38c  001b0398  0019b564

03ee1d90: 0019f438  00000000 <0012885c><00128884> 0019f2a0

<000a3c60> 0019f38c  001b0398

03ee1db0: 001d333c  0019f438  001af990  001d333c  00000000 <000a331e>

000a3bf4  001af990

03ee1dd0: 00000000  03ee1de4  03a78f80 <00083b04> 0018a6e4  03efb5d8

0019f3d4 <000a39b6>

03ee1df0: 0018a6e4  00000000  03a78f80  00000000  03ee1e24  03ee1e24

<000a36d0> 000a3bf4

03ee1e10:<000a36ee> 00000000 <000a3db0> 001b0048  0015c6e0

00162810  00000000 <000a3db0>

03ee1e30: 0018a6e4  001b0398  001d333c  00000000  00000000  001cb3c4  00000000

00000000

03ee1e50:<00001028> 0018a6e4  001cb9cc  00000000  00000000  00000000

03eeabc0  001b57fc

03ee1e70: 00000010  03ee0000 <000040d0> 00000000  00000001  000240d0

00000000  00000000

03ee1e90: 001b57fc  00000001  00000044  03ee0000  03ee0000  03ee0000  000240d0

03ee0000

03ee1eb0: 00000010  008dd8c0  00000000  00000000  00000000  00000000  00000000

00000001

03ee1ed0: 00000000  00000000  ffffffff  03ee1f0c <00082dbc> 03ec6940

03ec5a40  00193aac

03ee1ef0:<00082e30> 03efb6a4  00000000  000000fc  00193aac  000000d0

03ee1f0c  03ee9e10

03ee1f10: 00000000  00000000 <0016546c><00082f96> 00193aac

03ec5a40  00000000 <00064b44>

03ee1f30: 03ec6940  03ec5a40  001d333c  03ee1f60  00004000  00000000  00000000

00000000

03ee1f50: 00193aac  03ee1f60 <00064d68> 001a38e8  000000fc

<00064d76> 001a38e8  00192fb8

03ee1f70: 03ec6940  03ec5a40  03ee1f9c  7fffff00  00000001 <00029da2>

03ee1f9c  00000076

03ee1f90: 0000000e <00064e3a> 03ec5a40  00383131  00000000  001c0000

<00029dfe> 001a1d3c

03ee1fb0: 001d30e0  00000076  001a38e8 <001b83a0> 001d32c4  001d30e0

00000000  00000000

03ee1fd0: 00000000  00000000  00000000  00000000  00000000 <0000145e>

00000000  00000000

03ee1ff0: 00000000  00000000  ffffffff  00000006  03ef73e8

Return addresses in stack:

    address : <0x000b2f16> { _bfin_rtc_interrupt + 0x76 }

    address : <0x0002865a> { _disable_irq + 0x32 }

    address : <0x00028a12> { _request_irq + 0xaa }

    address : <0x00129b36> { _bfin_rtc_probe + 0x4a }

   frame  1 : <0x000699ea> { _create_dir + 0x3a }

    address : <0x000a3a00> { _driver_sysfs_add + 0x44 }

    address : <0x000a3b08> { _driver_probe_device + 0x80 }

    address : <0x0012885c> { _klist_next + 0x20 }

    address : <0x00128884> { _klist_next + 0x48 }

    address : <0x000a3c60> { ___driver_attach + 0x6c }

    address : <0x000a331e> { _bus_for_each_dev + 0x3a }

    address : <0x00083b04> { _kobject_init_and_add + 0x24 }

    address : <0x000a39b6> { _driver_attach + 0x1a }

    address : <0x000a36d0> { _bus_add_driver + 0x64 }

    address : <0x000a36ee> { _bus_add_driver + 0x82 }

    address : <0x000a3db0> { _driver_register + 0x40 }

    address : <0x000a3db0> { _driver_register + 0x40 }

    address : <0x00001028> { _do_one_initcall + 0x28 }

    address : <0x000040d0> { _show_regs + 0x374 }

    address : <0x00082dbc> { _ida_get_new_above + 0x94 }

    address : <0x00082e30> { _ida_get_new_above + 0x108 }

    address : <0x0016546c> /* kernel dynamic memory */

    address : <0x00082f96> { _ida_pre_get + 0xe }

    address : <0x00064b44> { _proc_register + 0x30 }

    address : <0x00064d68> { _create_proc_entry + 0x3c }

    address : <0x00064d76> { _create_proc_entry + 0x4a }

    address : <0x00029da2> { _register_irq_proc + 0x76 }

    address : <0x00064e3a> { _proc_mkdir_mode + 0x2e }

    address : <0x00029dfe> { _init_irq_proc + 0x42 }

    address : <0x001b83a0> { _kernel_init + 0x84 }

    address : <0x0000145e> { _kernel_thread_helper + 0x6 }

Modules linked in:

Kernel panic - not syncing: Kernel exception

 

 

--- Michael Hennerich                                        2009-04-21 05:26:12

Yi,

 

The trace you posted last is due to:

[ uclinux-dist Bugs Item #5072] RTC driver crashes when CONFIG_DEBUG_SHIRQ is

set

 

-Michael

 

--- Yi Li                                                    2009-04-21 22:34:27

Thanks. I will see what happens when Mike fixes the RTC driver issue.

 

--- Sonic Zhang                                              2009-04-22 22:41:50

The current status is that the origianl bug before CONFIG_DEBUG_SHIRQ is enabled

can not be reproduced by Cliff and Yi on SVN trunk. So, mark it not reproduced.

The later exception has nothing to do with this bug.

 

--- Mike Frysinger                                           2009-04-22 22:48:38

seems straight forward to me ... the IRQ cannot be requested until everything

the handler uses is initialized.  looks like sdh_probe() initializes stuff after

the request_irq(sdh_stat_irq) which means for a short time there, the driver is

not ready to handle requests.

 

the same behavior can probably be observed by adding this right after the call

to request_irq():

sdh_stat_irq(0, host);

 

--- Cliff Cai                                                2009-04-22 23:45:20

sure,that's the point.

 

--- Mike Frysinger                                           2009-04-22 23:49:47

so you're saying the driver does not crash when you do that ?

 

    ret = request_irq(host->irq, sdh_stat_irq, 0, "SDH Status

IRQ", host);

    sdh_stat_irq(0, host);

 

--- Cliff Cai                                                2009-04-23 02:06:10

Unfortunately,even if I make the changes and run the code as you mentioned

above,kernel still crashes.The crash point is mmc_signal_sdio_irq(host->mmc)

in sdh_sta_irq();

static inline void mmc_signal_sdio_irq(struct mmc_host *host)

{

    host->ops->enable_sdio_irq(host, 0);

    wake_up_process(host->sdio_irq_thread);

}

host->sdio_irq_thread won't be initialized before sdh_probe return.

So,the unexpected interrupt is to blame.

 

--- Cliff Cai                                                2009-06-18 23:52:12

fixed it by disabling SDIO irq by default

 

 

 

    Files

    Changes

    Commits

    Dependencies

    Duplicates

    Associations

    Tags

 

File Name     File Type     File Size     Posted By

bugreport.tar.gz    application/x-gzip    18010    Yi Li

Attachments

Outcomes