[#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