Bug 3304

Summary: Hang upon loading of uhci-hcd
Product: Drivers Reporter: Chris Horn (chris)
Component: USBAssignee: Alan Stern (stern)
Status: RESOLVED CODE_FIX    
Severity: normal CC: kenyon
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.8.1 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 5089    
Attachments: /var/log/messages of 2.6.8.1 boot
Kernel 2.6.8.1 .config file

Description Chris Horn 2004-08-29 10:46:23 UTC
Distribution: Debian testing
Hardware Environment: Opteron running in x86 mode on an Asus SK8V
Software Environment:
Linux snozberry 2.6.6 #1 Sat Jun 5 11:34:57 EDT 2004 i686 GNU/Linux
 
Gnu C                  3.3.4
Gnu make               3.80
binutils               2.14.90.0.7
util-linux             2.12
mount                  2.12
module-init-tools      3.1-pre5
e2fsprogs              1.35
PPP                    2.4.2
nfs-utils              1.0.6
Linux C Library        2.3.2
Dynamic linker (ldd)   2.3.2
Procps                 3.2.1
Net-tools              1.60
Console-tools          0.2.3
Sh-utils               5.2.1
Modules Loaded         snd_ens1370 snd_rawmidi snd_seq_device snd_pcm_oss
snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_ak4531_codec snd nvidia ftdi_sio

NOTE: this is the ouput of ver_linux running under my functional 2.6.6 kernel

Problem Description:
When I load the uhci-hcd module (or, if it's compiled in and reaches its turn to
be loaded) a few messages are printed to the console and the machine just hangs.
 If I'm ssh'd in (and I have to be, because my USB keyboard doesn't work w/o USB
working) the connection freezes and the machine stops responding to pings.

Steps to reproduce:
If uhci-hcd is compiled in, simply boot the machine.
If it's a module, type 'modprobe uhci-hcd'.
Comment 1 Chris Horn 2004-08-31 20:58:46 UTC
Created attachment 3603 [details]
/var/log/messages of 2.6.8.1 boot

Conspicuous in its lack of UHCI USB loading
Comment 2 Chris Horn 2004-08-31 20:59:56 UTC
Created attachment 3604 [details]
Kernel 2.6.8.1 .config file
Comment 3 Chris Horn 2004-08-31 21:07:32 UTC
How I hang the system:
Log in via ssh (USB keyboard does not work)
execute 'modprobe uhci-hcd'

on the machine's display is printed:
USB Universal Host Controller Interface driver v2.2
uhci_hcd 0000:00:10.0: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller

and it just hangs.

-----

In 2.6.6 (my working kernel), the boot messages look like this:

Aug 31 23:50:23 snozberry kernel: ehci_hcd 0000:00:10.4: VIA Technologies, Inc.
USB 2.0
Aug 31 23:50:23 snozberry kernel: ehci_hcd 0000:00:10.4: irq 7, pci mem e183f000
Aug 31 23:50:23 snozberry kernel: ehci_hcd 0000:00:10.4: new USB bus registered,
assigned bus number 1
Aug 31 23:50:23 snozberry kernel: ehci_hcd 0000:00:10.4: USB 2.0 enabled, EHCI
1.00, driver 2003-Dec-29
Aug 31 23:50:23 snozberry kernel: hub 1-0:1.0: USB hub found
Aug 31 23:50:23 snozberry kernel: hub 1-0:1.0: 4 ports detected
Aug 31 23:50:23 snozberry kernel: USB Universal Host Controller Interface driver
v2.2
Aug 31 23:50:23 snozberry kernel: uhci_hcd 0000:00:10.0: VIA Technologies, Inc. USB
Aug 31 23:50:23 snozberry kernel: uhci_hcd 0000:00:10.0: irq 11, io base 0000c400
Aug 31 23:50:23 snozberry kernel: uhci_hcd 0000:00:10.0: new USB bus registered,
assigned bus number 2
Aug 31 23:50:23 snozberry kernel: hub 2-0:1.0: USB hub found
Aug 31 23:50:23 snozberry kernel: hub 2-0:1.0: 2 ports detected
Aug 31 23:50:23 snozberry kernel: uhci_hcd 0000:00:10.1: VIA Technologies, Inc.
USB (#2)
Aug 31 23:50:23 snozberry kernel: uhci_hcd 0000:00:10.1: irq 11, io base 0000c800
Aug 31 23:50:23 snozberry kernel: uhci_hcd 0000:00:10.1: new USB bus registered,
assigned bus number 3
Aug 31 23:50:23 snozberry kernel: hub 3-0:1.0: USB hub found
Aug 31 23:50:23 snozberry kernel: hub 3-0:1.0: 2 ports detected
Aug 31 23:50:23 snozberry kernel: usbcore: registered new driver audio
Aug 31 23:50:23 snozberry kernel: drivers/usb/class/audio.c: v1.0.0:USB Audio
Class driver
Aug 31 23:50:23 snozberry kernel: usbcore: registered new driver usblp
Aug 31 23:50:23 snozberry kernel: drivers/usb/class/usblp.c: v0.13: USB Printer
Device Class driver
Aug 31 23:50:23 snozberry kernel: Initializing USB Mass Storage driver...
Aug 31 23:50:23 snozberry kernel: usbcore: registered new driver usb-storage
Aug 31 23:50:23 snozberry kernel: USB Mass Storage support registered.
Aug 31 23:50:23 snozberry kernel: usbcore: registered new driver hiddev
Aug 31 23:50:23 snozberry kernel: usbcore: registered new driver hid
Aug 31 23:50:23 snozberry kernel: drivers/usb/input/hid-core.c: v2.0:USB HID
core driver
Aug 31 23:50:23 snozberry kernel: usbcore: registered new driver usbserial
Aug 31 23:50:23 snozberry kernel: drivers/usb/serial/usb-serial.c: USB Serial
Driver core v2.0
Aug 31 23:50:23 snozberry kernel: mice: PS/2 mouse device common for all mice
Aug 31 23:50:23 snozberry kernel: serio: i8042 AUX port at 0x60,0x64 irq 12
Aug 31 23:50:23 snozberry kernel: serio: i8042 KBD port at 0x60,0x64 irq 1
Aug 31 23:50:23 snozberry kernel: i2c /dev entries driver
Aug 31 23:50:23 snozberry kernel: usb 2-1: new full speed USB device using address 2
Aug 31 23:50:23 snozberry kernel: hub 2-1:1.0: USB hub found
Aug 31 23:50:23 snozberry kernel: hub 2-1:1.0: 4 ports detected
Aug 31 23:50:23 snozberry kernel: usb 2-2: new full speed USB device using address 3
Aug 31 23:50:23 snozberry kernel: hub 2-2:1.0: USB hub found
Aug 31 23:50:23 snozberry kernel: hub 2-2:1.0: 7 ports detected
Aug 31 23:50:23 snozberry kernel: usb 2-2.2: new full speed USB device using
address 4
Aug 31 23:50:23 snozberry kernel: drivers/usb/class/usblp.c: usblp0: USB
Bidirectional printer dev 4 if 0 alt 0 proto 2 vid 0x04F9 pid 0x000E
Aug 31 23:50:23 snozberry kernel: NET: Registered protocol family 2
Aug 31 23:50:23 snozberry kernel: usb 2-2.3: new full speed USB device using
address 5
Aug 31 23:50:23 snozberry kernel: IP: routing cache hash table of 4096 buckets,
32Kbytes
Aug 31 23:50:23 snozberry kernel: TCP: Hash tables configured (established 32768
bind 65536)
Aug 31 23:50:23 snozberry kernel: NET: Registered protocol family 1
Aug 31 23:50:23 snozberry kernel: NET: Registered protocol family 17
Aug 31 23:50:23 snozberry kernel: NET: Registered protocol family 15
Aug 31 23:50:23 snozberry kernel: EXT3-fs: INFO: recovery required on readonly
filesystem.
Aug 31 23:50:23 snozberry kernel: EXT3-fs: write access will be enabled during
recovery.
Aug 31 23:50:23 snozberry kernel: hub 2-2.3:1.0: USB hub found
Aug 31 23:50:23 snozberry kernel: hub 2-2.3:1.0: 4 ports detected
Aug 31 23:50:23 snozberry kernel: usb 2-2.6: new full speed USB device using
address 6
Aug 31 23:50:23 snozberry kernel: kjournald starting.  Commit interval 5 seconds
Aug 31 23:50:23 snozberry kernel: EXT3-fs: recovery complete.
Aug 31 23:50:23 snozberry kernel: EXT3-fs: mounted filesystem with ordered data
mode.
Aug 31 23:50:23 snozberry kernel: VFS: Mounted root (ext3 filesystem) readonly.
Aug 31 23:50:23 snozberry kernel: Freeing unused kernel memory: 180k freed
Aug 31 23:50:23 snozberry kernel: usb 2-2.7: new low speed USB device using
address 7
Aug 31 23:50:23 snozberry kernel: hid: probe of 2-2.7:1.0 failed with error -5
Aug 31 23:50:23 snozberry kernel: usb 2-1.1: new low speed USB device using
address 8
Aug 31 23:50:23 snozberry kernel: Adding 131064k swap on /dev/sda3.  Priority:-1
extents:1
Aug 31 23:50:23 snozberry kernel: input: USB HID v1.00 Keyboard [05f3:0007] on
usb-0000:00:10.0-1.1
Aug 31 23:50:23 snozberry kernel: input: USB HID v1.00 Device [05f3:0007] on
usb-0000:00:10.0-1.1
Aug 31 23:50:23 snozberry kernel: EXT3 FS on sda1, internal journal
Aug 31 23:50:23 snozberry kernel: usb 2-1.2: new low speed USB device using
address 9
Aug 31 23:50:23 snozberry kernel: input: USB HID v1.00 Mouse [Microsoft
Microsoft Wheel Mouse Optical<AE>] on usb-0000:00:10.0-1.2
[mounting of hard disks and loading of nVidia module]
Aug 31 23:52:08 snozberry kernel: drivers/usb/input/hid-input.c: event field not
found
Aug 31 23:52:08 snozberry kernel: drivers/usb/input/hid-input.c: event field not
found
Aug 31 23:58:19 snozberry kernel: usb 2-2.7: control timeout on ep0in
Comment 4 Alan Stern 2004-10-07 12:45:04 UTC
It's possible this is caused by an IRQ conflict.  Try booting with kernel
parameters like "pci=noacpi" or "acpi=noirq".  What does /proc/interrupts show
before you load the uhci-hcd module?

When you do load the driver, exactly what messages are printed to the console
before the system hangs?  (Before answering that, turn on the USB debugging
option in the kernel configuration.)
Comment 5 Alan Stern 2004-11-12 13:07:27 UTC
Does this problem still occur under 2.6.9?
Comment 6 Kenyon Ralph 2004-12-30 21:51:51 UTC
Finally I've found something about this...

I have the same problem with uhci_hcd locking the system hard on 2.6.9.  Nothing
is printed on the console after I modprobe the uhci module, it just locks hard.
 It would also lock hard if it was built into the kernel, like Chris Horn said.
 My setup is quite different from Chris Horn's, but the symptoms are identical.
 I have an Intel 82801EB (ICH5) controller on an Abit IS7 (Pentium 4)
motherboard.  I also have a USB keyboard (Microsoft Natural Pro) plugged into a
USB port.  However, my in my BIOS you can choose either BIOS or OS USB keyboard
support, and I have it set to BIOS.  With it on the OS setting, I can't even use
the keyboard on the GRUB menu.  The keyboard has a USB hub built into it, and
currently, without the uhci driver loaded, plugging devices into the ports does
nothing, the syslogs say nothing.  USB2 with the EHCI module works fine from the
ports on the motherboard.

I'll try using the boot parameters you suggested and report back on the results.
 After that I'll try turning on the USB debugging option in the kernel to see if
I can get some output before it locks.  If I can find a 2.6.10 kernel patchset
with support for reiser4 and the nvidia drivers, I'll test that soon too.

On 2.6.9-cko3 right now (ehci module loaded, no uhci module loaded of course),
here is what /proc/interrupts says:
           CPU0       CPU1
  0:  188469854          0    IO-APIC-edge  timer
  1:     103789          0    IO-APIC-edge  i8042
  9:          0          0   IO-APIC-level  acpi
 12:    5016455          0    IO-APIC-edge  i8042
 15:     178533          0    IO-APIC-edge  ide1
 16:   14670572          0   IO-APIC-level  nvidia
 17:     532696          0   IO-APIC-level  Intel ICH5
 18:    1547313          0   IO-APIC-level  libata, SysKonnect SK-98xx
 23:    1202661          0   IO-APIC-level  ehci_hcd
NMI:          0          0
LOC:  188462356  188466658
ERR:          0
MIS:          0


If there's any more information you may need, I'll be happy to provide.
Comment 7 Kenyon Ralph 2004-12-30 22:36:22 UTC
OK this is really weird, but it doesn't cause a lockup anymore.

I realized that I hadn't even built the uhci module (so I wouldn't accidentally
load it), so I rebuilt my kernel.  In the process I turned on USB debugging, and
some other things:

diff /boot/config /boot/config.old
4c4
< # Thu Dec 30 22:07:26 2004
---
> # Sat Dec 25 10:00:52 2004
278c278,279
< # CONFIG_BLK_DEV_IDEDISK is not set
---
> CONFIG_BLK_DEV_IDEDISK=y
> CONFIG_IDEDISK_MULTI_MODE=y
289c290
< # CONFIG_IDE_GENERIC is not set
---
> CONFIG_IDE_GENERIC=y
920c921
< CONFIG_USB_DEBUG=y
---
> # CONFIG_USB_DEBUG is not set
938c939
< CONFIG_USB_UHCI_HCD=m
---
> # CONFIG_USB_UHCI_HCD is not set

I removed the IDEDISK because I didn't need it, and IDE_GENERIC because of Bug3615.  I wouldn't think those would have an effect on this, but who knows.

Other changes I've made between when it used to lock up and now:
1. I used to have my Microsoft IntelliMouse Explorer plugged into USB, but I
couldn't get all the buttons to work (probably because the uhci driver wasn't
loaded).  So I put the USB->PS2 converter on and plugged it into the PS2 port,
and that's how I use it now.

That's all I can think of.

The uhci driver is actually working, because now my keyboard is recognized by lsusb:
# lsusb
Bus 005 Device 003: ID 045e:001d Microsoft Corp. Natural Keyboard Pro
Bus 005 Device 002: ID 0451:1446 Texas Instruments, Inc. TUSB2040/2070 Hub
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

Whereas before, with no uhci, only the last line was printed.

I was also loading the psmouse module back when I had my mouse plugged into the
USB port.  Maybe that was causing a conflict.  I'll do some testing to see if I
can reproduce the lockup.
Comment 8 Kenyon Ralph 2004-12-30 23:55:41 UTC
Well it's weird, but I'm happy that it's all working now.  I couldn't get the
mouse to cause any lockups.  The psmouse module made no difference, nor did
setting the BIOS support for USB mice to BIOS or OS, both work the same now.

The only things I can think of are 1) maybe when it was locking up, the uhci was
trying to load before the ehci, would this cause a lockup?  I don't know if this
was happening or not.  Or 2) it has something to do with my hotplug/coldplug
setup.  I think I didn't have either of those installed when it was locking up.
 Now they both start at boot.

Maybe that's the solution for Chris Horn, to install hotplug and coldplug.  I'm
using Gentoo though, so maybe it'll be different for Debian.

Now that my USB fully works, I'm off to try some 2.6.10 kernels... :-D
Comment 9 Alan Stern 2005-04-05 09:01:00 UTC
Chris, Ralph, any more news on this?
Comment 10 Kenyon Ralph 2005-04-05 11:16:31 UTC
I haven't had any problems.
Comment 11 Chris Horn 2005-04-05 11:53:17 UTC
I will try to check this out more tonight, if I can figure out what to check. 
I'm using 2.6.9 now, with /var/log/messages telling me that ehci_hcd and
uhci_hcd don't seem to be having any problems.

I remember booting about a month ago (luckily I don't reboot very often) when I
got a warranty replacement motherboard (an unrelated Firewire problem) and the
machine locked up - but I think that was an APM or ACPI problem... I can't
recall.  I also can't remember what I did to "fix" the USB problem I was having.

.config USB controller & input config double-check:
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
CONFIG_USB_HIDDEV=y
Comment 12 Greg Kroah-Hartman 2005-08-18 21:48:04 UTC
Closing due to age of bug.  If this is still an issue on 2.6.13-rc6 or greater,
please reopen and let us know.