]> git.karo-electronics.de Git - karo-tx-linux.git/commit
USB: OHCI: make URB completions single-threaded
authorAlan Stern <stern@rowland.harvard.edu>
Fri, 18 Jul 2014 20:26:07 +0000 (16:26 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Jul 2014 23:33:01 +0000 (16:33 -0700)
commitcdb4dd15e62eb984d9461b520d15d00ff2b88d9d
tree2015b60c2cd3bece77023c27c2e681cc76814732
parentc6fcb85ea22889527ee44aba42c3e3b479fd2d92
USB: OHCI: make URB completions single-threaded

URBs for a particular endpoint should complete sequentially.  That is,
we shouldn't call the completion handler for one URB until the handler
for the previous URB has returned.

When the OHCI watchdog routine is added, there will be two paths for
completing URBs: interrupt handler and watchdog routine.  Their
activities have to be synchronized so that completions don't occur in
multiple threads concurrently.

For that purpose, this patch creates an ohci_work() routine which will
be responsible for calling process_done_list() and finish_unlinks(),
the two routines that detect when an URB is complete.  Everything will
funnel through ohci_work(), and it will be careful not to run in more
than one thread at a time.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/ohci-hcd.c
drivers/usb/host/ohci-hub.c
drivers/usb/host/ohci-q.c
drivers/usb/host/ohci.h