Paul E. McKenney 89b7e992f7 rcu: Create RCU-specific workqueues with rescuers
RCU's expedited grace periods can participate in out-of-memory deadlocks
due to all available system_wq kthreads being blocked and there not being
memory available to create more.  This commit prevents such deadlocks
by allocating an RCU-specific workqueue_struct at early boot time, and
providing it with a rescuer to ensure forward progress.  This uses the
shiny new init_rescuer() function provided by Tejun (but indirectly).

This commit also causes SRCU to use this new RCU-specific
workqueue_struct.  Note that SRCU's use of workqueues never blocks them
waiting for readers, so this should be safe from a forward-progress
viewpoint.  Note that this moves SRCU from system_power_efficient_wq
to a normal workqueue.  In the unlikely event that this results in
measurable degradation, a separate power-efficient workqueue will be
creates for SRCU.

Change-Id: I2988819b553b769ccfdeabd62394c3aad63d6668
Reported-by: Prateek Sood <prsood@codeaurora.org>
Reported-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Tejun Heo <tj@kernel.org>
Git-commit: ad7c946b35ad455417fdd4bc0e17deda4011841b
Git-Repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Prateek Sood <prsood@codeaurora.org>
2018-04-16 12:35:40 +05:30
..
2018-03-29 11:31:39 +02:00
2018-03-29 11:31:39 +02:00
2018-01-04 13:47:18 +01:00
2017-08-16 16:48:34 -07:00
2017-07-15 20:46:47 -04:00
2017-05-18 10:30:19 -06:00
2018-02-03 17:38:47 +01:00
2017-08-21 12:47:31 -07:00
2018-03-02 12:10:33 +05:30