Workaround for "fatal firmware error" iwn(4) problem.
Olivier Cochard-Labbé
olivier at cochard.me
Sun May 18 13:57:29 UTC 2014
On Fri, May 16, 2014 at 8:06 PM, Edward Tomasz Napierała
<trasz at freebsd.org>wrote:
> I've started using FreeBSD laptop and iwn(4) failing at random moments
> like this...
>
> I had the same problem too with iwn(4).
>
> ... has been driving me crazy, so I wrote a workaround. The patch
> can be found here:
>
> http://people.freebsd.org/~trasz/iwn.diff
>
>
I've tested you patch on a r266396, but it generate a panic:
wlan0: Ethernet address: 00:1d:e0:29:19:65
Starting wpa_supplicant.
Starting dhclient.
wlan0: no link .............. giving up
/etc/rc.d/dhclient: WARNING: failed to start dhclient
iwn0: iwn_intr: fatal firmware error
firmware error log:
error type = "NMI_INTERRUPT_WDG" (0x00000004)
program counter = 0x0000046C
source line = 0x000000D0
error data = 0x0000000207030000
branch link = 0x00008370000004C2
interrupt link = 0x000006DE000018B8
time = 11427825
driver status:
tx ring 0: qid=0 cur=0 queued=0
tx ring 1: qid=1 cur=0 queued=0
tx ring 2: qid=2 cur=0 queued=0
tx ring 3: qid=3 cur=1 queued=0
tx ring 4: qid=4 cur=68 queued=0
tx ring 5: qid=5 cur=0 queued=0
tx ring 6: qid=6 cur=0 queued=0
tx ring 7: qid=7 cur=0 queued=0
tx ring 8: qid=8 cur=0 queued=0
tx ring 9: qid=9 cur=0 queued=0
tx ring 10: qid=10 cur=0 queued=0
tx ring 11: qid=11 cur=0 queued=0
tx ring 12: qid=12 cur=0 queued=0
tx ring 13: qid=13 cur=0 queued=0
tx ring 14: qid=14 cur=0 queued=0
tx ring 15: qid=15 cur=0 queued=0
rx ring: cur=22
iwn0: iwn_intr: reinit; 0xfffffe00008090b0
iwn0: iwn_reinit_thread: controller panicked; resetting...
Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address = 0xffff
fault code = supervisor read data, page not present
instruction pointer = 0x20:0xffffffff805a4b10
stack pointer = 0x28:0xfffffe0120353b30
frame pointer = 0x28:0xfffffe0120353b60
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 0 (iwn_reinit)
About the instruction pointer code:
addr2line -e /boot/kernel/kernel.symbols 0xffffffff805a4b10
/usr/src/sys/dev/iwn/if_iwn.c:6792
Regards,
Olivier
More information about the freebsd-hackers
mailing list