2009-07-06 21:41:19

by Zbigniew Luszpinski

[permalink] [raw]
Subject: PROBLEM: Nvidia OHCI chipset MCP78S (Geforce 8200) hangs on > 1Mbit transfers if noapic/acpi=noirq is missing

Hello,

with my ohci usb controller problem I came to conclusion that it hangs only
during big transfers when ohci usb controller is unable to keep up with rest
of the system. That is why it only hangs on fast bulk/iso transfers and not
when slow usb keyboard or mouse is used.

After being inspired by this uhci usb bugfix (which is very similar to my
problem but in my case Nvidia does not provide any driver for windows usb.
Just use default windows one):
http://osdir.com/ml/linux.usb.user/2002-12/msg00112.html
So I modified ohci usb driver source code (ohci-q.c, ohci-hub.c) in similar
way by adding mdelay(5); before most of ohci_writel(...) and ohci_readl(...).
After recompilation and reboot I used ohci usb without noapic workaround for
much longer time without hanging. However after this modification usb hangs
immediately after hotpluging other usb device so my ugly hack did not fix all
the issues. :(

I hope I find here someone who wrote or know Linux ohci driver so he/she knows
how to slow down ohci bulk/iso IO operations without breaking hotplug.
It looks Linux ohci driver is more aggressive on ohci IO than windows one so
making Linux less timing demanding would help my MCP78S keep working.

have a nice day,
Zbigniew Luszpinski


2009-07-07 01:50:20

by Alan Stern

[permalink] [raw]
Subject: Re: PROBLEM: Nvidia OHCI chipset MCP78S (Geforce 8200) hangs on > 1Mbit transfers if noapic/acpi=noirq is missing

On Mon, 6 Jul 2009, Zbigniew Luszpinski wrote:

> I hope I find here someone who wrote or know Linux ohci driver so he/she knows
> how to slow down ohci bulk/iso IO operations without breaking hotplug.

The speed of iso operations cannot be changed, because the transactions
have to occur at a specified interval.

OHCI doesn't provide any way to slow down bulk operations either, once
a bulk URB has been submitted. The best you can do is slow down the
rate of submission. But you already tried that and it didn't work.

> It looks Linux ohci driver is more aggressive on ohci IO than windows one so
> making Linux less timing demanding would help my MCP78S keep working.

I suspect you're looking in the wrong direction. There's probably
something wrong at a deeper level, in the chipset drivers for instance.

Alan Stern