Upon using wifi-sticks, under certain circumstances, a kernel panic occurs. Almost exactly same panic report may occur, as tested with carl9170 and ath9k driver. However, where ath9k runs OK on the same board as the carl9170 fails with kernel panic (using 2012R1), on another board with the same linux image, the ath9k fails. Below is a sample log. More information is in a recent bug tracker entry:
http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_item_id=7385&start=0
This ath9k experience seems to confirm that the problem is not in the wlan driver, but rather related to musb.
Any verification and/or suggestions are welcome.
-Rob
cfg80211: Calling CRDA to update world regulatory domain
usb 1-1: ath9k_htc: Transferred FW: htc_9271.fw, size: 51272
ath9k_htc 1-1:1.0: ath9k_htc: HTC initialized with 33 credits
ath9k_htc 1-1:1.0: ath9k_htc: FW Version: 1.3
ieee80211 phy0: Atheros AR9271 Rev:1
usb 1-1: ath9k_htc: USB layer initialized
usbcore: registered new interface driver ath9k_htc
wlan module probed: ath9k_htc
Illegal use of supervisor resource
<5> - Attempted to use a Supervisor register or instruction from User mode.
<5> Supervisor resources are registers and instructions that are reserved
<5> for Supervisor use: Supervisor only registers, all MMRs, and Supervisor
<5> only instructions.
Kernel OOPS in progress
Deferred Exception context
CURRENT PROCESS:
COMM=wpa_supplicant PID=127 CPU=0
TEXT = 0x00c00000-0x00c5a894 DATA = 0x00e90894-0x00e95c88
BSS = 0x00e95c88-0x00ea0000 USER-STACK = 0x00ebfd80
return address: [0x00161a4c]; contents of:
0x00161a20: 00aa 1057 4810 1c07 e120 00a6 5601 63d1
0x00161a30: 55c8 971f 0c44 1804 a0e0 0c10 184f 0c45
0x00161a40: 184d 0c44 1803 4867 144e 6003 [e5a8] 001a
0x00161a50: 4808 1c12 a06c 0c04 1c0f e120 00d4 40e8
ADSP-BF526-0.2 400(MHz CCLK) 80(MHz SCLK) (mpu off)
Linux version 3.3.0-ADI-2012R1-cust (rob@rob-desktop) (gcc version 4.3.5 (ADI-2012R1-RC2) ) #59 PREEMPT Wed Oct 17 17:09:03 CEST 2012
SEQUENCER STATUS: Not tainted
SEQSTAT: 0000002e IPEND: 8408 IMASK: 001f SYSCFG: 0006
Peripheral interrupts masked off
Kernel interrupts masked off
EXCAUSE : 0x2e
physical IVG3 asserted : <0xffa00764> { _trap + 0x0 }
physical IVG10 asserted : <0xffa00e98> { _evt_evt10 + 0x0 }
physical IVG15 asserted : <0xffa00ef8> { _evt_system_call + 0x0 }
logical irq 6 mapped : <0xffa003d8> { _bfin_coretmr_interrupt + 0x0 }
logical irq 15 mapped : <0x00191494> { _err_handler + 0x0 }
logical irq 16 mapped : <0x00191494> { _err_handler + 0x0 }
logical irq 23 mapped : <0x00191780> { _rx_handler + 0x0 }
logical irq 24 mapped : <0x00191724> { _tx_handler + 0x0 }
logical irq 25 mapped : <0x00191780> { _rx_handler + 0x0 }
logical irq 26 mapped : <0x00191724> { _tx_handler + 0x0 }
logical irq 27 mapped : <0x0016c5b4> { _bfin_twi_interrupt_entry + 0x0 }
logical irq 29 mapped : <0x0010c250> { _bfin_serial_dma_rx_int + 0x0 }
logical irq 30 mapped : <0x0010c054> { _bfin_serial_dma_tx_int + 0x0 }
logical irq 35 mapped : <0x001362d8> { _bfin_mac_interrupt + 0x0 }
logical irq 59 mapped : <0x00164c4c> { _blackfin_interrupt + 0x0 }
logical irq 62 mapped : <0x001647fc> { _dma_controller_irq + 0x0 }
RETE: <0x00000000> /* Maybe null pointer? */
RETN: <0x00e8f884> /* kernel dynamic memory (maybe user-space) */
RETX: <0x00000480> /* Maybe fixed code section */
RETS: <0x001648e8> { _dma_controller_irq + 0xec }
PC : <0x00161a4c> { _musb_g_tx + 0x74 }
DCPLB_FAULT_ADDR: <0xffffffe6> /* core mmrs */
ICPLB_FAULT_ADDR: <0x00161a4c> { _musb_g_tx + 0x74 }
PROCESSOR STATE:
R0 : 00001000 R1 : 00001000 R2 : ffc03a40 R3 : 00000000
R4 : 020740d0 R5 : 00000001 R6 : 020740d0 R7 : 00001000
P0 : 020740d0 P1 : 020741a4 P2 : 020741a4 P3 : ffc03a44
P4 : 00000000 P5 : ffffffcc FP : 02074450 SP : 00e8f7a8
LB0: ffa01718 LT0: ffa01718 LC0: 00000000
LB1: ffa0044a LT1: ffa0044a LC1: 00000000
B0 : 00000000 L0 : 00000000 M0 : 00000028 I0 : 00000002
B1 : 0268e224 L1 : 00000000 M1 : 0000002c I1 : 00000001
B2 : 000000d4 L2 : 00000000 M2 : 00000001 I2 : 00000008
B3 : 00000238 L3 : 00000000 M3 : 00000001 I3 : 011cf9c0
A0.w: 00c31106 A0.x: 00000000 A1.w: 00000206 A1.x: 00000000
USP : 00ebf998 ASTAT: 02002060
Hardware Trace:
0 Target : <0x00004028> { _trap_c + 0x0 }
Source : <0xffa006f8> { _exception_to_level5 + 0xa0 } JUMP.L
1 Target : <0xffa00658> { _exception_to_level5 + 0x0 }
Source : <0xffa00512> { _bfin_return_from_exception + 0x6 } RTX
2 Target : <0xffa0050c> { _bfin_return_from_exception + 0x0 }
Source : <0xffa005b2> { _ex_trap_c + 0x72 } JUMP.S
3 Target : <0xffa00540> { _ex_trap_c + 0x0 }
Source : <0xffa0078e> { _trap + 0x2a } JUMP (P4)
4 Target : <0xffa00764> { _trap + 0x0 }
FAULT : <0x00161a4c> { _musb_g_tx + 0x74 } R0 = B[P5 + 0x68](X)
Source : <0x00161a4a> { _musb_g_tx + 0x72 } 0x6003
5 Target : <0x00161a4a> { _musb_g_tx + 0x72 }
Source : <0x00161a44> { _musb_g_tx + 0x6c } IF CC JUMP pcrel
6 Target : <0x00161a3e> { _musb_g_tx + 0x66 }
Source : <0x00161a36> { _musb_g_tx + 0x5e } IF CC JUMP pcrel
7 Target : <0x00161a34> { _musb_g_tx + 0x5c }
Source : <0x00161a26> { _musb_g_tx + 0x4e } IF CC JUMP pcrel (BP)
8 Target : <0x001619d8> { _musb_g_tx + 0x0 }
Source : <0x0015f8d2> { _musb_dma_completion + 0x42 } JUMP.L
9 Target : <0x0015f8d0> { _musb_dma_completion + 0x40 }
Source : <0x0015f8b8> { _musb_dma_completion + 0x28 } IF CC JUMP pcrel (BP)
10 Target : <0x0015f8b0> { _musb_dma_completion + 0x20 }
Source : <0x0015f8a4> { _musb_dma_completion + 0x14 } IF !CC JUMP pcrel (BP)
11 Target : <0x0015f890> { _musb_dma_completion + 0x0 }
Source : <0x001648e4> { _dma_controller_irq + 0xe8 } CALL pcrel
12 Target : <0x001648d8> { _dma_controller_irq + 0xdc }
Source : <0x001648a8> { _dma_controller_irq + 0xac } IF CC JUMP pcrel (BP)
13 Target : <0x00164867> { _dma_controller_irq + 0x6b }
Source : <0x00164878> { _dma_controller_irq + 0x7c } IF CC JUMP pcrel (BP)
14 Target : <0x00164872> { _dma_controller_irq + 0x76 }
Source : <0x00164860> { _dma_controller_irq + 0x64 } JUMP.S
15 Target : <0x0016484e> { _dma_controller_irq + 0x52 }
Source : <0x00164828> { _dma_controller_irq + 0x2c } IF !CC JUMP pcrel (BP)
Kernel Stack
Stack info:
SP: [0x00e8fac0] <0x00e8fac0> /* kernel dynamic memory (maybe user-space) */
FP: (0x00e8fc64)
The 2012R1 release was chosen for recent tests due to problems. But still, 2011R1 is being used for production. However, with 2011R1 the stick problem (undervoltage spike) only yields in some console report without any relationship to accidental switchover to device mode (and further no WIFI functionality), while 2012R1 produces the crash (note that the USB powerswitch used limits to "guaranteed" 400 mA).
Thanks for notifying me that 2012R1 is still not considered as production stable. I'll stay at 2011R1 when the carl9170 driver runs OK (a firmware version jump is present as of kernel 3.1).