Re: Kernel Freeze, Atmel at79c505 (RFMD 2958), Fiberline FL-WL240U, usb-uhci.o
Joerg Albert <[email protected]>
| Newsgroups | gmane.linux.drivers.at76c503a.user |
|---|---|
| Message-ID | <[email protected]> |
Hi, On Fri, 9 Jan 2004, Klaus Franken wrote: > I have some kernel freezes if I use the at79c505-rfmd2958.o with usb-uhci.o > module. With the usb-modul "uhci.o" is every fine, but I need the other modul > due to lack of support by another druver (REINER SCT CyberJack pinpad > (chipcard-reader)). > > System: > Kernel 2.4.23 > USB: usb-uhci.o, USB 1.1 > at76c503-driver: v0.12beta4 > > Symptoms: > > 1. > at76c503-fw_skel.c Atmel at79c505 (RFMD 2958) Wireless LAN Driver v0.12beta4 > loading > usb.c registered new driver at79c505-rfmd2958 > at76c503.c: downloading internal fw failed with -84 > # kernel freezed > > 2. > # loading modules > [..] > Unable to handle kernel NULL pointer dereference at virtual address 0000000c > [...] > Process khubd > [...] > Kernel panic: Aiee, killing interrupt handler! > In interrupt handler - not syncing > # Caps- and Scroll-Lock blinking, kernel freezed > > Does anyone have better experiences? Any other ideas? got my WL240U today. Your crash is caused by a driver bug, which is fixed in 0.12beta5 (just checked in, avail. in the snapshot tomorrow). Unfortunately it just hid another problem: usb-uhci calls the driver's disconnect procedure when the device got reset during startup leading to _two_ wlanX netdev and a lot of trouble afterwards. uhci doesn't do that, nor does the unified uhci-hcd of 2.6.x. I compared uhci and usb-uhci and found a small patch to usb-uhci, which helped here (attached in case anyone feels like patching usb-uhci and compiling a new kernel). The problem doesn't show up if you use an external hub. So I'd recommend to either try and use 0.11, if you must use usb-uhci and cannot use an external USB hub or use >= 0.12beta5 with a patched usb-uhci. This applies to 2.4.x kernels only. HTH. /Jörg
diff.usb_uhci
(text/plain, 507 B)
diff -ru linux-2.4.23/drivers/usb/host/usb-uhci.c linux-2.4.23.work/drivers/usb/host/usb-uhci.c --- linux-2.4.23/drivers/usb/host/usb-uhci.c 2003-08-25 13:44:42.000000000 +0200 +++ linux-2.4.23.work/drivers/usb/host/usb-uhci.c 2004-01-10 20:19:50.000000000 +0100 @@ -2090,7 +2090,7 @@ OK (0); case (RH_PORT_RESET): SET_RH_PORTSTAT (USBPORTSC_PR); - uhci_wait_ms (10); + uhci_wait_ms (50); uhci->rh.c_p_r[wIndex - 1] = 1; CLR_RH_PORTSTAT (USBPORTSC_PR); udelay (10);