Hi,
I must admit I'm not a USB or PCI expert, but here is the pb:
First machine:
Athlon 800 Mhz
Abit KT7 RAID mobo (VIA chipset)
USB Controller: CMD Technology Inc USB0670 (rev 6)
kernel 2.4.4
Works perfect & great (used with the Alcatel SpeedTouch USB modem & a USB
mouse).
Second machine
486DX-4 100Mhz
Unknown mobo (United Microelectronics?)
USB Controller: CMD Technology Inc USB0670 (rev 6) [the same card as
previous]
kernel 2.4.4
On this second machine, the first time I insert my USB mouse, the kernel
panic in the OHCI interrupt handler (at the line BUG() in usb-ohci.h, what
is this stupid line which just make a kernel panic?)
So, I rewrite some stuff to handle this error. My conclusion was that the
macro dma_to_td() was used with a value which does not exist in the list
searched.
Next, I recompile & tried again and that gave me (obviously) :
usb.c: USB device not accepting new address=2 (error=-110).
So, I investigated further and I understand that as soon as a USB
peripheral is inserted, the khubd thread is awaken to initialize the new
device. This initialization code first try to assign a USB addresse to the
device by sending a specific USB control message.
Normally, with this message is "done", an interrupt is generated and the
ohci->hcca->done_head points to the TD. BUT here is the interesting parts,
this TD does not match ANY of the TD send.
Questions:
- what is the use of the khubd thread? Why new device are not handled in
hc_interrupt() when (ints & OHCI_INTR_RHSC) is true?
- Is there a PCI stuff I'm missing? I've seen strange message about PCI in
my logs (see at the end of this mail).
- Why invalid value of ohci->hcca->done_head are handled with the macro
BUG()? I see no reason why a driver should trust value from its
"outside" world.
- And why ohci->hcca->done_head is wrong???
- Lots of other USB questions which are unrelated to this one (they will
came in the future :-)).
Logs (on the 486 machine): I change some code to output lots of messages.
I also add a 'correction' to catch invalid ohci->hcca->done_head value. I
added a call to ohci_dump() at the beginning of hc_interrupt(). Else, it's
the standard 2.4.4 kernel.
Benoit.
/proc/cpuinfo:
processor : 0
vendor_id : GenuineIntel
cpu family : 4
model : 8
model name : 486 DX/4
stepping : 3
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme pse
bogomips : 49.97
/proc/pci:
PCI devices found:
Bus 0, device 13, function 0:
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev
16).
IRQ 11.
Master Capable. Latency=64. Min Gnt=32.Max Lat=64.
I/O at 0xfc00 [0xfcff].
Non-prefetchable 32 bit memory at 0xffbeef00 [0xffbeefff].
Bus 0, device 14, function 0:
USB Controller: CMD Technology Inc USB0670 (rev 6).
IRQ 10.
Master Capable. No bursts. Min Gnt=2.Max Lat=4.
Non-prefetchable 32 bit memory at 0xffbef000 [0xffbeffff].
Bus 0, device 15, function 0:
VGA compatible controller: Cirrus Logic GD 5430/40 [Alpine] (rev 34).
Prefetchable 32 bit memory at 0x10000000 [0x10ffffff].
Bus 0, device 16, function 0:
Host bridge: United Microelectronics [UMC] UM8881F (rev 1).
Bus 0, device 18, function 0:
ISA bridge: United Microelectronics [UMC] UM8886A (rev 13).
Bus 0, device 18, function 1:
IDE interface: United Microelectronics [UMC] UM8886BF (rev 13).
/var/log/kern.log:
May 14 02:29:48 routeur kernel: usb-ohci.c: mapping
mem_resource=0xffbef000 at mem_base=0xc2025000
May 14 02:29:48 routeur kernel: PCI: Setting latency timer of device
00:0e.0 to 64 (was 0)
May 14 02:29:48 routeur kernel: usb-ohci.c: USB OHCI at membase
0xc2025000, IRQ 10
May 14 02:29:48 routeur kernel: usb-ohci.c: usb-00:0e.0, CMD Technology
Inc USB0670
May 14 02:29:48 routeur kernel: usb-ohci.c: HCCA allocated at 0xc08b0000,
hcca_dma=0x8b0000
May 14 02:29:48 routeur kernel: usb-ohci.c: PCI latency reduced from 64 to
max 4
May 14 02:29:48 routeur kernel: usb-ohci.c: USB HC reset_hc
usb-00:0e.0: ctrl = 0x40 ;
May 14 02:29:48 routeur kernel: usb.c: new USB bus registered, assigned
bus number 1
May 14 02:29:48 routeur kernel: usb-ohci.c: writing ed_controlhead=NULL
May 14 02:29:48 routeur kernel: usb-ohci.c: hcca_dma=0x8b0000 written to
ohci register
May 14 02:29:48 routeur kernel: usb.c: kmalloc IF c0e4d3a0, numif 1
May 14 02:29:48 routeur kernel: usb.c: new device strings: Mfr=0,
Product=2, SerialNumber=1
May 14 02:29:48 routeur kernel: usb.c: USB device number 1 default
language ID 0x0
May 14 02:29:48 routeur kernel: Product: USB OHCI Root Hub
May 14 02:29:48 routeur kernel: SerialNumber: c2025000
May 14 02:29:48 routeur kernel: hub.c: USB hub found
May 14 02:29:48 routeur kernel: hub.c: 2 ports detected
May 14 02:29:48 routeur kernel: hub.c: standalone hub
May 14 02:29:48 routeur kernel: hub.c: ganged power switching
May 14 02:29:48 routeur kernel: hub.c: individual port over-current
protection
May 14 02:29:48 routeur kernel: hub.c: power on to power good time: 510ms
May 14 02:29:48 routeur kernel: hub.c: hub controller current
requirement: 0mA
May 14 02:29:48 routeur kernel: hub.c: port removable status: RR
May 14 02:29:48 routeur kernel: hub.c: local power source is good
May 14 02:29:48 routeur kernel: hub.c: no over-current condition exists
May 14 02:29:48 routeur kernel: hub.c: enabling power on all ports
May 14 02:29:49 routeur kernel: hub.c: port 1 connection change
May 14 02:29:49 routeur kernel: hub.c: port 1, portstatus 301, change 1,
1.5 Mb/s
May 14 02:29:49 routeur kernel: usb.c: hub driver claimed interface
c0e4d3a0
May 14 02:29:49 routeur kernel: usb.c: kusbd: /sbin/hotplug add 1
May 14 02:29:49 routeur kernel: usb.c: kusbd policy returned 0xfffffffe
May 14 02:29:49 routeur kernel: usb-ohci.c: === OHCI controller
usb-00:0e.0 state ===
May 14 02:29:49 routeur kernel: usb-ohci.c: HcRevision=0x110 spec 1.0
May 14 02:29:49 routeur kernel: usb-ohci.c: HcControl=0x0000008f
HCFS=operational IE PLE CBSR=3
May 14 02:29:49 routeur kernel: usb-ohci.c: HcCommandStatus=0x00000000
SOC=0
May 14 02:29:49 routeur kernel: usb-ohci.c: HcInterruptStatus: 0x00000064
RHSC FNO SF
May 14 02:29:49 routeur kernel: usb-ohci.c: HcInterruptEnable: 0x80000013
MIE UE WDH SO
May 14 02:29:49 routeur kernel: usb-ohci.c: HcInterruptDisable: 0x80000013
MIE UE WDH SO
May 14 02:29:49 routeur kernel: usb-ohci.c: HcHCCA=0x8b0000
HccaDoneHead=0x0
May 14 02:29:49 routeur kernel: usb-ohci.c: hcca frame #04a8
May 14 02:29:49 routeur kernel: usb-ohci.c: roothub.a: ff000a02 POTPGT=255
OCPM NPS NDP=2
May 14 02:29:49 routeur kernel: usb-ohci.c: roothub.b: 00060000 PPCM=0006
DR=0000
May 14 02:29:49 routeur kernel: usb-ohci.c: roothub.status: 00000000
May 14 02:29:49 routeur kernel: usb-ohci.c: roothub.portstatus [0] =
0x00000301 LSDA PPS CCS
May 14 02:29:49 routeur kernel: usb-ohci.c: roothub.portstatus [1] =
0x00000100 PPS
May 14 02:29:49 routeur
kernel: usb-ohci.c: =====================================
May 14 02:29:50 routeur kernel: hub.c: port 1, portstatus 303, change 10,
1.5 Mb/s
May 14 02:29:50 routeur kernel: hub.c: USB new device connect on bus1/1,
assigned device number 2
May 14 02:29:50 routeur kernel: usb-ohci.h: adding td_dma=0xa26000
May 14 02:29:50 routeur kernel: usb-ohci.h: adding ed_dma=0x1452610
May 14 02:29:50 routeur kernel: usb-ohci.h: adding td_dma=0xa26030
May 14 02:29:50 routeur kernel: usb-ohci.h: adding td_dma=0xa26060
May 14 02:29:50 routeur kernel: usb-ohci.c: ep_link() ed->dma=0x1452610
May 14 02:29:50 routeur kernel: usb-ohci.c: writing
ed_controlhead=0x1452610
May 14 02:29:50 routeur kernel: usb-ohci.h: searching for td_dma=0xa26000
May 14 02:29:50 routeur kernel: usb-ohci.h: searching for td_dma=0xa26030
May 14 02:29:50 routeur
kernel: usb-ohci.c: hc_interrupt() HccaDoneHead=0xa20000,HcInterruptStatus=0x66
May 14 02:29:50 routeur kernel: usb-ohci.c: === OHCI controller
usb-00:0e.0 state ===
May 14 02:29:50 routeur kernel: usb-ohci.c: HcRevision=0x110 spec 1.0
May 14 02:29:50 routeur kernel: usb-ohci.c: HcControl=0x0000009f
HCFS=operational CLE IE PLE CBSR=3
May 14 02:29:50 routeur kernel: usb-ohci.c: HcCommandStatus=0x00000000
SOC=0
May 14 02:29:50 routeur kernel: usb-ohci.c: HcInterruptStatus: 0x00000066
RHSC FNO SF WDH
May 14 02:29:50 routeur kernel: usb-ohci.c: HcInterruptEnable: 0x80000013
MIE UE WDH SO
May 14 02:29:50 routeur kernel: usb-ohci.c: HcInterruptDisable: 0x80000013
MIE UE WDH SO
May 14 02:29:50 routeur kernel: usb-ohci.c: HcHCCA=0x8b0000
HccaDoneHead=0xa20000
May 14 02:29:50 routeur kernel: usb-ohci.c: ed_controlhead 01452610
May 14 02:29:50 routeur kernel: usb-ohci.c: hcca frame #085c
May 14 02:29:50 routeur kernel: usb-ohci.c: roothub.a: ff000a02 POTPGT=255
OCPM NPS NDP=2
May 14 02:29:50 routeur kernel: usb-ohci.c: roothub.b: 00060000 PPCM=0006
DR=0000
May 14 02:29:50 routeur kernel: usb-ohci.c: roothub.status: 00000000
May 14 02:29:50 routeur kernel: usb-ohci.c: roothub.portstatus [0] =
0x00000303 LSDA PPS PES CCS
May 14 02:29:50 routeur kernel: usb-ohci.c: roothub.portstatus [1] =
0x00000100 PPS
May 14 02:29:50 routeur
kernel: usb-ohci.c: =====================================
May 14 02:29:50 routeur
kernel: usb-ohci.c: dl_reverse_done_list() done_head=0xa20000
May 14 02:29:50 routeur kernel: usb-ohci.h: searching for td_dma=0xa20000
May 14 02:29:50 routeur kernel: usb-ohci.h: warning, can't find
dma=0xa20000
May 14 02:29:50 routeur kernel: usb-ohci.c: td_list==NULL
May 14 02:29:53 routeur kernel: usb_control/bulk_msg: timeout
May 14 02:29:53 routeur kernel: usb-ohci.c: UNLINK URB:[140e]
dev: 0,ep: 0-O,type:CTRL,flags: 0,len:0/0,stat:
-115(ffffff8d)
May 14 02:29:53 routeur
kernel: usb-ohci.c: hc_interrupt() HccaDoneHead=0x0,HcInterruptStatus=0x4
May 14 02:29:53 routeur kernel: usb-ohci.c: === OHCI controller
usb-00:0e.0 state ===
May 14 02:29:53 routeur kernel: usb-ohci.c: HcRevision=0x110 spec 1.0
May 14 02:29:53 routeur kernel: usb-ohci.c: HcControl=0x0000008f
HCFS=operational IE PLE CBSR=3
May 14 02:29:53 routeur kernel: usb-ohci.c: HcCommandStatus=0x00000000
SOC=0
May 14 02:29:53 routeur kernel: usb-ohci.c: HcInterruptStatus: 0x00000004
SF
May 14 02:29:53 routeur kernel: usb-ohci.c: HcInterruptEnable: 0x80000017
MIE UE SF WDH SO
May 14 02:29:53 routeur kernel: usb-ohci.c: HcInterruptDisable: 0x80000017
MIE UE SF WDH SO
May 14 02:29:53 routeur kernel: usb-ohci.c: HcHCCA=0x8b0000
HccaDoneHead=0x0
May 14 02:29:53 routeur kernel: usb-ohci.c: ed_controlhead 01452610
May 14 02:29:53 routeur kernel: usb-ohci.c: hcca frame #1411
May 14 02:29:53 routeur kernel: usb-ohci.c: roothub.a: ff000a02 POTPGT=255
OCPM NPS NDP=2
May 14 02:29:53 routeur kernel: usb-ohci.c: roothub.b: 00060000 PPCM=0006
DR=0000
May 14 02:29:53 routeur kernel: usb-ohci.c: roothub.status: 00000000
May 14 02:29:53 routeur kernel: usb-ohci.c: roothub.portstatus [0] =
0x00000303 LSDA PPS PES CCS
May 14 02:29:53 routeur kernel: usb-ohci.c: roothub.portstatus [1] =
0x00000100 PPS
May 14 02:29:53 routeur
kernel: usb-ohci.c: =====================================
May 14 02:29:53 routeur kernel: usb-ohci.c: unlink URB timeout
May 14 02:29:53 routeur kernel: usb.c: USB device not accepting new
address=2 (error=-110)
May 14 02:29:53 routeur kernel: hub.c: port 1, portstatus 303, change 10,
1.5 Mb/s
May 14 02:29:53 routeur kernel: hub.c: USB new device connect on bus1/1,
assigned device number 3
May 14 02:29:53 routeur kernel: usb-ohci.h: adding td_dma=0xa26090
May 14 02:29:53 routeur kernel: usb-ohci.h: adding ed_dma=0x8fb000
May 14 02:29:53 routeur kernel: usb-ohci.h: adding td_dma=0xa260c0
May 14 02:29:53 routeur kernel: usb-ohci.h: adding td_dma=0xa260f0
May 14 02:29:53 routeur kernel: usb-ohci.c: ep_link() ed->dma=0x8fb000
May 14 02:29:53 routeur kernel: usb-ohci.h: searching for td_dma=0xa26090
May 14 02:29:53 routeur kernel: usb-ohci.h: searching for td_dma=0xa260c0
May 14 02:29:56 routeur kernel: usb_control/bulk_msg: timeout
May 14 02:29:56 routeur kernel: usb-ohci.c: UNLINK URB:[20fb]
dev: 0,ep: 0-O,type:CTRL,flags: 0,len:0/0,stat:
-115(ffffff8d)
May 14 02:29:56 routeur
kernel: usb-ohci.c: hc_interrupt() HccaDoneHead=0x0,HcInterruptStatus=0x44
May 14 02:29:56 routeur kernel: usb-ohci.c: === OHCI controller
usb-00:0e.0 state ===
May 14 02:29:56 routeur kernel: usb-ohci.c: HcRevision=0x110 spec 1.0
May 14 02:29:56 routeur kernel: usb-ohci.c: HcControl=0x0000008f
HCFS=operational IE PLE CBSR=3
May 14 02:29:56 routeur kernel: usb-ohci.c: HcCommandStatus=0x00000002
SOC=0 CLF
May 14 02:29:56 routeur kernel: usb-ohci.c: HcInterruptStatus: 0x00000044
RHSC SF
May 14 02:29:56 routeur kernel: usb-ohci.c: HcInterruptEnable: 0x80000017
MIE UE SF WDH SO
May 14 02:29:56 routeur kernel: usb-ohci.c: HcInterruptDisable: 0x80000017
MIE UE SF WDH SO
May 14 02:29:56 routeur kernel: usb-ohci.c: HcHCCA=0x8b0000
HccaDoneHead=0x0
May 14 02:29:56 routeur kernel: usb-ohci.c: ed_controlhead 01452610
May 14 02:29:56 routeur kernel: usb-ohci.c: hcca frame #20fd
May 14 02:29:56 routeur kernel: usb-ohci.c: roothub.a: ff000a02 POTPGT=255
OCPM NPS NDP=2
May 14 02:29:56 routeur kernel: usb-ohci.c: roothub.b: 00060000 PPCM=0006
DR=0000
May 14 02:29:56 routeur kernel: usb-ohci.c: roothub.status: 00000000
May 14 02:29:56 routeur kernel: usb-ohci.c: roothub.portstatus [0] =
0x00000303 LSDA PPS PES CCS
May 14 02:29:56 routeur kernel: usb-ohci.c: roothub.portstatus [1] =
0x00000100 PPS
May 14 02:29:56 routeur
kernel: usb-ohci.c: =====================================
May 14 02:29:56 routeur kernel: usb-ohci.c: unlink URB timeout
May 14 02:29:56 routeur kernel: usb.c: USB device not accepting new
address=3 (error=-110)
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel