KernelNewbies:

Contact info

Email: <tj AT kernel DOT org>

Task: Convert create_workqueue() usages in drivers/staging/rtl8192[eu]

Description

There are four usages of create_workqueue() in rtl8192[eu] drivers. Convert them to use system_wq or alloc_workqueue(). create_workqueue() maps to per-cpu workqueue (this is the default flavor) with WQ_MEM_RECLAIM set and maximum concurrency of 1, so a workqueue created with create_workqueue() has the following properties.

  1. Work items are guaranteed to be executed regardless of memory pressure and thus can be depended upon from memory reclaim.
  2. Work items queued to a specific CPU using queue_work_on() will execute on that cpu. Work items queued via queue_work() will prefer the queueing CPU but the locality is not guaranteed.
  3. Work items queued on the same CPU will be executed in order; however, there's no ordering defined between work items executing on different CPUs.

The conversion should pick the option which minimally fits the use case. The order of preferences is

  1. system_wq
  2. Other system_*wq which fits the usage minimally.
  3. alloc_workqueue() with the minimal attributes specified.

The questions to ask during conversion are roughly

Occasionally, work items on a per-cpu workqueue may require execution ordering requiring the concurrency to be set at 1.

Task: Convert create_singlethread_workqueue() usages in drivers/staging/octeon/ethernet.c

Description:

Similar to "Convert create_workqueue() usages in drivers/staging/rtl8192[eu]". The followings are the extras to consider for singlethread workqueues.

KernelNewbies: Tejun_Heo (last edited 2017-12-30 01:30:06 by localhost)