Michael Elkins wrote: > > On Thu, Nov 23, 2000 at 05:49:52PM +0100, Georg Acher wrote: > > On Thu, Nov 23, 2000 at 04:35:33PM +0000, Rui Sousa wrote: > > > On Thu, 23 Nov 2000, Michael Elkins wrote: > > > > > > Usb controller is sharing a interrupt with the emu10k1. > > > For what I know the emu10k1 driver doesn't have any problem > > > sharing irq's, so I would blame the usb driver... > > > > usb-uhci doesn't also have any problem with sharing irqs: > > > > > cat /proc/interrupts > > 10: 5597981 XT-PIC aic7xxx, eth0, usb-uhci > > > > Hm, no one left to blame... > > I would debug it as follows: > > Place various printks in the initialization code (reset_hc(), start_hc() and > > alloc_uhci) and find out after which printk it hangs. Then it would be > > possible to investigate this further... > > It hangs in start_uhci(): > > /* disable legacy emulation */ > pci_write_config_word (dev, USBLEGSUP, USBLEGSUP_DEFAULT); > > The loop that the call is in gets iterated 5 times. For i < 4, the > if (!(dev->resource[i].flags & 1)) > is TRUE, but on i==4, it drops into the bottom of the loop to execute > check_region() and then pci_write_config_word(), where it hangs. It may not make a difference, but that check is flat out wrong. Apply this patch... (untested, you may need to include ioport.h) -- Jeff Garzik | Building 1024 | The chief enemy of creativity is "good" sense MandrakeSoft | -- Picasso
Index: drivers/usb/usb-uhci.c =================================================================== RCS file: /cvsroot/gkernel/linux_2_4/drivers/usb/usb-uhci.c,v retrieving revision 1.1.1.9 diff -u -r1.1.1.9 usb-uhci.c --- drivers/usb/usb-uhci.c 2000/10/22 23:25:12 1.1.1.9 +++ drivers/usb/usb-uhci.c 2000/11/23 23:04:37 @@ -2886,7 +2886,7 @@ unsigned int io_addr = dev->resource[i].start; unsigned int io_size = dev->resource[i].end - dev->resource[i].start + 1; - if (!(dev->resource[i].flags & 1)) + if (!(dev->resource[i].flags & IORESOURCE_IO)) continue; /* Is it already in use? */