My official bug report: https://bugzilla.kernel.org/show_bug.cgi?id=13405
Except my patch there is no any workaround. I have exactly the same bug as you.
I reported the bug to Nvidia and we had some information exchange about this bug.
I do not know if I'm allowed to talk about it so better ask someone from Nvidia Linux team about usb ohci hanging bug in MCP78S chipset. Maybe someone from Nvidia will say something here because this is growing problem as people upgrade their PCs to nForce 7xx family.
You will find my patch attached below.
+hang on usb plug in chance to avoid the bug: 99%
+hang during medium speed transfers (adsl usb modems, usb storages) 90% chance to avoid the bug
+hang during low speed transfers (usb keyboard and mouse) 98% chance to avoid the bug
It does not
-usb hang after few minutes of heavy and continuous usb traffic devices: usb 1.1 audio, movie cameras, usb radio.
This patch is experimental. Test it before use to make sure it does not break anything else.
Linux by default uses fasteoi interrupt handler. This patch switches to level interrupt handler to recreate windows behavior for interrupts. Slower but less hangs. I do not recommend using this patch.
I use it since few months and except occasional hangs it works for me.
How to use the patch:
Patch kernel sources you have. I designed this patch for kernel 184.108.40.206 but it can be applied on 220.127.116.11 or any other 2.6 kernel with less or more modifications required. After patching, building and installing kernel add this option to kernel boot parameters: nofasteoiapic
and reboot Linux.
How to see if the patch is active:
If you see: IO-APIC-level
patch is active.
If you see: IO-APIC-fasteoi
it is not.
Recommended solution which workarounds the bug in 100%:
Buy and install external PCI/PCI-E card with usb ports. You can safely use mainboard usb connectors only for usb 2.0 devices. If you have usb 1.1 only devices - use connectors on PCI/PCI-E external usb card.