summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMing Lei <ming.lei@canonical.com>2013-07-03 18:53:08 +0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-12 22:43:48 +0400
commit85721d45261c4be684730c7509a59daa6cda30d8 (patch)
treec7a370c0c292a96443b8fdbee17423e8faaa7252 /drivers
parent94dfd7edfd5c9b605caf7b562de7a813d216e011 (diff)
downloadlinux-85721d45261c4be684730c7509a59daa6cda30d8.tar.xz
USB: URB documentation: claim complete() will be run with IRQs enabled
There is no good reason to run complete() in hard interrupt disabled context. After switch to run complete() in tasklet, we will enable local IRQs when calling complete() since we can do it at that time. Even though we still disable IRQs now when calling complete() in tasklet, the URB documentation is updated to claim complete() will be run in tasklet context and local IRQs will be enabled, so that USB drivers can know the change and avoid one deadlock caused by: assume IRQs disabled in complete() and call spin_lock() to hold lock which might be acquired in interrupt context. Current spin_lock() usages in drivers' complete() will be cleaned up at the same time, and once the cleanup is finished, local IRQs will be enabled when calling complete() in tasklet. Also fix description about type of usb_complete_t, and remove the advice of running completion handler in tasklet for decreasing system latency. Cc: Oliver Neukum <oliver@neukum.org> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions