Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Sep 2007 12:25:07 +0900
From:      Weongyo Jeong <weongyo.jeong@gmail.com>
To:        Zahemszky =?UTF8?Q?G=E1bor?= <Gabor@Zahemszky.HU>
Cc:        freebsd-current@freebsd.org
Subject:   Re: crash (and the backtrace) in the new if_zyd driver
Message-ID:  <20070915032507.GA94238@freebsd.weongyo.org>
In-Reply-To: <20070908164003.06ffa0dc@Picasso.Zahemszky.HU>
References:  <20070908164003.06ffa0dc@Picasso.Zahemszky.HU>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello,

I checked your panic in my environment and tried to repeat panic you
encountered, but I failed.

The panic was happened when you ran `ifconfig zyd0 up'.  That means USB
rx/tx interrupt pipes works OK and the device initialized successfully.

According to your backtrace log, A panic is occured during scanning and
`Bad list head....` message is defined QMD_LIST_CHECK_HEAD macro which
is defined at `sys/queue.h'.  In my opinion, there are a race condition
in ehci or zyd.  Can you try to build the buildworld and the
buildkernel newly with CURRENT and tell me the result after trying to up
the zyd driver again?

> zyd0: <ZyDAS USB2.0 WLAN, class 255/255, rev 2.00/48.10, addr 2> on
> uhub2 zyd0: setting config no failed
> device_attach: zyd0 attach returned 6

This condition only appears when you reboot FreeBSD, not power on that
the current zyd driver has the hardware reset problem.  It's a known
issue.

Thank you for your feedback. :-)

Best Regards,
Weongyo Jeong

On Sat, Sep 08, 2007 at 04:40:03PM +0200, Zahemszky Gbor wrote:
> Hi!
> 
> I tried the new if_zyd driver with my new Lutec WLA-54L USB-stick  on a
> today-based CURRENT. My machine recognised it correctly when I plugged
> in it:
> 
> zyd0: <ZyDAS USB2.0 WLAN, class 255/255, rev 2.00/48.10, addr 2> on uhub2
> zyd0: HMAC ZD1211B, FW 47.25, RF AL2230, PA 0, address 00:02:72:65:66:00
> zyd0: Ethernet address: 00:02:72:65:66:00
> 
> But when I "ifconfig zyd0 up" -ed it, the machine crashed. Here
> is the backtrace of it:
> 
> ====
>  Picasso# kgdb -q kernel.debug /var/crash/vmcore.0
> [GDB will not be able to debug user-mode
> threads: /usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"]
> 
> Unread portion of the kernel message buffer:
> panic: Bad list head 0xc519a6bc first->prev != head
> cpuid = 1
> KDB: enter: panic
> Physical memory: 2009 MB
> Dumping 76 MB: 61 45 29 13
> 
> (kgdb) bt
> #0  doadump () at pcpu.h:195
> #1  0xc048cd99 in db_fncall (dummy1=-444823224, dummy2=0, dummy3=70,
> dummy4=0xe57c88b4 "@ðHÀ")
>     at /usr/src/sys/ddb/db_command.c:486
> #2  0xc048d305 in db_command_loop ()
> at /usr/src/sys/ddb/db_command.c:401
> #3  0xc048ea75 in db_trap (type=3, code=0)
> at /usr/src/sys/ddb/db_main.c:222
> #4  0xc07776d6 in kdb_trap (type=3, code=0, tf=0xe57c8a5c)
> at /usr/src/sys/kern/subr_kdb.c:502
> #5  0xc0a0348b in trap (frame=0xe57c8a5c)
> at /usr/src/sys/i386/i386/trap.c:621
> #6  0xc09e8eab in calltrap () at /usr/src/sys/i386/i386/exception.s:139
> #7  0xc0777852 in kdb_enter (msg=0xc0a9b2f4 "panic") at cpufunc.h:60
> #8  0xc0750a04 in panic (fmt=0xc0a55da3 "Bad list head %p
> first->prev != head")
>     at /usr/src/sys/kern/kern_shutdown.c:547
> #9  0xc06a30aa in ehci_device_intr_start (xfer=0xc55b7e00)
> at /usr/src/sys/dev/usb/ehci.c:3266
> #10 0xc06a3143 in ehci_device_intr_transfer (xfer=0xc55b7e00)
>     at /usr/src/sys/dev/usb/ehci.c:3184
> #11 0xc06d1d5b in usbd_start_transfer (arg=0xc55b7e00, segs=0xc5212800,
> nseg=1, error=0)
>     at /usr/src/sys/dev/usb/usbdi.c:388
> #12 0xc09e6155 in bus_dmamap_load (dmat=0xc51e7480, map=0xc0c182c0,
> buf=0xe57c8c0a, buflen=0, 
>     callback=0xc06d1be0 <usbd_start_transfer>, callback_arg=0xc55b7e00,
> flags=0)
>     at /usr/src/sys/i386/i386/busdma_machdep.c:765
> #13 0xc06d22a4 in usbd_transfer (xfer=0xc55b7e00)
> at /usr/src/sys/dev/usb/usbdi.c:312
> #14 0xc06b599f in zyd_cmd (sc=0xc5ac3000, code=Variable "code" is not
> available.
> ) at /usr/src/sys/dev/usb/if_zyd.c:775
> #15 0xc06b5d44 in zyd_read32 (sc=Variable "sc" is not available.
> ) at /usr/src/sys/dev/usb/if_zyd.c:819
> #16 0xc06b5dc6 in zyd_lock_phy (sc=0xc5ac3000)
> at /usr/src/sys/dev/usb/if_zyd.c:876
> #17 0xc06b7f7a in zyd_set_chan (sc=0xc5ac3000, c=0xc5ac33fc)
>     at /usr/src/sys/dev/usb/if_zyd.c:1716
> #18 0xc06b8206 in zyd_scantask (arg=0xc5ac3000)
> at /usr/src/sys/dev/usb/if_zyd.c:2675
> #19 0xc06ce68a in usb_task_thread (arg=0xc0bafab4)
> at /usr/src/sys/dev/usb/usb.c:483
> #20 0xc0732888 in fork_exit (callout=0xc06ce5c0 <usb_task_thread>,
> arg=0xc0bafab4, 
>     frame=0xe57c8d38) at /usr/src/sys/kern/kern_fork.c:797
> #21 0xc09e8f20 in fork_trampoline ()
> at /usr/src/sys/i386/i386/exception.s:205
> (kgdb) 
> 
> ====
> 
> By the way, If I boot the machine with the stick pushed in the
> USB-slot, I get the next error message:
> 
> ====
> zyd0: <ZyDAS USB2.0 WLAN, class 255/255, rev 2.00/48.10, addr 2> on
> uhub2 zyd0: setting config no failed
> device_attach: zyd0 attach returned 6
> ====
> 
> And of course, there won't be a zyd0 interface.
> 
> Can anybody help me to use it?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070915032507.GA94238>