Re: mark_offset_tsc() hangs usb

From: Malcolm Blaney
Date: Tue Apr 06 2004 - 00:02:55 EST




I wrote:

I have been trying to fix a problem related to usb, with the help of the usb-dev list. Plugging in a usb device hangs my computer when bandwidth reclamation (fsbr) is turned on in the uhci-hcd driver.

I have found though, that when an interrupt is triggered by plugging in a usb device, the timer_interrupt() function in arch/i386/kernel/time.c is reached, and the computer hangs in mark_offset_tsc() in timers/timer_tsc.c. I removed the call to this function in timer_interrupt() and then usb worked as normal. I'm hoping there's a better way to get usb working than this though! This doesn't happen when fsbr is switched off.

The computer has a Crusoe TM5400 cpu and a VIA VT82C686A controller.

I've been trying to work out what goes wrong in mark_offset_tsc() and found that it's just the outb_p() & inb_p() calls that are causing the problem. I found a thread relating to this, http://www.ussg.iu.edu/hypermail/linux/kernel/0309.2/1039.html, and tried the line:
#define __SLOW_DOWN_IO__ ""
which also allowed usb to work normally. Since this is just avoiding the read or write to port 0x80, is this a sign of having dodgy hardware? The thread doesn't talk about writing to the port as being fatal, even if it does cause problems for some people.

Anybody got a better fix?

Malcolm.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/