linux/drivers/usb/misc
Bhaktipriya Shridhar c936f45fc2 usb: ftdi-elan: Remove deprecated create_singlethread_workqueue
The status workqueue is involved in initializing the Uxxx and polling
the Uxxx until a supported PCMCIA CardBus device is detected.
It then starts the command and respond workqueues and then loads the
module that handles the device, after which it just polls the Uxxx
looking for card ejects.

The command and respond workqueues are involved in implementing a command
sequencer for communicating with the firmware on the other side of
the FTDI chip in the Uxxx.

These workqueues have only a single work item each and hence they do not
require ordering. Also, none of the above workqueues are being used on a
memory recliam path. Hence, the singlethreaded workqueues have been
replaced with the use of system_wq.

System workqueues have been able to handle high level of concurrency
for a long time now and hence it's not required to have a singlethreaded
workqueue just to gain concurrency. Unlike a dedicated per-cpu workqueue
created with create_singlethread_workqueue(), system_wq allows multiple
work items to overlap executions even on the same CPU; however, a
per-cpu workqueue doesn't have any CPU locality or global ordering
guarantee unless the target CPU is explicitly specified and thus the
increase of local concurrency shouldn't make any difference.

The work items have been sync cancelled because they are self-requeueing
and need to wait for the in-flight work item to finish before proceeding
with destruction. Hence, they have been sync cancelled in
ftdi_status_cancel_work(), ftdi_command_cancel_work() and
ftdi_response_cancel_work(). These functions are called in
ftdi_elan_exit() to ensure that there are no pending work items while
disconnecting the driver.

Signed-off-by: Bhaktipriya Shridhar <bhaktipriya96@gmail.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-08-09 15:49:01 +02:00
..
sisusbvga tty: vt, convert more macros to functions 2016-06-25 09:04:48 -07:00
adutux.c USB: adutux: NULL dereferences on disconnect 2014-11-26 19:50:15 -08:00
appledisplay.c USB: appledisplay: Remove deprecated create_singlethread_workqueue 2016-08-09 15:49:01 +02:00
chaoskey.c hwrng: chaoskey - Fix URB warning due to timeout on Alea 2016-06-07 18:42:44 +08:00
cypress_cy7c63.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
cytherm.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ehset.c usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET 2013-08-12 13:13:32 -07:00
emi26.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
emi62.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ezusb.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ftdi-elan.c usb: ftdi-elan: Remove deprecated create_singlethread_workqueue 2016-08-09 15:49:01 +02:00
idmouse.c USB: idmouse.c: Put the interface on error 2016-03-03 19:44:06 -08:00
iowarrior.c USB: iowarrior: fix oops with malicious USB descriptors 2016-03-18 09:19:02 -07:00
isight_firmware.c
Kconfig usb: misc: Add driver for usb4604 2016-08-09 15:49:01 +02:00
ldusb.c usb, HID: Remove Vernier devices from lsusb and hid_ignore_list 2015-06-01 14:44:08 +02:00
legousbtower.c USB: legotower: use msecs_to_jiffies for time conversion 2015-03-18 16:20:34 +01:00
lvstest.c usb: lvstest: Remove deprecated create_singlethread_workqueue 2016-08-09 15:49:01 +02:00
Makefile usb: misc: Add driver for usb4604 2016-08-09 15:49:01 +02:00
rio500_usb.h
rio500.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
trancevibrator.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ucsi.c usb: Add driver for UCSI 2016-04-29 15:29:18 -07:00
ucsi.h usb: Add driver for UCSI 2016-04-29 15:29:18 -07:00
usb3503.c usb: misc: usb3503: Clean up on driver unbind 2016-06-07 22:19:59 -07:00
usb4604.c usb: misc: Add driver for usb4604 2016-08-09 15:49:01 +02:00
usb_u132.h
usblcd.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
usbsevseg.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
usbtest.c usb: misc: usbtest: fix pattern tests for scatterlists. 2016-05-03 14:32:07 -07:00
uss720.c USB: uss720.c: move assignment out of if () block 2015-05-10 16:01:12 +02:00
yurex.c usb: yurex: fixed sparse warning of incorrect type 2014-11-03 15:34:00 -08:00