Bug 15462 - USB is severely broken
USB is severely broken
Status: CLOSED WORKSFORME
Product: Red Hat Linux
Classification: Retired
Component: kernel (Show other bugs)
7.0
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Alan Cox
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2000-08-05 03:14 EDT by mal
Modified: 2008-05-01 11:37 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2002-12-14 19:50:46 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)

  None (edit)
Description mal 2000-08-05 03:14:48 EDT
USB is severily broken:
1. It has some strange interaction with the other modules:
  I have two 3com905 cards, when USB is loaded
  secord eth1 adapter is not recognised by the kernel.
  (the interrupts are not shared. usb , eth0 and eth1 sit on different
interrupts)
2. It has some bad interaction with lockd module from nfs.
3. after doing rmod uhci (with module counter 0)
 I get some error messages about freing used memory.
4. The system overall isvery unstable (especially when knfsd is used)

I STRONGLY RECOMMEND TO REMOVE USB
IT IS NOT READY FOR PRODUCTION ENVIRONMENT.
IF YOU SHIP KERNEL WITH USB MANY EXISTING SYSTEMS WILL BE BROKEN.
IT IS NEVER CLOSE TO BE READY.
REMOVE USB 
DO NOT DISGRACE LINUX AND REDHAT NAME.
Comment 1 Benjamin Gardiner 2000-08-05 05:38:23 EDT
I would have to say I have had no trouble with usb, other than redhat not
recognising the wacom graphire tablet, (insmod wacom loads the module and it
works)
Comment 2 mal 2000-08-05 12:38:36 EDT
What else do you use?
Again, USB does interact (very badly)
with:
1. NFS knfsd 
2. 3Com59x driver if you have more than one ethernet card.
3. Sound.
And who knows with what else.
If you do not use 1-3 USB may be OK,
but who needs such USB.
Comment 3 mal 2000-08-05 13:56:02 EDT
This is more info

+ lsmod
Module                  Size  Used by
nfsd                  143844   8  (autoclean)
lockd                  31176   1  (autoclean) [nfsd]
sunrpc                 52964   1  (autoclean) [nfsd lockd]
3c59x                  19716   1  (autoclean)
maestro                26852   0 
soundcore               2596   2  [maestro]
uhci                   18352   0  (unused)
usbcore                42088   1  [uhci]

Second ethernet adapter can not be probed while
USB module is loaded. But first etherenet adapter is OK.

+ modprobe 3c59x
/lib/modules/2.2.16-17/net/3c59x.o: init_module: Device or resource busy
Hint: insmod errors can be caused by incorrect module parameters, including
invalid IO or IRQ parameters
/lib/modules/2.2.16-17/net/3c59x.o: insmod /lib/modules/2.2.16-17/net/3c59x.o
failed
/lib/modules/2.2.16-17/net/3c59x.o: insmod 3c59x failed

See, I can not probe 3c59x while usb is there
+ rmmod uhci
+ rmmod usbcore

And now I get messages from Linux console.
kmem_shrink: Invalid cache addr c3fffc20
kmem_destroy: Can't free all objects c3fffc20
kmem_shrink: Invalid cache addr c3fffbc0
kmem_destroy: Can't free all objects c3fffbc0
kmem_shrink: Invalid cache addr c3fffb60
kmem_destroy: Can't free all objects c3fffb60
...
Now the system is extremely unstable.

+ lsmod
Module                  Size  Used by
nfsd                  143844   8  (autoclean)
lockd                  31176   1  (autoclean) [nfsd]
sunrpc                 52964   1  (autoclean) [nfsd lockd]
3c59x                  19716   1  (autoclean)
maestro                26852   0 
soundcore               2596   2  [maestro]

Now modprobe 3c59x works, I can do modprobe
+ modprobe 3c59x
And I can get second ethernet adapter eth1 
working.

+modprobe uhci
And now I get error messages from Linux console.
kmem_create: Dup name - uhci_td
kmem_create: Dup name - uhci_qh
kmem_create: Dup name - uhci_urb_priv


And this is what happen when you boot without USB and 
then do modprobe:
modprobe uhci
kmem_shrink: Invalid cache addr c3fffc20
kmem_destroy: Can't free all objects c3fffc20
kmem_shrink: Invalid cache addr c3fffbc0
kmem_destroy: Can't free all objects c3fffbc0
kmem_shrink: Invalid cache addr c3fffb60
kmem_destroy: Can't free all objects c3fffb60
/lib/modules/2.2.16-17/usb/uhci.o: init_module: Device or resource busy
Hint: insmod errors can be caused by incorrect module parameters, including
invalid IO or IRQ parameters
/lib/modules/2.2.16-17/usb/uhci.o: insmod /lib/modules/2.2.16-17/usb/uhci.o
failed
/lib/modules/2.2.16-17/usb/uhci.o: insmod uhci failed

There are also problems with NFS (knfsd) when USB 
is loaded, but it is hard to demonstarte.

USB is a very big source of instability in Linux.
When USB is not loaded NFS is OK, multiple ethernet cards is OK,
everything is much better and much more reliable.

And also because of a bug in initscripts
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=15464
usb can not be even disabled without patches to initscripts.

below is cat /proc/pci
cat /proc/pci 
PCI devices found:
  Bus  0, device   0, function  0:
    Host bridge: Intel 440LX - 82443LX PAC Host (rev 3).
      Medium devsel.  Fast back-to-back capable.  Master Capable. 
Latency=32.        Prefetchable 32 bit memory at 0xf8000000 [0xf8000008].
  Bus  0, device   1, function  0:
    PCI bridge: Intel 440LX - 82443LX PAC AGP (rev 3).
      Medium devsel.  Fast back-to-back capable.  Master Capable.  Latency=96. 
Min Gnt=12.
  Bus  0, device   7, function  0:
    ISA bridge: Intel 82371AB PIIX4 ISA (rev 1).
      Medium devsel.  Fast back-to-back capable.  Master Capable.  No bursts.  
  Bus  0, device   7, function  1:
    IDE interface: Intel 82371AB PIIX4 IDE (rev 1).
      Medium devsel.  Fast back-to-back capable.  Master Capable. 
Latency=64.        I/O at 0xfc90 [0xfc91].
  Bus  0, device   7, function  2:
    USB Controller: Intel 82371AB PIIX4 USB (rev 1).
      Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master Capable. 
Latency=64.  
      I/O at 0xfca0 [0xfca1].
  Bus  0, device   7, function  3:
    Bridge: Intel 82371AB PIIX4 ACPI (rev 1).
      Medium devsel.  Fast back-to-back capable.  
  Bus  0, device  13, function  0:
    Ethernet controller: 3Com 3C905 100bTX (rev 0).
      Medium devsel.  IRQ 10.  Master Capable.  Latency=64.  Min Gnt=3.Max
Lat=8.
      I/O at 0xfcc0 [0xfcc1].
  Bus  0, device  15, function  0:
    Ethernet controller: 3Com 3C905B 100bTX (rev 36).
      Medium devsel.  IRQ 5.  Master Capable.  Latency=80.  Min Gnt=10.Max
Lat=10.
      I/O at 0xfc00 [0xfc01].
      Non-prefetchable 32 bit memory at 0xfedffc00 [0xfedffc00].
  Bus  0, device  16, function  0:
    Multimedia audio controller: Unknown vendor Unknown device (rev 16).
      Vendor id=1285. Device id=100.
      Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master Capable. 
Latency=64.  Min Gnt=2.Max Lat=24.
      I/O at 0xf800 [0xf801].
  Bus  1, device   0, function  0:
    VGA compatible controller: NVidia/SGS Thomson Riva 128 (rev 16).
      Medium devsel.  Fast back-to-back capable.  IRQ 9.  Master Capable. 
Latency=64.  Min Gnt=3.Max Lat=1.
      Non-prefetchable 32 bit memory at 0xfd000000 [0xfd000000].
      Prefetchable 32 bit memory at 0xf6000000 [0xf6000008].


Comment 4 Alan Cox 2000-08-05 17:13:47 EDT
Actually the lockd problem isnt USB related, I've seen it noted elsewhere and
being worked on. The 3c59x problem is sort of USB tripped and now fixed, the
kmem_* messages are actually harmless and are cleaned up in the latest kernel
build done.

Describe the NFS problems in more detail please
Comment 5 mal 2000-08-05 18:05:31 EDT
NFS (when USB is loaded) 
looks unsable.
After some unknown event 
cleints (which access NFS server with USB enabled)
stop working and start printing 
messages about 
"RPC garbage from .... ".
The only way to stop this - reboot NFS server.
No such problem when USB is disabled on the server.
Comment 6 mal 2000-08-05 21:57:54 EDT
In addition:
This is an example of log on a clent connected to NFS server with USB enabled:
Aug  5 14:07:11 little kernel: RPC: garbage, exit EIO
Aug  5 14:07:12 little kernel: RPC: garbage, retrying 46451
Aug  5 14:07:12 little kernel: RPC: garbage, retrying 46451
Aug  5 14:07:12 little kernel: RPC: garbage, exit EIO
Aug  5 14:07:12 little kernel: RPC: garbage, retrying 46453
Aug  5 14:07:12 little kernel: RPC: garbage, retrying 46453
Aug  5 14:07:12 little kernel: RPC: garbage, exit EIO
Aug  5 14:07:42 little kernel: RPC: garbage, retrying 46455
Aug  5 14:07:42 little kernel: RPC: garbage, retrying 46455
Aug  5 14:07:42 little kernel: RPC: garbage, exit EIO
Aug  5 14:08:12 little kernel: RPC: garbage, retrying 46457
Aug  5 14:08:12 little kernel: RPC: garbage, retrying 46457
Aug  5 14:08:12 little kernel: RPC: garbage, exit EIO

And nothing in logs on NFS server.
Comment 7 Mike A. Harris 2001-10-25 20:24:10 EDT
I just stumbled on this bug, and wonder if it is fixed now,
relevant still, should be closed or reassigned, etc...
Comment 8 Alan Cox 2002-12-14 19:50:46 EST
Seems to have gone away with newer and better USB code

Note You need to log in before you can comment on or make changes to this bug.