On Tue, 13 Nov 2012 gregkh@xxxxxxxxxxxxxxxxxxx wrote: > From e592c5d0b7db94b485b4a2342db041a1882b7f75 Mon Sep 17 00:00:00 2001 > From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Date: Tue, 13 Nov 2012 10:52:52 -0800 > Subject: Revert "USB/host: Cleanup unneccessary irq disable code" > > This reverts commit 73d4066055e0e2830533041f4b91df8e6e5976ff. > > Martin Steigerwald reported that this change caused a hard lockup when > using USB if threadirqs are enabled. Thomas pointed out that this patch > is incorrect, and can cause problems. So revert it to get the > previously working functionality back. This reminds me -- it might be a good idea to start migrating the USB host controller drivers to use threaded interrupts. The difficulty is that I'm not sure what would be required. Right now the drivers use spin_lock_irqsave. Not just for the obvious reason that a USB device interrupt could arrive while the driver was busy, but also because a request could arrive from any other driver, submitted by that other driver's interrupt handler. In addition, we need to block timer callbacks while the driver is busy. So what's the right way to approach this? Or maybe there is no right way? I get the feeling that the spin_lock_irqsave can't be replaced with anything else as long as there are any non-threaded interrupt handlers that might submit a USB request. If that's so then the conversion wouldn't have any benefit. Right? Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html