• Bhaktipriya Shridhar's avatar
    usb: ftdi-elan: Remove deprecated create_singlethread_workqueue · c936f45f
    Bhaktipriya Shridhar authored
    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: default avatarBhaktipriya Shridhar <bhaktipriya96@gmail.com>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c936f45f
ftdi-elan.c 80.2 KB