]> Git Repo - linux.git/blob - kernel/workqueue.c
workqueue: Remove cpus_read_lock() from apply_wqattrs_lock()
[linux.git] / kernel / workqueue.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * kernel/workqueue.c - generic async execution with shared worker pool
4  *
5  * Copyright (C) 2002           Ingo Molnar
6  *
7  *   Derived from the taskqueue/keventd code by:
8  *     David Woodhouse <[email protected]>
9  *     Andrew Morton
10  *     Kai Petzke <[email protected]>
11  *     Theodore Ts'o <[email protected]>
12  *
13  * Made to use alloc_percpu by Christoph Lameter.
14  *
15  * Copyright (C) 2010           SUSE Linux Products GmbH
16  * Copyright (C) 2010           Tejun Heo <[email protected]>
17  *
18  * This is the generic async execution mechanism.  Work items as are
19  * executed in process context.  The worker pool is shared and
20  * automatically managed.  There are two worker pools for each CPU (one for
21  * normal work items and the other for high priority ones) and some extra
22  * pools for workqueues which are not bound to any specific CPU - the
23  * number of these backing pools is dynamic.
24  *
25  * Please read Documentation/core-api/workqueue.rst for details.
26  */
27
28 #include <linux/export.h>
29 #include <linux/kernel.h>
30 #include <linux/sched.h>
31 #include <linux/init.h>
32 #include <linux/interrupt.h>
33 #include <linux/signal.h>
34 #include <linux/completion.h>
35 #include <linux/workqueue.h>
36 #include <linux/slab.h>
37 #include <linux/cpu.h>
38 #include <linux/notifier.h>
39 #include <linux/kthread.h>
40 #include <linux/hardirq.h>
41 #include <linux/mempolicy.h>
42 #include <linux/freezer.h>
43 #include <linux/debug_locks.h>
44 #include <linux/lockdep.h>
45 #include <linux/idr.h>
46 #include <linux/jhash.h>
47 #include <linux/hashtable.h>
48 #include <linux/rculist.h>
49 #include <linux/nodemask.h>
50 #include <linux/moduleparam.h>
51 #include <linux/uaccess.h>
52 #include <linux/sched/isolation.h>
53 #include <linux/sched/debug.h>
54 #include <linux/nmi.h>
55 #include <linux/kvm_para.h>
56 #include <linux/delay.h>
57 #include <linux/irq_work.h>
58
59 #include "workqueue_internal.h"
60
61 enum worker_pool_flags {
62         /*
63          * worker_pool flags
64          *
65          * A bound pool is either associated or disassociated with its CPU.
66          * While associated (!DISASSOCIATED), all workers are bound to the
67          * CPU and none has %WORKER_UNBOUND set and concurrency management
68          * is in effect.
69          *
70          * While DISASSOCIATED, the cpu may be offline and all workers have
71          * %WORKER_UNBOUND set and concurrency management disabled, and may
72          * be executing on any CPU.  The pool behaves as an unbound one.
73          *
74          * Note that DISASSOCIATED should be flipped only while holding
75          * wq_pool_attach_mutex to avoid changing binding state while
76          * worker_attach_to_pool() is in progress.
77          *
78          * As there can only be one concurrent BH execution context per CPU, a
79          * BH pool is per-CPU and always DISASSOCIATED.
80          */
81         POOL_BH                 = 1 << 0,       /* is a BH pool */
82         POOL_MANAGER_ACTIVE     = 1 << 1,       /* being managed */
83         POOL_DISASSOCIATED      = 1 << 2,       /* cpu can't serve workers */
84         POOL_BH_DRAINING        = 1 << 3,       /* draining after CPU offline */
85 };
86
87 enum worker_flags {
88         /* worker flags */
89         WORKER_DIE              = 1 << 1,       /* die die die */
90         WORKER_IDLE             = 1 << 2,       /* is idle */
91         WORKER_PREP             = 1 << 3,       /* preparing to run works */
92         WORKER_CPU_INTENSIVE    = 1 << 6,       /* cpu intensive */
93         WORKER_UNBOUND          = 1 << 7,       /* worker is unbound */
94         WORKER_REBOUND          = 1 << 8,       /* worker was rebound */
95
96         WORKER_NOT_RUNNING      = WORKER_PREP | WORKER_CPU_INTENSIVE |
97                                   WORKER_UNBOUND | WORKER_REBOUND,
98 };
99
100 enum work_cancel_flags {
101         WORK_CANCEL_DELAYED     = 1 << 0,       /* canceling a delayed_work */
102         WORK_CANCEL_DISABLE     = 1 << 1,       /* canceling to disable */
103 };
104
105 enum wq_internal_consts {
106         NR_STD_WORKER_POOLS     = 2,            /* # standard pools per cpu */
107
108         UNBOUND_POOL_HASH_ORDER = 6,            /* hashed by pool->attrs */
109         BUSY_WORKER_HASH_ORDER  = 6,            /* 64 pointers */
110
111         MAX_IDLE_WORKERS_RATIO  = 4,            /* 1/4 of busy can be idle */
112         IDLE_WORKER_TIMEOUT     = 300 * HZ,     /* keep idle ones for 5 mins */
113
114         MAYDAY_INITIAL_TIMEOUT  = HZ / 100 >= 2 ? HZ / 100 : 2,
115                                                 /* call for help after 10ms
116                                                    (min two ticks) */
117         MAYDAY_INTERVAL         = HZ / 10,      /* and then every 100ms */
118         CREATE_COOLDOWN         = HZ,           /* time to breath after fail */
119
120         /*
121          * Rescue workers are used only on emergencies and shared by
122          * all cpus.  Give MIN_NICE.
123          */
124         RESCUER_NICE_LEVEL      = MIN_NICE,
125         HIGHPRI_NICE_LEVEL      = MIN_NICE,
126
127         WQ_NAME_LEN             = 32,
128 };
129
130 /*
131  * We don't want to trap softirq for too long. See MAX_SOFTIRQ_TIME and
132  * MAX_SOFTIRQ_RESTART in kernel/softirq.c. These are macros because
133  * msecs_to_jiffies() can't be an initializer.
134  */
135 #define BH_WORKER_JIFFIES       msecs_to_jiffies(2)
136 #define BH_WORKER_RESTARTS      10
137
138 /*
139  * Structure fields follow one of the following exclusion rules.
140  *
141  * I: Modifiable by initialization/destruction paths and read-only for
142  *    everyone else.
143  *
144  * P: Preemption protected.  Disabling preemption is enough and should
145  *    only be modified and accessed from the local cpu.
146  *
147  * L: pool->lock protected.  Access with pool->lock held.
148  *
149  * LN: pool->lock and wq_node_nr_active->lock protected for writes. Either for
150  *     reads.
151  *
152  * K: Only modified by worker while holding pool->lock. Can be safely read by
153  *    self, while holding pool->lock or from IRQ context if %current is the
154  *    kworker.
155  *
156  * S: Only modified by worker self.
157  *
158  * A: wq_pool_attach_mutex protected.
159  *
160  * PL: wq_pool_mutex protected.
161  *
162  * PR: wq_pool_mutex protected for writes.  RCU protected for reads.
163  *
164  * PW: wq_pool_mutex and wq->mutex protected for writes.  Either for reads.
165  *
166  * PWR: wq_pool_mutex and wq->mutex protected for writes.  Either or
167  *      RCU for reads.
168  *
169  * WQ: wq->mutex protected.
170  *
171  * WR: wq->mutex protected for writes.  RCU protected for reads.
172  *
173  * WO: wq->mutex protected for writes. Updated with WRITE_ONCE() and can be read
174  *     with READ_ONCE() without locking.
175  *
176  * MD: wq_mayday_lock protected.
177  *
178  * WD: Used internally by the watchdog.
179  */
180
181 /* struct worker is defined in workqueue_internal.h */
182
183 struct worker_pool {
184         raw_spinlock_t          lock;           /* the pool lock */
185         int                     cpu;            /* I: the associated cpu */
186         int                     node;           /* I: the associated node ID */
187         int                     id;             /* I: pool ID */
188         unsigned int            flags;          /* L: flags */
189
190         unsigned long           watchdog_ts;    /* L: watchdog timestamp */
191         bool                    cpu_stall;      /* WD: stalled cpu bound pool */
192
193         /*
194          * The counter is incremented in a process context on the associated CPU
195          * w/ preemption disabled, and decremented or reset in the same context
196          * but w/ pool->lock held. The readers grab pool->lock and are
197          * guaranteed to see if the counter reached zero.
198          */
199         int                     nr_running;
200
201         struct list_head        worklist;       /* L: list of pending works */
202
203         int                     nr_workers;     /* L: total number of workers */
204         int                     nr_idle;        /* L: currently idle workers */
205
206         struct list_head        idle_list;      /* L: list of idle workers */
207         struct timer_list       idle_timer;     /* L: worker idle timeout */
208         struct work_struct      idle_cull_work; /* L: worker idle cleanup */
209
210         struct timer_list       mayday_timer;     /* L: SOS timer for workers */
211
212         /* a workers is either on busy_hash or idle_list, or the manager */
213         DECLARE_HASHTABLE(busy_hash, BUSY_WORKER_HASH_ORDER);
214                                                 /* L: hash of busy workers */
215
216         struct worker           *manager;       /* L: purely informational */
217         struct list_head        workers;        /* A: attached workers */
218
219         struct ida              worker_ida;     /* worker IDs for task name */
220
221         struct workqueue_attrs  *attrs;         /* I: worker attributes */
222         struct hlist_node       hash_node;      /* PL: unbound_pool_hash node */
223         int                     refcnt;         /* PL: refcnt for unbound pools */
224
225         /*
226          * Destruction of pool is RCU protected to allow dereferences
227          * from get_work_pool().
228          */
229         struct rcu_head         rcu;
230 };
231
232 /*
233  * Per-pool_workqueue statistics. These can be monitored using
234  * tools/workqueue/wq_monitor.py.
235  */
236 enum pool_workqueue_stats {
237         PWQ_STAT_STARTED,       /* work items started execution */
238         PWQ_STAT_COMPLETED,     /* work items completed execution */
239         PWQ_STAT_CPU_TIME,      /* total CPU time consumed */
240         PWQ_STAT_CPU_INTENSIVE, /* wq_cpu_intensive_thresh_us violations */
241         PWQ_STAT_CM_WAKEUP,     /* concurrency-management worker wakeups */
242         PWQ_STAT_REPATRIATED,   /* unbound workers brought back into scope */
243         PWQ_STAT_MAYDAY,        /* maydays to rescuer */
244         PWQ_STAT_RESCUED,       /* linked work items executed by rescuer */
245
246         PWQ_NR_STATS,
247 };
248
249 /*
250  * The per-pool workqueue.  While queued, bits below WORK_PWQ_SHIFT
251  * of work_struct->data are used for flags and the remaining high bits
252  * point to the pwq; thus, pwqs need to be aligned at two's power of the
253  * number of flag bits.
254  */
255 struct pool_workqueue {
256         struct worker_pool      *pool;          /* I: the associated pool */
257         struct workqueue_struct *wq;            /* I: the owning workqueue */
258         int                     work_color;     /* L: current color */
259         int                     flush_color;    /* L: flushing color */
260         int                     refcnt;         /* L: reference count */
261         int                     nr_in_flight[WORK_NR_COLORS];
262                                                 /* L: nr of in_flight works */
263         bool                    plugged;        /* L: execution suspended */
264
265         /*
266          * nr_active management and WORK_STRUCT_INACTIVE:
267          *
268          * When pwq->nr_active >= max_active, new work item is queued to
269          * pwq->inactive_works instead of pool->worklist and marked with
270          * WORK_STRUCT_INACTIVE.
271          *
272          * All work items marked with WORK_STRUCT_INACTIVE do not participate in
273          * nr_active and all work items in pwq->inactive_works are marked with
274          * WORK_STRUCT_INACTIVE. But not all WORK_STRUCT_INACTIVE work items are
275          * in pwq->inactive_works. Some of them are ready to run in
276          * pool->worklist or worker->scheduled. Those work itmes are only struct
277          * wq_barrier which is used for flush_work() and should not participate
278          * in nr_active. For non-barrier work item, it is marked with
279          * WORK_STRUCT_INACTIVE iff it is in pwq->inactive_works.
280          */
281         int                     nr_active;      /* L: nr of active works */
282         struct list_head        inactive_works; /* L: inactive works */
283         struct list_head        pending_node;   /* LN: node on wq_node_nr_active->pending_pwqs */
284         struct list_head        pwqs_node;      /* WR: node on wq->pwqs */
285         struct list_head        mayday_node;    /* MD: node on wq->maydays */
286
287         u64                     stats[PWQ_NR_STATS];
288
289         /*
290          * Release of unbound pwq is punted to a kthread_worker. See put_pwq()
291          * and pwq_release_workfn() for details. pool_workqueue itself is also
292          * RCU protected so that the first pwq can be determined without
293          * grabbing wq->mutex.
294          */
295         struct kthread_work     release_work;
296         struct rcu_head         rcu;
297 } __aligned(1 << WORK_STRUCT_PWQ_SHIFT);
298
299 /*
300  * Structure used to wait for workqueue flush.
301  */
302 struct wq_flusher {
303         struct list_head        list;           /* WQ: list of flushers */
304         int                     flush_color;    /* WQ: flush color waiting for */
305         struct completion       done;           /* flush completion */
306 };
307
308 struct wq_device;
309
310 /*
311  * Unlike in a per-cpu workqueue where max_active limits its concurrency level
312  * on each CPU, in an unbound workqueue, max_active applies to the whole system.
313  * As sharing a single nr_active across multiple sockets can be very expensive,
314  * the counting and enforcement is per NUMA node.
315  *
316  * The following struct is used to enforce per-node max_active. When a pwq wants
317  * to start executing a work item, it should increment ->nr using
318  * tryinc_node_nr_active(). If acquisition fails due to ->nr already being over
319  * ->max, the pwq is queued on ->pending_pwqs. As in-flight work items finish
320  * and decrement ->nr, node_activate_pending_pwq() activates the pending pwqs in
321  * round-robin order.
322  */
323 struct wq_node_nr_active {
324         int                     max;            /* per-node max_active */
325         atomic_t                nr;             /* per-node nr_active */
326         raw_spinlock_t          lock;           /* nests inside pool locks */
327         struct list_head        pending_pwqs;   /* LN: pwqs with inactive works */
328 };
329
330 /*
331  * The externally visible workqueue.  It relays the issued work items to
332  * the appropriate worker_pool through its pool_workqueues.
333  */
334 struct workqueue_struct {
335         struct list_head        pwqs;           /* WR: all pwqs of this wq */
336         struct list_head        list;           /* PR: list of all workqueues */
337
338         struct mutex            mutex;          /* protects this wq */
339         int                     work_color;     /* WQ: current work color */
340         int                     flush_color;    /* WQ: current flush color */
341         atomic_t                nr_pwqs_to_flush; /* flush in progress */
342         struct wq_flusher       *first_flusher; /* WQ: first flusher */
343         struct list_head        flusher_queue;  /* WQ: flush waiters */
344         struct list_head        flusher_overflow; /* WQ: flush overflow list */
345
346         struct list_head        maydays;        /* MD: pwqs requesting rescue */
347         struct worker           *rescuer;       /* MD: rescue worker */
348
349         int                     nr_drainers;    /* WQ: drain in progress */
350
351         /* See alloc_workqueue() function comment for info on min/max_active */
352         int                     max_active;     /* WO: max active works */
353         int                     min_active;     /* WO: min active works */
354         int                     saved_max_active; /* WQ: saved max_active */
355         int                     saved_min_active; /* WQ: saved min_active */
356
357         struct workqueue_attrs  *unbound_attrs; /* PW: only for unbound wqs */
358         struct pool_workqueue __rcu *dfl_pwq;   /* PW: only for unbound wqs */
359
360 #ifdef CONFIG_SYSFS
361         struct wq_device        *wq_dev;        /* I: for sysfs interface */
362 #endif
363 #ifdef CONFIG_LOCKDEP
364         char                    *lock_name;
365         struct lock_class_key   key;
366         struct lockdep_map      lockdep_map;
367 #endif
368         char                    name[WQ_NAME_LEN]; /* I: workqueue name */
369
370         /*
371          * Destruction of workqueue_struct is RCU protected to allow walking
372          * the workqueues list without grabbing wq_pool_mutex.
373          * This is used to dump all workqueues from sysrq.
374          */
375         struct rcu_head         rcu;
376
377         /* hot fields used during command issue, aligned to cacheline */
378         unsigned int            flags ____cacheline_aligned; /* WQ: WQ_* flags */
379         struct pool_workqueue __percpu __rcu **cpu_pwq; /* I: per-cpu pwqs */
380         struct wq_node_nr_active *node_nr_active[]; /* I: per-node nr_active */
381 };
382
383 /*
384  * Each pod type describes how CPUs should be grouped for unbound workqueues.
385  * See the comment above workqueue_attrs->affn_scope.
386  */
387 struct wq_pod_type {
388         int                     nr_pods;        /* number of pods */
389         cpumask_var_t           *pod_cpus;      /* pod -> cpus */
390         int                     *pod_node;      /* pod -> node */
391         int                     *cpu_pod;       /* cpu -> pod */
392 };
393
394 struct work_offq_data {
395         u32                     pool_id;
396         u32                     disable;
397         u32                     flags;
398 };
399
400 static const char *wq_affn_names[WQ_AFFN_NR_TYPES] = {
401         [WQ_AFFN_DFL]           = "default",
402         [WQ_AFFN_CPU]           = "cpu",
403         [WQ_AFFN_SMT]           = "smt",
404         [WQ_AFFN_CACHE]         = "cache",
405         [WQ_AFFN_NUMA]          = "numa",
406         [WQ_AFFN_SYSTEM]        = "system",
407 };
408
409 /*
410  * Per-cpu work items which run for longer than the following threshold are
411  * automatically considered CPU intensive and excluded from concurrency
412  * management to prevent them from noticeably delaying other per-cpu work items.
413  * ULONG_MAX indicates that the user hasn't overridden it with a boot parameter.
414  * The actual value is initialized in wq_cpu_intensive_thresh_init().
415  */
416 static unsigned long wq_cpu_intensive_thresh_us = ULONG_MAX;
417 module_param_named(cpu_intensive_thresh_us, wq_cpu_intensive_thresh_us, ulong, 0644);
418 #ifdef CONFIG_WQ_CPU_INTENSIVE_REPORT
419 static unsigned int wq_cpu_intensive_warning_thresh = 4;
420 module_param_named(cpu_intensive_warning_thresh, wq_cpu_intensive_warning_thresh, uint, 0644);
421 #endif
422
423 /* see the comment above the definition of WQ_POWER_EFFICIENT */
424 static bool wq_power_efficient = IS_ENABLED(CONFIG_WQ_POWER_EFFICIENT_DEFAULT);
425 module_param_named(power_efficient, wq_power_efficient, bool, 0444);
426
427 static bool wq_online;                  /* can kworkers be created yet? */
428 static bool wq_topo_initialized __read_mostly = false;
429
430 static struct kmem_cache *pwq_cache;
431
432 static struct wq_pod_type wq_pod_types[WQ_AFFN_NR_TYPES];
433 static enum wq_affn_scope wq_affn_dfl = WQ_AFFN_CACHE;
434
435 /* buf for wq_update_unbound_pod_attrs(), protected by CPU hotplug exclusion */
436 static struct workqueue_attrs *wq_update_pod_attrs_buf;
437
438 static DEFINE_MUTEX(wq_pool_mutex);     /* protects pools and workqueues list */
439 static DEFINE_MUTEX(wq_pool_attach_mutex); /* protects worker attach/detach */
440 static DEFINE_RAW_SPINLOCK(wq_mayday_lock);     /* protects wq->maydays list */
441 /* wait for manager to go away */
442 static struct rcuwait manager_wait = __RCUWAIT_INITIALIZER(manager_wait);
443
444 static LIST_HEAD(workqueues);           /* PR: list of all workqueues */
445 static bool workqueue_freezing;         /* PL: have wqs started freezing? */
446
447 /* PL: mirror the cpu_online_mask excluding the CPU in the midst of hotplugging */
448 static cpumask_var_t wq_online_cpumask;
449
450 /* PL&A: allowable cpus for unbound wqs and work items */
451 static cpumask_var_t wq_unbound_cpumask;
452
453 /* PL: user requested unbound cpumask via sysfs */
454 static cpumask_var_t wq_requested_unbound_cpumask;
455
456 /* PL: isolated cpumask to be excluded from unbound cpumask */
457 static cpumask_var_t wq_isolated_cpumask;
458
459 /* for further constrain wq_unbound_cpumask by cmdline parameter*/
460 static struct cpumask wq_cmdline_cpumask __initdata;
461
462 /* CPU where unbound work was last round robin scheduled from this CPU */
463 static DEFINE_PER_CPU(int, wq_rr_cpu_last);
464
465 /*
466  * Local execution of unbound work items is no longer guaranteed.  The
467  * following always forces round-robin CPU selection on unbound work items
468  * to uncover usages which depend on it.
469  */
470 #ifdef CONFIG_DEBUG_WQ_FORCE_RR_CPU
471 static bool wq_debug_force_rr_cpu = true;
472 #else
473 static bool wq_debug_force_rr_cpu = false;
474 #endif
475 module_param_named(debug_force_rr_cpu, wq_debug_force_rr_cpu, bool, 0644);
476
477 /* to raise softirq for the BH worker pools on other CPUs */
478 static DEFINE_PER_CPU_SHARED_ALIGNED(struct irq_work [NR_STD_WORKER_POOLS],
479                                      bh_pool_irq_works);
480
481 /* the BH worker pools */
482 static DEFINE_PER_CPU_SHARED_ALIGNED(struct worker_pool [NR_STD_WORKER_POOLS],
483                                      bh_worker_pools);
484
485 /* the per-cpu worker pools */
486 static DEFINE_PER_CPU_SHARED_ALIGNED(struct worker_pool [NR_STD_WORKER_POOLS],
487                                      cpu_worker_pools);
488
489 static DEFINE_IDR(worker_pool_idr);     /* PR: idr of all pools */
490
491 /* PL: hash of all unbound pools keyed by pool->attrs */
492 static DEFINE_HASHTABLE(unbound_pool_hash, UNBOUND_POOL_HASH_ORDER);
493
494 /* I: attributes used when instantiating standard unbound pools on demand */
495 static struct workqueue_attrs *unbound_std_wq_attrs[NR_STD_WORKER_POOLS];
496
497 /* I: attributes used when instantiating ordered pools on demand */
498 static struct workqueue_attrs *ordered_wq_attrs[NR_STD_WORKER_POOLS];
499
500 /*
501  * I: kthread_worker to release pwq's. pwq release needs to be bounced to a
502  * process context while holding a pool lock. Bounce to a dedicated kthread
503  * worker to avoid A-A deadlocks.
504  */
505 static struct kthread_worker *pwq_release_worker __ro_after_init;
506
507 struct workqueue_struct *system_wq __ro_after_init;
508 EXPORT_SYMBOL(system_wq);
509 struct workqueue_struct *system_highpri_wq __ro_after_init;
510 EXPORT_SYMBOL_GPL(system_highpri_wq);
511 struct workqueue_struct *system_long_wq __ro_after_init;
512 EXPORT_SYMBOL_GPL(system_long_wq);
513 struct workqueue_struct *system_unbound_wq __ro_after_init;
514 EXPORT_SYMBOL_GPL(system_unbound_wq);
515 struct workqueue_struct *system_freezable_wq __ro_after_init;
516 EXPORT_SYMBOL_GPL(system_freezable_wq);
517 struct workqueue_struct *system_power_efficient_wq __ro_after_init;
518 EXPORT_SYMBOL_GPL(system_power_efficient_wq);
519 struct workqueue_struct *system_freezable_power_efficient_wq __ro_after_init;
520 EXPORT_SYMBOL_GPL(system_freezable_power_efficient_wq);
521 struct workqueue_struct *system_bh_wq;
522 EXPORT_SYMBOL_GPL(system_bh_wq);
523 struct workqueue_struct *system_bh_highpri_wq;
524 EXPORT_SYMBOL_GPL(system_bh_highpri_wq);
525
526 static int worker_thread(void *__worker);
527 static void workqueue_sysfs_unregister(struct workqueue_struct *wq);
528 static void show_pwq(struct pool_workqueue *pwq);
529 static void show_one_worker_pool(struct worker_pool *pool);
530
531 #define CREATE_TRACE_POINTS
532 #include <trace/events/workqueue.h>
533
534 #define assert_rcu_or_pool_mutex()                                      \
535         RCU_LOCKDEP_WARN(!rcu_read_lock_any_held() &&                   \
536                          !lockdep_is_held(&wq_pool_mutex),              \
537                          "RCU or wq_pool_mutex should be held")
538
539 #define assert_rcu_or_wq_mutex_or_pool_mutex(wq)                        \
540         RCU_LOCKDEP_WARN(!rcu_read_lock_any_held() &&                   \
541                          !lockdep_is_held(&wq->mutex) &&                \
542                          !lockdep_is_held(&wq_pool_mutex),              \
543                          "RCU, wq->mutex or wq_pool_mutex should be held")
544
545 #define for_each_bh_worker_pool(pool, cpu)                              \
546         for ((pool) = &per_cpu(bh_worker_pools, cpu)[0];                \
547              (pool) < &per_cpu(bh_worker_pools, cpu)[NR_STD_WORKER_POOLS]; \
548              (pool)++)
549
550 #define for_each_cpu_worker_pool(pool, cpu)                             \
551         for ((pool) = &per_cpu(cpu_worker_pools, cpu)[0];               \
552              (pool) < &per_cpu(cpu_worker_pools, cpu)[NR_STD_WORKER_POOLS]; \
553              (pool)++)
554
555 /**
556  * for_each_pool - iterate through all worker_pools in the system
557  * @pool: iteration cursor
558  * @pi: integer used for iteration
559  *
560  * This must be called either with wq_pool_mutex held or RCU read
561  * locked.  If the pool needs to be used beyond the locking in effect, the
562  * caller is responsible for guaranteeing that the pool stays online.
563  *
564  * The if/else clause exists only for the lockdep assertion and can be
565  * ignored.
566  */
567 #define for_each_pool(pool, pi)                                         \
568         idr_for_each_entry(&worker_pool_idr, pool, pi)                  \
569                 if (({ assert_rcu_or_pool_mutex(); false; })) { }       \
570                 else
571
572 /**
573  * for_each_pool_worker - iterate through all workers of a worker_pool
574  * @worker: iteration cursor
575  * @pool: worker_pool to iterate workers of
576  *
577  * This must be called with wq_pool_attach_mutex.
578  *
579  * The if/else clause exists only for the lockdep assertion and can be
580  * ignored.
581  */
582 #define for_each_pool_worker(worker, pool)                              \
583         list_for_each_entry((worker), &(pool)->workers, node)           \
584                 if (({ lockdep_assert_held(&wq_pool_attach_mutex); false; })) { } \
585                 else
586
587 /**
588  * for_each_pwq - iterate through all pool_workqueues of the specified workqueue
589  * @pwq: iteration cursor
590  * @wq: the target workqueue
591  *
592  * This must be called either with wq->mutex held or RCU read locked.
593  * If the pwq needs to be used beyond the locking in effect, the caller is
594  * responsible for guaranteeing that the pwq stays online.
595  *
596  * The if/else clause exists only for the lockdep assertion and can be
597  * ignored.
598  */
599 #define for_each_pwq(pwq, wq)                                           \
600         list_for_each_entry_rcu((pwq), &(wq)->pwqs, pwqs_node,          \
601                                  lockdep_is_held(&(wq->mutex)))
602
603 #ifdef CONFIG_DEBUG_OBJECTS_WORK
604
605 static const struct debug_obj_descr work_debug_descr;
606
607 static void *work_debug_hint(void *addr)
608 {
609         return ((struct work_struct *) addr)->func;
610 }
611
612 static bool work_is_static_object(void *addr)
613 {
614         struct work_struct *work = addr;
615
616         return test_bit(WORK_STRUCT_STATIC_BIT, work_data_bits(work));
617 }
618
619 /*
620  * fixup_init is called when:
621  * - an active object is initialized
622  */
623 static bool work_fixup_init(void *addr, enum debug_obj_state state)
624 {
625         struct work_struct *work = addr;
626
627         switch (state) {
628         case ODEBUG_STATE_ACTIVE:
629                 cancel_work_sync(work);
630                 debug_object_init(work, &work_debug_descr);
631                 return true;
632         default:
633                 return false;
634         }
635 }
636
637 /*
638  * fixup_free is called when:
639  * - an active object is freed
640  */
641 static bool work_fixup_free(void *addr, enum debug_obj_state state)
642 {
643         struct work_struct *work = addr;
644
645         switch (state) {
646         case ODEBUG_STATE_ACTIVE:
647                 cancel_work_sync(work);
648                 debug_object_free(work, &work_debug_descr);
649                 return true;
650         default:
651                 return false;
652         }
653 }
654
655 static const struct debug_obj_descr work_debug_descr = {
656         .name           = "work_struct",
657         .debug_hint     = work_debug_hint,
658         .is_static_object = work_is_static_object,
659         .fixup_init     = work_fixup_init,
660         .fixup_free     = work_fixup_free,
661 };
662
663 static inline void debug_work_activate(struct work_struct *work)
664 {
665         debug_object_activate(work, &work_debug_descr);
666 }
667
668 static inline void debug_work_deactivate(struct work_struct *work)
669 {
670         debug_object_deactivate(work, &work_debug_descr);
671 }
672
673 void __init_work(struct work_struct *work, int onstack)
674 {
675         if (onstack)
676                 debug_object_init_on_stack(work, &work_debug_descr);
677         else
678                 debug_object_init(work, &work_debug_descr);
679 }
680 EXPORT_SYMBOL_GPL(__init_work);
681
682 void destroy_work_on_stack(struct work_struct *work)
683 {
684         debug_object_free(work, &work_debug_descr);
685 }
686 EXPORT_SYMBOL_GPL(destroy_work_on_stack);
687
688 void destroy_delayed_work_on_stack(struct delayed_work *work)
689 {
690         destroy_timer_on_stack(&work->timer);
691         debug_object_free(&work->work, &work_debug_descr);
692 }
693 EXPORT_SYMBOL_GPL(destroy_delayed_work_on_stack);
694
695 #else
696 static inline void debug_work_activate(struct work_struct *work) { }
697 static inline void debug_work_deactivate(struct work_struct *work) { }
698 #endif
699
700 /**
701  * worker_pool_assign_id - allocate ID and assign it to @pool
702  * @pool: the pool pointer of interest
703  *
704  * Returns 0 if ID in [0, WORK_OFFQ_POOL_NONE) is allocated and assigned
705  * successfully, -errno on failure.
706  */
707 static int worker_pool_assign_id(struct worker_pool *pool)
708 {
709         int ret;
710
711         lockdep_assert_held(&wq_pool_mutex);
712
713         ret = idr_alloc(&worker_pool_idr, pool, 0, WORK_OFFQ_POOL_NONE,
714                         GFP_KERNEL);
715         if (ret >= 0) {
716                 pool->id = ret;
717                 return 0;
718         }
719         return ret;
720 }
721
722 static struct pool_workqueue __rcu **
723 unbound_pwq_slot(struct workqueue_struct *wq, int cpu)
724 {
725        if (cpu >= 0)
726                return per_cpu_ptr(wq->cpu_pwq, cpu);
727        else
728                return &wq->dfl_pwq;
729 }
730
731 /* @cpu < 0 for dfl_pwq */
732 static struct pool_workqueue *unbound_pwq(struct workqueue_struct *wq, int cpu)
733 {
734         return rcu_dereference_check(*unbound_pwq_slot(wq, cpu),
735                                      lockdep_is_held(&wq_pool_mutex) ||
736                                      lockdep_is_held(&wq->mutex));
737 }
738
739 /**
740  * unbound_effective_cpumask - effective cpumask of an unbound workqueue
741  * @wq: workqueue of interest
742  *
743  * @wq->unbound_attrs->cpumask contains the cpumask requested by the user which
744  * is masked with wq_unbound_cpumask to determine the effective cpumask. The
745  * default pwq is always mapped to the pool with the current effective cpumask.
746  */
747 static struct cpumask *unbound_effective_cpumask(struct workqueue_struct *wq)
748 {
749         return unbound_pwq(wq, -1)->pool->attrs->__pod_cpumask;
750 }
751
752 static unsigned int work_color_to_flags(int color)
753 {
754         return color << WORK_STRUCT_COLOR_SHIFT;
755 }
756
757 static int get_work_color(unsigned long work_data)
758 {
759         return (work_data >> WORK_STRUCT_COLOR_SHIFT) &
760                 ((1 << WORK_STRUCT_COLOR_BITS) - 1);
761 }
762
763 static int work_next_color(int color)
764 {
765         return (color + 1) % WORK_NR_COLORS;
766 }
767
768 static unsigned long pool_offq_flags(struct worker_pool *pool)
769 {
770         return (pool->flags & POOL_BH) ? WORK_OFFQ_BH : 0;
771 }
772
773 /*
774  * While queued, %WORK_STRUCT_PWQ is set and non flag bits of a work's data
775  * contain the pointer to the queued pwq.  Once execution starts, the flag
776  * is cleared and the high bits contain OFFQ flags and pool ID.
777  *
778  * set_work_pwq(), set_work_pool_and_clear_pending() and mark_work_canceling()
779  * can be used to set the pwq, pool or clear work->data. These functions should
780  * only be called while the work is owned - ie. while the PENDING bit is set.
781  *
782  * get_work_pool() and get_work_pwq() can be used to obtain the pool or pwq
783  * corresponding to a work.  Pool is available once the work has been
784  * queued anywhere after initialization until it is sync canceled.  pwq is
785  * available only while the work item is queued.
786  */
787 static inline void set_work_data(struct work_struct *work, unsigned long data)
788 {
789         WARN_ON_ONCE(!work_pending(work));
790         atomic_long_set(&work->data, data | work_static(work));
791 }
792
793 static void set_work_pwq(struct work_struct *work, struct pool_workqueue *pwq,
794                          unsigned long flags)
795 {
796         set_work_data(work, (unsigned long)pwq | WORK_STRUCT_PENDING |
797                       WORK_STRUCT_PWQ | flags);
798 }
799
800 static void set_work_pool_and_keep_pending(struct work_struct *work,
801                                            int pool_id, unsigned long flags)
802 {
803         set_work_data(work, ((unsigned long)pool_id << WORK_OFFQ_POOL_SHIFT) |
804                       WORK_STRUCT_PENDING | flags);
805 }
806
807 static void set_work_pool_and_clear_pending(struct work_struct *work,
808                                             int pool_id, unsigned long flags)
809 {
810         /*
811          * The following wmb is paired with the implied mb in
812          * test_and_set_bit(PENDING) and ensures all updates to @work made
813          * here are visible to and precede any updates by the next PENDING
814          * owner.
815          */
816         smp_wmb();
817         set_work_data(work, ((unsigned long)pool_id << WORK_OFFQ_POOL_SHIFT) |
818                       flags);
819         /*
820          * The following mb guarantees that previous clear of a PENDING bit
821          * will not be reordered with any speculative LOADS or STORES from
822          * work->current_func, which is executed afterwards.  This possible
823          * reordering can lead to a missed execution on attempt to queue
824          * the same @work.  E.g. consider this case:
825          *
826          *   CPU#0                         CPU#1
827          *   ----------------------------  --------------------------------
828          *
829          * 1  STORE event_indicated
830          * 2  queue_work_on() {
831          * 3    test_and_set_bit(PENDING)
832          * 4 }                             set_..._and_clear_pending() {
833          * 5                                 set_work_data() # clear bit
834          * 6                                 smp_mb()
835          * 7                               work->current_func() {
836          * 8                                  LOAD event_indicated
837          *                                 }
838          *
839          * Without an explicit full barrier speculative LOAD on line 8 can
840          * be executed before CPU#0 does STORE on line 1.  If that happens,
841          * CPU#0 observes the PENDING bit is still set and new execution of
842          * a @work is not queued in a hope, that CPU#1 will eventually
843          * finish the queued @work.  Meanwhile CPU#1 does not see
844          * event_indicated is set, because speculative LOAD was executed
845          * before actual STORE.
846          */
847         smp_mb();
848 }
849
850 static inline struct pool_workqueue *work_struct_pwq(unsigned long data)
851 {
852         return (struct pool_workqueue *)(data & WORK_STRUCT_PWQ_MASK);
853 }
854
855 static struct pool_workqueue *get_work_pwq(struct work_struct *work)
856 {
857         unsigned long data = atomic_long_read(&work->data);
858
859         if (data & WORK_STRUCT_PWQ)
860                 return work_struct_pwq(data);
861         else
862                 return NULL;
863 }
864
865 /**
866  * get_work_pool - return the worker_pool a given work was associated with
867  * @work: the work item of interest
868  *
869  * Pools are created and destroyed under wq_pool_mutex, and allows read
870  * access under RCU read lock.  As such, this function should be
871  * called under wq_pool_mutex or inside of a rcu_read_lock() region.
872  *
873  * All fields of the returned pool are accessible as long as the above
874  * mentioned locking is in effect.  If the returned pool needs to be used
875  * beyond the critical section, the caller is responsible for ensuring the
876  * returned pool is and stays online.
877  *
878  * Return: The worker_pool @work was last associated with.  %NULL if none.
879  */
880 static struct worker_pool *get_work_pool(struct work_struct *work)
881 {
882         unsigned long data = atomic_long_read(&work->data);
883         int pool_id;
884
885         assert_rcu_or_pool_mutex();
886
887         if (data & WORK_STRUCT_PWQ)
888                 return work_struct_pwq(data)->pool;
889
890         pool_id = data >> WORK_OFFQ_POOL_SHIFT;
891         if (pool_id == WORK_OFFQ_POOL_NONE)
892                 return NULL;
893
894         return idr_find(&worker_pool_idr, pool_id);
895 }
896
897 static unsigned long shift_and_mask(unsigned long v, u32 shift, u32 bits)
898 {
899         return (v >> shift) & ((1 << bits) - 1);
900 }
901
902 static void work_offqd_unpack(struct work_offq_data *offqd, unsigned long data)
903 {
904         WARN_ON_ONCE(data & WORK_STRUCT_PWQ);
905
906         offqd->pool_id = shift_and_mask(data, WORK_OFFQ_POOL_SHIFT,
907                                         WORK_OFFQ_POOL_BITS);
908         offqd->disable = shift_and_mask(data, WORK_OFFQ_DISABLE_SHIFT,
909                                         WORK_OFFQ_DISABLE_BITS);
910         offqd->flags = data & WORK_OFFQ_FLAG_MASK;
911 }
912
913 static unsigned long work_offqd_pack_flags(struct work_offq_data *offqd)
914 {
915         return ((unsigned long)offqd->disable << WORK_OFFQ_DISABLE_SHIFT) |
916                 ((unsigned long)offqd->flags);
917 }
918
919 /*
920  * Policy functions.  These define the policies on how the global worker
921  * pools are managed.  Unless noted otherwise, these functions assume that
922  * they're being called with pool->lock held.
923  */
924
925 /*
926  * Need to wake up a worker?  Called from anything but currently
927  * running workers.
928  *
929  * Note that, because unbound workers never contribute to nr_running, this
930  * function will always return %true for unbound pools as long as the
931  * worklist isn't empty.
932  */
933 static bool need_more_worker(struct worker_pool *pool)
934 {
935         return !list_empty(&pool->worklist) && !pool->nr_running;
936 }
937
938 /* Can I start working?  Called from busy but !running workers. */
939 static bool may_start_working(struct worker_pool *pool)
940 {
941         return pool->nr_idle;
942 }
943
944 /* Do I need to keep working?  Called from currently running workers. */
945 static bool keep_working(struct worker_pool *pool)
946 {
947         return !list_empty(&pool->worklist) && (pool->nr_running <= 1);
948 }
949
950 /* Do we need a new worker?  Called from manager. */
951 static bool need_to_create_worker(struct worker_pool *pool)
952 {
953         return need_more_worker(pool) && !may_start_working(pool);
954 }
955
956 /* Do we have too many workers and should some go away? */
957 static bool too_many_workers(struct worker_pool *pool)
958 {
959         bool managing = pool->flags & POOL_MANAGER_ACTIVE;
960         int nr_idle = pool->nr_idle + managing; /* manager is considered idle */
961         int nr_busy = pool->nr_workers - nr_idle;
962
963         return nr_idle > 2 && (nr_idle - 2) * MAX_IDLE_WORKERS_RATIO >= nr_busy;
964 }
965
966 /**
967  * worker_set_flags - set worker flags and adjust nr_running accordingly
968  * @worker: self
969  * @flags: flags to set
970  *
971  * Set @flags in @worker->flags and adjust nr_running accordingly.
972  */
973 static inline void worker_set_flags(struct worker *worker, unsigned int flags)
974 {
975         struct worker_pool *pool = worker->pool;
976
977         lockdep_assert_held(&pool->lock);
978
979         /* If transitioning into NOT_RUNNING, adjust nr_running. */
980         if ((flags & WORKER_NOT_RUNNING) &&
981             !(worker->flags & WORKER_NOT_RUNNING)) {
982                 pool->nr_running--;
983         }
984
985         worker->flags |= flags;
986 }
987
988 /**
989  * worker_clr_flags - clear worker flags and adjust nr_running accordingly
990  * @worker: self
991  * @flags: flags to clear
992  *
993  * Clear @flags in @worker->flags and adjust nr_running accordingly.
994  */
995 static inline void worker_clr_flags(struct worker *worker, unsigned int flags)
996 {
997         struct worker_pool *pool = worker->pool;
998         unsigned int oflags = worker->flags;
999
1000         lockdep_assert_held(&pool->lock);
1001
1002         worker->flags &= ~flags;
1003
1004         /*
1005          * If transitioning out of NOT_RUNNING, increment nr_running.  Note
1006          * that the nested NOT_RUNNING is not a noop.  NOT_RUNNING is mask
1007          * of multiple flags, not a single flag.
1008          */
1009         if ((flags & WORKER_NOT_RUNNING) && (oflags & WORKER_NOT_RUNNING))
1010                 if (!(worker->flags & WORKER_NOT_RUNNING))
1011                         pool->nr_running++;
1012 }
1013
1014 /* Return the first idle worker.  Called with pool->lock held. */
1015 static struct worker *first_idle_worker(struct worker_pool *pool)
1016 {
1017         if (unlikely(list_empty(&pool->idle_list)))
1018                 return NULL;
1019
1020         return list_first_entry(&pool->idle_list, struct worker, entry);
1021 }
1022
1023 /**
1024  * worker_enter_idle - enter idle state
1025  * @worker: worker which is entering idle state
1026  *
1027  * @worker is entering idle state.  Update stats and idle timer if
1028  * necessary.
1029  *
1030  * LOCKING:
1031  * raw_spin_lock_irq(pool->lock).
1032  */
1033 static void worker_enter_idle(struct worker *worker)
1034 {
1035         struct worker_pool *pool = worker->pool;
1036
1037         if (WARN_ON_ONCE(worker->flags & WORKER_IDLE) ||
1038             WARN_ON_ONCE(!list_empty(&worker->entry) &&
1039                          (worker->hentry.next || worker->hentry.pprev)))
1040                 return;
1041
1042         /* can't use worker_set_flags(), also called from create_worker() */
1043         worker->flags |= WORKER_IDLE;
1044         pool->nr_idle++;
1045         worker->last_active = jiffies;
1046
1047         /* idle_list is LIFO */
1048         list_add(&worker->entry, &pool->idle_list);
1049
1050         if (too_many_workers(pool) && !timer_pending(&pool->idle_timer))
1051                 mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT);
1052
1053         /* Sanity check nr_running. */
1054         WARN_ON_ONCE(pool->nr_workers == pool->nr_idle && pool->nr_running);
1055 }
1056
1057 /**
1058  * worker_leave_idle - leave idle state
1059  * @worker: worker which is leaving idle state
1060  *
1061  * @worker is leaving idle state.  Update stats.
1062  *
1063  * LOCKING:
1064  * raw_spin_lock_irq(pool->lock).
1065  */
1066 static void worker_leave_idle(struct worker *worker)
1067 {
1068         struct worker_pool *pool = worker->pool;
1069
1070         if (WARN_ON_ONCE(!(worker->flags & WORKER_IDLE)))
1071                 return;
1072         worker_clr_flags(worker, WORKER_IDLE);
1073         pool->nr_idle--;
1074         list_del_init(&worker->entry);
1075 }
1076
1077 /**
1078  * find_worker_executing_work - find worker which is executing a work
1079  * @pool: pool of interest
1080  * @work: work to find worker for
1081  *
1082  * Find a worker which is executing @work on @pool by searching
1083  * @pool->busy_hash which is keyed by the address of @work.  For a worker
1084  * to match, its current execution should match the address of @work and
1085  * its work function.  This is to avoid unwanted dependency between
1086  * unrelated work executions through a work item being recycled while still
1087  * being executed.
1088  *
1089  * This is a bit tricky.  A work item may be freed once its execution
1090  * starts and nothing prevents the freed area from being recycled for
1091  * another work item.  If the same work item address ends up being reused
1092  * before the original execution finishes, workqueue will identify the
1093  * recycled work item as currently executing and make it wait until the
1094  * current execution finishes, introducing an unwanted dependency.
1095  *
1096  * This function checks the work item address and work function to avoid
1097  * false positives.  Note that this isn't complete as one may construct a
1098  * work function which can introduce dependency onto itself through a
1099  * recycled work item.  Well, if somebody wants to shoot oneself in the
1100  * foot that badly, there's only so much we can do, and if such deadlock
1101  * actually occurs, it should be easy to locate the culprit work function.
1102  *
1103  * CONTEXT:
1104  * raw_spin_lock_irq(pool->lock).
1105  *
1106  * Return:
1107  * Pointer to worker which is executing @work if found, %NULL
1108  * otherwise.
1109  */
1110 static struct worker *find_worker_executing_work(struct worker_pool *pool,
1111                                                  struct work_struct *work)
1112 {
1113         struct worker *worker;
1114
1115         hash_for_each_possible(pool->busy_hash, worker, hentry,
1116                                (unsigned long)work)
1117                 if (worker->current_work == work &&
1118                     worker->current_func == work->func)
1119                         return worker;
1120
1121         return NULL;
1122 }
1123
1124 /**
1125  * move_linked_works - move linked works to a list
1126  * @work: start of series of works to be scheduled
1127  * @head: target list to append @work to
1128  * @nextp: out parameter for nested worklist walking
1129  *
1130  * Schedule linked works starting from @work to @head. Work series to be
1131  * scheduled starts at @work and includes any consecutive work with
1132  * WORK_STRUCT_LINKED set in its predecessor. See assign_work() for details on
1133  * @nextp.
1134  *
1135  * CONTEXT:
1136  * raw_spin_lock_irq(pool->lock).
1137  */
1138 static void move_linked_works(struct work_struct *work, struct list_head *head,
1139                               struct work_struct **nextp)
1140 {
1141         struct work_struct *n;
1142
1143         /*
1144          * Linked worklist will always end before the end of the list,
1145          * use NULL for list head.
1146          */
1147         list_for_each_entry_safe_from(work, n, NULL, entry) {
1148                 list_move_tail(&work->entry, head);
1149                 if (!(*work_data_bits(work) & WORK_STRUCT_LINKED))
1150                         break;
1151         }
1152
1153         /*
1154          * If we're already inside safe list traversal and have moved
1155          * multiple works to the scheduled queue, the next position
1156          * needs to be updated.
1157          */
1158         if (nextp)
1159                 *nextp = n;
1160 }
1161
1162 /**
1163  * assign_work - assign a work item and its linked work items to a worker
1164  * @work: work to assign
1165  * @worker: worker to assign to
1166  * @nextp: out parameter for nested worklist walking
1167  *
1168  * Assign @work and its linked work items to @worker. If @work is already being
1169  * executed by another worker in the same pool, it'll be punted there.
1170  *
1171  * If @nextp is not NULL, it's updated to point to the next work of the last
1172  * scheduled work. This allows assign_work() to be nested inside
1173  * list_for_each_entry_safe().
1174  *
1175  * Returns %true if @work was successfully assigned to @worker. %false if @work
1176  * was punted to another worker already executing it.
1177  */
1178 static bool assign_work(struct work_struct *work, struct worker *worker,
1179                         struct work_struct **nextp)
1180 {
1181         struct worker_pool *pool = worker->pool;
1182         struct worker *collision;
1183
1184         lockdep_assert_held(&pool->lock);
1185
1186         /*
1187          * A single work shouldn't be executed concurrently by multiple workers.
1188          * __queue_work() ensures that @work doesn't jump to a different pool
1189          * while still running in the previous pool. Here, we should ensure that
1190          * @work is not executed concurrently by multiple workers from the same
1191          * pool. Check whether anyone is already processing the work. If so,
1192          * defer the work to the currently executing one.
1193          */
1194         collision = find_worker_executing_work(pool, work);
1195         if (unlikely(collision)) {
1196                 move_linked_works(work, &collision->scheduled, nextp);
1197                 return false;
1198         }
1199
1200         move_linked_works(work, &worker->scheduled, nextp);
1201         return true;
1202 }
1203
1204 static struct irq_work *bh_pool_irq_work(struct worker_pool *pool)
1205 {
1206         int high = pool->attrs->nice == HIGHPRI_NICE_LEVEL ? 1 : 0;
1207
1208         return &per_cpu(bh_pool_irq_works, pool->cpu)[high];
1209 }
1210
1211 static void kick_bh_pool(struct worker_pool *pool)
1212 {
1213 #ifdef CONFIG_SMP
1214         /* see drain_dead_softirq_workfn() for BH_DRAINING */
1215         if (unlikely(pool->cpu != smp_processor_id() &&
1216                      !(pool->flags & POOL_BH_DRAINING))) {
1217                 irq_work_queue_on(bh_pool_irq_work(pool), pool->cpu);
1218                 return;
1219         }
1220 #endif
1221         if (pool->attrs->nice == HIGHPRI_NICE_LEVEL)
1222                 raise_softirq_irqoff(HI_SOFTIRQ);
1223         else
1224                 raise_softirq_irqoff(TASKLET_SOFTIRQ);
1225 }
1226
1227 /**
1228  * kick_pool - wake up an idle worker if necessary
1229  * @pool: pool to kick
1230  *
1231  * @pool may have pending work items. Wake up worker if necessary. Returns
1232  * whether a worker was woken up.
1233  */
1234 static bool kick_pool(struct worker_pool *pool)
1235 {
1236         struct worker *worker = first_idle_worker(pool);
1237         struct task_struct *p;
1238
1239         lockdep_assert_held(&pool->lock);
1240
1241         if (!need_more_worker(pool) || !worker)
1242                 return false;
1243
1244         if (pool->flags & POOL_BH) {
1245                 kick_bh_pool(pool);
1246                 return true;
1247         }
1248
1249         p = worker->task;
1250
1251 #ifdef CONFIG_SMP
1252         /*
1253          * Idle @worker is about to execute @work and waking up provides an
1254          * opportunity to migrate @worker at a lower cost by setting the task's
1255          * wake_cpu field. Let's see if we want to move @worker to improve
1256          * execution locality.
1257          *
1258          * We're waking the worker that went idle the latest and there's some
1259          * chance that @worker is marked idle but hasn't gone off CPU yet. If
1260          * so, setting the wake_cpu won't do anything. As this is a best-effort
1261          * optimization and the race window is narrow, let's leave as-is for
1262          * now. If this becomes pronounced, we can skip over workers which are
1263          * still on cpu when picking an idle worker.
1264          *
1265          * If @pool has non-strict affinity, @worker might have ended up outside
1266          * its affinity scope. Repatriate.
1267          */
1268         if (!pool->attrs->affn_strict &&
1269             !cpumask_test_cpu(p->wake_cpu, pool->attrs->__pod_cpumask)) {
1270                 struct work_struct *work = list_first_entry(&pool->worklist,
1271                                                 struct work_struct, entry);
1272                 int wake_cpu = cpumask_any_and_distribute(pool->attrs->__pod_cpumask,
1273                                                           cpu_online_mask);
1274                 if (wake_cpu < nr_cpu_ids) {
1275                         p->wake_cpu = wake_cpu;
1276                         get_work_pwq(work)->stats[PWQ_STAT_REPATRIATED]++;
1277                 }
1278         }
1279 #endif
1280         wake_up_process(p);
1281         return true;
1282 }
1283
1284 #ifdef CONFIG_WQ_CPU_INTENSIVE_REPORT
1285
1286 /*
1287  * Concurrency-managed per-cpu work items that hog CPU for longer than
1288  * wq_cpu_intensive_thresh_us trigger the automatic CPU_INTENSIVE mechanism,
1289  * which prevents them from stalling other concurrency-managed work items. If a
1290  * work function keeps triggering this mechanism, it's likely that the work item
1291  * should be using an unbound workqueue instead.
1292  *
1293  * wq_cpu_intensive_report() tracks work functions which trigger such conditions
1294  * and report them so that they can be examined and converted to use unbound
1295  * workqueues as appropriate. To avoid flooding the console, each violating work
1296  * function is tracked and reported with exponential backoff.
1297  */
1298 #define WCI_MAX_ENTS 128
1299
1300 struct wci_ent {
1301         work_func_t             func;
1302         atomic64_t              cnt;
1303         struct hlist_node       hash_node;
1304 };
1305
1306 static struct wci_ent wci_ents[WCI_MAX_ENTS];
1307 static int wci_nr_ents;
1308 static DEFINE_RAW_SPINLOCK(wci_lock);
1309 static DEFINE_HASHTABLE(wci_hash, ilog2(WCI_MAX_ENTS));
1310
1311 static struct wci_ent *wci_find_ent(work_func_t func)
1312 {
1313         struct wci_ent *ent;
1314
1315         hash_for_each_possible_rcu(wci_hash, ent, hash_node,
1316                                    (unsigned long)func) {
1317                 if (ent->func == func)
1318                         return ent;
1319         }
1320         return NULL;
1321 }
1322
1323 static void wq_cpu_intensive_report(work_func_t func)
1324 {
1325         struct wci_ent *ent;
1326
1327 restart:
1328         ent = wci_find_ent(func);
1329         if (ent) {
1330                 u64 cnt;
1331
1332                 /*
1333                  * Start reporting from the warning_thresh and back off
1334                  * exponentially.
1335                  */
1336                 cnt = atomic64_inc_return_relaxed(&ent->cnt);
1337                 if (wq_cpu_intensive_warning_thresh &&
1338                     cnt >= wq_cpu_intensive_warning_thresh &&
1339                     is_power_of_2(cnt + 1 - wq_cpu_intensive_warning_thresh))
1340                         printk_deferred(KERN_WARNING "workqueue: %ps hogged CPU for >%luus %llu times, consider switching to WQ_UNBOUND\n",
1341                                         ent->func, wq_cpu_intensive_thresh_us,
1342                                         atomic64_read(&ent->cnt));
1343                 return;
1344         }
1345
1346         /*
1347          * @func is a new violation. Allocate a new entry for it. If wcn_ents[]
1348          * is exhausted, something went really wrong and we probably made enough
1349          * noise already.
1350          */
1351         if (wci_nr_ents >= WCI_MAX_ENTS)
1352                 return;
1353
1354         raw_spin_lock(&wci_lock);
1355
1356         if (wci_nr_ents >= WCI_MAX_ENTS) {
1357                 raw_spin_unlock(&wci_lock);
1358                 return;
1359         }
1360
1361         if (wci_find_ent(func)) {
1362                 raw_spin_unlock(&wci_lock);
1363                 goto restart;
1364         }
1365
1366         ent = &wci_ents[wci_nr_ents++];
1367         ent->func = func;
1368         atomic64_set(&ent->cnt, 0);
1369         hash_add_rcu(wci_hash, &ent->hash_node, (unsigned long)func);
1370
1371         raw_spin_unlock(&wci_lock);
1372
1373         goto restart;
1374 }
1375
1376 #else   /* CONFIG_WQ_CPU_INTENSIVE_REPORT */
1377 static void wq_cpu_intensive_report(work_func_t func) {}
1378 #endif  /* CONFIG_WQ_CPU_INTENSIVE_REPORT */
1379
1380 /**
1381  * wq_worker_running - a worker is running again
1382  * @task: task waking up
1383  *
1384  * This function is called when a worker returns from schedule()
1385  */
1386 void wq_worker_running(struct task_struct *task)
1387 {
1388         struct worker *worker = kthread_data(task);
1389
1390         if (!READ_ONCE(worker->sleeping))
1391                 return;
1392
1393         /*
1394          * If preempted by unbind_workers() between the WORKER_NOT_RUNNING check
1395          * and the nr_running increment below, we may ruin the nr_running reset
1396          * and leave with an unexpected pool->nr_running == 1 on the newly unbound
1397          * pool. Protect against such race.
1398          */
1399         preempt_disable();
1400         if (!(worker->flags & WORKER_NOT_RUNNING))
1401                 worker->pool->nr_running++;
1402         preempt_enable();
1403
1404         /*
1405          * CPU intensive auto-detection cares about how long a work item hogged
1406          * CPU without sleeping. Reset the starting timestamp on wakeup.
1407          */
1408         worker->current_at = worker->task->se.sum_exec_runtime;
1409
1410         WRITE_ONCE(worker->sleeping, 0);
1411 }
1412
1413 /**
1414  * wq_worker_sleeping - a worker is going to sleep
1415  * @task: task going to sleep
1416  *
1417  * This function is called from schedule() when a busy worker is
1418  * going to sleep.
1419  */
1420 void wq_worker_sleeping(struct task_struct *task)
1421 {
1422         struct worker *worker = kthread_data(task);
1423         struct worker_pool *pool;
1424
1425         /*
1426          * Rescuers, which may not have all the fields set up like normal
1427          * workers, also reach here, let's not access anything before
1428          * checking NOT_RUNNING.
1429          */
1430         if (worker->flags & WORKER_NOT_RUNNING)
1431                 return;
1432
1433         pool = worker->pool;
1434
1435         /* Return if preempted before wq_worker_running() was reached */
1436         if (READ_ONCE(worker->sleeping))
1437                 return;
1438
1439         WRITE_ONCE(worker->sleeping, 1);
1440         raw_spin_lock_irq(&pool->lock);
1441
1442         /*
1443          * Recheck in case unbind_workers() preempted us. We don't
1444          * want to decrement nr_running after the worker is unbound
1445          * and nr_running has been reset.
1446          */
1447         if (worker->flags & WORKER_NOT_RUNNING) {
1448                 raw_spin_unlock_irq(&pool->lock);
1449                 return;
1450         }
1451
1452         pool->nr_running--;
1453         if (kick_pool(pool))
1454                 worker->current_pwq->stats[PWQ_STAT_CM_WAKEUP]++;
1455
1456         raw_spin_unlock_irq(&pool->lock);
1457 }
1458
1459 /**
1460  * wq_worker_tick - a scheduler tick occurred while a kworker is running
1461  * @task: task currently running
1462  *
1463  * Called from sched_tick(). We're in the IRQ context and the current
1464  * worker's fields which follow the 'K' locking rule can be accessed safely.
1465  */
1466 void wq_worker_tick(struct task_struct *task)
1467 {
1468         struct worker *worker = kthread_data(task);
1469         struct pool_workqueue *pwq = worker->current_pwq;
1470         struct worker_pool *pool = worker->pool;
1471
1472         if (!pwq)
1473                 return;
1474
1475         pwq->stats[PWQ_STAT_CPU_TIME] += TICK_USEC;
1476
1477         if (!wq_cpu_intensive_thresh_us)
1478                 return;
1479
1480         /*
1481          * If the current worker is concurrency managed and hogged the CPU for
1482          * longer than wq_cpu_intensive_thresh_us, it's automatically marked
1483          * CPU_INTENSIVE to avoid stalling other concurrency-managed work items.
1484          *
1485          * Set @worker->sleeping means that @worker is in the process of
1486          * switching out voluntarily and won't be contributing to
1487          * @pool->nr_running until it wakes up. As wq_worker_sleeping() also
1488          * decrements ->nr_running, setting CPU_INTENSIVE here can lead to
1489          * double decrements. The task is releasing the CPU anyway. Let's skip.
1490          * We probably want to make this prettier in the future.
1491          */
1492         if ((worker->flags & WORKER_NOT_RUNNING) || READ_ONCE(worker->sleeping) ||
1493             worker->task->se.sum_exec_runtime - worker->current_at <
1494             wq_cpu_intensive_thresh_us * NSEC_PER_USEC)
1495                 return;
1496
1497         raw_spin_lock(&pool->lock);
1498
1499         worker_set_flags(worker, WORKER_CPU_INTENSIVE);
1500         wq_cpu_intensive_report(worker->current_func);
1501         pwq->stats[PWQ_STAT_CPU_INTENSIVE]++;
1502
1503         if (kick_pool(pool))
1504                 pwq->stats[PWQ_STAT_CM_WAKEUP]++;
1505
1506         raw_spin_unlock(&pool->lock);
1507 }
1508
1509 /**
1510  * wq_worker_last_func - retrieve worker's last work function
1511  * @task: Task to retrieve last work function of.
1512  *
1513  * Determine the last function a worker executed. This is called from
1514  * the scheduler to get a worker's last known identity.
1515  *
1516  * CONTEXT:
1517  * raw_spin_lock_irq(rq->lock)
1518  *
1519  * This function is called during schedule() when a kworker is going
1520  * to sleep. It's used by psi to identify aggregation workers during
1521  * dequeuing, to allow periodic aggregation to shut-off when that
1522  * worker is the last task in the system or cgroup to go to sleep.
1523  *
1524  * As this function doesn't involve any workqueue-related locking, it
1525  * only returns stable values when called from inside the scheduler's
1526  * queuing and dequeuing paths, when @task, which must be a kworker,
1527  * is guaranteed to not be processing any works.
1528  *
1529  * Return:
1530  * The last work function %current executed as a worker, NULL if it
1531  * hasn't executed any work yet.
1532  */
1533 work_func_t wq_worker_last_func(struct task_struct *task)
1534 {
1535         struct worker *worker = kthread_data(task);
1536
1537         return worker->last_func;
1538 }
1539
1540 /**
1541  * wq_node_nr_active - Determine wq_node_nr_active to use
1542  * @wq: workqueue of interest
1543  * @node: NUMA node, can be %NUMA_NO_NODE
1544  *
1545  * Determine wq_node_nr_active to use for @wq on @node. Returns:
1546  *
1547  * - %NULL for per-cpu workqueues as they don't need to use shared nr_active.
1548  *
1549  * - node_nr_active[nr_node_ids] if @node is %NUMA_NO_NODE.
1550  *
1551  * - Otherwise, node_nr_active[@node].
1552  */
1553 static struct wq_node_nr_active *wq_node_nr_active(struct workqueue_struct *wq,
1554                                                    int node)
1555 {
1556         if (!(wq->flags & WQ_UNBOUND))
1557                 return NULL;
1558
1559         if (node == NUMA_NO_NODE)
1560                 node = nr_node_ids;
1561
1562         return wq->node_nr_active[node];
1563 }
1564
1565 /**
1566  * wq_update_node_max_active - Update per-node max_actives to use
1567  * @wq: workqueue to update
1568  * @off_cpu: CPU that's going down, -1 if a CPU is not going down
1569  *
1570  * Update @wq->node_nr_active[]->max. @wq must be unbound. max_active is
1571  * distributed among nodes according to the proportions of numbers of online
1572  * cpus. The result is always between @wq->min_active and max_active.
1573  */
1574 static void wq_update_node_max_active(struct workqueue_struct *wq, int off_cpu)
1575 {
1576         struct cpumask *effective = unbound_effective_cpumask(wq);
1577         int min_active = READ_ONCE(wq->min_active);
1578         int max_active = READ_ONCE(wq->max_active);
1579         int total_cpus, node;
1580
1581         lockdep_assert_held(&wq->mutex);
1582
1583         if (!wq_topo_initialized)
1584                 return;
1585
1586         if (off_cpu >= 0 && !cpumask_test_cpu(off_cpu, effective))
1587                 off_cpu = -1;
1588
1589         total_cpus = cpumask_weight_and(effective, cpu_online_mask);
1590         if (off_cpu >= 0)
1591                 total_cpus--;
1592
1593         /* If all CPUs of the wq get offline, use the default values */
1594         if (unlikely(!total_cpus)) {
1595                 for_each_node(node)
1596                         wq_node_nr_active(wq, node)->max = min_active;
1597
1598                 wq_node_nr_active(wq, NUMA_NO_NODE)->max = max_active;
1599                 return;
1600         }
1601
1602         for_each_node(node) {
1603                 int node_cpus;
1604
1605                 node_cpus = cpumask_weight_and(effective, cpumask_of_node(node));
1606                 if (off_cpu >= 0 && cpu_to_node(off_cpu) == node)
1607                         node_cpus--;
1608
1609                 wq_node_nr_active(wq, node)->max =
1610                         clamp(DIV_ROUND_UP(max_active * node_cpus, total_cpus),
1611                               min_active, max_active);
1612         }
1613
1614         wq_node_nr_active(wq, NUMA_NO_NODE)->max = max_active;
1615 }
1616
1617 /**
1618  * get_pwq - get an extra reference on the specified pool_workqueue
1619  * @pwq: pool_workqueue to get
1620  *
1621  * Obtain an extra reference on @pwq.  The caller should guarantee that
1622  * @pwq has positive refcnt and be holding the matching pool->lock.
1623  */
1624 static void get_pwq(struct pool_workqueue *pwq)
1625 {
1626         lockdep_assert_held(&pwq->pool->lock);
1627         WARN_ON_ONCE(pwq->refcnt <= 0);
1628         pwq->refcnt++;
1629 }
1630
1631 /**
1632  * put_pwq - put a pool_workqueue reference
1633  * @pwq: pool_workqueue to put
1634  *
1635  * Drop a reference of @pwq.  If its refcnt reaches zero, schedule its
1636  * destruction.  The caller should be holding the matching pool->lock.
1637  */
1638 static void put_pwq(struct pool_workqueue *pwq)
1639 {
1640         lockdep_assert_held(&pwq->pool->lock);
1641         if (likely(--pwq->refcnt))
1642                 return;
1643         /*
1644          * @pwq can't be released under pool->lock, bounce to a dedicated
1645          * kthread_worker to avoid A-A deadlocks.
1646          */
1647         kthread_queue_work(pwq_release_worker, &pwq->release_work);
1648 }
1649
1650 /**
1651  * put_pwq_unlocked - put_pwq() with surrounding pool lock/unlock
1652  * @pwq: pool_workqueue to put (can be %NULL)
1653  *
1654  * put_pwq() with locking.  This function also allows %NULL @pwq.
1655  */
1656 static void put_pwq_unlocked(struct pool_workqueue *pwq)
1657 {
1658         if (pwq) {
1659                 /*
1660                  * As both pwqs and pools are RCU protected, the
1661                  * following lock operations are safe.
1662                  */
1663                 raw_spin_lock_irq(&pwq->pool->lock);
1664                 put_pwq(pwq);
1665                 raw_spin_unlock_irq(&pwq->pool->lock);
1666         }
1667 }
1668
1669 static bool pwq_is_empty(struct pool_workqueue *pwq)
1670 {
1671         return !pwq->nr_active && list_empty(&pwq->inactive_works);
1672 }
1673
1674 static void __pwq_activate_work(struct pool_workqueue *pwq,
1675                                 struct work_struct *work)
1676 {
1677         unsigned long *wdb = work_data_bits(work);
1678
1679         WARN_ON_ONCE(!(*wdb & WORK_STRUCT_INACTIVE));
1680         trace_workqueue_activate_work(work);
1681         if (list_empty(&pwq->pool->worklist))
1682                 pwq->pool->watchdog_ts = jiffies;
1683         move_linked_works(work, &pwq->pool->worklist, NULL);
1684         __clear_bit(WORK_STRUCT_INACTIVE_BIT, wdb);
1685 }
1686
1687 static bool tryinc_node_nr_active(struct wq_node_nr_active *nna)
1688 {
1689         int max = READ_ONCE(nna->max);
1690
1691         while (true) {
1692                 int old, tmp;
1693
1694                 old = atomic_read(&nna->nr);
1695                 if (old >= max)
1696                         return false;
1697                 tmp = atomic_cmpxchg_relaxed(&nna->nr, old, old + 1);
1698                 if (tmp == old)
1699                         return true;
1700         }
1701 }
1702
1703 /**
1704  * pwq_tryinc_nr_active - Try to increment nr_active for a pwq
1705  * @pwq: pool_workqueue of interest
1706  * @fill: max_active may have increased, try to increase concurrency level
1707  *
1708  * Try to increment nr_active for @pwq. Returns %true if an nr_active count is
1709  * successfully obtained. %false otherwise.
1710  */
1711 static bool pwq_tryinc_nr_active(struct pool_workqueue *pwq, bool fill)
1712 {
1713         struct workqueue_struct *wq = pwq->wq;
1714         struct worker_pool *pool = pwq->pool;
1715         struct wq_node_nr_active *nna = wq_node_nr_active(wq, pool->node);
1716         bool obtained = false;
1717
1718         lockdep_assert_held(&pool->lock);
1719
1720         if (!nna) {
1721                 /* BH or per-cpu workqueue, pwq->nr_active is sufficient */
1722                 obtained = pwq->nr_active < READ_ONCE(wq->max_active);
1723                 goto out;
1724         }
1725
1726         if (unlikely(pwq->plugged))
1727                 return false;
1728
1729         /*
1730          * Unbound workqueue uses per-node shared nr_active $nna. If @pwq is
1731          * already waiting on $nna, pwq_dec_nr_active() will maintain the
1732          * concurrency level. Don't jump the line.
1733          *
1734          * We need to ignore the pending test after max_active has increased as
1735          * pwq_dec_nr_active() can only maintain the concurrency level but not
1736          * increase it. This is indicated by @fill.
1737          */
1738         if (!list_empty(&pwq->pending_node) && likely(!fill))
1739                 goto out;
1740
1741         obtained = tryinc_node_nr_active(nna);
1742         if (obtained)
1743                 goto out;
1744
1745         /*
1746          * Lockless acquisition failed. Lock, add ourself to $nna->pending_pwqs
1747          * and try again. The smp_mb() is paired with the implied memory barrier
1748          * of atomic_dec_return() in pwq_dec_nr_active() to ensure that either
1749          * we see the decremented $nna->nr or they see non-empty
1750          * $nna->pending_pwqs.
1751          */
1752         raw_spin_lock(&nna->lock);
1753
1754         if (list_empty(&pwq->pending_node))
1755                 list_add_tail(&pwq->pending_node, &nna->pending_pwqs);
1756         else if (likely(!fill))
1757                 goto out_unlock;
1758
1759         smp_mb();
1760
1761         obtained = tryinc_node_nr_active(nna);
1762
1763         /*
1764          * If @fill, @pwq might have already been pending. Being spuriously
1765          * pending in cold paths doesn't affect anything. Let's leave it be.
1766          */
1767         if (obtained && likely(!fill))
1768                 list_del_init(&pwq->pending_node);
1769
1770 out_unlock:
1771         raw_spin_unlock(&nna->lock);
1772 out:
1773         if (obtained)
1774                 pwq->nr_active++;
1775         return obtained;
1776 }
1777
1778 /**
1779  * pwq_activate_first_inactive - Activate the first inactive work item on a pwq
1780  * @pwq: pool_workqueue of interest
1781  * @fill: max_active may have increased, try to increase concurrency level
1782  *
1783  * Activate the first inactive work item of @pwq if available and allowed by
1784  * max_active limit.
1785  *
1786  * Returns %true if an inactive work item has been activated. %false if no
1787  * inactive work item is found or max_active limit is reached.
1788  */
1789 static bool pwq_activate_first_inactive(struct pool_workqueue *pwq, bool fill)
1790 {
1791         struct work_struct *work =
1792                 list_first_entry_or_null(&pwq->inactive_works,
1793                                          struct work_struct, entry);
1794
1795         if (work && pwq_tryinc_nr_active(pwq, fill)) {
1796                 __pwq_activate_work(pwq, work);
1797                 return true;
1798         } else {
1799                 return false;
1800         }
1801 }
1802
1803 /**
1804  * unplug_oldest_pwq - unplug the oldest pool_workqueue
1805  * @wq: workqueue_struct where its oldest pwq is to be unplugged
1806  *
1807  * This function should only be called for ordered workqueues where only the
1808  * oldest pwq is unplugged, the others are plugged to suspend execution to
1809  * ensure proper work item ordering::
1810  *
1811  *    dfl_pwq --------------+     [P] - plugged
1812  *                          |
1813  *                          v
1814  *    pwqs -> A -> B [P] -> C [P] (newest)
1815  *            |    |        |
1816  *            1    3        5
1817  *            |    |        |
1818  *            2    4        6
1819  *
1820  * When the oldest pwq is drained and removed, this function should be called
1821  * to unplug the next oldest one to start its work item execution. Note that
1822  * pwq's are linked into wq->pwqs with the oldest first, so the first one in
1823  * the list is the oldest.
1824  */
1825 static void unplug_oldest_pwq(struct workqueue_struct *wq)
1826 {
1827         struct pool_workqueue *pwq;
1828
1829         lockdep_assert_held(&wq->mutex);
1830
1831         /* Caller should make sure that pwqs isn't empty before calling */
1832         pwq = list_first_entry_or_null(&wq->pwqs, struct pool_workqueue,
1833                                        pwqs_node);
1834         raw_spin_lock_irq(&pwq->pool->lock);
1835         if (pwq->plugged) {
1836                 pwq->plugged = false;
1837                 if (pwq_activate_first_inactive(pwq, true))
1838                         kick_pool(pwq->pool);
1839         }
1840         raw_spin_unlock_irq(&pwq->pool->lock);
1841 }
1842
1843 /**
1844  * node_activate_pending_pwq - Activate a pending pwq on a wq_node_nr_active
1845  * @nna: wq_node_nr_active to activate a pending pwq for
1846  * @caller_pool: worker_pool the caller is locking
1847  *
1848  * Activate a pwq in @nna->pending_pwqs. Called with @caller_pool locked.
1849  * @caller_pool may be unlocked and relocked to lock other worker_pools.
1850  */
1851 static void node_activate_pending_pwq(struct wq_node_nr_active *nna,
1852                                       struct worker_pool *caller_pool)
1853 {
1854         struct worker_pool *locked_pool = caller_pool;
1855         struct pool_workqueue *pwq;
1856         struct work_struct *work;
1857
1858         lockdep_assert_held(&caller_pool->lock);
1859
1860         raw_spin_lock(&nna->lock);
1861 retry:
1862         pwq = list_first_entry_or_null(&nna->pending_pwqs,
1863                                        struct pool_workqueue, pending_node);
1864         if (!pwq)
1865                 goto out_unlock;
1866
1867         /*
1868          * If @pwq is for a different pool than @locked_pool, we need to lock
1869          * @pwq->pool->lock. Let's trylock first. If unsuccessful, do the unlock
1870          * / lock dance. For that, we also need to release @nna->lock as it's
1871          * nested inside pool locks.
1872          */
1873         if (pwq->pool != locked_pool) {
1874                 raw_spin_unlock(&locked_pool->lock);
1875                 locked_pool = pwq->pool;
1876                 if (!raw_spin_trylock(&locked_pool->lock)) {
1877                         raw_spin_unlock(&nna->lock);
1878                         raw_spin_lock(&locked_pool->lock);
1879                         raw_spin_lock(&nna->lock);
1880                         goto retry;
1881                 }
1882         }
1883
1884         /*
1885          * $pwq may not have any inactive work items due to e.g. cancellations.
1886          * Drop it from pending_pwqs and see if there's another one.
1887          */
1888         work = list_first_entry_or_null(&pwq->inactive_works,
1889                                         struct work_struct, entry);
1890         if (!work) {
1891                 list_del_init(&pwq->pending_node);
1892                 goto retry;
1893         }
1894
1895         /*
1896          * Acquire an nr_active count and activate the inactive work item. If
1897          * $pwq still has inactive work items, rotate it to the end of the
1898          * pending_pwqs so that we round-robin through them. This means that
1899          * inactive work items are not activated in queueing order which is fine
1900          * given that there has never been any ordering across different pwqs.
1901          */
1902         if (likely(tryinc_node_nr_active(nna))) {
1903                 pwq->nr_active++;
1904                 __pwq_activate_work(pwq, work);
1905
1906                 if (list_empty(&pwq->inactive_works))
1907                         list_del_init(&pwq->pending_node);
1908                 else
1909                         list_move_tail(&pwq->pending_node, &nna->pending_pwqs);
1910
1911                 /* if activating a foreign pool, make sure it's running */
1912                 if (pwq->pool != caller_pool)
1913                         kick_pool(pwq->pool);
1914         }
1915
1916 out_unlock:
1917         raw_spin_unlock(&nna->lock);
1918         if (locked_pool != caller_pool) {
1919                 raw_spin_unlock(&locked_pool->lock);
1920                 raw_spin_lock(&caller_pool->lock);
1921         }
1922 }
1923
1924 /**
1925  * pwq_dec_nr_active - Retire an active count
1926  * @pwq: pool_workqueue of interest
1927  *
1928  * Decrement @pwq's nr_active and try to activate the first inactive work item.
1929  * For unbound workqueues, this function may temporarily drop @pwq->pool->lock.
1930  */
1931 static void pwq_dec_nr_active(struct pool_workqueue *pwq)
1932 {
1933         struct worker_pool *pool = pwq->pool;
1934         struct wq_node_nr_active *nna = wq_node_nr_active(pwq->wq, pool->node);
1935
1936         lockdep_assert_held(&pool->lock);
1937
1938         /*
1939          * @pwq->nr_active should be decremented for both percpu and unbound
1940          * workqueues.
1941          */
1942         pwq->nr_active--;
1943
1944         /*
1945          * For a percpu workqueue, it's simple. Just need to kick the first
1946          * inactive work item on @pwq itself.
1947          */
1948         if (!nna) {
1949                 pwq_activate_first_inactive(pwq, false);
1950                 return;
1951         }
1952
1953         /*
1954          * If @pwq is for an unbound workqueue, it's more complicated because
1955          * multiple pwqs and pools may be sharing the nr_active count. When a
1956          * pwq needs to wait for an nr_active count, it puts itself on
1957          * $nna->pending_pwqs. The following atomic_dec_return()'s implied
1958          * memory barrier is paired with smp_mb() in pwq_tryinc_nr_active() to
1959          * guarantee that either we see non-empty pending_pwqs or they see
1960          * decremented $nna->nr.
1961          *
1962          * $nna->max may change as CPUs come online/offline and @pwq->wq's
1963          * max_active gets updated. However, it is guaranteed to be equal to or
1964          * larger than @pwq->wq->min_active which is above zero unless freezing.
1965          * This maintains the forward progress guarantee.
1966          */
1967         if (atomic_dec_return(&nna->nr) >= READ_ONCE(nna->max))
1968                 return;
1969
1970         if (!list_empty(&nna->pending_pwqs))
1971                 node_activate_pending_pwq(nna, pool);
1972 }
1973
1974 /**
1975  * pwq_dec_nr_in_flight - decrement pwq's nr_in_flight
1976  * @pwq: pwq of interest
1977  * @work_data: work_data of work which left the queue
1978  *
1979  * A work either has completed or is removed from pending queue,
1980  * decrement nr_in_flight of its pwq and handle workqueue flushing.
1981  *
1982  * NOTE:
1983  * For unbound workqueues, this function may temporarily drop @pwq->pool->lock
1984  * and thus should be called after all other state updates for the in-flight
1985  * work item is complete.
1986  *
1987  * CONTEXT:
1988  * raw_spin_lock_irq(pool->lock).
1989  */
1990 static void pwq_dec_nr_in_flight(struct pool_workqueue *pwq, unsigned long work_data)
1991 {
1992         int color = get_work_color(work_data);
1993
1994         if (!(work_data & WORK_STRUCT_INACTIVE))
1995                 pwq_dec_nr_active(pwq);
1996
1997         pwq->nr_in_flight[color]--;
1998
1999         /* is flush in progress and are we at the flushing tip? */
2000         if (likely(pwq->flush_color != color))
2001                 goto out_put;
2002
2003         /* are there still in-flight works? */
2004         if (pwq->nr_in_flight[color])
2005                 goto out_put;
2006
2007         /* this pwq is done, clear flush_color */
2008         pwq->flush_color = -1;
2009
2010         /*
2011          * If this was the last pwq, wake up the first flusher.  It
2012          * will handle the rest.
2013          */
2014         if (atomic_dec_and_test(&pwq->wq->nr_pwqs_to_flush))
2015                 complete(&pwq->wq->first_flusher->done);
2016 out_put:
2017         put_pwq(pwq);
2018 }
2019
2020 /**
2021  * try_to_grab_pending - steal work item from worklist and disable irq
2022  * @work: work item to steal
2023  * @cflags: %WORK_CANCEL_ flags
2024  * @irq_flags: place to store irq state
2025  *
2026  * Try to grab PENDING bit of @work.  This function can handle @work in any
2027  * stable state - idle, on timer or on worklist.
2028  *
2029  * Return:
2030  *
2031  *  ========    ================================================================
2032  *  1           if @work was pending and we successfully stole PENDING
2033  *  0           if @work was idle and we claimed PENDING
2034  *  -EAGAIN     if PENDING couldn't be grabbed at the moment, safe to busy-retry
2035  *  ========    ================================================================
2036  *
2037  * Note:
2038  * On >= 0 return, the caller owns @work's PENDING bit.  To avoid getting
2039  * interrupted while holding PENDING and @work off queue, irq must be
2040  * disabled on entry.  This, combined with delayed_work->timer being
2041  * irqsafe, ensures that we return -EAGAIN for finite short period of time.
2042  *
2043  * On successful return, >= 0, irq is disabled and the caller is
2044  * responsible for releasing it using local_irq_restore(*@irq_flags).
2045  *
2046  * This function is safe to call from any context including IRQ handler.
2047  */
2048 static int try_to_grab_pending(struct work_struct *work, u32 cflags,
2049                                unsigned long *irq_flags)
2050 {
2051         struct worker_pool *pool;
2052         struct pool_workqueue *pwq;
2053
2054         local_irq_save(*irq_flags);
2055
2056         /* try to steal the timer if it exists */
2057         if (cflags & WORK_CANCEL_DELAYED) {
2058                 struct delayed_work *dwork = to_delayed_work(work);
2059
2060                 /*
2061                  * dwork->timer is irqsafe.  If del_timer() fails, it's
2062                  * guaranteed that the timer is not queued anywhere and not
2063                  * running on the local CPU.
2064                  */
2065                 if (likely(del_timer(&dwork->timer)))
2066                         return 1;
2067         }
2068
2069         /* try to claim PENDING the normal way */
2070         if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work)))
2071                 return 0;
2072
2073         rcu_read_lock();
2074         /*
2075          * The queueing is in progress, or it is already queued. Try to
2076          * steal it from ->worklist without clearing WORK_STRUCT_PENDING.
2077          */
2078         pool = get_work_pool(work);
2079         if (!pool)
2080                 goto fail;
2081
2082         raw_spin_lock(&pool->lock);
2083         /*
2084          * work->data is guaranteed to point to pwq only while the work
2085          * item is queued on pwq->wq, and both updating work->data to point
2086          * to pwq on queueing and to pool on dequeueing are done under
2087          * pwq->pool->lock.  This in turn guarantees that, if work->data
2088          * points to pwq which is associated with a locked pool, the work
2089          * item is currently queued on that pool.
2090          */
2091         pwq = get_work_pwq(work);
2092         if (pwq && pwq->pool == pool) {
2093                 unsigned long work_data = *work_data_bits(work);
2094
2095                 debug_work_deactivate(work);
2096
2097                 /*
2098                  * A cancelable inactive work item must be in the
2099                  * pwq->inactive_works since a queued barrier can't be
2100                  * canceled (see the comments in insert_wq_barrier()).
2101                  *
2102                  * An inactive work item cannot be deleted directly because
2103                  * it might have linked barrier work items which, if left
2104                  * on the inactive_works list, will confuse pwq->nr_active
2105                  * management later on and cause stall.  Move the linked
2106                  * barrier work items to the worklist when deleting the grabbed
2107                  * item. Also keep WORK_STRUCT_INACTIVE in work_data, so that
2108                  * it doesn't participate in nr_active management in later
2109                  * pwq_dec_nr_in_flight().
2110                  */
2111                 if (work_data & WORK_STRUCT_INACTIVE)
2112                         move_linked_works(work, &pwq->pool->worklist, NULL);
2113
2114                 list_del_init(&work->entry);
2115
2116                 /*
2117                  * work->data points to pwq iff queued. Let's point to pool. As
2118                  * this destroys work->data needed by the next step, stash it.
2119                  */
2120                 set_work_pool_and_keep_pending(work, pool->id,
2121                                                pool_offq_flags(pool));
2122
2123                 /* must be the last step, see the function comment */
2124                 pwq_dec_nr_in_flight(pwq, work_data);
2125
2126                 raw_spin_unlock(&pool->lock);
2127                 rcu_read_unlock();
2128                 return 1;
2129         }
2130         raw_spin_unlock(&pool->lock);
2131 fail:
2132         rcu_read_unlock();
2133         local_irq_restore(*irq_flags);
2134         return -EAGAIN;
2135 }
2136
2137 /**
2138  * work_grab_pending - steal work item from worklist and disable irq
2139  * @work: work item to steal
2140  * @cflags: %WORK_CANCEL_ flags
2141  * @irq_flags: place to store IRQ state
2142  *
2143  * Grab PENDING bit of @work. @work can be in any stable state - idle, on timer
2144  * or on worklist.
2145  *
2146  * Can be called from any context. IRQ is disabled on return with IRQ state
2147  * stored in *@irq_flags. The caller is responsible for re-enabling it using
2148  * local_irq_restore().
2149  *
2150  * Returns %true if @work was pending. %false if idle.
2151  */
2152 static bool work_grab_pending(struct work_struct *work, u32 cflags,
2153                               unsigned long *irq_flags)
2154 {
2155         int ret;
2156
2157         while (true) {
2158                 ret = try_to_grab_pending(work, cflags, irq_flags);
2159                 if (ret >= 0)
2160                         return ret;
2161                 cpu_relax();
2162         }
2163 }
2164
2165 /**
2166  * insert_work - insert a work into a pool
2167  * @pwq: pwq @work belongs to
2168  * @work: work to insert
2169  * @head: insertion point
2170  * @extra_flags: extra WORK_STRUCT_* flags to set
2171  *
2172  * Insert @work which belongs to @pwq after @head.  @extra_flags is or'd to
2173  * work_struct flags.
2174  *
2175  * CONTEXT:
2176  * raw_spin_lock_irq(pool->lock).
2177  */
2178 static void insert_work(struct pool_workqueue *pwq, struct work_struct *work,
2179                         struct list_head *head, unsigned int extra_flags)
2180 {
2181         debug_work_activate(work);
2182
2183         /* record the work call stack in order to print it in KASAN reports */
2184         kasan_record_aux_stack_noalloc(work);
2185
2186         /* we own @work, set data and link */
2187         set_work_pwq(work, pwq, extra_flags);
2188         list_add_tail(&work->entry, head);
2189         get_pwq(pwq);
2190 }
2191
2192 /*
2193  * Test whether @work is being queued from another work executing on the
2194  * same workqueue.
2195  */
2196 static bool is_chained_work(struct workqueue_struct *wq)
2197 {
2198         struct worker *worker;
2199
2200         worker = current_wq_worker();
2201         /*
2202          * Return %true iff I'm a worker executing a work item on @wq.  If
2203          * I'm @worker, it's safe to dereference it without locking.
2204          */
2205         return worker && worker->current_pwq->wq == wq;
2206 }
2207
2208 /*
2209  * When queueing an unbound work item to a wq, prefer local CPU if allowed
2210  * by wq_unbound_cpumask.  Otherwise, round robin among the allowed ones to
2211  * avoid perturbing sensitive tasks.
2212  */
2213 static int wq_select_unbound_cpu(int cpu)
2214 {
2215         int new_cpu;
2216
2217         if (likely(!wq_debug_force_rr_cpu)) {
2218                 if (cpumask_test_cpu(cpu, wq_unbound_cpumask))
2219                         return cpu;
2220         } else {
2221                 pr_warn_once("workqueue: round-robin CPU selection forced, expect performance impact\n");
2222         }
2223
2224         new_cpu = __this_cpu_read(wq_rr_cpu_last);
2225         new_cpu = cpumask_next_and(new_cpu, wq_unbound_cpumask, cpu_online_mask);
2226         if (unlikely(new_cpu >= nr_cpu_ids)) {
2227                 new_cpu = cpumask_first_and(wq_unbound_cpumask, cpu_online_mask);
2228                 if (unlikely(new_cpu >= nr_cpu_ids))
2229                         return cpu;
2230         }
2231         __this_cpu_write(wq_rr_cpu_last, new_cpu);
2232
2233         return new_cpu;
2234 }
2235
2236 static void __queue_work(int cpu, struct workqueue_struct *wq,
2237                          struct work_struct *work)
2238 {
2239         struct pool_workqueue *pwq;
2240         struct worker_pool *last_pool, *pool;
2241         unsigned int work_flags;
2242         unsigned int req_cpu = cpu;
2243
2244         /*
2245          * While a work item is PENDING && off queue, a task trying to
2246          * steal the PENDING will busy-loop waiting for it to either get
2247          * queued or lose PENDING.  Grabbing PENDING and queueing should
2248          * happen with IRQ disabled.
2249          */
2250         lockdep_assert_irqs_disabled();
2251
2252         /*
2253          * For a draining wq, only works from the same workqueue are
2254          * allowed. The __WQ_DESTROYING helps to spot the issue that
2255          * queues a new work item to a wq after destroy_workqueue(wq).
2256          */
2257         if (unlikely(wq->flags & (__WQ_DESTROYING | __WQ_DRAINING) &&
2258                      WARN_ON_ONCE(!is_chained_work(wq))))
2259                 return;
2260         rcu_read_lock();
2261 retry:
2262         /* pwq which will be used unless @work is executing elsewhere */
2263         if (req_cpu == WORK_CPU_UNBOUND) {
2264                 if (wq->flags & WQ_UNBOUND)
2265                         cpu = wq_select_unbound_cpu(raw_smp_processor_id());
2266                 else
2267                         cpu = raw_smp_processor_id();
2268         }
2269
2270         pwq = rcu_dereference(*per_cpu_ptr(wq->cpu_pwq, cpu));
2271         pool = pwq->pool;
2272
2273         /*
2274          * If @work was previously on a different pool, it might still be
2275          * running there, in which case the work needs to be queued on that
2276          * pool to guarantee non-reentrancy.
2277          */
2278         last_pool = get_work_pool(work);
2279         if (last_pool && last_pool != pool) {
2280                 struct worker *worker;
2281
2282                 raw_spin_lock(&last_pool->lock);
2283
2284                 worker = find_worker_executing_work(last_pool, work);
2285
2286                 if (worker && worker->current_pwq->wq == wq) {
2287                         pwq = worker->current_pwq;
2288                         pool = pwq->pool;
2289                         WARN_ON_ONCE(pool != last_pool);
2290                 } else {
2291                         /* meh... not running there, queue here */
2292                         raw_spin_unlock(&last_pool->lock);
2293                         raw_spin_lock(&pool->lock);
2294                 }
2295         } else {
2296                 raw_spin_lock(&pool->lock);
2297         }
2298
2299         /*
2300          * pwq is determined and locked. For unbound pools, we could have raced
2301          * with pwq release and it could already be dead. If its refcnt is zero,
2302          * repeat pwq selection. Note that unbound pwqs never die without
2303          * another pwq replacing it in cpu_pwq or while work items are executing
2304          * on it, so the retrying is guaranteed to make forward-progress.
2305          */
2306         if (unlikely(!pwq->refcnt)) {
2307                 if (wq->flags & WQ_UNBOUND) {
2308                         raw_spin_unlock(&pool->lock);
2309                         cpu_relax();
2310                         goto retry;
2311                 }
2312                 /* oops */
2313                 WARN_ONCE(true, "workqueue: per-cpu pwq for %s on cpu%d has 0 refcnt",
2314                           wq->name, cpu);
2315         }
2316
2317         /* pwq determined, queue */
2318         trace_workqueue_queue_work(req_cpu, pwq, work);
2319
2320         if (WARN_ON(!list_empty(&work->entry)))
2321                 goto out;
2322
2323         pwq->nr_in_flight[pwq->work_color]++;
2324         work_flags = work_color_to_flags(pwq->work_color);
2325
2326         /*
2327          * Limit the number of concurrently active work items to max_active.
2328          * @work must also queue behind existing inactive work items to maintain
2329          * ordering when max_active changes. See wq_adjust_max_active().
2330          */
2331         if (list_empty(&pwq->inactive_works) && pwq_tryinc_nr_active(pwq, false)) {
2332                 if (list_empty(&pool->worklist))
2333                         pool->watchdog_ts = jiffies;
2334
2335                 trace_workqueue_activate_work(work);
2336                 insert_work(pwq, work, &pool->worklist, work_flags);
2337                 kick_pool(pool);
2338         } else {
2339                 work_flags |= WORK_STRUCT_INACTIVE;
2340                 insert_work(pwq, work, &pwq->inactive_works, work_flags);
2341         }
2342
2343 out:
2344         raw_spin_unlock(&pool->lock);
2345         rcu_read_unlock();
2346 }
2347
2348 static bool clear_pending_if_disabled(struct work_struct *work)
2349 {
2350         unsigned long data = *work_data_bits(work);
2351         struct work_offq_data offqd;
2352
2353         if (likely((data & WORK_STRUCT_PWQ) ||
2354                    !(data & WORK_OFFQ_DISABLE_MASK)))
2355                 return false;
2356
2357         work_offqd_unpack(&offqd, data);
2358         set_work_pool_and_clear_pending(work, offqd.pool_id,
2359                                         work_offqd_pack_flags(&offqd));
2360         return true;
2361 }
2362
2363 /**
2364  * queue_work_on - queue work on specific cpu
2365  * @cpu: CPU number to execute work on
2366  * @wq: workqueue to use
2367  * @work: work to queue
2368  *
2369  * We queue the work to a specific CPU, the caller must ensure it
2370  * can't go away.  Callers that fail to ensure that the specified
2371  * CPU cannot go away will execute on a randomly chosen CPU.
2372  * But note well that callers specifying a CPU that never has been
2373  * online will get a splat.
2374  *
2375  * Return: %false if @work was already on a queue, %true otherwise.
2376  */
2377 bool queue_work_on(int cpu, struct workqueue_struct *wq,
2378                    struct work_struct *work)
2379 {
2380         bool ret = false;
2381         unsigned long irq_flags;
2382
2383         local_irq_save(irq_flags);
2384
2385         if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work)) &&
2386             !clear_pending_if_disabled(work)) {
2387                 __queue_work(cpu, wq, work);
2388                 ret = true;
2389         }
2390
2391         local_irq_restore(irq_flags);
2392         return ret;
2393 }
2394 EXPORT_SYMBOL(queue_work_on);
2395
2396 /**
2397  * select_numa_node_cpu - Select a CPU based on NUMA node
2398  * @node: NUMA node ID that we want to select a CPU from
2399  *
2400  * This function will attempt to find a "random" cpu available on a given
2401  * node. If there are no CPUs available on the given node it will return
2402  * WORK_CPU_UNBOUND indicating that we should just schedule to any
2403  * available CPU if we need to schedule this work.
2404  */
2405 static int select_numa_node_cpu(int node)
2406 {
2407         int cpu;
2408
2409         /* Delay binding to CPU if node is not valid or online */
2410         if (node < 0 || node >= MAX_NUMNODES || !node_online(node))
2411                 return WORK_CPU_UNBOUND;
2412
2413         /* Use local node/cpu if we are already there */
2414         cpu = raw_smp_processor_id();
2415         if (node == cpu_to_node(cpu))
2416                 return cpu;
2417
2418         /* Use "random" otherwise know as "first" online CPU of node */
2419         cpu = cpumask_any_and(cpumask_of_node(node), cpu_online_mask);
2420
2421         /* If CPU is valid return that, otherwise just defer */
2422         return cpu < nr_cpu_ids ? cpu : WORK_CPU_UNBOUND;
2423 }
2424
2425 /**
2426  * queue_work_node - queue work on a "random" cpu for a given NUMA node
2427  * @node: NUMA node that we are targeting the work for
2428  * @wq: workqueue to use
2429  * @work: work to queue
2430  *
2431  * We queue the work to a "random" CPU within a given NUMA node. The basic
2432  * idea here is to provide a way to somehow associate work with a given
2433  * NUMA node.
2434  *
2435  * This function will only make a best effort attempt at getting this onto
2436  * the right NUMA node. If no node is requested or the requested node is
2437  * offline then we just fall back to standard queue_work behavior.
2438  *
2439  * Currently the "random" CPU ends up being the first available CPU in the
2440  * intersection of cpu_online_mask and the cpumask of the node, unless we
2441  * are running on the node. In that case we just use the current CPU.
2442  *
2443  * Return: %false if @work was already on a queue, %true otherwise.
2444  */
2445 bool queue_work_node(int node, struct workqueue_struct *wq,
2446                      struct work_struct *work)
2447 {
2448         unsigned long irq_flags;
2449         bool ret = false;
2450
2451         /*
2452          * This current implementation is specific to unbound workqueues.
2453          * Specifically we only return the first available CPU for a given
2454          * node instead of cycling through individual CPUs within the node.
2455          *
2456          * If this is used with a per-cpu workqueue then the logic in
2457          * workqueue_select_cpu_near would need to be updated to allow for
2458          * some round robin type logic.
2459          */
2460         WARN_ON_ONCE(!(wq->flags & WQ_UNBOUND));
2461
2462         local_irq_save(irq_flags);
2463
2464         if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work)) &&
2465             !clear_pending_if_disabled(work)) {
2466                 int cpu = select_numa_node_cpu(node);
2467
2468                 __queue_work(cpu, wq, work);
2469                 ret = true;
2470         }
2471
2472         local_irq_restore(irq_flags);
2473         return ret;
2474 }
2475 EXPORT_SYMBOL_GPL(queue_work_node);
2476
2477 void delayed_work_timer_fn(struct timer_list *t)
2478 {
2479         struct delayed_work *dwork = from_timer(dwork, t, timer);
2480
2481         /* should have been called from irqsafe timer with irq already off */
2482         __queue_work(dwork->cpu, dwork->wq, &dwork->work);
2483 }
2484 EXPORT_SYMBOL(delayed_work_timer_fn);
2485
2486 static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
2487                                 struct delayed_work *dwork, unsigned long delay)
2488 {
2489         struct timer_list *timer = &dwork->timer;
2490         struct work_struct *work = &dwork->work;
2491
2492         WARN_ON_ONCE(!wq);
2493         WARN_ON_ONCE(timer->function != delayed_work_timer_fn);
2494         WARN_ON_ONCE(timer_pending(timer));
2495         WARN_ON_ONCE(!list_empty(&work->entry));
2496
2497         /*
2498          * If @delay is 0, queue @dwork->work immediately.  This is for
2499          * both optimization and correctness.  The earliest @timer can
2500          * expire is on the closest next tick and delayed_work users depend
2501          * on that there's no such delay when @delay is 0.
2502          */
2503         if (!delay) {
2504                 __queue_work(cpu, wq, &dwork->work);
2505                 return;
2506         }
2507
2508         dwork->wq = wq;
2509         dwork->cpu = cpu;
2510         timer->expires = jiffies + delay;
2511
2512         if (housekeeping_enabled(HK_TYPE_TIMER)) {
2513                 /* If the current cpu is a housekeeping cpu, use it. */
2514                 cpu = smp_processor_id();
2515                 if (!housekeeping_test_cpu(cpu, HK_TYPE_TIMER))
2516                         cpu = housekeeping_any_cpu(HK_TYPE_TIMER);
2517                 add_timer_on(timer, cpu);
2518         } else {
2519                 if (likely(cpu == WORK_CPU_UNBOUND))
2520                         add_timer_global(timer);
2521                 else
2522                         add_timer_on(timer, cpu);
2523         }
2524 }
2525
2526 /**
2527  * queue_delayed_work_on - queue work on specific CPU after delay
2528  * @cpu: CPU number to execute work on
2529  * @wq: workqueue to use
2530  * @dwork: work to queue
2531  * @delay: number of jiffies to wait before queueing
2532  *
2533  * Return: %false if @work was already on a queue, %true otherwise.  If
2534  * @delay is zero and @dwork is idle, it will be scheduled for immediate
2535  * execution.
2536  */
2537 bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
2538                            struct delayed_work *dwork, unsigned long delay)
2539 {
2540         struct work_struct *work = &dwork->work;
2541         bool ret = false;
2542         unsigned long irq_flags;
2543
2544         /* read the comment in __queue_work() */
2545         local_irq_save(irq_flags);
2546
2547         if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work)) &&
2548             !clear_pending_if_disabled(work)) {
2549                 __queue_delayed_work(cpu, wq, dwork, delay);
2550                 ret = true;
2551         }
2552
2553         local_irq_restore(irq_flags);
2554         return ret;
2555 }
2556 EXPORT_SYMBOL(queue_delayed_work_on);
2557
2558 /**
2559  * mod_delayed_work_on - modify delay of or queue a delayed work on specific CPU
2560  * @cpu: CPU number to execute work on
2561  * @wq: workqueue to use
2562  * @dwork: work to queue
2563  * @delay: number of jiffies to wait before queueing
2564  *
2565  * If @dwork is idle, equivalent to queue_delayed_work_on(); otherwise,
2566  * modify @dwork's timer so that it expires after @delay.  If @delay is
2567  * zero, @work is guaranteed to be scheduled immediately regardless of its
2568  * current state.
2569  *
2570  * Return: %false if @dwork was idle and queued, %true if @dwork was
2571  * pending and its timer was modified.
2572  *
2573  * This function is safe to call from any context including IRQ handler.
2574  * See try_to_grab_pending() for details.
2575  */
2576 bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq,
2577                          struct delayed_work *dwork, unsigned long delay)
2578 {
2579         unsigned long irq_flags;
2580         bool ret;
2581
2582         ret = work_grab_pending(&dwork->work, WORK_CANCEL_DELAYED, &irq_flags);
2583
2584         if (!clear_pending_if_disabled(&dwork->work))
2585                 __queue_delayed_work(cpu, wq, dwork, delay);
2586
2587         local_irq_restore(irq_flags);
2588         return ret;
2589 }
2590 EXPORT_SYMBOL_GPL(mod_delayed_work_on);
2591
2592 static void rcu_work_rcufn(struct rcu_head *rcu)
2593 {
2594         struct rcu_work *rwork = container_of(rcu, struct rcu_work, rcu);
2595
2596         /* read the comment in __queue_work() */
2597         local_irq_disable();
2598         __queue_work(WORK_CPU_UNBOUND, rwork->wq, &rwork->work);
2599         local_irq_enable();
2600 }
2601
2602 /**
2603  * queue_rcu_work - queue work after a RCU grace period
2604  * @wq: workqueue to use
2605  * @rwork: work to queue
2606  *
2607  * Return: %false if @rwork was already pending, %true otherwise.  Note
2608  * that a full RCU grace period is guaranteed only after a %true return.
2609  * While @rwork is guaranteed to be executed after a %false return, the
2610  * execution may happen before a full RCU grace period has passed.
2611  */
2612 bool queue_rcu_work(struct workqueue_struct *wq, struct rcu_work *rwork)
2613 {
2614         struct work_struct *work = &rwork->work;
2615
2616         /*
2617          * rcu_work can't be canceled or disabled. Warn if the user reached
2618          * inside @rwork and disabled the inner work.
2619          */
2620         if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work)) &&
2621             !WARN_ON_ONCE(clear_pending_if_disabled(work))) {
2622                 rwork->wq = wq;
2623                 call_rcu_hurry(&rwork->rcu, rcu_work_rcufn);
2624                 return true;
2625         }
2626
2627         return false;
2628 }
2629 EXPORT_SYMBOL(queue_rcu_work);
2630
2631 static struct worker *alloc_worker(int node)
2632 {
2633         struct worker *worker;
2634
2635         worker = kzalloc_node(sizeof(*worker), GFP_KERNEL, node);
2636         if (worker) {
2637                 INIT_LIST_HEAD(&worker->entry);
2638                 INIT_LIST_HEAD(&worker->scheduled);
2639                 INIT_LIST_HEAD(&worker->node);
2640                 /* on creation a worker is in !idle && prep state */
2641                 worker->flags = WORKER_PREP;
2642         }
2643         return worker;
2644 }
2645
2646 static cpumask_t *pool_allowed_cpus(struct worker_pool *pool)
2647 {
2648         if (pool->cpu < 0 && pool->attrs->affn_strict)
2649                 return pool->attrs->__pod_cpumask;
2650         else
2651                 return pool->attrs->cpumask;
2652 }
2653
2654 /**
2655  * worker_attach_to_pool() - attach a worker to a pool
2656  * @worker: worker to be attached
2657  * @pool: the target pool
2658  *
2659  * Attach @worker to @pool.  Once attached, the %WORKER_UNBOUND flag and
2660  * cpu-binding of @worker are kept coordinated with the pool across
2661  * cpu-[un]hotplugs.
2662  */
2663 static void worker_attach_to_pool(struct worker *worker,
2664                                   struct worker_pool *pool)
2665 {
2666         mutex_lock(&wq_pool_attach_mutex);
2667
2668         /*
2669          * The wq_pool_attach_mutex ensures %POOL_DISASSOCIATED remains stable
2670          * across this function. See the comments above the flag definition for
2671          * details. BH workers are, while per-CPU, always DISASSOCIATED.
2672          */
2673         if (pool->flags & POOL_DISASSOCIATED) {
2674                 worker->flags |= WORKER_UNBOUND;
2675         } else {
2676                 WARN_ON_ONCE(pool->flags & POOL_BH);
2677                 kthread_set_per_cpu(worker->task, pool->cpu);
2678         }
2679
2680         if (worker->rescue_wq)
2681                 set_cpus_allowed_ptr(worker->task, pool_allowed_cpus(pool));
2682
2683         list_add_tail(&worker->node, &pool->workers);
2684         worker->pool = pool;
2685
2686         mutex_unlock(&wq_pool_attach_mutex);
2687 }
2688
2689 static void unbind_worker(struct worker *worker)
2690 {
2691         lockdep_assert_held(&wq_pool_attach_mutex);
2692
2693         kthread_set_per_cpu(worker->task, -1);
2694         if (cpumask_intersects(wq_unbound_cpumask, cpu_active_mask))
2695                 WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, wq_unbound_cpumask) < 0);
2696         else
2697                 WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, cpu_possible_mask) < 0);
2698 }
2699
2700
2701 static void detach_worker(struct worker *worker)
2702 {
2703         lockdep_assert_held(&wq_pool_attach_mutex);
2704
2705         unbind_worker(worker);
2706         list_del(&worker->node);
2707         worker->pool = NULL;
2708 }
2709
2710 /**
2711  * worker_detach_from_pool() - detach a worker from its pool
2712  * @worker: worker which is attached to its pool
2713  *
2714  * Undo the attaching which had been done in worker_attach_to_pool().  The
2715  * caller worker shouldn't access to the pool after detached except it has
2716  * other reference to the pool.
2717  */
2718 static void worker_detach_from_pool(struct worker *worker)
2719 {
2720         struct worker_pool *pool = worker->pool;
2721
2722         /* there is one permanent BH worker per CPU which should never detach */
2723         WARN_ON_ONCE(pool->flags & POOL_BH);
2724
2725         mutex_lock(&wq_pool_attach_mutex);
2726         detach_worker(worker);
2727         mutex_unlock(&wq_pool_attach_mutex);
2728
2729         /* clear leftover flags without pool->lock after it is detached */
2730         worker->flags &= ~(WORKER_UNBOUND | WORKER_REBOUND);
2731 }
2732
2733 /**
2734  * create_worker - create a new workqueue worker
2735  * @pool: pool the new worker will belong to
2736  *
2737  * Create and start a new worker which is attached to @pool.
2738  *
2739  * CONTEXT:
2740  * Might sleep.  Does GFP_KERNEL allocations.
2741  *
2742  * Return:
2743  * Pointer to the newly created worker.
2744  */
2745 static struct worker *create_worker(struct worker_pool *pool)
2746 {
2747         struct worker *worker;
2748         int id;
2749         char id_buf[23];
2750
2751         /* ID is needed to determine kthread name */
2752         id = ida_alloc(&pool->worker_ida, GFP_KERNEL);
2753         if (id < 0) {
2754                 pr_err_once("workqueue: Failed to allocate a worker ID: %pe\n",
2755                             ERR_PTR(id));
2756                 return NULL;
2757         }
2758
2759         worker = alloc_worker(pool->node);
2760         if (!worker) {
2761                 pr_err_once("workqueue: Failed to allocate a worker\n");
2762                 goto fail;
2763         }
2764
2765         worker->id = id;
2766
2767         if (!(pool->flags & POOL_BH)) {
2768                 if (pool->cpu >= 0)
2769                         snprintf(id_buf, sizeof(id_buf), "%d:%d%s", pool->cpu, id,
2770                                  pool->attrs->nice < 0  ? "H" : "");
2771                 else
2772                         snprintf(id_buf, sizeof(id_buf), "u%d:%d", pool->id, id);
2773
2774                 worker->task = kthread_create_on_node(worker_thread, worker,
2775                                         pool->node, "kworker/%s", id_buf);
2776                 if (IS_ERR(worker->task)) {
2777                         if (PTR_ERR(worker->task) == -EINTR) {
2778                                 pr_err("workqueue: Interrupted when creating a worker thread \"kworker/%s\"\n",
2779                                        id_buf);
2780                         } else {
2781                                 pr_err_once("workqueue: Failed to create a worker thread: %pe",
2782                                             worker->task);
2783                         }
2784                         goto fail;
2785                 }
2786
2787                 set_user_nice(worker->task, pool->attrs->nice);
2788                 kthread_bind_mask(worker->task, pool_allowed_cpus(pool));
2789         }
2790
2791         /* successful, attach the worker to the pool */
2792         worker_attach_to_pool(worker, pool);
2793
2794         /* start the newly created worker */
2795         raw_spin_lock_irq(&pool->lock);
2796
2797         worker->pool->nr_workers++;
2798         worker_enter_idle(worker);
2799
2800         /*
2801          * @worker is waiting on a completion in kthread() and will trigger hung
2802          * check if not woken up soon. As kick_pool() is noop if @pool is empty,
2803          * wake it up explicitly.
2804          */
2805         if (worker->task)
2806                 wake_up_process(worker->task);
2807
2808         raw_spin_unlock_irq(&pool->lock);
2809
2810         return worker;
2811
2812 fail:
2813         ida_free(&pool->worker_ida, id);
2814         kfree(worker);
2815         return NULL;
2816 }
2817
2818 static void detach_dying_workers(struct list_head *cull_list)
2819 {
2820         struct worker *worker;
2821
2822         list_for_each_entry(worker, cull_list, entry)
2823                 detach_worker(worker);
2824 }
2825
2826 static void reap_dying_workers(struct list_head *cull_list)
2827 {
2828         struct worker *worker, *tmp;
2829
2830         list_for_each_entry_safe(worker, tmp, cull_list, entry) {
2831                 list_del_init(&worker->entry);
2832                 kthread_stop_put(worker->task);
2833                 kfree(worker);
2834         }
2835 }
2836
2837 /**
2838  * set_worker_dying - Tag a worker for destruction
2839  * @worker: worker to be destroyed
2840  * @list: transfer worker away from its pool->idle_list and into list
2841  *
2842  * Tag @worker for destruction and adjust @pool stats accordingly.  The worker
2843  * should be idle.
2844  *
2845  * CONTEXT:
2846  * raw_spin_lock_irq(pool->lock).
2847  */
2848 static void set_worker_dying(struct worker *worker, struct list_head *list)
2849 {
2850         struct worker_pool *pool = worker->pool;
2851
2852         lockdep_assert_held(&pool->lock);
2853         lockdep_assert_held(&wq_pool_attach_mutex);
2854
2855         /* sanity check frenzy */
2856         if (WARN_ON(worker->current_work) ||
2857             WARN_ON(!list_empty(&worker->scheduled)) ||
2858             WARN_ON(!(worker->flags & WORKER_IDLE)))
2859                 return;
2860
2861         pool->nr_workers--;
2862         pool->nr_idle--;
2863
2864         worker->flags |= WORKER_DIE;
2865
2866         list_move(&worker->entry, list);
2867
2868         /* get an extra task struct reference for later kthread_stop_put() */
2869         get_task_struct(worker->task);
2870 }
2871
2872 /**
2873  * idle_worker_timeout - check if some idle workers can now be deleted.
2874  * @t: The pool's idle_timer that just expired
2875  *
2876  * The timer is armed in worker_enter_idle(). Note that it isn't disarmed in
2877  * worker_leave_idle(), as a worker flicking between idle and active while its
2878  * pool is at the too_many_workers() tipping point would cause too much timer
2879  * housekeeping overhead. Since IDLE_WORKER_TIMEOUT is long enough, we just let
2880  * it expire and re-evaluate things from there.
2881  */
2882 static void idle_worker_timeout(struct timer_list *t)
2883 {
2884         struct worker_pool *pool = from_timer(pool, t, idle_timer);
2885         bool do_cull = false;
2886
2887         if (work_pending(&pool->idle_cull_work))
2888                 return;
2889
2890         raw_spin_lock_irq(&pool->lock);
2891
2892         if (too_many_workers(pool)) {
2893                 struct worker *worker;
2894                 unsigned long expires;
2895
2896                 /* idle_list is kept in LIFO order, check the last one */
2897                 worker = list_last_entry(&pool->idle_list, struct worker, entry);
2898                 expires = worker->last_active + IDLE_WORKER_TIMEOUT;
2899                 do_cull = !time_before(jiffies, expires);
2900
2901                 if (!do_cull)
2902                         mod_timer(&pool->idle_timer, expires);
2903         }
2904         raw_spin_unlock_irq(&pool->lock);
2905
2906         if (do_cull)
2907                 queue_work(system_unbound_wq, &pool->idle_cull_work);
2908 }
2909
2910 /**
2911  * idle_cull_fn - cull workers that have been idle for too long.
2912  * @work: the pool's work for handling these idle workers
2913  *
2914  * This goes through a pool's idle workers and gets rid of those that have been
2915  * idle for at least IDLE_WORKER_TIMEOUT seconds.
2916  *
2917  * We don't want to disturb isolated CPUs because of a pcpu kworker being
2918  * culled, so this also resets worker affinity. This requires a sleepable
2919  * context, hence the split between timer callback and work item.
2920  */
2921 static void idle_cull_fn(struct work_struct *work)
2922 {
2923         struct worker_pool *pool = container_of(work, struct worker_pool, idle_cull_work);
2924         LIST_HEAD(cull_list);
2925
2926         /*
2927          * Grabbing wq_pool_attach_mutex here ensures an already-running worker
2928          * cannot proceed beyong set_pf_worker() in its self-destruct path.
2929          * This is required as a previously-preempted worker could run after
2930          * set_worker_dying() has happened but before detach_dying_workers() did.
2931          */
2932         mutex_lock(&wq_pool_attach_mutex);
2933         raw_spin_lock_irq(&pool->lock);
2934
2935         while (too_many_workers(pool)) {
2936                 struct worker *worker;
2937                 unsigned long expires;
2938
2939                 worker = list_last_entry(&pool->idle_list, struct worker, entry);
2940                 expires = worker->last_active + IDLE_WORKER_TIMEOUT;
2941
2942                 if (time_before(jiffies, expires)) {
2943                         mod_timer(&pool->idle_timer, expires);
2944                         break;
2945                 }
2946
2947                 set_worker_dying(worker, &cull_list);
2948         }
2949
2950         raw_spin_unlock_irq(&pool->lock);
2951         detach_dying_workers(&cull_list);
2952         mutex_unlock(&wq_pool_attach_mutex);
2953
2954         reap_dying_workers(&cull_list);
2955 }
2956
2957 static void send_mayday(struct work_struct *work)
2958 {
2959         struct pool_workqueue *pwq = get_work_pwq(work);
2960         struct workqueue_struct *wq = pwq->wq;
2961
2962         lockdep_assert_held(&wq_mayday_lock);
2963
2964         if (!wq->rescuer)
2965                 return;
2966
2967         /* mayday mayday mayday */
2968         if (list_empty(&pwq->mayday_node)) {
2969                 /*
2970                  * If @pwq is for an unbound wq, its base ref may be put at
2971                  * any time due to an attribute change.  Pin @pwq until the
2972                  * rescuer is done with it.
2973                  */
2974                 get_pwq(pwq);
2975                 list_add_tail(&pwq->mayday_node, &wq->maydays);
2976                 wake_up_process(wq->rescuer->task);
2977                 pwq->stats[PWQ_STAT_MAYDAY]++;
2978         }
2979 }
2980
2981 static void pool_mayday_timeout(struct timer_list *t)
2982 {
2983         struct worker_pool *pool = from_timer(pool, t, mayday_timer);
2984         struct work_struct *work;
2985
2986         raw_spin_lock_irq(&pool->lock);
2987         raw_spin_lock(&wq_mayday_lock);         /* for wq->maydays */
2988
2989         if (need_to_create_worker(pool)) {
2990                 /*
2991                  * We've been trying to create a new worker but
2992                  * haven't been successful.  We might be hitting an
2993                  * allocation deadlock.  Send distress signals to
2994                  * rescuers.
2995                  */
2996                 list_for_each_entry(work, &pool->worklist, entry)
2997                         send_mayday(work);
2998         }
2999
3000         raw_spin_unlock(&wq_mayday_lock);
3001         raw_spin_unlock_irq(&pool->lock);
3002
3003         mod_timer(&pool->mayday_timer, jiffies + MAYDAY_INTERVAL);
3004 }
3005
3006 /**
3007  * maybe_create_worker - create a new worker if necessary
3008  * @pool: pool to create a new worker for
3009  *
3010  * Create a new worker for @pool if necessary.  @pool is guaranteed to
3011  * have at least one idle worker on return from this function.  If
3012  * creating a new worker takes longer than MAYDAY_INTERVAL, mayday is
3013  * sent to all rescuers with works scheduled on @pool to resolve
3014  * possible allocation deadlock.
3015  *
3016  * On return, need_to_create_worker() is guaranteed to be %false and
3017  * may_start_working() %true.
3018  *
3019  * LOCKING:
3020  * raw_spin_lock_irq(pool->lock) which may be released and regrabbed
3021  * multiple times.  Does GFP_KERNEL allocations.  Called only from
3022  * manager.
3023  */
3024 static void maybe_create_worker(struct worker_pool *pool)
3025 __releases(&pool->lock)
3026 __acquires(&pool->lock)
3027 {
3028 restart:
3029         raw_spin_unlock_irq(&pool->lock);
3030
3031         /* if we don't make progress in MAYDAY_INITIAL_TIMEOUT, call for help */
3032         mod_timer(&pool->mayday_timer, jiffies + MAYDAY_INITIAL_TIMEOUT);
3033
3034         while (true) {
3035                 if (create_worker(pool) || !need_to_create_worker(pool))
3036                         break;
3037
3038                 schedule_timeout_interruptible(CREATE_COOLDOWN);
3039
3040                 if (!need_to_create_worker(pool))
3041                         break;
3042         }
3043
3044         del_timer_sync(&pool->mayday_timer);
3045         raw_spin_lock_irq(&pool->lock);
3046         /*
3047          * This is necessary even after a new worker was just successfully
3048          * created as @pool->lock was dropped and the new worker might have
3049          * already become busy.
3050          */
3051         if (need_to_create_worker(pool))
3052                 goto restart;
3053 }
3054
3055 /**
3056  * manage_workers - manage worker pool
3057  * @worker: self
3058  *
3059  * Assume the manager role and manage the worker pool @worker belongs
3060  * to.  At any given time, there can be only zero or one manager per
3061  * pool.  The exclusion is handled automatically by this function.
3062  *
3063  * The caller can safely start processing works on false return.  On
3064  * true return, it's guaranteed that need_to_create_worker() is false
3065  * and may_start_working() is true.
3066  *
3067  * CONTEXT:
3068  * raw_spin_lock_irq(pool->lock) which may be released and regrabbed
3069  * multiple times.  Does GFP_KERNEL allocations.
3070  *
3071  * Return:
3072  * %false if the pool doesn't need management and the caller can safely
3073  * start processing works, %true if management function was performed and
3074  * the conditions that the caller verified before calling the function may
3075  * no longer be true.
3076  */
3077 static bool manage_workers(struct worker *worker)
3078 {
3079         struct worker_pool *pool = worker->pool;
3080
3081         if (pool->flags & POOL_MANAGER_ACTIVE)
3082                 return false;
3083
3084         pool->flags |= POOL_MANAGER_ACTIVE;
3085         pool->manager = worker;
3086
3087         maybe_create_worker(pool);
3088
3089         pool->manager = NULL;
3090         pool->flags &= ~POOL_MANAGER_ACTIVE;
3091         rcuwait_wake_up(&manager_wait);
3092         return true;
3093 }
3094
3095 /**
3096  * process_one_work - process single work
3097  * @worker: self
3098  * @work: work to process
3099  *
3100  * Process @work.  This function contains all the logics necessary to
3101  * process a single work including synchronization against and
3102  * interaction with other workers on the same cpu, queueing and
3103  * flushing.  As long as context requirement is met, any worker can
3104  * call this function to process a work.
3105  *
3106  * CONTEXT:
3107  * raw_spin_lock_irq(pool->lock) which is released and regrabbed.
3108  */
3109 static void process_one_work(struct worker *worker, struct work_struct *work)
3110 __releases(&pool->lock)
3111 __acquires(&pool->lock)
3112 {
3113         struct pool_workqueue *pwq = get_work_pwq(work);
3114         struct worker_pool *pool = worker->pool;
3115         unsigned long work_data;
3116         int lockdep_start_depth, rcu_start_depth;
3117         bool bh_draining = pool->flags & POOL_BH_DRAINING;
3118 #ifdef CONFIG_LOCKDEP
3119         /*
3120          * It is permissible to free the struct work_struct from
3121          * inside the function that is called from it, this we need to
3122          * take into account for lockdep too.  To avoid bogus "held
3123          * lock freed" warnings as well as problems when looking into
3124          * work->lockdep_map, make a copy and use that here.
3125          */
3126         struct lockdep_map lockdep_map;
3127
3128         lockdep_copy_map(&lockdep_map, &work->lockdep_map);
3129 #endif
3130         /* ensure we're on the correct CPU */
3131         WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) &&
3132                      raw_smp_processor_id() != pool->cpu);
3133
3134         /* claim and dequeue */
3135         debug_work_deactivate(work);
3136         hash_add(pool->busy_hash, &worker->hentry, (unsigned long)work);
3137         worker->current_work = work;
3138         worker->current_func = work->func;
3139         worker->current_pwq = pwq;
3140         if (worker->task)
3141                 worker->current_at = worker->task->se.sum_exec_runtime;
3142         work_data = *work_data_bits(work);
3143         worker->current_color = get_work_color(work_data);
3144
3145         /*
3146          * Record wq name for cmdline and debug reporting, may get
3147          * overridden through set_worker_desc().
3148          */
3149         strscpy(worker->desc, pwq->wq->name, WORKER_DESC_LEN);
3150
3151         list_del_init(&work->entry);
3152
3153         /*
3154          * CPU intensive works don't participate in concurrency management.
3155          * They're the scheduler's responsibility.  This takes @worker out
3156          * of concurrency management and the next code block will chain
3157          * execution of the pending work items.
3158          */
3159         if (unlikely(pwq->wq->flags & WQ_CPU_INTENSIVE))
3160                 worker_set_flags(worker, WORKER_CPU_INTENSIVE);
3161
3162         /*
3163          * Kick @pool if necessary. It's always noop for per-cpu worker pools
3164          * since nr_running would always be >= 1 at this point. This is used to
3165          * chain execution of the pending work items for WORKER_NOT_RUNNING
3166          * workers such as the UNBOUND and CPU_INTENSIVE ones.
3167          */
3168         kick_pool(pool);
3169
3170         /*
3171          * Record the last pool and clear PENDING which should be the last
3172          * update to @work.  Also, do this inside @pool->lock so that
3173          * PENDING and queued state changes happen together while IRQ is
3174          * disabled.
3175          */
3176         set_work_pool_and_clear_pending(work, pool->id, pool_offq_flags(pool));
3177
3178         pwq->stats[PWQ_STAT_STARTED]++;
3179         raw_spin_unlock_irq(&pool->lock);
3180
3181         rcu_start_depth = rcu_preempt_depth();
3182         lockdep_start_depth = lockdep_depth(current);
3183         /* see drain_dead_softirq_workfn() */
3184         if (!bh_draining)
3185                 lock_map_acquire(&pwq->wq->lockdep_map);
3186         lock_map_acquire(&lockdep_map);
3187         /*
3188          * Strictly speaking we should mark the invariant state without holding
3189          * any locks, that is, before these two lock_map_acquire()'s.
3190          *
3191          * However, that would result in:
3192          *
3193          *   A(W1)
3194          *   WFC(C)
3195          *              A(W1)
3196          *              C(C)
3197          *
3198          * Which would create W1->C->W1 dependencies, even though there is no
3199          * actual deadlock possible. There are two solutions, using a
3200          * read-recursive acquire on the work(queue) 'locks', but this will then
3201          * hit the lockdep limitation on recursive locks, or simply discard
3202          * these locks.
3203          *
3204          * AFAICT there is no possible deadlock scenario between the
3205          * flush_work() and complete() primitives (except for single-threaded
3206          * workqueues), so hiding them isn't a problem.
3207          */
3208         lockdep_invariant_state(true);
3209         trace_workqueue_execute_start(work);
3210         worker->current_func(work);
3211         /*
3212          * While we must be careful to not use "work" after this, the trace
3213          * point will only record its address.
3214          */
3215         trace_workqueue_execute_end(work, worker->current_func);
3216         pwq->stats[PWQ_STAT_COMPLETED]++;
3217         lock_map_release(&lockdep_map);
3218         if (!bh_draining)
3219                 lock_map_release(&pwq->wq->lockdep_map);
3220
3221         if (unlikely((worker->task && in_atomic()) ||
3222                      lockdep_depth(current) != lockdep_start_depth ||
3223                      rcu_preempt_depth() != rcu_start_depth)) {
3224                 pr_err("BUG: workqueue leaked atomic, lock or RCU: %s[%d]\n"
3225                        "     preempt=0x%08x lock=%d->%d RCU=%d->%d workfn=%ps\n",
3226                        current->comm, task_pid_nr(current), preempt_count(),
3227                        lockdep_start_depth, lockdep_depth(current),
3228                        rcu_start_depth, rcu_preempt_depth(),
3229                        worker->current_func);
3230                 debug_show_held_locks(current);
3231                 dump_stack();
3232         }
3233
3234         /*
3235          * The following prevents a kworker from hogging CPU on !PREEMPTION
3236          * kernels, where a requeueing work item waiting for something to
3237          * happen could deadlock with stop_machine as such work item could
3238          * indefinitely requeue itself while all other CPUs are trapped in
3239          * stop_machine. At the same time, report a quiescent RCU state so
3240          * the same condition doesn't freeze RCU.
3241          */
3242         if (worker->task)
3243                 cond_resched();
3244
3245         raw_spin_lock_irq(&pool->lock);
3246
3247         /*
3248          * In addition to %WQ_CPU_INTENSIVE, @worker may also have been marked
3249          * CPU intensive by wq_worker_tick() if @work hogged CPU longer than
3250          * wq_cpu_intensive_thresh_us. Clear it.
3251          */
3252         worker_clr_flags(worker, WORKER_CPU_INTENSIVE);
3253
3254         /* tag the worker for identification in schedule() */
3255         worker->last_func = worker->current_func;
3256
3257         /* we're done with it, release */
3258         hash_del(&worker->hentry);
3259         worker->current_work = NULL;
3260         worker->current_func = NULL;
3261         worker->current_pwq = NULL;
3262         worker->current_color = INT_MAX;
3263
3264         /* must be the last step, see the function comment */
3265         pwq_dec_nr_in_flight(pwq, work_data);
3266 }
3267
3268 /**
3269  * process_scheduled_works - process scheduled works
3270  * @worker: self
3271  *
3272  * Process all scheduled works.  Please note that the scheduled list
3273  * may change while processing a work, so this function repeatedly
3274  * fetches a work from the top and executes it.
3275  *
3276  * CONTEXT:
3277  * raw_spin_lock_irq(pool->lock) which may be released and regrabbed
3278  * multiple times.
3279  */
3280 static void process_scheduled_works(struct worker *worker)
3281 {
3282         struct work_struct *work;
3283         bool first = true;
3284
3285         while ((work = list_first_entry_or_null(&worker->scheduled,
3286                                                 struct work_struct, entry))) {
3287                 if (first) {
3288                         worker->pool->watchdog_ts = jiffies;
3289                         first = false;
3290                 }
3291                 process_one_work(worker, work);
3292         }
3293 }
3294
3295 static void set_pf_worker(bool val)
3296 {
3297         mutex_lock(&wq_pool_attach_mutex);
3298         if (val)
3299                 current->flags |= PF_WQ_WORKER;
3300         else
3301                 current->flags &= ~PF_WQ_WORKER;
3302         mutex_unlock(&wq_pool_attach_mutex);
3303 }
3304
3305 /**
3306  * worker_thread - the worker thread function
3307  * @__worker: self
3308  *
3309  * The worker thread function.  All workers belong to a worker_pool -
3310  * either a per-cpu one or dynamic unbound one.  These workers process all
3311  * work items regardless of their specific target workqueue.  The only
3312  * exception is work items which belong to workqueues with a rescuer which
3313  * will be explained in rescuer_thread().
3314  *
3315  * Return: 0
3316  */
3317 static int worker_thread(void *__worker)
3318 {
3319         struct worker *worker = __worker;
3320         struct worker_pool *pool = worker->pool;
3321
3322         /* tell the scheduler that this is a workqueue worker */
3323         set_pf_worker(true);
3324 woke_up:
3325         raw_spin_lock_irq(&pool->lock);
3326
3327         /* am I supposed to die? */
3328         if (unlikely(worker->flags & WORKER_DIE)) {
3329                 raw_spin_unlock_irq(&pool->lock);
3330                 set_pf_worker(false);
3331
3332                 set_task_comm(worker->task, "kworker/dying");
3333                 ida_free(&pool->worker_ida, worker->id);
3334                 WARN_ON_ONCE(!list_empty(&worker->entry));
3335                 return 0;
3336         }
3337
3338         worker_leave_idle(worker);
3339 recheck:
3340         /* no more worker necessary? */
3341         if (!need_more_worker(pool))
3342                 goto sleep;
3343
3344         /* do we need to manage? */
3345         if (unlikely(!may_start_working(pool)) && manage_workers(worker))
3346                 goto recheck;
3347
3348         /*
3349          * ->scheduled list can only be filled while a worker is
3350          * preparing to process a work or actually processing it.
3351          * Make sure nobody diddled with it while I was sleeping.
3352          */
3353         WARN_ON_ONCE(!list_empty(&worker->scheduled));
3354
3355         /*
3356          * Finish PREP stage.  We're guaranteed to have at least one idle
3357          * worker or that someone else has already assumed the manager
3358          * role.  This is where @worker starts participating in concurrency
3359          * management if applicable and concurrency management is restored
3360          * after being rebound.  See rebind_workers() for details.
3361          */
3362         worker_clr_flags(worker, WORKER_PREP | WORKER_REBOUND);
3363
3364         do {
3365                 struct work_struct *work =
3366                         list_first_entry(&pool->worklist,
3367                                          struct work_struct, entry);
3368
3369                 if (assign_work(work, worker, NULL))
3370                         process_scheduled_works(worker);
3371         } while (keep_working(pool));
3372
3373         worker_set_flags(worker, WORKER_PREP);
3374 sleep:
3375         /*
3376          * pool->lock is held and there's no work to process and no need to
3377          * manage, sleep.  Workers are woken up only while holding
3378          * pool->lock or from local cpu, so setting the current state
3379          * before releasing pool->lock is enough to prevent losing any
3380          * event.
3381          */
3382         worker_enter_idle(worker);
3383         __set_current_state(TASK_IDLE);
3384         raw_spin_unlock_irq(&pool->lock);
3385         schedule();
3386         goto woke_up;
3387 }
3388
3389 /**
3390  * rescuer_thread - the rescuer thread function
3391  * @__rescuer: self
3392  *
3393  * Workqueue rescuer thread function.  There's one rescuer for each
3394  * workqueue which has WQ_MEM_RECLAIM set.
3395  *
3396  * Regular work processing on a pool may block trying to create a new
3397  * worker which uses GFP_KERNEL allocation which has slight chance of
3398  * developing into deadlock if some works currently on the same queue
3399  * need to be processed to satisfy the GFP_KERNEL allocation.  This is
3400  * the problem rescuer solves.
3401  *
3402  * When such condition is possible, the pool summons rescuers of all
3403  * workqueues which have works queued on the pool and let them process
3404  * those works so that forward progress can be guaranteed.
3405  *
3406  * This should happen rarely.
3407  *
3408  * Return: 0
3409  */
3410 static int rescuer_thread(void *__rescuer)
3411 {
3412         struct worker *rescuer = __rescuer;
3413         struct workqueue_struct *wq = rescuer->rescue_wq;
3414         bool should_stop;
3415
3416         set_user_nice(current, RESCUER_NICE_LEVEL);
3417
3418         /*
3419          * Mark rescuer as worker too.  As WORKER_PREP is never cleared, it
3420          * doesn't participate in concurrency management.
3421          */
3422         set_pf_worker(true);
3423 repeat:
3424         set_current_state(TASK_IDLE);
3425
3426         /*
3427          * By the time the rescuer is requested to stop, the workqueue
3428          * shouldn't have any work pending, but @wq->maydays may still have
3429          * pwq(s) queued.  This can happen by non-rescuer workers consuming
3430          * all the work items before the rescuer got to them.  Go through
3431          * @wq->maydays processing before acting on should_stop so that the
3432          * list is always empty on exit.
3433          */
3434         should_stop = kthread_should_stop();
3435
3436         /* see whether any pwq is asking for help */
3437         raw_spin_lock_irq(&wq_mayday_lock);
3438
3439         while (!list_empty(&wq->maydays)) {
3440                 struct pool_workqueue *pwq = list_first_entry(&wq->maydays,
3441                                         struct pool_workqueue, mayday_node);
3442                 struct worker_pool *pool = pwq->pool;
3443                 struct work_struct *work, *n;
3444
3445                 __set_current_state(TASK_RUNNING);
3446                 list_del_init(&pwq->mayday_node);
3447
3448                 raw_spin_unlock_irq(&wq_mayday_lock);
3449
3450                 worker_attach_to_pool(rescuer, pool);
3451
3452                 raw_spin_lock_irq(&pool->lock);
3453
3454                 /*
3455                  * Slurp in all works issued via this workqueue and
3456                  * process'em.
3457                  */
3458                 WARN_ON_ONCE(!list_empty(&rescuer->scheduled));
3459                 list_for_each_entry_safe(work, n, &pool->worklist, entry) {
3460                         if (get_work_pwq(work) == pwq &&
3461                             assign_work(work, rescuer, &n))
3462                                 pwq->stats[PWQ_STAT_RESCUED]++;
3463                 }
3464
3465                 if (!list_empty(&rescuer->scheduled)) {
3466                         process_scheduled_works(rescuer);
3467
3468                         /*
3469                          * The above execution of rescued work items could
3470                          * have created more to rescue through
3471                          * pwq_activate_first_inactive() or chained
3472                          * queueing.  Let's put @pwq back on mayday list so
3473                          * that such back-to-back work items, which may be
3474                          * being used to relieve memory pressure, don't
3475                          * incur MAYDAY_INTERVAL delay inbetween.
3476                          */
3477                         if (pwq->nr_active && need_to_create_worker(pool)) {
3478                                 raw_spin_lock(&wq_mayday_lock);
3479                                 /*
3480                                  * Queue iff we aren't racing destruction
3481                                  * and somebody else hasn't queued it already.
3482                                  */
3483                                 if (wq->rescuer && list_empty(&pwq->mayday_node)) {
3484                                         get_pwq(pwq);
3485                                         list_add_tail(&pwq->mayday_node, &wq->maydays);
3486                                 }
3487                                 raw_spin_unlock(&wq_mayday_lock);
3488                         }
3489                 }
3490
3491                 /*
3492                  * Put the reference grabbed by send_mayday().  @pool won't
3493                  * go away while we're still attached to it.
3494                  */
3495                 put_pwq(pwq);
3496
3497                 /*
3498                  * Leave this pool. Notify regular workers; otherwise, we end up
3499                  * with 0 concurrency and stalling the execution.
3500                  */
3501                 kick_pool(pool);
3502
3503                 raw_spin_unlock_irq(&pool->lock);
3504
3505                 worker_detach_from_pool(rescuer);
3506
3507                 raw_spin_lock_irq(&wq_mayday_lock);
3508         }
3509
3510         raw_spin_unlock_irq(&wq_mayday_lock);
3511
3512         if (should_stop) {
3513                 __set_current_state(TASK_RUNNING);
3514                 set_pf_worker(false);
3515                 return 0;
3516         }
3517
3518         /* rescuers should never participate in concurrency management */
3519         WARN_ON_ONCE(!(rescuer->flags & WORKER_NOT_RUNNING));
3520         schedule();
3521         goto repeat;
3522 }
3523
3524 static void bh_worker(struct worker *worker)
3525 {
3526         struct worker_pool *pool = worker->pool;
3527         int nr_restarts = BH_WORKER_RESTARTS;
3528         unsigned long end = jiffies + BH_WORKER_JIFFIES;
3529
3530         raw_spin_lock_irq(&pool->lock);
3531         worker_leave_idle(worker);
3532
3533         /*
3534          * This function follows the structure of worker_thread(). See there for
3535          * explanations on each step.
3536          */
3537         if (!need_more_worker(pool))
3538                 goto done;
3539
3540         WARN_ON_ONCE(!list_empty(&worker->scheduled));
3541         worker_clr_flags(worker, WORKER_PREP | WORKER_REBOUND);
3542
3543         do {
3544                 struct work_struct *work =
3545                         list_first_entry(&pool->worklist,
3546                                          struct work_struct, entry);
3547
3548                 if (assign_work(work, worker, NULL))
3549                         process_scheduled_works(worker);
3550         } while (keep_working(pool) &&
3551                  --nr_restarts && time_before(jiffies, end));
3552
3553         worker_set_flags(worker, WORKER_PREP);
3554 done:
3555         worker_enter_idle(worker);
3556         kick_pool(pool);
3557         raw_spin_unlock_irq(&pool->lock);
3558 }
3559
3560 /*
3561  * TODO: Convert all tasklet users to workqueue and use softirq directly.
3562  *
3563  * This is currently called from tasklet[_hi]action() and thus is also called
3564  * whenever there are tasklets to run. Let's do an early exit if there's nothing
3565  * queued. Once conversion from tasklet is complete, the need_more_worker() test
3566  * can be dropped.
3567  *
3568  * After full conversion, we'll add worker->softirq_action, directly use the
3569  * softirq action and obtain the worker pointer from the softirq_action pointer.
3570  */
3571 void workqueue_softirq_action(bool highpri)
3572 {
3573         struct worker_pool *pool =
3574                 &per_cpu(bh_worker_pools, smp_processor_id())[highpri];
3575         if (need_more_worker(pool))
3576                 bh_worker(list_first_entry(&pool->workers, struct worker, node));
3577 }
3578
3579 struct wq_drain_dead_softirq_work {
3580         struct work_struct      work;
3581         struct worker_pool      *pool;
3582         struct completion       done;
3583 };
3584
3585 static void drain_dead_softirq_workfn(struct work_struct *work)
3586 {
3587         struct wq_drain_dead_softirq_work *dead_work =
3588                 container_of(work, struct wq_drain_dead_softirq_work, work);
3589         struct worker_pool *pool = dead_work->pool;
3590         bool repeat;
3591
3592         /*
3593          * @pool's CPU is dead and we want to execute its still pending work
3594          * items from this BH work item which is running on a different CPU. As
3595          * its CPU is dead, @pool can't be kicked and, as work execution path
3596          * will be nested, a lockdep annotation needs to be suppressed. Mark
3597          * @pool with %POOL_BH_DRAINING for the special treatments.
3598          */
3599         raw_spin_lock_irq(&pool->lock);
3600         pool->flags |= POOL_BH_DRAINING;
3601         raw_spin_unlock_irq(&pool->lock);
3602
3603         bh_worker(list_first_entry(&pool->workers, struct worker, node));
3604
3605         raw_spin_lock_irq(&pool->lock);
3606         pool->flags &= ~POOL_BH_DRAINING;
3607         repeat = need_more_worker(pool);
3608         raw_spin_unlock_irq(&pool->lock);
3609
3610         /*
3611          * bh_worker() might hit consecutive execution limit and bail. If there
3612          * still are pending work items, reschedule self and return so that we
3613          * don't hog this CPU's BH.
3614          */
3615         if (repeat) {
3616                 if (pool->attrs->nice == HIGHPRI_NICE_LEVEL)
3617                         queue_work(system_bh_highpri_wq, work);
3618                 else
3619                         queue_work(system_bh_wq, work);
3620         } else {
3621                 complete(&dead_work->done);
3622         }
3623 }
3624
3625 /*
3626  * @cpu is dead. Drain the remaining BH work items on the current CPU. It's
3627  * possible to allocate dead_work per CPU and avoid flushing. However, then we
3628  * have to worry about draining overlapping with CPU coming back online or
3629  * nesting (one CPU's dead_work queued on another CPU which is also dead and so
3630  * on). Let's keep it simple and drain them synchronously. These are BH work
3631  * items which shouldn't be requeued on the same pool. Shouldn't take long.
3632  */
3633 void workqueue_softirq_dead(unsigned int cpu)
3634 {
3635         int i;
3636
3637         for (i = 0; i < NR_STD_WORKER_POOLS; i++) {
3638                 struct worker_pool *pool = &per_cpu(bh_worker_pools, cpu)[i];
3639                 struct wq_drain_dead_softirq_work dead_work;
3640
3641                 if (!need_more_worker(pool))
3642                         continue;
3643
3644                 INIT_WORK_ONSTACK(&dead_work.work, drain_dead_softirq_workfn);
3645                 dead_work.pool = pool;
3646                 init_completion(&dead_work.done);
3647
3648                 if (pool->attrs->nice == HIGHPRI_NICE_LEVEL)
3649                         queue_work(system_bh_highpri_wq, &dead_work.work);
3650                 else
3651                         queue_work(system_bh_wq, &dead_work.work);
3652
3653                 wait_for_completion(&dead_work.done);
3654                 destroy_work_on_stack(&dead_work.work);
3655         }
3656 }
3657
3658 /**
3659  * check_flush_dependency - check for flush dependency sanity
3660  * @target_wq: workqueue being flushed
3661  * @target_work: work item being flushed (NULL for workqueue flushes)
3662  *
3663  * %current is trying to flush the whole @target_wq or @target_work on it.
3664  * If @target_wq doesn't have %WQ_MEM_RECLAIM, verify that %current is not
3665  * reclaiming memory or running on a workqueue which doesn't have
3666  * %WQ_MEM_RECLAIM as that can break forward-progress guarantee leading to
3667  * a deadlock.
3668  */
3669 static void check_flush_dependency(struct workqueue_struct *target_wq,
3670                                    struct work_struct *target_work)
3671 {
3672         work_func_t target_func = target_work ? target_work->func : NULL;
3673         struct worker *worker;
3674
3675         if (target_wq->flags & WQ_MEM_RECLAIM)
3676                 return;
3677
3678         worker = current_wq_worker();
3679
3680         WARN_ONCE(current->flags & PF_MEMALLOC,
3681                   "workqueue: PF_MEMALLOC task %d(%s) is flushing !WQ_MEM_RECLAIM %s:%ps",
3682                   current->pid, current->comm, target_wq->name, target_func);
3683         WARN_ONCE(worker && ((worker->current_pwq->wq->flags &
3684                               (WQ_MEM_RECLAIM | __WQ_LEGACY)) == WQ_MEM_RECLAIM),
3685                   "workqueue: WQ_MEM_RECLAIM %s:%ps is flushing !WQ_MEM_RECLAIM %s:%ps",
3686                   worker->current_pwq->wq->name, worker->current_func,
3687                   target_wq->name, target_func);
3688 }
3689
3690 struct wq_barrier {
3691         struct work_struct      work;
3692         struct completion       done;
3693         struct task_struct      *task;  /* purely informational */
3694 };
3695
3696 static void wq_barrier_func(struct work_struct *work)
3697 {
3698         struct wq_barrier *barr = container_of(work, struct wq_barrier, work);
3699         complete(&barr->done);
3700 }
3701
3702 /**
3703  * insert_wq_barrier - insert a barrier work
3704  * @pwq: pwq to insert barrier into
3705  * @barr: wq_barrier to insert
3706  * @target: target work to attach @barr to
3707  * @worker: worker currently executing @target, NULL if @target is not executing
3708  *
3709  * @barr is linked to @target such that @barr is completed only after
3710  * @target finishes execution.  Please note that the ordering
3711  * guarantee is observed only with respect to @target and on the local
3712  * cpu.
3713  *
3714  * Currently, a queued barrier can't be canceled.  This is because
3715  * try_to_grab_pending() can't determine whether the work to be
3716  * grabbed is at the head of the queue and thus can't clear LINKED
3717  * flag of the previous work while there must be a valid next work
3718  * after a work with LINKED flag set.
3719  *
3720  * Note that when @worker is non-NULL, @target may be modified
3721  * underneath us, so we can't reliably determine pwq from @target.
3722  *
3723  * CONTEXT:
3724  * raw_spin_lock_irq(pool->lock).
3725  */
3726 static void insert_wq_barrier(struct pool_workqueue *pwq,
3727                               struct wq_barrier *barr,
3728                               struct work_struct *target, struct worker *worker)
3729 {
3730         static __maybe_unused struct lock_class_key bh_key, thr_key;
3731         unsigned int work_flags = 0;
3732         unsigned int work_color;
3733         struct list_head *head;
3734
3735         /*
3736          * debugobject calls are safe here even with pool->lock locked
3737          * as we know for sure that this will not trigger any of the
3738          * checks and call back into the fixup functions where we
3739          * might deadlock.
3740          *
3741          * BH and threaded workqueues need separate lockdep keys to avoid
3742          * spuriously triggering "inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W}
3743          * usage".
3744          */
3745         INIT_WORK_ONSTACK_KEY(&barr->work, wq_barrier_func,
3746                               (pwq->wq->flags & WQ_BH) ? &bh_key : &thr_key);
3747         __set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(&barr->work));
3748
3749         init_completion_map(&barr->done, &target->lockdep_map);
3750
3751         barr->task = current;
3752
3753         /* The barrier work item does not participate in nr_active. */
3754         work_flags |= WORK_STRUCT_INACTIVE;
3755
3756         /*
3757          * If @target is currently being executed, schedule the
3758          * barrier to the worker; otherwise, put it after @target.
3759          */
3760         if (worker) {
3761                 head = worker->scheduled.next;
3762                 work_color = worker->current_color;
3763         } else {
3764                 unsigned long *bits = work_data_bits(target);
3765
3766                 head = target->entry.next;
3767                 /* there can already be other linked works, inherit and set */
3768                 work_flags |= *bits & WORK_STRUCT_LINKED;
3769                 work_color = get_work_color(*bits);
3770                 __set_bit(WORK_STRUCT_LINKED_BIT, bits);
3771         }
3772
3773         pwq->nr_in_flight[work_color]++;
3774         work_flags |= work_color_to_flags(work_color);
3775
3776         insert_work(pwq, &barr->work, head, work_flags);
3777 }
3778
3779 /**
3780  * flush_workqueue_prep_pwqs - prepare pwqs for workqueue flushing
3781  * @wq: workqueue being flushed
3782  * @flush_color: new flush color, < 0 for no-op
3783  * @work_color: new work color, < 0 for no-op
3784  *
3785  * Prepare pwqs for workqueue flushing.
3786  *
3787  * If @flush_color is non-negative, flush_color on all pwqs should be
3788  * -1.  If no pwq has in-flight commands at the specified color, all
3789  * pwq->flush_color's stay at -1 and %false is returned.  If any pwq
3790  * has in flight commands, its pwq->flush_color is set to
3791  * @flush_color, @wq->nr_pwqs_to_flush is updated accordingly, pwq
3792  * wakeup logic is armed and %true is returned.
3793  *
3794  * The caller should have initialized @wq->first_flusher prior to
3795  * calling this function with non-negative @flush_color.  If
3796  * @flush_color is negative, no flush color update is done and %false
3797  * is returned.
3798  *
3799  * If @work_color is non-negative, all pwqs should have the same
3800  * work_color which is previous to @work_color and all will be
3801  * advanced to @work_color.
3802  *
3803  * CONTEXT:
3804  * mutex_lock(wq->mutex).
3805  *
3806  * Return:
3807  * %true if @flush_color >= 0 and there's something to flush.  %false
3808  * otherwise.
3809  */
3810 static bool flush_workqueue_prep_pwqs(struct workqueue_struct *wq,
3811                                       int flush_color, int work_color)
3812 {
3813         bool wait = false;
3814         struct pool_workqueue *pwq;
3815
3816         if (flush_color >= 0) {
3817                 WARN_ON_ONCE(atomic_read(&wq->nr_pwqs_to_flush));
3818                 atomic_set(&wq->nr_pwqs_to_flush, 1);
3819         }
3820
3821         for_each_pwq(pwq, wq) {
3822                 struct worker_pool *pool = pwq->pool;
3823
3824                 raw_spin_lock_irq(&pool->lock);
3825
3826                 if (flush_color >= 0) {
3827                         WARN_ON_ONCE(pwq->flush_color != -1);
3828
3829                         if (pwq->nr_in_flight[flush_color]) {
3830                                 pwq->flush_color = flush_color;
3831                                 atomic_inc(&wq->nr_pwqs_to_flush);
3832                                 wait = true;
3833                         }
3834                 }
3835
3836                 if (work_color >= 0) {
3837                         WARN_ON_ONCE(work_color != work_next_color(pwq->work_color));
3838                         pwq->work_color = work_color;
3839                 }
3840
3841                 raw_spin_unlock_irq(&pool->lock);
3842         }
3843
3844         if (flush_color >= 0 && atomic_dec_and_test(&wq->nr_pwqs_to_flush))
3845                 complete(&wq->first_flusher->done);
3846
3847         return wait;
3848 }
3849
3850 static void touch_wq_lockdep_map(struct workqueue_struct *wq)
3851 {
3852 #ifdef CONFIG_LOCKDEP
3853         if (wq->flags & WQ_BH)
3854                 local_bh_disable();
3855
3856         lock_map_acquire(&wq->lockdep_map);
3857         lock_map_release(&wq->lockdep_map);
3858
3859         if (wq->flags & WQ_BH)
3860                 local_bh_enable();
3861 #endif
3862 }
3863
3864 static void touch_work_lockdep_map(struct work_struct *work,
3865                                    struct workqueue_struct *wq)
3866 {
3867 #ifdef CONFIG_LOCKDEP
3868         if (wq->flags & WQ_BH)
3869                 local_bh_disable();
3870
3871         lock_map_acquire(&work->lockdep_map);
3872         lock_map_release(&work->lockdep_map);
3873
3874         if (wq->flags & WQ_BH)
3875                 local_bh_enable();
3876 #endif
3877 }
3878
3879 /**
3880  * __flush_workqueue - ensure that any scheduled work has run to completion.
3881  * @wq: workqueue to flush
3882  *
3883  * This function sleeps until all work items which were queued on entry
3884  * have finished execution, but it is not livelocked by new incoming ones.
3885  */
3886 void __flush_workqueue(struct workqueue_struct *wq)
3887 {
3888         struct wq_flusher this_flusher = {
3889                 .list = LIST_HEAD_INIT(this_flusher.list),
3890                 .flush_color = -1,
3891                 .done = COMPLETION_INITIALIZER_ONSTACK_MAP(this_flusher.done, wq->lockdep_map),
3892         };
3893         int next_color;
3894
3895         if (WARN_ON(!wq_online))
3896                 return;
3897
3898         touch_wq_lockdep_map(wq);
3899
3900         mutex_lock(&wq->mutex);
3901
3902         /*
3903          * Start-to-wait phase
3904          */
3905         next_color = work_next_color(wq->work_color);
3906
3907         if (next_color != wq->flush_color) {
3908                 /*
3909                  * Color space is not full.  The current work_color
3910                  * becomes our flush_color and work_color is advanced
3911                  * by one.
3912                  */
3913                 WARN_ON_ONCE(!list_empty(&wq->flusher_overflow));
3914                 this_flusher.flush_color = wq->work_color;
3915                 wq->work_color = next_color;
3916
3917                 if (!wq->first_flusher) {
3918                         /* no flush in progress, become the first flusher */
3919                         WARN_ON_ONCE(wq->flush_color != this_flusher.flush_color);
3920
3921                         wq->first_flusher = &this_flusher;
3922
3923                         if (!flush_workqueue_prep_pwqs(wq, wq->flush_color,
3924                                                        wq->work_color)) {
3925                                 /* nothing to flush, done */
3926                                 wq->flush_color = next_color;
3927                                 wq->first_flusher = NULL;
3928                                 goto out_unlock;
3929                         }
3930                 } else {
3931                         /* wait in queue */
3932                         WARN_ON_ONCE(wq->flush_color == this_flusher.flush_color);
3933                         list_add_tail(&this_flusher.list, &wq->flusher_queue);
3934                         flush_workqueue_prep_pwqs(wq, -1, wq->work_color);
3935                 }
3936         } else {
3937                 /*
3938                  * Oops, color space is full, wait on overflow queue.
3939                  * The next flush completion will assign us
3940                  * flush_color and transfer to flusher_queue.
3941                  */
3942                 list_add_tail(&this_flusher.list, &wq->flusher_overflow);
3943         }
3944
3945         check_flush_dependency(wq, NULL);
3946
3947         mutex_unlock(&wq->mutex);
3948
3949         wait_for_completion(&this_flusher.done);
3950
3951         /*
3952          * Wake-up-and-cascade phase
3953          *
3954          * First flushers are responsible for cascading flushes and
3955          * handling overflow.  Non-first flushers can simply return.
3956          */
3957         if (READ_ONCE(wq->first_flusher) != &this_flusher)
3958                 return;
3959
3960         mutex_lock(&wq->mutex);
3961
3962         /* we might have raced, check again with mutex held */
3963         if (wq->first_flusher != &this_flusher)
3964                 goto out_unlock;
3965
3966         WRITE_ONCE(wq->first_flusher, NULL);
3967
3968         WARN_ON_ONCE(!list_empty(&this_flusher.list));
3969         WARN_ON_ONCE(wq->flush_color != this_flusher.flush_color);
3970
3971         while (true) {
3972                 struct wq_flusher *next, *tmp;
3973
3974                 /* complete all the flushers sharing the current flush color */
3975                 list_for_each_entry_safe(next, tmp, &wq->flusher_queue, list) {
3976                         if (next->flush_color != wq->flush_color)
3977                                 break;
3978                         list_del_init(&next->list);
3979                         complete(&next->done);
3980                 }
3981
3982                 WARN_ON_ONCE(!list_empty(&wq->flusher_overflow) &&
3983                              wq->flush_color != work_next_color(wq->work_color));
3984
3985                 /* this flush_color is finished, advance by one */
3986                 wq->flush_color = work_next_color(wq->flush_color);
3987
3988                 /* one color has been freed, handle overflow queue */
3989                 if (!list_empty(&wq->flusher_overflow)) {
3990                         /*
3991                          * Assign the same color to all overflowed
3992                          * flushers, advance work_color and append to
3993                          * flusher_queue.  This is the start-to-wait
3994                          * phase for these overflowed flushers.
3995                          */
3996                         list_for_each_entry(tmp, &wq->flusher_overflow, list)
3997                                 tmp->flush_color = wq->work_color;
3998
3999                         wq->work_color = work_next_color(wq->work_color);
4000
4001                         list_splice_tail_init(&wq->flusher_overflow,
4002                                               &wq->flusher_queue);
4003                         flush_workqueue_prep_pwqs(wq, -1, wq->work_color);
4004                 }
4005
4006                 if (list_empty(&wq->flusher_queue)) {
4007                         WARN_ON_ONCE(wq->flush_color != wq->work_color);
4008                         break;
4009                 }
4010
4011                 /*
4012                  * Need to flush more colors.  Make the next flusher
4013                  * the new first flusher and arm pwqs.
4014                  */
4015                 WARN_ON_ONCE(wq->flush_color == wq->work_color);
4016                 WARN_ON_ONCE(wq->flush_color != next->flush_color);
4017
4018                 list_del_init(&next->list);
4019                 wq->first_flusher = next;
4020
4021                 if (flush_workqueue_prep_pwqs(wq, wq->flush_color, -1))
4022                         break;
4023
4024                 /*
4025                  * Meh... this color is already done, clear first
4026                  * flusher and repeat cascading.
4027                  */
4028                 wq->first_flusher = NULL;
4029         }
4030
4031 out_unlock:
4032         mutex_unlock(&wq->mutex);
4033 }
4034 EXPORT_SYMBOL(__flush_workqueue);
4035
4036 /**
4037  * drain_workqueue - drain a workqueue
4038  * @wq: workqueue to drain
4039  *
4040  * Wait until the workqueue becomes empty.  While draining is in progress,
4041  * only chain queueing is allowed.  IOW, only currently pending or running
4042  * work items on @wq can queue further work items on it.  @wq is flushed
4043  * repeatedly until it becomes empty.  The number of flushing is determined
4044  * by the depth of chaining and should be relatively short.  Whine if it
4045  * takes too long.
4046  */
4047 void drain_workqueue(struct workqueue_struct *wq)
4048 {
4049         unsigned int flush_cnt = 0;
4050         struct pool_workqueue *pwq;
4051
4052         /*
4053          * __queue_work() needs to test whether there are drainers, is much
4054          * hotter than drain_workqueue() and already looks at @wq->flags.
4055          * Use __WQ_DRAINING so that queue doesn't have to check nr_drainers.
4056          */
4057         mutex_lock(&wq->mutex);
4058         if (!wq->nr_drainers++)
4059                 wq->flags |= __WQ_DRAINING;
4060         mutex_unlock(&wq->mutex);
4061 reflush:
4062         __flush_workqueue(wq);
4063
4064         mutex_lock(&wq->mutex);
4065
4066         for_each_pwq(pwq, wq) {
4067                 bool drained;
4068
4069                 raw_spin_lock_irq(&pwq->pool->lock);
4070                 drained = pwq_is_empty(pwq);
4071                 raw_spin_unlock_irq(&pwq->pool->lock);
4072
4073                 if (drained)
4074                         continue;
4075
4076                 if (++flush_cnt == 10 ||
4077                     (flush_cnt % 100 == 0 && flush_cnt <= 1000))
4078                         pr_warn("workqueue %s: %s() isn't complete after %u tries\n",
4079                                 wq->name, __func__, flush_cnt);
4080
4081                 mutex_unlock(&wq->mutex);
4082                 goto reflush;
4083         }
4084
4085         if (!--wq->nr_drainers)
4086                 wq->flags &= ~__WQ_DRAINING;
4087         mutex_unlock(&wq->mutex);
4088 }
4089 EXPORT_SYMBOL_GPL(drain_workqueue);
4090
4091 static bool start_flush_work(struct work_struct *work, struct wq_barrier *barr,
4092                              bool from_cancel)
4093 {
4094         struct worker *worker = NULL;
4095         struct worker_pool *pool;
4096         struct pool_workqueue *pwq;
4097         struct workqueue_struct *wq;
4098
4099         rcu_read_lock();
4100         pool = get_work_pool(work);
4101         if (!pool) {
4102                 rcu_read_unlock();
4103                 return false;
4104         }
4105
4106         raw_spin_lock_irq(&pool->lock);
4107         /* see the comment in try_to_grab_pending() with the same code */
4108         pwq = get_work_pwq(work);
4109         if (pwq) {
4110                 if (unlikely(pwq->pool != pool))
4111                         goto already_gone;
4112         } else {
4113                 worker = find_worker_executing_work(pool, work);
4114                 if (!worker)
4115                         goto already_gone;
4116                 pwq = worker->current_pwq;
4117         }
4118
4119         wq = pwq->wq;
4120         check_flush_dependency(wq, work);
4121
4122         insert_wq_barrier(pwq, barr, work, worker);
4123         raw_spin_unlock_irq(&pool->lock);
4124
4125         touch_work_lockdep_map(work, wq);
4126
4127         /*
4128          * Force a lock recursion deadlock when using flush_work() inside a
4129          * single-threaded or rescuer equipped workqueue.
4130          *
4131          * For single threaded workqueues the deadlock happens when the work
4132          * is after the work issuing the flush_work(). For rescuer equipped
4133          * workqueues the deadlock happens when the rescuer stalls, blocking
4134          * forward progress.
4135          */
4136         if (!from_cancel && (wq->saved_max_active == 1 || wq->rescuer))
4137                 touch_wq_lockdep_map(wq);
4138
4139         rcu_read_unlock();
4140         return true;
4141 already_gone:
4142         raw_spin_unlock_irq(&pool->lock);
4143         rcu_read_unlock();
4144         return false;
4145 }
4146
4147 static bool __flush_work(struct work_struct *work, bool from_cancel)
4148 {
4149         struct wq_barrier barr;
4150         unsigned long data;
4151
4152         if (WARN_ON(!wq_online))
4153                 return false;
4154
4155         if (WARN_ON(!work->func))
4156                 return false;
4157
4158         if (!start_flush_work(work, &barr, from_cancel))
4159                 return false;
4160
4161         /*
4162          * start_flush_work() returned %true. If @from_cancel is set, we know
4163          * that @work must have been executing during start_flush_work() and
4164          * can't currently be queued. Its data must contain OFFQ bits. If @work
4165          * was queued on a BH workqueue, we also know that it was running in the
4166          * BH context and thus can be busy-waited.
4167          */
4168         data = *work_data_bits(work);
4169         if (from_cancel &&
4170             !WARN_ON_ONCE(data & WORK_STRUCT_PWQ) && (data & WORK_OFFQ_BH)) {
4171                 /*
4172                  * On RT, prevent a live lock when %current preempted soft
4173                  * interrupt processing or prevents ksoftirqd from running by
4174                  * keeping flipping BH. If the BH work item runs on a different
4175                  * CPU then this has no effect other than doing the BH
4176                  * disable/enable dance for nothing. This is copied from
4177                  * kernel/softirq.c::tasklet_unlock_spin_wait().
4178                  */
4179                 while (!try_wait_for_completion(&barr.done)) {
4180                         if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
4181                                 local_bh_disable();
4182                                 local_bh_enable();
4183                         } else {
4184                                 cpu_relax();
4185                         }
4186                 }
4187         } else {
4188                 wait_for_completion(&barr.done);
4189         }
4190
4191         destroy_work_on_stack(&barr.work);
4192         return true;
4193 }
4194
4195 /**
4196  * flush_work - wait for a work to finish executing the last queueing instance
4197  * @work: the work to flush
4198  *
4199  * Wait until @work has finished execution.  @work is guaranteed to be idle
4200  * on return if it hasn't been requeued since flush started.
4201  *
4202  * Return:
4203  * %true if flush_work() waited for the work to finish execution,
4204  * %false if it was already idle.
4205  */
4206 bool flush_work(struct work_struct *work)
4207 {
4208         might_sleep();
4209         return __flush_work(work, false);
4210 }
4211 EXPORT_SYMBOL_GPL(flush_work);
4212
4213 /**
4214  * flush_delayed_work - wait for a dwork to finish executing the last queueing
4215  * @dwork: the delayed work to flush
4216  *
4217  * Delayed timer is cancelled and the pending work is queued for
4218  * immediate execution.  Like flush_work(), this function only
4219  * considers the last queueing instance of @dwork.
4220  *
4221  * Return:
4222  * %true if flush_work() waited for the work to finish execution,
4223  * %false if it was already idle.
4224  */
4225 bool flush_delayed_work(struct delayed_work *dwork)
4226 {
4227         local_irq_disable();
4228         if (del_timer_sync(&dwork->timer))
4229                 __queue_work(dwork->cpu, dwork->wq, &dwork->work);
4230         local_irq_enable();
4231         return flush_work(&dwork->work);
4232 }
4233 EXPORT_SYMBOL(flush_delayed_work);
4234
4235 /**
4236  * flush_rcu_work - wait for a rwork to finish executing the last queueing
4237  * @rwork: the rcu work to flush
4238  *
4239  * Return:
4240  * %true if flush_rcu_work() waited for the work to finish execution,
4241  * %false if it was already idle.
4242  */
4243 bool flush_rcu_work(struct rcu_work *rwork)
4244 {
4245         if (test_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(&rwork->work))) {
4246                 rcu_barrier();
4247                 flush_work(&rwork->work);
4248                 return true;
4249         } else {
4250                 return flush_work(&rwork->work);
4251         }
4252 }
4253 EXPORT_SYMBOL(flush_rcu_work);
4254
4255 static void work_offqd_disable(struct work_offq_data *offqd)
4256 {
4257         const unsigned long max = (1lu << WORK_OFFQ_DISABLE_BITS) - 1;
4258
4259         if (likely(offqd->disable < max))
4260                 offqd->disable++;
4261         else
4262                 WARN_ONCE(true, "workqueue: work disable count overflowed\n");
4263 }
4264
4265 static void work_offqd_enable(struct work_offq_data *offqd)
4266 {
4267         if (likely(offqd->disable > 0))
4268                 offqd->disable--;
4269         else
4270                 WARN_ONCE(true, "workqueue: work disable count underflowed\n");
4271 }
4272
4273 static bool __cancel_work(struct work_struct *work, u32 cflags)
4274 {
4275         struct work_offq_data offqd;
4276         unsigned long irq_flags;
4277         int ret;
4278
4279         ret = work_grab_pending(work, cflags, &irq_flags);
4280
4281         work_offqd_unpack(&offqd, *work_data_bits(work));
4282
4283         if (cflags & WORK_CANCEL_DISABLE)
4284                 work_offqd_disable(&offqd);
4285
4286         set_work_pool_and_clear_pending(work, offqd.pool_id,
4287                                         work_offqd_pack_flags(&offqd));
4288         local_irq_restore(irq_flags);
4289         return ret;
4290 }
4291
4292 static bool __cancel_work_sync(struct work_struct *work, u32 cflags)
4293 {
4294         bool ret;
4295
4296         ret = __cancel_work(work, cflags | WORK_CANCEL_DISABLE);
4297
4298         if (*work_data_bits(work) & WORK_OFFQ_BH)
4299                 WARN_ON_ONCE(in_hardirq());
4300         else
4301                 might_sleep();
4302
4303         /*
4304          * Skip __flush_work() during early boot when we know that @work isn't
4305          * executing. This allows canceling during early boot.
4306          */
4307         if (wq_online)
4308                 __flush_work(work, true);
4309
4310         if (!(cflags & WORK_CANCEL_DISABLE))
4311                 enable_work(work);
4312
4313         return ret;
4314 }
4315
4316 /*
4317  * See cancel_delayed_work()
4318  */
4319 bool cancel_work(struct work_struct *work)
4320 {
4321         return __cancel_work(work, 0);
4322 }
4323 EXPORT_SYMBOL(cancel_work);
4324
4325 /**
4326  * cancel_work_sync - cancel a work and wait for it to finish
4327  * @work: the work to cancel
4328  *
4329  * Cancel @work and wait for its execution to finish. This function can be used
4330  * even if the work re-queues itself or migrates to another workqueue. On return
4331  * from this function, @work is guaranteed to be not pending or executing on any
4332  * CPU as long as there aren't racing enqueues.
4333  *
4334  * cancel_work_sync(&delayed_work->work) must not be used for delayed_work's.
4335  * Use cancel_delayed_work_sync() instead.
4336  *
4337  * Must be called from a sleepable context if @work was last queued on a non-BH
4338  * workqueue. Can also be called from non-hardirq atomic contexts including BH
4339  * if @work was last queued on a BH workqueue.
4340  *
4341  * Returns %true if @work was pending, %false otherwise.
4342  */
4343 bool cancel_work_sync(struct work_struct *work)
4344 {
4345         return __cancel_work_sync(work, 0);
4346 }
4347 EXPORT_SYMBOL_GPL(cancel_work_sync);
4348
4349 /**
4350  * cancel_delayed_work - cancel a delayed work
4351  * @dwork: delayed_work to cancel
4352  *
4353  * Kill off a pending delayed_work.
4354  *
4355  * Return: %true if @dwork was pending and canceled; %false if it wasn't
4356  * pending.
4357  *
4358  * Note:
4359  * The work callback function may still be running on return, unless
4360  * it returns %true and the work doesn't re-arm itself.  Explicitly flush or
4361  * use cancel_delayed_work_sync() to wait on it.
4362  *
4363  * This function is safe to call from any context including IRQ handler.
4364  */
4365 bool cancel_delayed_work(struct delayed_work *dwork)
4366 {
4367         return __cancel_work(&dwork->work, WORK_CANCEL_DELAYED);
4368 }
4369 EXPORT_SYMBOL(cancel_delayed_work);
4370
4371 /**
4372  * cancel_delayed_work_sync - cancel a delayed work and wait for it to finish
4373  * @dwork: the delayed work cancel
4374  *
4375  * This is cancel_work_sync() for delayed works.
4376  *
4377  * Return:
4378  * %true if @dwork was pending, %false otherwise.
4379  */
4380 bool cancel_delayed_work_sync(struct delayed_work *dwork)
4381 {
4382         return __cancel_work_sync(&dwork->work, WORK_CANCEL_DELAYED);
4383 }
4384 EXPORT_SYMBOL(cancel_delayed_work_sync);
4385
4386 /**
4387  * disable_work - Disable and cancel a work item
4388  * @work: work item to disable
4389  *
4390  * Disable @work by incrementing its disable count and cancel it if currently
4391  * pending. As long as the disable count is non-zero, any attempt to queue @work
4392  * will fail and return %false. The maximum supported disable depth is 2 to the
4393  * power of %WORK_OFFQ_DISABLE_BITS, currently 65536.
4394  *
4395  * Can be called from any context. Returns %true if @work was pending, %false
4396  * otherwise.
4397  */
4398 bool disable_work(struct work_struct *work)
4399 {
4400         return __cancel_work(work, WORK_CANCEL_DISABLE);
4401 }
4402 EXPORT_SYMBOL_GPL(disable_work);
4403
4404 /**
4405  * disable_work_sync - Disable, cancel and drain a work item
4406  * @work: work item to disable
4407  *
4408  * Similar to disable_work() but also wait for @work to finish if currently
4409  * executing.
4410  *
4411  * Must be called from a sleepable context if @work was last queued on a non-BH
4412  * workqueue. Can also be called from non-hardirq atomic contexts including BH
4413  * if @work was last queued on a BH workqueue.
4414  *
4415  * Returns %true if @work was pending, %false otherwise.
4416  */
4417 bool disable_work_sync(struct work_struct *work)
4418 {
4419         return __cancel_work_sync(work, WORK_CANCEL_DISABLE);
4420 }
4421 EXPORT_SYMBOL_GPL(disable_work_sync);
4422
4423 /**
4424  * enable_work - Enable a work item
4425  * @work: work item to enable
4426  *
4427  * Undo disable_work[_sync]() by decrementing @work's disable count. @work can
4428  * only be queued if its disable count is 0.
4429  *
4430  * Can be called from any context. Returns %true if the disable count reached 0.
4431  * Otherwise, %false.
4432  */
4433 bool enable_work(struct work_struct *work)
4434 {
4435         struct work_offq_data offqd;
4436         unsigned long irq_flags;
4437
4438         work_grab_pending(work, 0, &irq_flags);
4439
4440         work_offqd_unpack(&offqd, *work_data_bits(work));
4441         work_offqd_enable(&offqd);
4442         set_work_pool_and_clear_pending(work, offqd.pool_id,
4443                                         work_offqd_pack_flags(&offqd));
4444         local_irq_restore(irq_flags);
4445
4446         return !offqd.disable;
4447 }
4448 EXPORT_SYMBOL_GPL(enable_work);
4449
4450 /**
4451  * disable_delayed_work - Disable and cancel a delayed work item
4452  * @dwork: delayed work item to disable
4453  *
4454  * disable_work() for delayed work items.
4455  */
4456 bool disable_delayed_work(struct delayed_work *dwork)
4457 {
4458         return __cancel_work(&dwork->work,
4459                              WORK_CANCEL_DELAYED | WORK_CANCEL_DISABLE);
4460 }
4461 EXPORT_SYMBOL_GPL(disable_delayed_work);
4462
4463 /**
4464  * disable_delayed_work_sync - Disable, cancel and drain a delayed work item
4465  * @dwork: delayed work item to disable
4466  *
4467  * disable_work_sync() for delayed work items.
4468  */
4469 bool disable_delayed_work_sync(struct delayed_work *dwork)
4470 {
4471         return __cancel_work_sync(&dwork->work,
4472                                   WORK_CANCEL_DELAYED | WORK_CANCEL_DISABLE);
4473 }
4474 EXPORT_SYMBOL_GPL(disable_delayed_work_sync);
4475
4476 /**
4477  * enable_delayed_work - Enable a delayed work item
4478  * @dwork: delayed work item to enable
4479  *
4480  * enable_work() for delayed work items.
4481  */
4482 bool enable_delayed_work(struct delayed_work *dwork)
4483 {
4484         return enable_work(&dwork->work);
4485 }
4486 EXPORT_SYMBOL_GPL(enable_delayed_work);
4487
4488 /**
4489  * schedule_on_each_cpu - execute a function synchronously on each online CPU
4490  * @func: the function to call
4491  *
4492  * schedule_on_each_cpu() executes @func on each online CPU using the
4493  * system workqueue and blocks until all CPUs have completed.
4494  * schedule_on_each_cpu() is very slow.
4495  *
4496  * Return:
4497  * 0 on success, -errno on failure.
4498  */
4499 int schedule_on_each_cpu(work_func_t func)
4500 {
4501         int cpu;
4502         struct work_struct __percpu *works;
4503
4504         works = alloc_percpu(struct work_struct);
4505         if (!works)
4506                 return -ENOMEM;
4507
4508         cpus_read_lock();
4509
4510         for_each_online_cpu(cpu) {
4511                 struct work_struct *work = per_cpu_ptr(works, cpu);
4512
4513                 INIT_WORK(work, func);
4514                 schedule_work_on(cpu, work);
4515         }
4516
4517         for_each_online_cpu(cpu)
4518                 flush_work(per_cpu_ptr(works, cpu));
4519
4520         cpus_read_unlock();
4521         free_percpu(works);
4522         return 0;
4523 }
4524
4525 /**
4526  * execute_in_process_context - reliably execute the routine with user context
4527  * @fn:         the function to execute
4528  * @ew:         guaranteed storage for the execute work structure (must
4529  *              be available when the work executes)
4530  *
4531  * Executes the function immediately if process context is available,
4532  * otherwise schedules the function for delayed execution.
4533  *
4534  * Return:      0 - function was executed
4535  *              1 - function was scheduled for execution
4536  */
4537 int execute_in_process_context(work_func_t fn, struct execute_work *ew)
4538 {
4539         if (!in_interrupt()) {
4540                 fn(&ew->work);
4541                 return 0;
4542         }
4543
4544         INIT_WORK(&ew->work, fn);
4545         schedule_work(&ew->work);
4546
4547         return 1;
4548 }
4549 EXPORT_SYMBOL_GPL(execute_in_process_context);
4550
4551 /**
4552  * free_workqueue_attrs - free a workqueue_attrs
4553  * @attrs: workqueue_attrs to free
4554  *
4555  * Undo alloc_workqueue_attrs().
4556  */
4557 void free_workqueue_attrs(struct workqueue_attrs *attrs)
4558 {
4559         if (attrs) {
4560                 free_cpumask_var(attrs->cpumask);
4561                 free_cpumask_var(attrs->__pod_cpumask);
4562                 kfree(attrs);
4563         }
4564 }
4565
4566 /**
4567  * alloc_workqueue_attrs - allocate a workqueue_attrs
4568  *
4569  * Allocate a new workqueue_attrs, initialize with default settings and
4570  * return it.
4571  *
4572  * Return: The allocated new workqueue_attr on success. %NULL on failure.
4573  */
4574 struct workqueue_attrs *alloc_workqueue_attrs(void)
4575 {
4576         struct workqueue_attrs *attrs;
4577
4578         attrs = kzalloc(sizeof(*attrs), GFP_KERNEL);
4579         if (!attrs)
4580                 goto fail;
4581         if (!alloc_cpumask_var(&attrs->cpumask, GFP_KERNEL))
4582                 goto fail;
4583         if (!alloc_cpumask_var(&attrs->__pod_cpumask, GFP_KERNEL))
4584                 goto fail;
4585
4586         cpumask_copy(attrs->cpumask, cpu_possible_mask);
4587         attrs->affn_scope = WQ_AFFN_DFL;
4588         return attrs;
4589 fail:
4590         free_workqueue_attrs(attrs);
4591         return NULL;
4592 }
4593
4594 static void copy_workqueue_attrs(struct workqueue_attrs *to,
4595                                  const struct workqueue_attrs *from)
4596 {
4597         to->nice = from->nice;
4598         cpumask_copy(to->cpumask, from->cpumask);
4599         cpumask_copy(to->__pod_cpumask, from->__pod_cpumask);
4600         to->affn_strict = from->affn_strict;
4601
4602         /*
4603          * Unlike hash and equality test, copying shouldn't ignore wq-only
4604          * fields as copying is used for both pool and wq attrs. Instead,
4605          * get_unbound_pool() explicitly clears the fields.
4606          */
4607         to->affn_scope = from->affn_scope;
4608         to->ordered = from->ordered;
4609 }
4610
4611 /*
4612  * Some attrs fields are workqueue-only. Clear them for worker_pool's. See the
4613  * comments in 'struct workqueue_attrs' definition.
4614  */
4615 static void wqattrs_clear_for_pool(struct workqueue_attrs *attrs)
4616 {
4617         attrs->affn_scope = WQ_AFFN_NR_TYPES;
4618         attrs->ordered = false;
4619         if (attrs->affn_strict)
4620                 cpumask_copy(attrs->cpumask, cpu_possible_mask);
4621 }
4622
4623 /* hash value of the content of @attr */
4624 static u32 wqattrs_hash(const struct workqueue_attrs *attrs)
4625 {
4626         u32 hash = 0;
4627
4628         hash = jhash_1word(attrs->nice, hash);
4629         hash = jhash_1word(attrs->affn_strict, hash);
4630         hash = jhash(cpumask_bits(attrs->__pod_cpumask),
4631                      BITS_TO_LONGS(nr_cpumask_bits) * sizeof(long), hash);
4632         if (!attrs->affn_strict)
4633                 hash = jhash(cpumask_bits(attrs->cpumask),
4634                              BITS_TO_LONGS(nr_cpumask_bits) * sizeof(long), hash);
4635         return hash;
4636 }
4637
4638 /* content equality test */
4639 static bool wqattrs_equal(const struct workqueue_attrs *a,
4640                           const struct workqueue_attrs *b)
4641 {
4642         if (a->nice != b->nice)
4643                 return false;
4644         if (a->affn_strict != b->affn_strict)
4645                 return false;
4646         if (!cpumask_equal(a->__pod_cpumask, b->__pod_cpumask))
4647                 return false;
4648         if (!a->affn_strict && !cpumask_equal(a->cpumask, b->cpumask))
4649                 return false;
4650         return true;
4651 }
4652
4653 /* Update @attrs with actually available CPUs */
4654 static void wqattrs_actualize_cpumask(struct workqueue_attrs *attrs,
4655                                       const cpumask_t *unbound_cpumask)
4656 {
4657         /*
4658          * Calculate the effective CPU mask of @attrs given @unbound_cpumask. If
4659          * @attrs->cpumask doesn't overlap with @unbound_cpumask, we fallback to
4660          * @unbound_cpumask.
4661          */
4662         cpumask_and(attrs->cpumask, attrs->cpumask, unbound_cpumask);
4663         if (unlikely(cpumask_empty(attrs->cpumask)))
4664                 cpumask_copy(attrs->cpumask, unbound_cpumask);
4665 }
4666
4667 /* find wq_pod_type to use for @attrs */
4668 static const struct wq_pod_type *
4669 wqattrs_pod_type(const struct workqueue_attrs *attrs)
4670 {
4671         enum wq_affn_scope scope;
4672         struct wq_pod_type *pt;
4673
4674         /* to synchronize access to wq_affn_dfl */
4675         lockdep_assert_held(&wq_pool_mutex);
4676
4677         if (attrs->affn_scope == WQ_AFFN_DFL)
4678                 scope = wq_affn_dfl;
4679         else
4680                 scope = attrs->affn_scope;
4681
4682         pt = &wq_pod_types[scope];
4683
4684         if (!WARN_ON_ONCE(attrs->affn_scope == WQ_AFFN_NR_TYPES) &&
4685             likely(pt->nr_pods))
4686                 return pt;
4687
4688         /*
4689          * Before workqueue_init_topology(), only SYSTEM is available which is
4690          * initialized in workqueue_init_early().
4691          */
4692         pt = &wq_pod_types[WQ_AFFN_SYSTEM];
4693         BUG_ON(!pt->nr_pods);
4694         return pt;
4695 }
4696
4697 /**
4698  * init_worker_pool - initialize a newly zalloc'd worker_pool
4699  * @pool: worker_pool to initialize
4700  *
4701  * Initialize a newly zalloc'd @pool.  It also allocates @pool->attrs.
4702  *
4703  * Return: 0 on success, -errno on failure.  Even on failure, all fields
4704  * inside @pool proper are initialized and put_unbound_pool() can be called
4705  * on @pool safely to release it.
4706  */
4707 static int init_worker_pool(struct worker_pool *pool)
4708 {
4709         raw_spin_lock_init(&pool->lock);
4710         pool->id = -1;
4711         pool->cpu = -1;
4712         pool->node = NUMA_NO_NODE;
4713         pool->flags |= POOL_DISASSOCIATED;
4714         pool->watchdog_ts = jiffies;
4715         INIT_LIST_HEAD(&pool->worklist);
4716         INIT_LIST_HEAD(&pool->idle_list);
4717         hash_init(pool->busy_hash);
4718
4719         timer_setup(&pool->idle_timer, idle_worker_timeout, TIMER_DEFERRABLE);
4720         INIT_WORK(&pool->idle_cull_work, idle_cull_fn);
4721
4722         timer_setup(&pool->mayday_timer, pool_mayday_timeout, 0);
4723
4724         INIT_LIST_HEAD(&pool->workers);
4725
4726         ida_init(&pool->worker_ida);
4727         INIT_HLIST_NODE(&pool->hash_node);
4728         pool->refcnt = 1;
4729
4730         /* shouldn't fail above this point */
4731         pool->attrs = alloc_workqueue_attrs();
4732         if (!pool->attrs)
4733                 return -ENOMEM;
4734
4735         wqattrs_clear_for_pool(pool->attrs);
4736
4737         return 0;
4738 }
4739
4740 #ifdef CONFIG_LOCKDEP
4741 static void wq_init_lockdep(struct workqueue_struct *wq)
4742 {
4743         char *lock_name;
4744
4745         lockdep_register_key(&wq->key);
4746         lock_name = kasprintf(GFP_KERNEL, "%s%s", "(wq_completion)", wq->name);
4747         if (!lock_name)
4748                 lock_name = wq->name;
4749
4750         wq->lock_name = lock_name;
4751         lockdep_init_map(&wq->lockdep_map, lock_name, &wq->key, 0);
4752 }
4753
4754 static void wq_unregister_lockdep(struct workqueue_struct *wq)
4755 {
4756         lockdep_unregister_key(&wq->key);
4757 }
4758
4759 static void wq_free_lockdep(struct workqueue_struct *wq)
4760 {
4761         if (wq->lock_name != wq->name)
4762                 kfree(wq->lock_name);
4763 }
4764 #else
4765 static void wq_init_lockdep(struct workqueue_struct *wq)
4766 {
4767 }
4768
4769 static void wq_unregister_lockdep(struct workqueue_struct *wq)
4770 {
4771 }
4772
4773 static void wq_free_lockdep(struct workqueue_struct *wq)
4774 {
4775 }
4776 #endif
4777
4778 static void free_node_nr_active(struct wq_node_nr_active **nna_ar)
4779 {
4780         int node;
4781
4782         for_each_node(node) {
4783                 kfree(nna_ar[node]);
4784                 nna_ar[node] = NULL;
4785         }
4786
4787         kfree(nna_ar[nr_node_ids]);
4788         nna_ar[nr_node_ids] = NULL;
4789 }
4790
4791 static void init_node_nr_active(struct wq_node_nr_active *nna)
4792 {
4793         nna->max = WQ_DFL_MIN_ACTIVE;
4794         atomic_set(&nna->nr, 0);
4795         raw_spin_lock_init(&nna->lock);
4796         INIT_LIST_HEAD(&nna->pending_pwqs);
4797 }
4798
4799 /*
4800  * Each node's nr_active counter will be accessed mostly from its own node and
4801  * should be allocated in the node.
4802  */
4803 static int alloc_node_nr_active(struct wq_node_nr_active **nna_ar)
4804 {
4805         struct wq_node_nr_active *nna;
4806         int node;
4807
4808         for_each_node(node) {
4809                 nna = kzalloc_node(sizeof(*nna), GFP_KERNEL, node);
4810                 if (!nna)
4811                         goto err_free;
4812                 init_node_nr_active(nna);
4813                 nna_ar[node] = nna;
4814         }
4815
4816         /* [nr_node_ids] is used as the fallback */
4817         nna = kzalloc_node(sizeof(*nna), GFP_KERNEL, NUMA_NO_NODE);
4818         if (!nna)
4819                 goto err_free;
4820         init_node_nr_active(nna);
4821         nna_ar[nr_node_ids] = nna;
4822
4823         return 0;
4824
4825 err_free:
4826         free_node_nr_active(nna_ar);
4827         return -ENOMEM;
4828 }
4829
4830 static void rcu_free_wq(struct rcu_head *rcu)
4831 {
4832         struct workqueue_struct *wq =
4833                 container_of(rcu, struct workqueue_struct, rcu);
4834
4835         if (wq->flags & WQ_UNBOUND)
4836                 free_node_nr_active(wq->node_nr_active);
4837
4838         wq_free_lockdep(wq);
4839         free_percpu(wq->cpu_pwq);
4840         free_workqueue_attrs(wq->unbound_attrs);
4841         kfree(wq);
4842 }
4843
4844 static void rcu_free_pool(struct rcu_head *rcu)
4845 {
4846         struct worker_pool *pool = container_of(rcu, struct worker_pool, rcu);
4847
4848         ida_destroy(&pool->worker_ida);
4849         free_workqueue_attrs(pool->attrs);
4850         kfree(pool);
4851 }
4852
4853 /**
4854  * put_unbound_pool - put a worker_pool
4855  * @pool: worker_pool to put
4856  *
4857  * Put @pool.  If its refcnt reaches zero, it gets destroyed in RCU
4858  * safe manner.  get_unbound_pool() calls this function on its failure path
4859  * and this function should be able to release pools which went through,
4860  * successfully or not, init_worker_pool().
4861  *
4862  * Should be called with wq_pool_mutex held.
4863  */
4864 static void put_unbound_pool(struct worker_pool *pool)
4865 {
4866         struct worker *worker;
4867         LIST_HEAD(cull_list);
4868
4869         lockdep_assert_held(&wq_pool_mutex);
4870
4871         if (--pool->refcnt)
4872                 return;
4873
4874         /* sanity checks */
4875         if (WARN_ON(!(pool->cpu < 0)) ||
4876             WARN_ON(!list_empty(&pool->worklist)))
4877                 return;
4878
4879         /* release id and unhash */
4880         if (pool->id >= 0)
4881                 idr_remove(&worker_pool_idr, pool->id);
4882         hash_del(&pool->hash_node);
4883
4884         /*
4885          * Become the manager and destroy all workers.  This prevents
4886          * @pool's workers from blocking on attach_mutex.  We're the last
4887          * manager and @pool gets freed with the flag set.
4888          *
4889          * Having a concurrent manager is quite unlikely to happen as we can
4890          * only get here with
4891          *   pwq->refcnt == pool->refcnt == 0
4892          * which implies no work queued to the pool, which implies no worker can
4893          * become the manager. However a worker could have taken the role of
4894          * manager before the refcnts dropped to 0, since maybe_create_worker()
4895          * drops pool->lock
4896          */
4897         while (true) {
4898                 rcuwait_wait_event(&manager_wait,
4899                                    !(pool->flags & POOL_MANAGER_ACTIVE),
4900                                    TASK_UNINTERRUPTIBLE);
4901
4902                 mutex_lock(&wq_pool_attach_mutex);
4903                 raw_spin_lock_irq(&pool->lock);
4904                 if (!(pool->flags & POOL_MANAGER_ACTIVE)) {
4905                         pool->flags |= POOL_MANAGER_ACTIVE;
4906                         break;
4907                 }
4908                 raw_spin_unlock_irq(&pool->lock);
4909                 mutex_unlock(&wq_pool_attach_mutex);
4910         }
4911
4912         while ((worker = first_idle_worker(pool)))
4913                 set_worker_dying(worker, &cull_list);
4914         WARN_ON(pool->nr_workers || pool->nr_idle);
4915         raw_spin_unlock_irq(&pool->lock);
4916
4917         detach_dying_workers(&cull_list);
4918
4919         mutex_unlock(&wq_pool_attach_mutex);
4920
4921         reap_dying_workers(&cull_list);
4922
4923         /* shut down the timers */
4924         del_timer_sync(&pool->idle_timer);
4925         cancel_work_sync(&pool->idle_cull_work);
4926         del_timer_sync(&pool->mayday_timer);
4927
4928         /* RCU protected to allow dereferences from get_work_pool() */
4929         call_rcu(&pool->rcu, rcu_free_pool);
4930 }
4931
4932 /**
4933  * get_unbound_pool - get a worker_pool with the specified attributes
4934  * @attrs: the attributes of the worker_pool to get
4935  *
4936  * Obtain a worker_pool which has the same attributes as @attrs, bump the
4937  * reference count and return it.  If there already is a matching
4938  * worker_pool, it will be used; otherwise, this function attempts to
4939  * create a new one.
4940  *
4941  * Should be called with wq_pool_mutex held.
4942  *
4943  * Return: On success, a worker_pool with the same attributes as @attrs.
4944  * On failure, %NULL.
4945  */
4946 static struct worker_pool *get_unbound_pool(const struct workqueue_attrs *attrs)
4947 {
4948         struct wq_pod_type *pt = &wq_pod_types[WQ_AFFN_NUMA];
4949         u32 hash = wqattrs_hash(attrs);
4950         struct worker_pool *pool;
4951         int pod, node = NUMA_NO_NODE;
4952
4953         lockdep_assert_held(&wq_pool_mutex);
4954
4955         /* do we already have a matching pool? */
4956         hash_for_each_possible(unbound_pool_hash, pool, hash_node, hash) {
4957                 if (wqattrs_equal(pool->attrs, attrs)) {
4958                         pool->refcnt++;
4959                         return pool;
4960                 }
4961         }
4962
4963         /* If __pod_cpumask is contained inside a NUMA pod, that's our node */
4964         for (pod = 0; pod < pt->nr_pods; pod++) {
4965                 if (cpumask_subset(attrs->__pod_cpumask, pt->pod_cpus[pod])) {
4966                         node = pt->pod_node[pod];
4967                         break;
4968                 }
4969         }
4970
4971         /* nope, create a new one */
4972         pool = kzalloc_node(sizeof(*pool), GFP_KERNEL, node);
4973         if (!pool || init_worker_pool(pool) < 0)
4974                 goto fail;
4975
4976         pool->node = node;
4977         copy_workqueue_attrs(pool->attrs, attrs);
4978         wqattrs_clear_for_pool(pool->attrs);
4979
4980         if (worker_pool_assign_id(pool) < 0)
4981                 goto fail;
4982
4983         /* create and start the initial worker */
4984         if (wq_online && !create_worker(pool))
4985                 goto fail;
4986
4987         /* install */
4988         hash_add(unbound_pool_hash, &pool->hash_node, hash);
4989
4990         return pool;
4991 fail:
4992         if (pool)
4993                 put_unbound_pool(pool);
4994         return NULL;
4995 }
4996
4997 /*
4998  * Scheduled on pwq_release_worker by put_pwq() when an unbound pwq hits zero
4999  * refcnt and needs to be destroyed.
5000  */
5001 static void pwq_release_workfn(struct kthread_work *work)
5002 {
5003         struct pool_workqueue *pwq = container_of(work, struct pool_workqueue,
5004                                                   release_work);
5005         struct workqueue_struct *wq = pwq->wq;
5006         struct worker_pool *pool = pwq->pool;
5007         bool is_last = false;
5008
5009         /*
5010          * When @pwq is not linked, it doesn't hold any reference to the
5011          * @wq, and @wq is invalid to access.
5012          */
5013         if (!list_empty(&pwq->pwqs_node)) {
5014                 mutex_lock(&wq->mutex);
5015                 list_del_rcu(&pwq->pwqs_node);
5016                 is_last = list_empty(&wq->pwqs);
5017
5018                 /*
5019                  * For ordered workqueue with a plugged dfl_pwq, restart it now.
5020                  */
5021                 if (!is_last && (wq->flags & __WQ_ORDERED))
5022                         unplug_oldest_pwq(wq);
5023
5024                 mutex_unlock(&wq->mutex);
5025         }
5026
5027         if (wq->flags & WQ_UNBOUND) {
5028                 mutex_lock(&wq_pool_mutex);
5029                 put_unbound_pool(pool);
5030                 mutex_unlock(&wq_pool_mutex);
5031         }
5032
5033         if (!list_empty(&pwq->pending_node)) {
5034                 struct wq_node_nr_active *nna =
5035                         wq_node_nr_active(pwq->wq, pwq->pool->node);
5036
5037                 raw_spin_lock_irq(&nna->lock);
5038                 list_del_init(&pwq->pending_node);
5039                 raw_spin_unlock_irq(&nna->lock);
5040         }
5041
5042         kfree_rcu(pwq, rcu);
5043
5044         /*
5045          * If we're the last pwq going away, @wq is already dead and no one
5046          * is gonna access it anymore.  Schedule RCU free.
5047          */
5048         if (is_last) {
5049                 wq_unregister_lockdep(wq);
5050                 call_rcu(&wq->rcu, rcu_free_wq);
5051         }
5052 }
5053
5054 /* initialize newly allocated @pwq which is associated with @wq and @pool */
5055 static void init_pwq(struct pool_workqueue *pwq, struct workqueue_struct *wq,
5056                      struct worker_pool *pool)
5057 {
5058         BUG_ON((unsigned long)pwq & ~WORK_STRUCT_PWQ_MASK);
5059
5060         memset(pwq, 0, sizeof(*pwq));
5061
5062         pwq->pool = pool;
5063         pwq->wq = wq;
5064         pwq->flush_color = -1;
5065         pwq->refcnt = 1;
5066         INIT_LIST_HEAD(&pwq->inactive_works);
5067         INIT_LIST_HEAD(&pwq->pending_node);
5068         INIT_LIST_HEAD(&pwq->pwqs_node);
5069         INIT_LIST_HEAD(&pwq->mayday_node);
5070         kthread_init_work(&pwq->release_work, pwq_release_workfn);
5071 }
5072
5073 /* sync @pwq with the current state of its associated wq and link it */
5074 static void link_pwq(struct pool_workqueue *pwq)
5075 {
5076         struct workqueue_struct *wq = pwq->wq;
5077
5078         lockdep_assert_held(&wq->mutex);
5079
5080         /* may be called multiple times, ignore if already linked */
5081         if (!list_empty(&pwq->pwqs_node))
5082                 return;
5083
5084         /* set the matching work_color */
5085         pwq->work_color = wq->work_color;
5086
5087         /* link in @pwq */
5088         list_add_tail_rcu(&pwq->pwqs_node, &wq->pwqs);
5089 }
5090
5091 /* obtain a pool matching @attr and create a pwq associating the pool and @wq */
5092 static struct pool_workqueue *alloc_unbound_pwq(struct workqueue_struct *wq,
5093                                         const struct workqueue_attrs *attrs)
5094 {
5095         struct worker_pool *pool;
5096         struct pool_workqueue *pwq;
5097
5098         lockdep_assert_held(&wq_pool_mutex);
5099
5100         pool = get_unbound_pool(attrs);
5101         if (!pool)
5102                 return NULL;
5103
5104         pwq = kmem_cache_alloc_node(pwq_cache, GFP_KERNEL, pool->node);
5105         if (!pwq) {
5106                 put_unbound_pool(pool);
5107                 return NULL;
5108         }
5109
5110         init_pwq(pwq, wq, pool);
5111         return pwq;
5112 }
5113
5114 static void apply_wqattrs_lock(void)
5115 {
5116         mutex_lock(&wq_pool_mutex);
5117 }
5118
5119 static void apply_wqattrs_unlock(void)
5120 {
5121         mutex_unlock(&wq_pool_mutex);
5122 }
5123
5124 /**
5125  * wq_calc_pod_cpumask - calculate a wq_attrs' cpumask for a pod
5126  * @attrs: the wq_attrs of the default pwq of the target workqueue
5127  * @cpu: the target CPU
5128  * @cpu_going_down: if >= 0, the CPU to consider as offline
5129  *
5130  * Calculate the cpumask a workqueue with @attrs should use on @pod. If
5131  * @cpu_going_down is >= 0, that cpu is considered offline during calculation.
5132  * The result is stored in @attrs->__pod_cpumask.
5133  *
5134  * If pod affinity is not enabled, @attrs->cpumask is always used. If enabled
5135  * and @pod has online CPUs requested by @attrs, the returned cpumask is the
5136  * intersection of the possible CPUs of @pod and @attrs->cpumask.
5137  *
5138  * The caller is responsible for ensuring that the cpumask of @pod stays stable.
5139  */
5140 static void wq_calc_pod_cpumask(struct workqueue_attrs *attrs, int cpu,
5141                                 int cpu_going_down)
5142 {
5143         const struct wq_pod_type *pt = wqattrs_pod_type(attrs);
5144         int pod = pt->cpu_pod[cpu];
5145
5146         /* calculate possible CPUs in @pod that @attrs wants */
5147         cpumask_and(attrs->__pod_cpumask, pt->pod_cpus[pod], attrs->cpumask);
5148         /* does @pod have any online CPUs @attrs wants? */
5149         if (!cpumask_intersects(attrs->__pod_cpumask, wq_online_cpumask)) {
5150                 cpumask_copy(attrs->__pod_cpumask, attrs->cpumask);
5151                 return;
5152         }
5153
5154         if (cpumask_empty(attrs->__pod_cpumask))
5155                 pr_warn_once("WARNING: workqueue cpumask: online intersect > "
5156                                 "possible intersect\n");
5157 }
5158
5159 /* install @pwq into @wq and return the old pwq, @cpu < 0 for dfl_pwq */
5160 static struct pool_workqueue *install_unbound_pwq(struct workqueue_struct *wq,
5161                                         int cpu, struct pool_workqueue *pwq)
5162 {
5163         struct pool_workqueue __rcu **slot = unbound_pwq_slot(wq, cpu);
5164         struct pool_workqueue *old_pwq;
5165
5166         lockdep_assert_held(&wq_pool_mutex);
5167         lockdep_assert_held(&wq->mutex);
5168
5169         /* link_pwq() can handle duplicate calls */
5170         link_pwq(pwq);
5171
5172         old_pwq = rcu_access_pointer(*slot);
5173         rcu_assign_pointer(*slot, pwq);
5174         return old_pwq;
5175 }
5176
5177 /* context to store the prepared attrs & pwqs before applying */
5178 struct apply_wqattrs_ctx {
5179         struct workqueue_struct *wq;            /* target workqueue */
5180         struct workqueue_attrs  *attrs;         /* attrs to apply */
5181         struct list_head        list;           /* queued for batching commit */
5182         struct pool_workqueue   *dfl_pwq;
5183         struct pool_workqueue   *pwq_tbl[];
5184 };
5185
5186 /* free the resources after success or abort */
5187 static void apply_wqattrs_cleanup(struct apply_wqattrs_ctx *ctx)
5188 {
5189         if (ctx) {
5190                 int cpu;
5191
5192                 for_each_possible_cpu(cpu)
5193                         put_pwq_unlocked(ctx->pwq_tbl[cpu]);
5194                 put_pwq_unlocked(ctx->dfl_pwq);
5195
5196                 free_workqueue_attrs(ctx->attrs);
5197
5198                 kfree(ctx);
5199         }
5200 }
5201
5202 /* allocate the attrs and pwqs for later installation */
5203 static struct apply_wqattrs_ctx *
5204 apply_wqattrs_prepare(struct workqueue_struct *wq,
5205                       const struct workqueue_attrs *attrs,
5206                       const cpumask_var_t unbound_cpumask)
5207 {
5208         struct apply_wqattrs_ctx *ctx;
5209         struct workqueue_attrs *new_attrs;
5210         int cpu;
5211
5212         lockdep_assert_held(&wq_pool_mutex);
5213
5214         if (WARN_ON(attrs->affn_scope < 0 ||
5215                     attrs->affn_scope >= WQ_AFFN_NR_TYPES))
5216                 return ERR_PTR(-EINVAL);
5217
5218         ctx = kzalloc(struct_size(ctx, pwq_tbl, nr_cpu_ids), GFP_KERNEL);
5219
5220         new_attrs = alloc_workqueue_attrs();
5221         if (!ctx || !new_attrs)
5222                 goto out_free;
5223
5224         /*
5225          * If something goes wrong during CPU up/down, we'll fall back to
5226          * the default pwq covering whole @attrs->cpumask.  Always create
5227          * it even if we don't use it immediately.
5228          */
5229         copy_workqueue_attrs(new_attrs, attrs);
5230         wqattrs_actualize_cpumask(new_attrs, unbound_cpumask);
5231         cpumask_copy(new_attrs->__pod_cpumask, new_attrs->cpumask);
5232         ctx->dfl_pwq = alloc_unbound_pwq(wq, new_attrs);
5233         if (!ctx->dfl_pwq)
5234                 goto out_free;
5235
5236         for_each_possible_cpu(cpu) {
5237                 if (new_attrs->ordered) {
5238                         ctx->dfl_pwq->refcnt++;
5239                         ctx->pwq_tbl[cpu] = ctx->dfl_pwq;
5240                 } else {
5241                         wq_calc_pod_cpumask(new_attrs, cpu, -1);
5242                         ctx->pwq_tbl[cpu] = alloc_unbound_pwq(wq, new_attrs);
5243                         if (!ctx->pwq_tbl[cpu])
5244                                 goto out_free;
5245                 }
5246         }
5247
5248         /* save the user configured attrs and sanitize it. */
5249         copy_workqueue_attrs(new_attrs, attrs);
5250         cpumask_and(new_attrs->cpumask, new_attrs->cpumask, cpu_possible_mask);
5251         cpumask_copy(new_attrs->__pod_cpumask, new_attrs->cpumask);
5252         ctx->attrs = new_attrs;
5253
5254         /*
5255          * For initialized ordered workqueues, there should only be one pwq
5256          * (dfl_pwq). Set the plugged flag of ctx->dfl_pwq to suspend execution
5257          * of newly queued work items until execution of older work items in
5258          * the old pwq's have completed.
5259          */
5260         if ((wq->flags & __WQ_ORDERED) && !list_empty(&wq->pwqs))
5261                 ctx->dfl_pwq->plugged = true;
5262
5263         ctx->wq = wq;
5264         return ctx;
5265
5266 out_free:
5267         free_workqueue_attrs(new_attrs);
5268         apply_wqattrs_cleanup(ctx);
5269         return ERR_PTR(-ENOMEM);
5270 }
5271
5272 /* set attrs and install prepared pwqs, @ctx points to old pwqs on return */
5273 static void apply_wqattrs_commit(struct apply_wqattrs_ctx *ctx)
5274 {
5275         int cpu;
5276
5277         /* all pwqs have been created successfully, let's install'em */
5278         mutex_lock(&ctx->wq->mutex);
5279
5280         copy_workqueue_attrs(ctx->wq->unbound_attrs, ctx->attrs);
5281
5282         /* save the previous pwqs and install the new ones */
5283         for_each_possible_cpu(cpu)
5284                 ctx->pwq_tbl[cpu] = install_unbound_pwq(ctx->wq, cpu,
5285                                                         ctx->pwq_tbl[cpu]);
5286         ctx->dfl_pwq = install_unbound_pwq(ctx->wq, -1, ctx->dfl_pwq);
5287
5288         /* update node_nr_active->max */
5289         wq_update_node_max_active(ctx->wq, -1);
5290
5291         /* rescuer needs to respect wq cpumask changes */
5292         if (ctx->wq->rescuer)
5293                 set_cpus_allowed_ptr(ctx->wq->rescuer->task,
5294                                      unbound_effective_cpumask(ctx->wq));
5295
5296         mutex_unlock(&ctx->wq->mutex);
5297 }
5298
5299 static int apply_workqueue_attrs_locked(struct workqueue_struct *wq,
5300                                         const struct workqueue_attrs *attrs)
5301 {
5302         struct apply_wqattrs_ctx *ctx;
5303
5304         /* only unbound workqueues can change attributes */
5305         if (WARN_ON(!(wq->flags & WQ_UNBOUND)))
5306                 return -EINVAL;
5307
5308         ctx = apply_wqattrs_prepare(wq, attrs, wq_unbound_cpumask);
5309         if (IS_ERR(ctx))
5310                 return PTR_ERR(ctx);
5311
5312         /* the ctx has been prepared successfully, let's commit it */
5313         apply_wqattrs_commit(ctx);
5314         apply_wqattrs_cleanup(ctx);
5315
5316         return 0;
5317 }
5318
5319 /**
5320  * apply_workqueue_attrs - apply new workqueue_attrs to an unbound workqueue
5321  * @wq: the target workqueue
5322  * @attrs: the workqueue_attrs to apply, allocated with alloc_workqueue_attrs()
5323  *
5324  * Apply @attrs to an unbound workqueue @wq. Unless disabled, this function maps
5325  * a separate pwq to each CPU pod with possibles CPUs in @attrs->cpumask so that
5326  * work items are affine to the pod it was issued on. Older pwqs are released as
5327  * in-flight work items finish. Note that a work item which repeatedly requeues
5328  * itself back-to-back will stay on its current pwq.
5329  *
5330  * Performs GFP_KERNEL allocations.
5331  *
5332  * Assumes caller has CPU hotplug read exclusion, i.e. cpus_read_lock().
5333  *
5334  * Return: 0 on success and -errno on failure.
5335  */
5336 int apply_workqueue_attrs(struct workqueue_struct *wq,
5337                           const struct workqueue_attrs *attrs)
5338 {
5339         int ret;
5340
5341         lockdep_assert_cpus_held();
5342
5343         mutex_lock(&wq_pool_mutex);
5344         ret = apply_workqueue_attrs_locked(wq, attrs);
5345         mutex_unlock(&wq_pool_mutex);
5346
5347         return ret;
5348 }
5349
5350 /**
5351  * wq_update_pod - update pod affinity of a wq for CPU hot[un]plug
5352  * @wq: the target workqueue
5353  * @cpu: the CPU to update pool association for
5354  * @hotplug_cpu: the CPU coming up or going down
5355  * @online: whether @cpu is coming up or going down
5356  *
5357  * This function is to be called from %CPU_DOWN_PREPARE, %CPU_ONLINE and
5358  * %CPU_DOWN_FAILED.  @cpu is being hot[un]plugged, update pod affinity of
5359  * @wq accordingly.
5360  *
5361  *
5362  * If pod affinity can't be adjusted due to memory allocation failure, it falls
5363  * back to @wq->dfl_pwq which may not be optimal but is always correct.
5364  *
5365  * Note that when the last allowed CPU of a pod goes offline for a workqueue
5366  * with a cpumask spanning multiple pods, the workers which were already
5367  * executing the work items for the workqueue will lose their CPU affinity and
5368  * may execute on any CPU. This is similar to how per-cpu workqueues behave on
5369  * CPU_DOWN. If a workqueue user wants strict affinity, it's the user's
5370  * responsibility to flush the work item from CPU_DOWN_PREPARE.
5371  */
5372 static void wq_update_pod(struct workqueue_struct *wq, int cpu,
5373                           int hotplug_cpu, bool online)
5374 {
5375         int off_cpu = online ? -1 : hotplug_cpu;
5376         struct pool_workqueue *old_pwq = NULL, *pwq;
5377         struct workqueue_attrs *target_attrs;
5378
5379         lockdep_assert_held(&wq_pool_mutex);
5380
5381         if (!(wq->flags & WQ_UNBOUND) || wq->unbound_attrs->ordered)
5382                 return;
5383
5384         /*
5385          * We don't wanna alloc/free wq_attrs for each wq for each CPU.
5386          * Let's use a preallocated one.  The following buf is protected by
5387          * CPU hotplug exclusion.
5388          */
5389         target_attrs = wq_update_pod_attrs_buf;
5390
5391         copy_workqueue_attrs(target_attrs, wq->unbound_attrs);
5392         wqattrs_actualize_cpumask(target_attrs, wq_unbound_cpumask);
5393
5394         /* nothing to do if the target cpumask matches the current pwq */
5395         wq_calc_pod_cpumask(target_attrs, cpu, off_cpu);
5396         if (wqattrs_equal(target_attrs, unbound_pwq(wq, cpu)->pool->attrs))
5397                 return;
5398
5399         /* create a new pwq */
5400         pwq = alloc_unbound_pwq(wq, target_attrs);
5401         if (!pwq) {
5402                 pr_warn("workqueue: allocation failed while updating CPU pod affinity of \"%s\"\n",
5403                         wq->name);
5404                 goto use_dfl_pwq;
5405         }
5406
5407         /* Install the new pwq. */
5408         mutex_lock(&wq->mutex);
5409         old_pwq = install_unbound_pwq(wq, cpu, pwq);
5410         goto out_unlock;
5411
5412 use_dfl_pwq:
5413         mutex_lock(&wq->mutex);
5414         pwq = unbound_pwq(wq, -1);
5415         raw_spin_lock_irq(&pwq->pool->lock);
5416         get_pwq(pwq);
5417         raw_spin_unlock_irq(&pwq->pool->lock);
5418         old_pwq = install_unbound_pwq(wq, cpu, pwq);
5419 out_unlock:
5420         mutex_unlock(&wq->mutex);
5421         put_pwq_unlocked(old_pwq);
5422 }
5423
5424 static int alloc_and_link_pwqs(struct workqueue_struct *wq)
5425 {
5426         bool highpri = wq->flags & WQ_HIGHPRI;
5427         int cpu, ret;
5428
5429         lockdep_assert_cpus_held();
5430         lockdep_assert_held(&wq_pool_mutex);
5431
5432         wq->cpu_pwq = alloc_percpu(struct pool_workqueue *);
5433         if (!wq->cpu_pwq)
5434                 goto enomem;
5435
5436         if (!(wq->flags & WQ_UNBOUND)) {
5437                 struct worker_pool __percpu *pools;
5438
5439                 if (wq->flags & WQ_BH)
5440                         pools = bh_worker_pools;
5441                 else
5442                         pools = cpu_worker_pools;
5443
5444                 for_each_possible_cpu(cpu) {
5445                         struct pool_workqueue **pwq_p;
5446                         struct worker_pool *pool;
5447
5448                         pool = &(per_cpu_ptr(pools, cpu)[highpri]);
5449                         pwq_p = per_cpu_ptr(wq->cpu_pwq, cpu);
5450
5451                         *pwq_p = kmem_cache_alloc_node(pwq_cache, GFP_KERNEL,
5452                                                        pool->node);
5453                         if (!*pwq_p)
5454                                 goto enomem;
5455
5456                         init_pwq(*pwq_p, wq, pool);
5457
5458                         mutex_lock(&wq->mutex);
5459                         link_pwq(*pwq_p);
5460                         mutex_unlock(&wq->mutex);
5461                 }
5462                 return 0;
5463         }
5464
5465         if (wq->flags & __WQ_ORDERED) {
5466                 struct pool_workqueue *dfl_pwq;
5467
5468                 ret = apply_workqueue_attrs_locked(wq, ordered_wq_attrs[highpri]);
5469                 /* there should only be single pwq for ordering guarantee */
5470                 dfl_pwq = rcu_access_pointer(wq->dfl_pwq);
5471                 WARN(!ret && (wq->pwqs.next != &dfl_pwq->pwqs_node ||
5472                               wq->pwqs.prev != &dfl_pwq->pwqs_node),
5473                      "ordering guarantee broken for workqueue %s\n", wq->name);
5474         } else {
5475                 ret = apply_workqueue_attrs_locked(wq, unbound_std_wq_attrs[highpri]);
5476         }
5477
5478         return ret;
5479
5480 enomem:
5481         if (wq->cpu_pwq) {
5482                 for_each_possible_cpu(cpu) {
5483                         struct pool_workqueue *pwq = *per_cpu_ptr(wq->cpu_pwq, cpu);
5484
5485                         if (pwq)
5486                                 kmem_cache_free(pwq_cache, pwq);
5487                 }
5488                 free_percpu(wq->cpu_pwq);
5489                 wq->cpu_pwq = NULL;
5490         }
5491         return -ENOMEM;
5492 }
5493
5494 static int wq_clamp_max_active(int max_active, unsigned int flags,
5495                                const char *name)
5496 {
5497         if (max_active < 1 || max_active > WQ_MAX_ACTIVE)
5498                 pr_warn("workqueue: max_active %d requested for %s is out of range, clamping between %d and %d\n",
5499                         max_active, name, 1, WQ_MAX_ACTIVE);
5500
5501         return clamp_val(max_active, 1, WQ_MAX_ACTIVE);
5502 }
5503
5504 /*
5505  * Workqueues which may be used during memory reclaim should have a rescuer
5506  * to guarantee forward progress.
5507  */
5508 static int init_rescuer(struct workqueue_struct *wq)
5509 {
5510         struct worker *rescuer;
5511         int ret;
5512
5513         lockdep_assert_held(&wq_pool_mutex);
5514
5515         if (!(wq->flags & WQ_MEM_RECLAIM))
5516                 return 0;
5517
5518         rescuer = alloc_worker(NUMA_NO_NODE);
5519         if (!rescuer) {
5520                 pr_err("workqueue: Failed to allocate a rescuer for wq \"%s\"\n",
5521                        wq->name);
5522                 return -ENOMEM;
5523         }
5524
5525         rescuer->rescue_wq = wq;
5526         rescuer->task = kthread_create(rescuer_thread, rescuer, "kworker/R-%s", wq->name);
5527         if (IS_ERR(rescuer->task)) {
5528                 ret = PTR_ERR(rescuer->task);
5529                 pr_err("workqueue: Failed to create a rescuer kthread for wq \"%s\": %pe",
5530                        wq->name, ERR_PTR(ret));
5531                 kfree(rescuer);
5532                 return ret;
5533         }
5534
5535         wq->rescuer = rescuer;
5536         if (wq->flags & WQ_UNBOUND)
5537                 kthread_bind_mask(rescuer->task, unbound_effective_cpumask(wq));
5538         else
5539                 kthread_bind_mask(rescuer->task, cpu_possible_mask);
5540         wake_up_process(rescuer->task);
5541
5542         return 0;
5543 }
5544
5545 /**
5546  * wq_adjust_max_active - update a wq's max_active to the current setting
5547  * @wq: target workqueue
5548  *
5549  * If @wq isn't freezing, set @wq->max_active to the saved_max_active and
5550  * activate inactive work items accordingly. If @wq is freezing, clear
5551  * @wq->max_active to zero.
5552  */
5553 static void wq_adjust_max_active(struct workqueue_struct *wq)
5554 {
5555         bool activated;
5556         int new_max, new_min;
5557
5558         lockdep_assert_held(&wq->mutex);
5559
5560         if ((wq->flags & WQ_FREEZABLE) && workqueue_freezing) {
5561                 new_max = 0;
5562                 new_min = 0;
5563         } else {
5564                 new_max = wq->saved_max_active;
5565                 new_min = wq->saved_min_active;
5566         }
5567
5568         if (wq->max_active == new_max && wq->min_active == new_min)
5569                 return;
5570
5571         /*
5572          * Update @wq->max/min_active and then kick inactive work items if more
5573          * active work items are allowed. This doesn't break work item ordering
5574          * because new work items are always queued behind existing inactive
5575          * work items if there are any.
5576          */
5577         WRITE_ONCE(wq->max_active, new_max);
5578         WRITE_ONCE(wq->min_active, new_min);
5579
5580         if (wq->flags & WQ_UNBOUND)
5581                 wq_update_node_max_active(wq, -1);
5582
5583         if (new_max == 0)
5584                 return;
5585
5586         /*
5587          * Round-robin through pwq's activating the first inactive work item
5588          * until max_active is filled.
5589          */
5590         do {
5591                 struct pool_workqueue *pwq;
5592
5593                 activated = false;
5594                 for_each_pwq(pwq, wq) {
5595                         unsigned long irq_flags;
5596
5597                         /* can be called during early boot w/ irq disabled */
5598                         raw_spin_lock_irqsave(&pwq->pool->lock, irq_flags);
5599                         if (pwq_activate_first_inactive(pwq, true)) {
5600                                 activated = true;
5601                                 kick_pool(pwq->pool);
5602                         }
5603                         raw_spin_unlock_irqrestore(&pwq->pool->lock, irq_flags);
5604                 }
5605         } while (activated);
5606 }
5607
5608 __printf(1, 4)
5609 struct workqueue_struct *alloc_workqueue(const char *fmt,
5610                                          unsigned int flags,
5611                                          int max_active, ...)
5612 {
5613         va_list args;
5614         struct workqueue_struct *wq;
5615         size_t wq_size;
5616         int name_len;
5617
5618         if (flags & WQ_BH) {
5619                 if (WARN_ON_ONCE(flags & ~__WQ_BH_ALLOWS))
5620                         return NULL;
5621                 if (WARN_ON_ONCE(max_active))
5622                         return NULL;
5623         }
5624
5625         /* see the comment above the definition of WQ_POWER_EFFICIENT */
5626         if ((flags & WQ_POWER_EFFICIENT) && wq_power_efficient)
5627                 flags |= WQ_UNBOUND;
5628
5629         /* allocate wq and format name */
5630         if (flags & WQ_UNBOUND)
5631                 wq_size = struct_size(wq, node_nr_active, nr_node_ids + 1);
5632         else
5633                 wq_size = sizeof(*wq);
5634
5635         wq = kzalloc(wq_size, GFP_KERNEL);
5636         if (!wq)
5637                 return NULL;
5638
5639         if (flags & WQ_UNBOUND) {
5640                 wq->unbound_attrs = alloc_workqueue_attrs();
5641                 if (!wq->unbound_attrs)
5642                         goto err_free_wq;
5643         }
5644
5645         va_start(args, max_active);
5646         name_len = vsnprintf(wq->name, sizeof(wq->name), fmt, args);
5647         va_end(args);
5648
5649         if (name_len >= WQ_NAME_LEN)
5650                 pr_warn_once("workqueue: name exceeds WQ_NAME_LEN. Truncating to: %s\n",
5651                              wq->name);
5652
5653         if (flags & WQ_BH) {
5654                 /*
5655                  * BH workqueues always share a single execution context per CPU
5656                  * and don't impose any max_active limit.
5657                  */
5658                 max_active = INT_MAX;
5659         } else {
5660                 max_active = max_active ?: WQ_DFL_ACTIVE;
5661                 max_active = wq_clamp_max_active(max_active, flags, wq->name);
5662         }
5663
5664         /* init wq */
5665         wq->flags = flags;
5666         wq->max_active = max_active;
5667         wq->min_active = min(max_active, WQ_DFL_MIN_ACTIVE);
5668         wq->saved_max_active = wq->max_active;
5669         wq->saved_min_active = wq->min_active;
5670         mutex_init(&wq->mutex);
5671         atomic_set(&wq->nr_pwqs_to_flush, 0);
5672         INIT_LIST_HEAD(&wq->pwqs);
5673         INIT_LIST_HEAD(&wq->flusher_queue);
5674         INIT_LIST_HEAD(&wq->flusher_overflow);
5675         INIT_LIST_HEAD(&wq->maydays);
5676
5677         wq_init_lockdep(wq);
5678         INIT_LIST_HEAD(&wq->list);
5679
5680         if (flags & WQ_UNBOUND) {
5681                 if (alloc_node_nr_active(wq->node_nr_active) < 0)
5682                         goto err_unreg_lockdep;
5683         }
5684
5685         /*
5686          * wq_pool_mutex protects the workqueues list, allocations of PWQs,
5687          * and the global freeze state.  alloc_and_link_pwqs() also requires
5688          * cpus_read_lock() for PWQs' affinities.
5689          */
5690         apply_wqattrs_lock();
5691
5692         if (alloc_and_link_pwqs(wq) < 0)
5693                 goto err_unlock_free_node_nr_active;
5694
5695         mutex_lock(&wq->mutex);
5696         wq_adjust_max_active(wq);
5697         mutex_unlock(&wq->mutex);
5698
5699         list_add_tail_rcu(&wq->list, &workqueues);
5700
5701         if (wq_online && init_rescuer(wq) < 0)
5702                 goto err_unlock_destroy;
5703
5704         apply_wqattrs_unlock();
5705
5706         if ((wq->flags & WQ_SYSFS) && workqueue_sysfs_register(wq))
5707                 goto err_destroy;
5708
5709         return wq;
5710
5711 err_unlock_free_node_nr_active:
5712         apply_wqattrs_unlock();
5713         /*
5714          * Failed alloc_and_link_pwqs() may leave pending pwq->release_work,
5715          * flushing the pwq_release_worker ensures that the pwq_release_workfn()
5716          * completes before calling kfree(wq).
5717          */
5718         if (wq->flags & WQ_UNBOUND) {
5719                 kthread_flush_worker(pwq_release_worker);
5720                 free_node_nr_active(wq->node_nr_active);
5721         }
5722 err_unreg_lockdep:
5723         wq_unregister_lockdep(wq);
5724         wq_free_lockdep(wq);
5725 err_free_wq:
5726         free_workqueue_attrs(wq->unbound_attrs);
5727         kfree(wq);
5728         return NULL;
5729 err_unlock_destroy:
5730         apply_wqattrs_unlock();
5731 err_destroy:
5732         destroy_workqueue(wq);
5733         return NULL;
5734 }
5735 EXPORT_SYMBOL_GPL(alloc_workqueue);
5736
5737 static bool pwq_busy(struct pool_workqueue *pwq)
5738 {
5739         int i;
5740
5741         for (i = 0; i < WORK_NR_COLORS; i++)
5742                 if (pwq->nr_in_flight[i])
5743                         return true;
5744
5745         if ((pwq != rcu_access_pointer(pwq->wq->dfl_pwq)) && (pwq->refcnt > 1))
5746                 return true;
5747         if (!pwq_is_empty(pwq))
5748                 return true;
5749
5750         return false;
5751 }
5752
5753 /**
5754  * destroy_workqueue - safely terminate a workqueue
5755  * @wq: target workqueue
5756  *
5757  * Safely destroy a workqueue. All work currently pending will be done first.
5758  */
5759 void destroy_workqueue(struct workqueue_struct *wq)
5760 {
5761         struct pool_workqueue *pwq;
5762         int cpu;
5763
5764         /*
5765          * Remove it from sysfs first so that sanity check failure doesn't
5766          * lead to sysfs name conflicts.
5767          */
5768         workqueue_sysfs_unregister(wq);
5769
5770         /* mark the workqueue destruction is in progress */
5771         mutex_lock(&wq->mutex);
5772         wq->flags |= __WQ_DESTROYING;
5773         mutex_unlock(&wq->mutex);
5774
5775         /* drain it before proceeding with destruction */
5776         drain_workqueue(wq);
5777
5778         /* kill rescuer, if sanity checks fail, leave it w/o rescuer */
5779         if (wq->rescuer) {
5780                 struct worker *rescuer = wq->rescuer;
5781
5782                 /* this prevents new queueing */
5783                 raw_spin_lock_irq(&wq_mayday_lock);
5784                 wq->rescuer = NULL;
5785                 raw_spin_unlock_irq(&wq_mayday_lock);
5786
5787                 /* rescuer will empty maydays list before exiting */
5788                 kthread_stop(rescuer->task);
5789                 kfree(rescuer);
5790         }
5791
5792         /*
5793          * Sanity checks - grab all the locks so that we wait for all
5794          * in-flight operations which may do put_pwq().
5795          */
5796         mutex_lock(&wq_pool_mutex);
5797         mutex_lock(&wq->mutex);
5798         for_each_pwq(pwq, wq) {
5799                 raw_spin_lock_irq(&pwq->pool->lock);
5800                 if (WARN_ON(pwq_busy(pwq))) {
5801                         pr_warn("%s: %s has the following busy pwq\n",
5802                                 __func__, wq->name);
5803                         show_pwq(pwq);
5804                         raw_spin_unlock_irq(&pwq->pool->lock);
5805                         mutex_unlock(&wq->mutex);
5806                         mutex_unlock(&wq_pool_mutex);
5807                         show_one_workqueue(wq);
5808                         return;
5809                 }
5810                 raw_spin_unlock_irq(&pwq->pool->lock);
5811         }
5812         mutex_unlock(&wq->mutex);
5813
5814         /*
5815          * wq list is used to freeze wq, remove from list after
5816          * flushing is complete in case freeze races us.
5817          */
5818         list_del_rcu(&wq->list);
5819         mutex_unlock(&wq_pool_mutex);
5820
5821         /*
5822          * We're the sole accessor of @wq. Directly access cpu_pwq and dfl_pwq
5823          * to put the base refs. @wq will be auto-destroyed from the last
5824          * pwq_put. RCU read lock prevents @wq from going away from under us.
5825          */
5826         rcu_read_lock();
5827
5828         for_each_possible_cpu(cpu) {
5829                 put_pwq_unlocked(unbound_pwq(wq, cpu));
5830                 RCU_INIT_POINTER(*unbound_pwq_slot(wq, cpu), NULL);
5831         }
5832
5833         put_pwq_unlocked(unbound_pwq(wq, -1));
5834         RCU_INIT_POINTER(*unbound_pwq_slot(wq, -1), NULL);
5835
5836         rcu_read_unlock();
5837 }
5838 EXPORT_SYMBOL_GPL(destroy_workqueue);
5839
5840 /**
5841  * workqueue_set_max_active - adjust max_active of a workqueue
5842  * @wq: target workqueue
5843  * @max_active: new max_active value.
5844  *
5845  * Set max_active of @wq to @max_active. See the alloc_workqueue() function
5846  * comment.
5847  *
5848  * CONTEXT:
5849  * Don't call from IRQ context.
5850  */
5851 void workqueue_set_max_active(struct workqueue_struct *wq, int max_active)
5852 {
5853         /* max_active doesn't mean anything for BH workqueues */
5854         if (WARN_ON(wq->flags & WQ_BH))
5855                 return;
5856         /* disallow meddling with max_active for ordered workqueues */
5857         if (WARN_ON(wq->flags & __WQ_ORDERED))
5858                 return;
5859
5860         max_active = wq_clamp_max_active(max_active, wq->flags, wq->name);
5861
5862         mutex_lock(&wq->mutex);
5863
5864         wq->saved_max_active = max_active;
5865         if (wq->flags & WQ_UNBOUND)
5866                 wq->saved_min_active = min(wq->saved_min_active, max_active);
5867
5868         wq_adjust_max_active(wq);
5869
5870         mutex_unlock(&wq->mutex);
5871 }
5872 EXPORT_SYMBOL_GPL(workqueue_set_max_active);
5873
5874 /**
5875  * workqueue_set_min_active - adjust min_active of an unbound workqueue
5876  * @wq: target unbound workqueue
5877  * @min_active: new min_active value
5878  *
5879  * Set min_active of an unbound workqueue. Unlike other types of workqueues, an
5880  * unbound workqueue is not guaranteed to be able to process max_active
5881  * interdependent work items. Instead, an unbound workqueue is guaranteed to be
5882  * able to process min_active number of interdependent work items which is
5883  * %WQ_DFL_MIN_ACTIVE by default.
5884  *
5885  * Use this function to adjust the min_active value between 0 and the current
5886  * max_active.
5887  */
5888 void workqueue_set_min_active(struct workqueue_struct *wq, int min_active)
5889 {
5890         /* min_active is only meaningful for non-ordered unbound workqueues */
5891         if (WARN_ON((wq->flags & (WQ_BH | WQ_UNBOUND | __WQ_ORDERED)) !=
5892                     WQ_UNBOUND))
5893                 return;
5894
5895         mutex_lock(&wq->mutex);
5896         wq->saved_min_active = clamp(min_active, 0, wq->saved_max_active);
5897         wq_adjust_max_active(wq);
5898         mutex_unlock(&wq->mutex);
5899 }
5900
5901 /**
5902  * current_work - retrieve %current task's work struct
5903  *
5904  * Determine if %current task is a workqueue worker and what it's working on.
5905  * Useful to find out the context that the %current task is running in.
5906  *
5907  * Return: work struct if %current task is a workqueue worker, %NULL otherwise.
5908  */
5909 struct work_struct *current_work(void)
5910 {
5911         struct worker *worker = current_wq_worker();
5912
5913         return worker ? worker->current_work : NULL;
5914 }
5915 EXPORT_SYMBOL(current_work);
5916
5917 /**
5918  * current_is_workqueue_rescuer - is %current workqueue rescuer?
5919  *
5920  * Determine whether %current is a workqueue rescuer.  Can be used from
5921  * work functions to determine whether it's being run off the rescuer task.
5922  *
5923  * Return: %true if %current is a workqueue rescuer. %false otherwise.
5924  */
5925 bool current_is_workqueue_rescuer(void)
5926 {
5927         struct worker *worker = current_wq_worker();
5928
5929         return worker && worker->rescue_wq;
5930 }
5931
5932 /**
5933  * workqueue_congested - test whether a workqueue is congested
5934  * @cpu: CPU in question
5935  * @wq: target workqueue
5936  *
5937  * Test whether @wq's cpu workqueue for @cpu is congested.  There is
5938  * no synchronization around this function and the test result is
5939  * unreliable and only useful as advisory hints or for debugging.
5940  *
5941  * If @cpu is WORK_CPU_UNBOUND, the test is performed on the local CPU.
5942  *
5943  * With the exception of ordered workqueues, all workqueues have per-cpu
5944  * pool_workqueues, each with its own congested state. A workqueue being
5945  * congested on one CPU doesn't mean that the workqueue is contested on any
5946  * other CPUs.
5947  *
5948  * Return:
5949  * %true if congested, %false otherwise.
5950  */
5951 bool workqueue_congested(int cpu, struct workqueue_struct *wq)
5952 {
5953         struct pool_workqueue *pwq;
5954         bool ret;
5955
5956         rcu_read_lock();
5957         preempt_disable();
5958
5959         if (cpu == WORK_CPU_UNBOUND)
5960                 cpu = smp_processor_id();
5961
5962         pwq = *per_cpu_ptr(wq->cpu_pwq, cpu);
5963         ret = !list_empty(&pwq->inactive_works);
5964
5965         preempt_enable();
5966         rcu_read_unlock();
5967
5968         return ret;
5969 }
5970 EXPORT_SYMBOL_GPL(workqueue_congested);
5971
5972 /**
5973  * work_busy - test whether a work is currently pending or running
5974  * @work: the work to be tested
5975  *
5976  * Test whether @work is currently pending or running.  There is no
5977  * synchronization around this function and the test result is
5978  * unreliable and only useful as advisory hints or for debugging.
5979  *
5980  * Return:
5981  * OR'd bitmask of WORK_BUSY_* bits.
5982  */
5983 unsigned int work_busy(struct work_struct *work)
5984 {
5985         struct worker_pool *pool;
5986         unsigned long irq_flags;
5987         unsigned int ret = 0;
5988
5989         if (work_pending(work))
5990                 ret |= WORK_BUSY_PENDING;
5991
5992         rcu_read_lock();
5993         pool = get_work_pool(work);
5994         if (pool) {
5995                 raw_spin_lock_irqsave(&pool->lock, irq_flags);
5996                 if (find_worker_executing_work(pool, work))
5997                         ret |= WORK_BUSY_RUNNING;
5998                 raw_spin_unlock_irqrestore(&pool->lock, irq_flags);
5999         }
6000         rcu_read_unlock();
6001
6002         return ret;
6003 }
6004 EXPORT_SYMBOL_GPL(work_busy);
6005
6006 /**
6007  * set_worker_desc - set description for the current work item
6008  * @fmt: printf-style format string
6009  * @...: arguments for the format string
6010  *
6011  * This function can be called by a running work function to describe what
6012  * the work item is about.  If the worker task gets dumped, this
6013  * information will be printed out together to help debugging.  The
6014  * description can be at most WORKER_DESC_LEN including the trailing '\0'.
6015  */
6016 void set_worker_desc(const char *fmt, ...)
6017 {
6018         struct worker *worker = current_wq_worker();
6019         va_list args;
6020
6021         if (worker) {
6022                 va_start(args, fmt);
6023                 vsnprintf(worker->desc, sizeof(worker->desc), fmt, args);
6024                 va_end(args);
6025         }
6026 }
6027 EXPORT_SYMBOL_GPL(set_worker_desc);
6028
6029 /**
6030  * print_worker_info - print out worker information and description
6031  * @log_lvl: the log level to use when printing
6032  * @task: target task
6033  *
6034  * If @task is a worker and currently executing a work item, print out the
6035  * name of the workqueue being serviced and worker description set with
6036  * set_worker_desc() by the currently executing work item.
6037  *
6038  * This function can be safely called on any task as long as the
6039  * task_struct itself is accessible.  While safe, this function isn't
6040  * synchronized and may print out mixups or garbages of limited length.
6041  */
6042 void print_worker_info(const char *log_lvl, struct task_struct *task)
6043 {
6044         work_func_t *fn = NULL;
6045         char name[WQ_NAME_LEN] = { };
6046         char desc[WORKER_DESC_LEN] = { };
6047         struct pool_workqueue *pwq = NULL;
6048         struct workqueue_struct *wq = NULL;
6049         struct worker *worker;
6050
6051         if (!(task->flags & PF_WQ_WORKER))
6052                 return;
6053
6054         /*
6055          * This function is called without any synchronization and @task
6056          * could be in any state.  Be careful with dereferences.
6057          */
6058         worker = kthread_probe_data(task);
6059
6060         /*
6061          * Carefully copy the associated workqueue's workfn, name and desc.
6062          * Keep the original last '\0' in case the original is garbage.
6063          */
6064         copy_from_kernel_nofault(&fn, &worker->current_func, sizeof(fn));
6065         copy_from_kernel_nofault(&pwq, &worker->current_pwq, sizeof(pwq));
6066         copy_from_kernel_nofault(&wq, &pwq->wq, sizeof(wq));
6067         copy_from_kernel_nofault(name, wq->name, sizeof(name) - 1);
6068         copy_from_kernel_nofault(desc, worker->desc, sizeof(desc) - 1);
6069
6070         if (fn || name[0] || desc[0]) {
6071                 printk("%sWorkqueue: %s %ps", log_lvl, name, fn);
6072                 if (strcmp(name, desc))
6073                         pr_cont(" (%s)", desc);
6074                 pr_cont("\n");
6075         }
6076 }
6077
6078 static void pr_cont_pool_info(struct worker_pool *pool)
6079 {
6080         pr_cont(" cpus=%*pbl", nr_cpumask_bits, pool->attrs->cpumask);
6081         if (pool->node != NUMA_NO_NODE)
6082                 pr_cont(" node=%d", pool->node);
6083         pr_cont(" flags=0x%x", pool->flags);
6084         if (pool->flags & POOL_BH)
6085                 pr_cont(" bh%s",
6086                         pool->attrs->nice == HIGHPRI_NICE_LEVEL ? "-hi" : "");
6087         else
6088                 pr_cont(" nice=%d", pool->attrs->nice);
6089 }
6090
6091 static void pr_cont_worker_id(struct worker *worker)
6092 {
6093         struct worker_pool *pool = worker->pool;
6094
6095         if (pool->flags & WQ_BH)
6096                 pr_cont("bh%s",
6097                         pool->attrs->nice == HIGHPRI_NICE_LEVEL ? "-hi" : "");
6098         else
6099                 pr_cont("%d%s", task_pid_nr(worker->task),
6100                         worker->rescue_wq ? "(RESCUER)" : "");
6101 }
6102
6103 struct pr_cont_work_struct {
6104         bool comma;
6105         work_func_t func;
6106         long ctr;
6107 };
6108
6109 static void pr_cont_work_flush(bool comma, work_func_t func, struct pr_cont_work_struct *pcwsp)
6110 {
6111         if (!pcwsp->ctr)
6112                 goto out_record;
6113         if (func == pcwsp->func) {
6114                 pcwsp->ctr++;
6115                 return;
6116         }
6117         if (pcwsp->ctr == 1)
6118                 pr_cont("%s %ps", pcwsp->comma ? "," : "", pcwsp->func);
6119         else
6120                 pr_cont("%s %ld*%ps", pcwsp->comma ? "," : "", pcwsp->ctr, pcwsp->func);
6121         pcwsp->ctr = 0;
6122 out_record:
6123         if ((long)func == -1L)
6124                 return;
6125         pcwsp->comma = comma;
6126         pcwsp->func = func;
6127         pcwsp->ctr = 1;
6128 }
6129
6130 static void pr_cont_work(bool comma, struct work_struct *work, struct pr_cont_work_struct *pcwsp)
6131 {
6132         if (work->func == wq_barrier_func) {
6133                 struct wq_barrier *barr;
6134
6135                 barr = container_of(work, struct wq_barrier, work);
6136
6137                 pr_cont_work_flush(comma, (work_func_t)-1, pcwsp);
6138                 pr_cont("%s BAR(%d)", comma ? "," : "",
6139                         task_pid_nr(barr->task));
6140         } else {
6141                 if (!comma)
6142                         pr_cont_work_flush(comma, (work_func_t)-1, pcwsp);
6143                 pr_cont_work_flush(comma, work->func, pcwsp);
6144         }
6145 }
6146
6147 static void show_pwq(struct pool_workqueue *pwq)
6148 {
6149         struct pr_cont_work_struct pcws = { .ctr = 0, };
6150         struct worker_pool *pool = pwq->pool;
6151         struct work_struct *work;
6152         struct worker *worker;
6153         bool has_in_flight = false, has_pending = false;
6154         int bkt;
6155
6156         pr_info("  pwq %d:", pool->id);
6157         pr_cont_pool_info(pool);
6158
6159         pr_cont(" active=%d refcnt=%d%s\n",
6160                 pwq->nr_active, pwq->refcnt,
6161                 !list_empty(&pwq->mayday_node) ? " MAYDAY" : "");
6162
6163         hash_for_each(pool->busy_hash, bkt, worker, hentry) {
6164                 if (worker->current_pwq == pwq) {
6165                         has_in_flight = true;
6166                         break;
6167                 }
6168         }
6169         if (has_in_flight) {
6170                 bool comma = false;
6171
6172                 pr_info("    in-flight:");
6173                 hash_for_each(pool->busy_hash, bkt, worker, hentry) {
6174                         if (worker->current_pwq != pwq)
6175                                 continue;
6176
6177                         pr_cont(" %s", comma ? "," : "");
6178                         pr_cont_worker_id(worker);
6179                         pr_cont(":%ps", worker->current_func);
6180                         list_for_each_entry(work, &worker->scheduled, entry)
6181                                 pr_cont_work(false, work, &pcws);
6182                         pr_cont_work_flush(comma, (work_func_t)-1L, &pcws);
6183                         comma = true;
6184                 }
6185                 pr_cont("\n");
6186         }
6187
6188         list_for_each_entry(work, &pool->worklist, entry) {
6189                 if (get_work_pwq(work) == pwq) {
6190                         has_pending = true;
6191                         break;
6192                 }
6193         }
6194         if (has_pending) {
6195                 bool comma = false;
6196
6197                 pr_info("    pending:");
6198                 list_for_each_entry(work, &pool->worklist, entry) {
6199                         if (get_work_pwq(work) != pwq)
6200                                 continue;
6201
6202                         pr_cont_work(comma, work, &pcws);
6203                         comma = !(*work_data_bits(work) & WORK_STRUCT_LINKED);
6204                 }
6205                 pr_cont_work_flush(comma, (work_func_t)-1L, &pcws);
6206                 pr_cont("\n");
6207         }
6208
6209         if (!list_empty(&pwq->inactive_works)) {
6210                 bool comma = false;
6211
6212                 pr_info("    inactive:");
6213                 list_for_each_entry(work, &pwq->inactive_works, entry) {
6214                         pr_cont_work(comma, work, &pcws);
6215                         comma = !(*work_data_bits(work) & WORK_STRUCT_LINKED);
6216                 }
6217                 pr_cont_work_flush(comma, (work_func_t)-1L, &pcws);
6218                 pr_cont("\n");
6219         }
6220 }
6221
6222 /**
6223  * show_one_workqueue - dump state of specified workqueue
6224  * @wq: workqueue whose state will be printed
6225  */
6226 void show_one_workqueue(struct workqueue_struct *wq)
6227 {
6228         struct pool_workqueue *pwq;
6229         bool idle = true;
6230         unsigned long irq_flags;
6231
6232         for_each_pwq(pwq, wq) {
6233                 if (!pwq_is_empty(pwq)) {
6234                         idle = false;
6235                         break;
6236                 }
6237         }
6238         if (idle) /* Nothing to print for idle workqueue */
6239                 return;
6240
6241         pr_info("workqueue %s: flags=0x%x\n", wq->name, wq->flags);
6242
6243         for_each_pwq(pwq, wq) {
6244                 raw_spin_lock_irqsave(&pwq->pool->lock, irq_flags);
6245                 if (!pwq_is_empty(pwq)) {
6246                         /*
6247                          * Defer printing to avoid deadlocks in console
6248                          * drivers that queue work while holding locks
6249                          * also taken in their write paths.
6250                          */
6251                         printk_deferred_enter();
6252                         show_pwq(pwq);
6253                         printk_deferred_exit();
6254                 }
6255                 raw_spin_unlock_irqrestore(&pwq->pool->lock, irq_flags);
6256                 /*
6257                  * We could be printing a lot from atomic context, e.g.
6258                  * sysrq-t -> show_all_workqueues(). Avoid triggering
6259                  * hard lockup.
6260                  */
6261                 touch_nmi_watchdog();
6262         }
6263
6264 }
6265
6266 /**
6267  * show_one_worker_pool - dump state of specified worker pool
6268  * @pool: worker pool whose state will be printed
6269  */
6270 static void show_one_worker_pool(struct worker_pool *pool)
6271 {
6272         struct worker *worker;
6273         bool first = true;
6274         unsigned long irq_flags;
6275         unsigned long hung = 0;
6276
6277         raw_spin_lock_irqsave(&pool->lock, irq_flags);
6278         if (pool->nr_workers == pool->nr_idle)
6279                 goto next_pool;
6280
6281         /* How long the first pending work is waiting for a worker. */
6282         if (!list_empty(&pool->worklist))
6283                 hung = jiffies_to_msecs(jiffies - pool->watchdog_ts) / 1000;
6284
6285         /*
6286          * Defer printing to avoid deadlocks in console drivers that
6287          * queue work while holding locks also taken in their write
6288          * paths.
6289          */
6290         printk_deferred_enter();
6291         pr_info("pool %d:", pool->id);
6292         pr_cont_pool_info(pool);
6293         pr_cont(" hung=%lus workers=%d", hung, pool->nr_workers);
6294         if (pool->manager)
6295                 pr_cont(" manager: %d",
6296                         task_pid_nr(pool->manager->task));
6297         list_for_each_entry(worker, &pool->idle_list, entry) {
6298                 pr_cont(" %s", first ? "idle: " : "");
6299                 pr_cont_worker_id(worker);
6300                 first = false;
6301         }
6302         pr_cont("\n");
6303         printk_deferred_exit();
6304 next_pool:
6305         raw_spin_unlock_irqrestore(&pool->lock, irq_flags);
6306         /*
6307          * We could be printing a lot from atomic context, e.g.
6308          * sysrq-t -> show_all_workqueues(). Avoid triggering
6309          * hard lockup.
6310          */
6311         touch_nmi_watchdog();
6312
6313 }
6314
6315 /**
6316  * show_all_workqueues - dump workqueue state
6317  *
6318  * Called from a sysrq handler and prints out all busy workqueues and pools.
6319  */
6320 void show_all_workqueues(void)
6321 {
6322         struct workqueue_struct *wq;
6323         struct worker_pool *pool;
6324         int pi;
6325
6326         rcu_read_lock();
6327
6328         pr_info("Showing busy workqueues and worker pools:\n");
6329
6330         list_for_each_entry_rcu(wq, &workqueues, list)
6331                 show_one_workqueue(wq);
6332
6333         for_each_pool(pool, pi)
6334                 show_one_worker_pool(pool);
6335
6336         rcu_read_unlock();
6337 }
6338
6339 /**
6340  * show_freezable_workqueues - dump freezable workqueue state
6341  *
6342  * Called from try_to_freeze_tasks() and prints out all freezable workqueues
6343  * still busy.
6344  */
6345 void show_freezable_workqueues(void)
6346 {
6347         struct workqueue_struct *wq;
6348
6349         rcu_read_lock();
6350
6351         pr_info("Showing freezable workqueues that are still busy:\n");
6352
6353         list_for_each_entry_rcu(wq, &workqueues, list) {
6354                 if (!(wq->flags & WQ_FREEZABLE))
6355                         continue;
6356                 show_one_workqueue(wq);
6357         }
6358
6359         rcu_read_unlock();
6360 }
6361
6362 /* used to show worker information through /proc/PID/{comm,stat,status} */
6363 void wq_worker_comm(char *buf, size_t size, struct task_struct *task)
6364 {
6365         int off;
6366
6367         /* always show the actual comm */
6368         off = strscpy(buf, task->comm, size);
6369         if (off < 0)
6370                 return;
6371
6372         /* stabilize PF_WQ_WORKER and worker pool association */
6373         mutex_lock(&wq_pool_attach_mutex);
6374
6375         if (task->flags & PF_WQ_WORKER) {
6376                 struct worker *worker = kthread_data(task);
6377                 struct worker_pool *pool = worker->pool;
6378
6379                 if (pool) {
6380                         raw_spin_lock_irq(&pool->lock);
6381                         /*
6382                          * ->desc tracks information (wq name or
6383                          * set_worker_desc()) for the latest execution.  If
6384                          * current, prepend '+', otherwise '-'.
6385                          */
6386                         if (worker->desc[0] != '\0') {
6387                                 if (worker->current_work)
6388                                         scnprintf(buf + off, size - off, "+%s",
6389                                                   worker->desc);
6390                                 else
6391                                         scnprintf(buf + off, size - off, "-%s",
6392                                                   worker->desc);
6393                         }
6394                         raw_spin_unlock_irq(&pool->lock);
6395                 }
6396         }
6397
6398         mutex_unlock(&wq_pool_attach_mutex);
6399 }
6400
6401 #ifdef CONFIG_SMP
6402
6403 /*
6404  * CPU hotplug.
6405  *
6406  * There are two challenges in supporting CPU hotplug.  Firstly, there
6407  * are a lot of assumptions on strong associations among work, pwq and
6408  * pool which make migrating pending and scheduled works very
6409  * difficult to implement without impacting hot paths.  Secondly,
6410  * worker pools serve mix of short, long and very long running works making
6411  * blocked draining impractical.
6412  *
6413  * This is solved by allowing the pools to be disassociated from the CPU
6414  * running as an unbound one and allowing it to be reattached later if the
6415  * cpu comes back online.
6416  */
6417
6418 static void unbind_workers(int cpu)
6419 {
6420         struct worker_pool *pool;
6421         struct worker *worker;
6422
6423         for_each_cpu_worker_pool(pool, cpu) {
6424                 mutex_lock(&wq_pool_attach_mutex);
6425                 raw_spin_lock_irq(&pool->lock);
6426
6427                 /*
6428                  * We've blocked all attach/detach operations. Make all workers
6429                  * unbound and set DISASSOCIATED.  Before this, all workers
6430                  * must be on the cpu.  After this, they may become diasporas.
6431                  * And the preemption disabled section in their sched callbacks
6432                  * are guaranteed to see WORKER_UNBOUND since the code here
6433                  * is on the same cpu.
6434                  */
6435                 for_each_pool_worker(worker, pool)
6436                         worker->flags |= WORKER_UNBOUND;
6437
6438                 pool->flags |= POOL_DISASSOCIATED;
6439
6440                 /*
6441                  * The handling of nr_running in sched callbacks are disabled
6442                  * now.  Zap nr_running.  After this, nr_running stays zero and
6443                  * need_more_worker() and keep_working() are always true as
6444                  * long as the worklist is not empty.  This pool now behaves as
6445                  * an unbound (in terms of concurrency management) pool which
6446                  * are served by workers tied to the pool.
6447                  */
6448                 pool->nr_running = 0;
6449
6450                 /*
6451                  * With concurrency management just turned off, a busy
6452                  * worker blocking could lead to lengthy stalls.  Kick off
6453                  * unbound chain execution of currently pending work items.
6454                  */
6455                 kick_pool(pool);
6456
6457                 raw_spin_unlock_irq(&pool->lock);
6458
6459                 for_each_pool_worker(worker, pool)
6460                         unbind_worker(worker);
6461
6462                 mutex_unlock(&wq_pool_attach_mutex);
6463         }
6464 }
6465
6466 /**
6467  * rebind_workers - rebind all workers of a pool to the associated CPU
6468  * @pool: pool of interest
6469  *
6470  * @pool->cpu is coming online.  Rebind all workers to the CPU.
6471  */
6472 static void rebind_workers(struct worker_pool *pool)
6473 {
6474         struct worker *worker;
6475
6476         lockdep_assert_held(&wq_pool_attach_mutex);
6477
6478         /*
6479          * Restore CPU affinity of all workers.  As all idle workers should
6480          * be on the run-queue of the associated CPU before any local
6481          * wake-ups for concurrency management happen, restore CPU affinity
6482          * of all workers first and then clear UNBOUND.  As we're called
6483          * from CPU_ONLINE, the following shouldn't fail.
6484          */
6485         for_each_pool_worker(worker, pool) {
6486                 kthread_set_per_cpu(worker->task, pool->cpu);
6487                 WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task,
6488                                                   pool_allowed_cpus(pool)) < 0);
6489         }
6490
6491         raw_spin_lock_irq(&pool->lock);
6492
6493         pool->flags &= ~POOL_DISASSOCIATED;
6494
6495         for_each_pool_worker(worker, pool) {
6496                 unsigned int worker_flags = worker->flags;
6497
6498                 /*
6499                  * We want to clear UNBOUND but can't directly call
6500                  * worker_clr_flags() or adjust nr_running.  Atomically
6501                  * replace UNBOUND with another NOT_RUNNING flag REBOUND.
6502                  * @worker will clear REBOUND using worker_clr_flags() when
6503                  * it initiates the next execution cycle thus restoring
6504                  * concurrency management.  Note that when or whether
6505                  * @worker clears REBOUND doesn't affect correctness.
6506                  *
6507                  * WRITE_ONCE() is necessary because @worker->flags may be
6508                  * tested without holding any lock in
6509                  * wq_worker_running().  Without it, NOT_RUNNING test may
6510                  * fail incorrectly leading to premature concurrency
6511                  * management operations.
6512                  */
6513                 WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND));
6514                 worker_flags |= WORKER_REBOUND;
6515                 worker_flags &= ~WORKER_UNBOUND;
6516                 WRITE_ONCE(worker->flags, worker_flags);
6517         }
6518
6519         raw_spin_unlock_irq(&pool->lock);
6520 }
6521
6522 /**
6523  * restore_unbound_workers_cpumask - restore cpumask of unbound workers
6524  * @pool: unbound pool of interest
6525  * @cpu: the CPU which is coming up
6526  *
6527  * An unbound pool may end up with a cpumask which doesn't have any online
6528  * CPUs.  When a worker of such pool get scheduled, the scheduler resets
6529  * its cpus_allowed.  If @cpu is in @pool's cpumask which didn't have any
6530  * online CPU before, cpus_allowed of all its workers should be restored.
6531  */
6532 static void restore_unbound_workers_cpumask(struct worker_pool *pool, int cpu)
6533 {
6534         static cpumask_t cpumask;
6535         struct worker *worker;
6536
6537         lockdep_assert_held(&wq_pool_attach_mutex);
6538
6539         /* is @cpu allowed for @pool? */
6540         if (!cpumask_test_cpu(cpu, pool->attrs->cpumask))
6541                 return;
6542
6543         cpumask_and(&cpumask, pool->attrs->cpumask, cpu_online_mask);
6544
6545         /* as we're called from CPU_ONLINE, the following shouldn't fail */
6546         for_each_pool_worker(worker, pool)
6547                 WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, &cpumask) < 0);
6548 }
6549
6550 int workqueue_prepare_cpu(unsigned int cpu)
6551 {
6552         struct worker_pool *pool;
6553
6554         for_each_cpu_worker_pool(pool, cpu) {
6555                 if (pool->nr_workers)
6556                         continue;
6557                 if (!create_worker(pool))
6558                         return -ENOMEM;
6559         }
6560         return 0;
6561 }
6562
6563 int workqueue_online_cpu(unsigned int cpu)
6564 {
6565         struct worker_pool *pool;
6566         struct workqueue_struct *wq;
6567         int pi;
6568
6569         mutex_lock(&wq_pool_mutex);
6570
6571         cpumask_set_cpu(cpu, wq_online_cpumask);
6572
6573         for_each_pool(pool, pi) {
6574                 /* BH pools aren't affected by hotplug */
6575                 if (pool->flags & POOL_BH)
6576                         continue;
6577
6578                 mutex_lock(&wq_pool_attach_mutex);
6579                 if (pool->cpu == cpu)
6580                         rebind_workers(pool);
6581                 else if (pool->cpu < 0)
6582                         restore_unbound_workers_cpumask(pool, cpu);
6583                 mutex_unlock(&wq_pool_attach_mutex);
6584         }
6585
6586         /* update pod affinity of unbound workqueues */
6587         list_for_each_entry(wq, &workqueues, list) {
6588                 struct workqueue_attrs *attrs = wq->unbound_attrs;
6589
6590                 if (attrs) {
6591                         const struct wq_pod_type *pt = wqattrs_pod_type(attrs);
6592                         int tcpu;
6593
6594                         for_each_cpu(tcpu, pt->pod_cpus[pt->cpu_pod[cpu]])
6595                                 wq_update_pod(wq, tcpu, cpu, true);
6596
6597                         mutex_lock(&wq->mutex);
6598                         wq_update_node_max_active(wq, -1);
6599                         mutex_unlock(&wq->mutex);
6600                 }
6601         }
6602
6603         mutex_unlock(&wq_pool_mutex);
6604         return 0;
6605 }
6606
6607 int workqueue_offline_cpu(unsigned int cpu)
6608 {
6609         struct workqueue_struct *wq;
6610
6611         /* unbinding per-cpu workers should happen on the local CPU */
6612         if (WARN_ON(cpu != smp_processor_id()))
6613                 return -1;
6614
6615         unbind_workers(cpu);
6616
6617         /* update pod affinity of unbound workqueues */
6618         mutex_lock(&wq_pool_mutex);
6619
6620         cpumask_clear_cpu(cpu, wq_online_cpumask);
6621
6622         list_for_each_entry(wq, &workqueues, list) {
6623                 struct workqueue_attrs *attrs = wq->unbound_attrs;
6624
6625                 if (attrs) {
6626                         const struct wq_pod_type *pt = wqattrs_pod_type(attrs);
6627                         int tcpu;
6628
6629                         for_each_cpu(tcpu, pt->pod_cpus[pt->cpu_pod[cpu]])
6630                                 wq_update_pod(wq, tcpu, cpu, false);
6631
6632                         mutex_lock(&wq->mutex);
6633                         wq_update_node_max_active(wq, cpu);
6634                         mutex_unlock(&wq->mutex);
6635                 }
6636         }
6637         mutex_unlock(&wq_pool_mutex);
6638
6639         return 0;
6640 }
6641
6642 struct work_for_cpu {
6643         struct work_struct work;
6644         long (*fn)(void *);
6645         void *arg;
6646         long ret;
6647 };
6648
6649 static void work_for_cpu_fn(struct work_struct *work)
6650 {
6651         struct work_for_cpu *wfc = container_of(work, struct work_for_cpu, work);
6652
6653         wfc->ret = wfc->fn(wfc->arg);
6654 }
6655
6656 /**
6657  * work_on_cpu_key - run a function in thread context on a particular cpu
6658  * @cpu: the cpu to run on
6659  * @fn: the function to run
6660  * @arg: the function arg
6661  * @key: The lock class key for lock debugging purposes
6662  *
6663  * It is up to the caller to ensure that the cpu doesn't go offline.
6664  * The caller must not hold any locks which would prevent @fn from completing.
6665  *
6666  * Return: The value @fn returns.
6667  */
6668 long work_on_cpu_key(int cpu, long (*fn)(void *),
6669                      void *arg, struct lock_class_key *key)
6670 {
6671         struct work_for_cpu wfc = { .fn = fn, .arg = arg };
6672
6673         INIT_WORK_ONSTACK_KEY(&wfc.work, work_for_cpu_fn, key);
6674         schedule_work_on(cpu, &wfc.work);
6675         flush_work(&wfc.work);
6676         destroy_work_on_stack(&wfc.work);
6677         return wfc.ret;
6678 }
6679 EXPORT_SYMBOL_GPL(work_on_cpu_key);
6680
6681 /**
6682  * work_on_cpu_safe_key - run a function in thread context on a particular cpu
6683  * @cpu: the cpu to run on
6684  * @fn:  the function to run
6685  * @arg: the function argument
6686  * @key: The lock class key for lock debugging purposes
6687  *
6688  * Disables CPU hotplug and calls work_on_cpu(). The caller must not hold
6689  * any locks which would prevent @fn from completing.
6690  *
6691  * Return: The value @fn returns.
6692  */
6693 long work_on_cpu_safe_key(int cpu, long (*fn)(void *),
6694                           void *arg, struct lock_class_key *key)
6695 {
6696         long ret = -ENODEV;
6697
6698         cpus_read_lock();
6699         if (cpu_online(cpu))
6700                 ret = work_on_cpu_key(cpu, fn, arg, key);
6701         cpus_read_unlock();
6702         return ret;
6703 }
6704 EXPORT_SYMBOL_GPL(work_on_cpu_safe_key);
6705 #endif /* CONFIG_SMP */
6706
6707 #ifdef CONFIG_FREEZER
6708
6709 /**
6710  * freeze_workqueues_begin - begin freezing workqueues
6711  *
6712  * Start freezing workqueues.  After this function returns, all freezable
6713  * workqueues will queue new works to their inactive_works list instead of
6714  * pool->worklist.
6715  *
6716  * CONTEXT:
6717  * Grabs and releases wq_pool_mutex, wq->mutex and pool->lock's.
6718  */
6719 void freeze_workqueues_begin(void)
6720 {
6721         struct workqueue_struct *wq;
6722
6723         mutex_lock(&wq_pool_mutex);
6724
6725         WARN_ON_ONCE(workqueue_freezing);
6726         workqueue_freezing = true;
6727
6728         list_for_each_entry(wq, &workqueues, list) {
6729                 mutex_lock(&wq->mutex);
6730                 wq_adjust_max_active(wq);
6731                 mutex_unlock(&wq->mutex);
6732         }
6733
6734         mutex_unlock(&wq_pool_mutex);
6735 }
6736
6737 /**
6738  * freeze_workqueues_busy - are freezable workqueues still busy?
6739  *
6740  * Check whether freezing is complete.  This function must be called
6741  * between freeze_workqueues_begin() and thaw_workqueues().
6742  *
6743  * CONTEXT:
6744  * Grabs and releases wq_pool_mutex.
6745  *
6746  * Return:
6747  * %true if some freezable workqueues are still busy.  %false if freezing
6748  * is complete.
6749  */
6750 bool freeze_workqueues_busy(void)
6751 {
6752         bool busy = false;
6753         struct workqueue_struct *wq;
6754         struct pool_workqueue *pwq;
6755
6756         mutex_lock(&wq_pool_mutex);
6757
6758         WARN_ON_ONCE(!workqueue_freezing);
6759
6760         list_for_each_entry(wq, &workqueues, list) {
6761                 if (!(wq->flags & WQ_FREEZABLE))
6762                         continue;
6763                 /*
6764                  * nr_active is monotonically decreasing.  It's safe
6765                  * to peek without lock.
6766                  */
6767                 rcu_read_lock();
6768                 for_each_pwq(pwq, wq) {
6769                         WARN_ON_ONCE(pwq->nr_active < 0);
6770                         if (pwq->nr_active) {
6771                                 busy = true;
6772                                 rcu_read_unlock();
6773                                 goto out_unlock;
6774                         }
6775                 }
6776                 rcu_read_unlock();
6777         }
6778 out_unlock:
6779         mutex_unlock(&wq_pool_mutex);
6780         return busy;
6781 }
6782
6783 /**
6784  * thaw_workqueues - thaw workqueues
6785  *
6786  * Thaw workqueues.  Normal queueing is restored and all collected
6787  * frozen works are transferred to their respective pool worklists.
6788  *
6789  * CONTEXT:
6790  * Grabs and releases wq_pool_mutex, wq->mutex and pool->lock's.
6791  */
6792 void thaw_workqueues(void)
6793 {
6794         struct workqueue_struct *wq;
6795
6796         mutex_lock(&wq_pool_mutex);
6797
6798         if (!workqueue_freezing)
6799                 goto out_unlock;
6800
6801         workqueue_freezing = false;
6802
6803         /* restore max_active and repopulate worklist */
6804         list_for_each_entry(wq, &workqueues, list) {
6805                 mutex_lock(&wq->mutex);
6806                 wq_adjust_max_active(wq);
6807                 mutex_unlock(&wq->mutex);
6808         }
6809
6810 out_unlock:
6811         mutex_unlock(&wq_pool_mutex);
6812 }
6813 #endif /* CONFIG_FREEZER */
6814
6815 static int workqueue_apply_unbound_cpumask(const cpumask_var_t unbound_cpumask)
6816 {
6817         LIST_HEAD(ctxs);
6818         int ret = 0;
6819         struct workqueue_struct *wq;
6820         struct apply_wqattrs_ctx *ctx, *n;
6821
6822         lockdep_assert_held(&wq_pool_mutex);
6823
6824         list_for_each_entry(wq, &workqueues, list) {
6825                 if (!(wq->flags & WQ_UNBOUND) || (wq->flags & __WQ_DESTROYING))
6826                         continue;
6827
6828                 ctx = apply_wqattrs_prepare(wq, wq->unbound_attrs, unbound_cpumask);
6829                 if (IS_ERR(ctx)) {
6830                         ret = PTR_ERR(ctx);
6831                         break;
6832                 }
6833
6834                 list_add_tail(&ctx->list, &ctxs);
6835         }
6836
6837         list_for_each_entry_safe(ctx, n, &ctxs, list) {
6838                 if (!ret)
6839                         apply_wqattrs_commit(ctx);
6840                 apply_wqattrs_cleanup(ctx);
6841         }
6842
6843         if (!ret) {
6844                 mutex_lock(&wq_pool_attach_mutex);
6845                 cpumask_copy(wq_unbound_cpumask, unbound_cpumask);
6846                 mutex_unlock(&wq_pool_attach_mutex);
6847         }
6848         return ret;
6849 }
6850
6851 /**
6852  * workqueue_unbound_exclude_cpumask - Exclude given CPUs from unbound cpumask
6853  * @exclude_cpumask: the cpumask to be excluded from wq_unbound_cpumask
6854  *
6855  * This function can be called from cpuset code to provide a set of isolated
6856  * CPUs that should be excluded from wq_unbound_cpumask. The caller must hold
6857  * either cpus_read_lock or cpus_write_lock.
6858  */
6859 int workqueue_unbound_exclude_cpumask(cpumask_var_t exclude_cpumask)
6860 {
6861         cpumask_var_t cpumask;
6862         int ret = 0;
6863
6864         if (!zalloc_cpumask_var(&cpumask, GFP_KERNEL))
6865                 return -ENOMEM;
6866
6867         lockdep_assert_cpus_held();
6868         mutex_lock(&wq_pool_mutex);
6869
6870         /*
6871          * If the operation fails, it will fall back to
6872          * wq_requested_unbound_cpumask which is initially set to
6873          * (HK_TYPE_WQ âˆ© HK_TYPE_DOMAIN) house keeping mask and rewritten
6874          * by any subsequent write to workqueue/cpumask sysfs file.
6875          */
6876         if (!cpumask_andnot(cpumask, wq_requested_unbound_cpumask, exclude_cpumask))
6877                 cpumask_copy(cpumask, wq_requested_unbound_cpumask);
6878         if (!cpumask_equal(cpumask, wq_unbound_cpumask))
6879                 ret = workqueue_apply_unbound_cpumask(cpumask);
6880
6881         /* Save the current isolated cpumask & export it via sysfs */
6882         if (!ret)
6883                 cpumask_copy(wq_isolated_cpumask, exclude_cpumask);
6884
6885         mutex_unlock(&wq_pool_mutex);
6886         free_cpumask_var(cpumask);
6887         return ret;
6888 }
6889
6890 static int parse_affn_scope(const char *val)
6891 {
6892         int i;
6893
6894         for (i = 0; i < ARRAY_SIZE(wq_affn_names); i++) {
6895                 if (!strncasecmp(val, wq_affn_names[i], strlen(wq_affn_names[i])))
6896                         return i;
6897         }
6898         return -EINVAL;
6899 }
6900
6901 static int wq_affn_dfl_set(const char *val, const struct kernel_param *kp)
6902 {
6903         struct workqueue_struct *wq;
6904         int affn, cpu;
6905
6906         affn = parse_affn_scope(val);
6907         if (affn < 0)
6908                 return affn;
6909         if (affn == WQ_AFFN_DFL)
6910                 return -EINVAL;
6911
6912         cpus_read_lock();
6913         mutex_lock(&wq_pool_mutex);
6914
6915         wq_affn_dfl = affn;
6916
6917         list_for_each_entry(wq, &workqueues, list) {
6918                 for_each_online_cpu(cpu) {
6919                         wq_update_pod(wq, cpu, cpu, true);
6920                 }
6921         }
6922
6923         mutex_unlock(&wq_pool_mutex);
6924         cpus_read_unlock();
6925
6926         return 0;
6927 }
6928
6929 static int wq_affn_dfl_get(char *buffer, const struct kernel_param *kp)
6930 {
6931         return scnprintf(buffer, PAGE_SIZE, "%s\n", wq_affn_names[wq_affn_dfl]);
6932 }
6933
6934 static const struct kernel_param_ops wq_affn_dfl_ops = {
6935         .set    = wq_affn_dfl_set,
6936         .get    = wq_affn_dfl_get,
6937 };
6938
6939 module_param_cb(default_affinity_scope, &wq_affn_dfl_ops, NULL, 0644);
6940
6941 #ifdef CONFIG_SYSFS
6942 /*
6943  * Workqueues with WQ_SYSFS flag set is visible to userland via
6944  * /sys/bus/workqueue/devices/WQ_NAME.  All visible workqueues have the
6945  * following attributes.
6946  *
6947  *  per_cpu             RO bool : whether the workqueue is per-cpu or unbound
6948  *  max_active          RW int  : maximum number of in-flight work items
6949  *
6950  * Unbound workqueues have the following extra attributes.
6951  *
6952  *  nice                RW int  : nice value of the workers
6953  *  cpumask             RW mask : bitmask of allowed CPUs for the workers
6954  *  affinity_scope      RW str  : worker CPU affinity scope (cache, numa, none)
6955  *  affinity_strict     RW bool : worker CPU affinity is strict
6956  */
6957 struct wq_device {
6958         struct workqueue_struct         *wq;
6959         struct device                   dev;
6960 };
6961
6962 static struct workqueue_struct *dev_to_wq(struct device *dev)
6963 {
6964         struct wq_device *wq_dev = container_of(dev, struct wq_device, dev);
6965
6966         return wq_dev->wq;
6967 }
6968
6969 static ssize_t per_cpu_show(struct device *dev, struct device_attribute *attr,
6970                             char *buf)
6971 {
6972         struct workqueue_struct *wq = dev_to_wq(dev);
6973
6974         return scnprintf(buf, PAGE_SIZE, "%d\n", (bool)!(wq->flags & WQ_UNBOUND));
6975 }
6976 static DEVICE_ATTR_RO(per_cpu);
6977
6978 static ssize_t max_active_show(struct device *dev,
6979                                struct device_attribute *attr, char *buf)
6980 {
6981         struct workqueue_struct *wq = dev_to_wq(dev);
6982
6983         return scnprintf(buf, PAGE_SIZE, "%d\n", wq->saved_max_active);
6984 }
6985
6986 static ssize_t max_active_store(struct device *dev,
6987                                 struct device_attribute *attr, const char *buf,
6988                                 size_t count)
6989 {
6990         struct workqueue_struct *wq = dev_to_wq(dev);
6991         int val;
6992
6993         if (sscanf(buf, "%d", &val) != 1 || val <= 0)
6994                 return -EINVAL;
6995
6996         workqueue_set_max_active(wq, val);
6997         return count;
6998 }
6999 static DEVICE_ATTR_RW(max_active);
7000
7001 static struct attribute *wq_sysfs_attrs[] = {
7002         &dev_attr_per_cpu.attr,
7003         &dev_attr_max_active.attr,
7004         NULL,
7005 };
7006 ATTRIBUTE_GROUPS(wq_sysfs);
7007
7008 static ssize_t wq_nice_show(struct device *dev, struct device_attribute *attr,
7009                             char *buf)
7010 {
7011         struct workqueue_struct *wq = dev_to_wq(dev);
7012         int written;
7013
7014         mutex_lock(&wq->mutex);
7015         written = scnprintf(buf, PAGE_SIZE, "%d\n", wq->unbound_attrs->nice);
7016         mutex_unlock(&wq->mutex);
7017
7018         return written;
7019 }
7020
7021 /* prepare workqueue_attrs for sysfs store operations */
7022 static struct workqueue_attrs *wq_sysfs_prep_attrs(struct workqueue_struct *wq)
7023 {
7024         struct workqueue_attrs *attrs;
7025
7026         lockdep_assert_held(&wq_pool_mutex);
7027
7028         attrs = alloc_workqueue_attrs();
7029         if (!attrs)
7030                 return NULL;
7031
7032         copy_workqueue_attrs(attrs, wq->unbound_attrs);
7033         return attrs;
7034 }
7035
7036 static ssize_t wq_nice_store(struct device *dev, struct device_attribute *attr,
7037                              const char *buf, size_t count)
7038 {
7039         struct workqueue_struct *wq = dev_to_wq(dev);
7040         struct workqueue_attrs *attrs;
7041         int ret = -ENOMEM;
7042
7043         apply_wqattrs_lock();
7044
7045         attrs = wq_sysfs_prep_attrs(wq);
7046         if (!attrs)
7047                 goto out_unlock;
7048
7049         if (sscanf(buf, "%d", &attrs->nice) == 1 &&
7050             attrs->nice >= MIN_NICE && attrs->nice <= MAX_NICE)
7051                 ret = apply_workqueue_attrs_locked(wq, attrs);
7052         else
7053                 ret = -EINVAL;
7054
7055 out_unlock:
7056         apply_wqattrs_unlock();
7057         free_workqueue_attrs(attrs);
7058         return ret ?: count;
7059 }
7060
7061 static ssize_t wq_cpumask_show(struct device *dev,
7062                                struct device_attribute *attr, char *buf)
7063 {
7064         struct workqueue_struct *wq = dev_to_wq(dev);
7065         int written;
7066
7067         mutex_lock(&wq->mutex);
7068         written = scnprintf(buf, PAGE_SIZE, "%*pb\n",
7069                             cpumask_pr_args(wq->unbound_attrs->cpumask));
7070         mutex_unlock(&wq->mutex);
7071         return written;
7072 }
7073
7074 static ssize_t wq_cpumask_store(struct device *dev,
7075                                 struct device_attribute *attr,
7076                                 const char *buf, size_t count)
7077 {
7078         struct workqueue_struct *wq = dev_to_wq(dev);
7079         struct workqueue_attrs *attrs;
7080         int ret = -ENOMEM;
7081
7082         apply_wqattrs_lock();
7083
7084         attrs = wq_sysfs_prep_attrs(wq);
7085         if (!attrs)
7086                 goto out_unlock;
7087
7088         ret = cpumask_parse(buf, attrs->cpumask);
7089         if (!ret)
7090                 ret = apply_workqueue_attrs_locked(wq, attrs);
7091
7092 out_unlock:
7093         apply_wqattrs_unlock();
7094         free_workqueue_attrs(attrs);
7095         return ret ?: count;
7096 }
7097
7098 static ssize_t wq_affn_scope_show(struct device *dev,
7099                                   struct device_attribute *attr, char *buf)
7100 {
7101         struct workqueue_struct *wq = dev_to_wq(dev);
7102         int written;
7103
7104         mutex_lock(&wq->mutex);
7105         if (wq->unbound_attrs->affn_scope == WQ_AFFN_DFL)
7106                 written = scnprintf(buf, PAGE_SIZE, "%s (%s)\n",
7107                                     wq_affn_names[WQ_AFFN_DFL],
7108                                     wq_affn_names[wq_affn_dfl]);
7109         else
7110                 written = scnprintf(buf, PAGE_SIZE, "%s\n",
7111                                     wq_affn_names[wq->unbound_attrs->affn_scope]);
7112         mutex_unlock(&wq->mutex);
7113
7114         return written;
7115 }
7116
7117 static ssize_t wq_affn_scope_store(struct device *dev,
7118                                    struct device_attribute *attr,
7119                                    const char *buf, size_t count)
7120 {
7121         struct workqueue_struct *wq = dev_to_wq(dev);
7122         struct workqueue_attrs *attrs;
7123         int affn, ret = -ENOMEM;
7124
7125         affn = parse_affn_scope(buf);
7126         if (affn < 0)
7127                 return affn;
7128
7129         apply_wqattrs_lock();
7130         attrs = wq_sysfs_prep_attrs(wq);
7131         if (attrs) {
7132                 attrs->affn_scope = affn;
7133                 ret = apply_workqueue_attrs_locked(wq, attrs);
7134         }
7135         apply_wqattrs_unlock();
7136         free_workqueue_attrs(attrs);
7137         return ret ?: count;
7138 }
7139
7140 static ssize_t wq_affinity_strict_show(struct device *dev,
7141                                        struct device_attribute *attr, char *buf)
7142 {
7143         struct workqueue_struct *wq = dev_to_wq(dev);
7144
7145         return scnprintf(buf, PAGE_SIZE, "%d\n",
7146                          wq->unbound_attrs->affn_strict);
7147 }
7148
7149 static ssize_t wq_affinity_strict_store(struct device *dev,
7150                                         struct device_attribute *attr,
7151                                         const char *buf, size_t count)
7152 {
7153         struct workqueue_struct *wq = dev_to_wq(dev);
7154         struct workqueue_attrs *attrs;
7155         int v, ret = -ENOMEM;
7156
7157         if (sscanf(buf, "%d", &v) != 1)
7158                 return -EINVAL;
7159
7160         apply_wqattrs_lock();
7161         attrs = wq_sysfs_prep_attrs(wq);
7162         if (attrs) {
7163                 attrs->affn_strict = (bool)v;
7164                 ret = apply_workqueue_attrs_locked(wq, attrs);
7165         }
7166         apply_wqattrs_unlock();
7167         free_workqueue_attrs(attrs);
7168         return ret ?: count;
7169 }
7170
7171 static struct device_attribute wq_sysfs_unbound_attrs[] = {
7172         __ATTR(nice, 0644, wq_nice_show, wq_nice_store),
7173         __ATTR(cpumask, 0644, wq_cpumask_show, wq_cpumask_store),
7174         __ATTR(affinity_scope, 0644, wq_affn_scope_show, wq_affn_scope_store),
7175         __ATTR(affinity_strict, 0644, wq_affinity_strict_show, wq_affinity_strict_store),
7176         __ATTR_NULL,
7177 };
7178
7179 static const struct bus_type wq_subsys = {
7180         .name                           = "workqueue",
7181         .dev_groups                     = wq_sysfs_groups,
7182 };
7183
7184 /**
7185  *  workqueue_set_unbound_cpumask - Set the low-level unbound cpumask
7186  *  @cpumask: the cpumask to set
7187  *
7188  *  The low-level workqueues cpumask is a global cpumask that limits
7189  *  the affinity of all unbound workqueues.  This function check the @cpumask
7190  *  and apply it to all unbound workqueues and updates all pwqs of them.
7191  *
7192  *  Return:     0       - Success
7193  *              -EINVAL - Invalid @cpumask
7194  *              -ENOMEM - Failed to allocate memory for attrs or pwqs.
7195  */
7196 static int workqueue_set_unbound_cpumask(cpumask_var_t cpumask)
7197 {
7198         int ret = -EINVAL;
7199
7200         /*
7201          * Not excluding isolated cpus on purpose.
7202          * If the user wishes to include them, we allow that.
7203          */
7204         cpumask_and(cpumask, cpumask, cpu_possible_mask);
7205         if (!cpumask_empty(cpumask)) {
7206                 ret = 0;
7207                 apply_wqattrs_lock();
7208                 if (!cpumask_equal(cpumask, wq_unbound_cpumask))
7209                         ret = workqueue_apply_unbound_cpumask(cpumask);
7210                 if (!ret)
7211                         cpumask_copy(wq_requested_unbound_cpumask, cpumask);
7212                 apply_wqattrs_unlock();
7213         }
7214
7215         return ret;
7216 }
7217
7218 static ssize_t __wq_cpumask_show(struct device *dev,
7219                 struct device_attribute *attr, char *buf, cpumask_var_t mask)
7220 {
7221         int written;
7222
7223         mutex_lock(&wq_pool_mutex);
7224         written = scnprintf(buf, PAGE_SIZE, "%*pb\n", cpumask_pr_args(mask));
7225         mutex_unlock(&wq_pool_mutex);
7226
7227         return written;
7228 }
7229
7230 static ssize_t cpumask_requested_show(struct device *dev,
7231                 struct device_attribute *attr, char *buf)
7232 {
7233         return __wq_cpumask_show(dev, attr, buf, wq_requested_unbound_cpumask);
7234 }
7235 static DEVICE_ATTR_RO(cpumask_requested);
7236
7237 static ssize_t cpumask_isolated_show(struct device *dev,
7238                 struct device_attribute *attr, char *buf)
7239 {
7240         return __wq_cpumask_show(dev, attr, buf, wq_isolated_cpumask);
7241 }
7242 static DEVICE_ATTR_RO(cpumask_isolated);
7243
7244 static ssize_t cpumask_show(struct device *dev,
7245                 struct device_attribute *attr, char *buf)
7246 {
7247         return __wq_cpumask_show(dev, attr, buf, wq_unbound_cpumask);
7248 }
7249
7250 static ssize_t cpumask_store(struct device *dev,
7251                 struct device_attribute *attr, const char *buf, size_t count)
7252 {
7253         cpumask_var_t cpumask;
7254         int ret;
7255
7256         if (!zalloc_cpumask_var(&cpumask, GFP_KERNEL))
7257                 return -ENOMEM;
7258
7259         ret = cpumask_parse(buf, cpumask);
7260         if (!ret)
7261                 ret = workqueue_set_unbound_cpumask(cpumask);
7262
7263         free_cpumask_var(cpumask);
7264         return ret ? ret : count;
7265 }
7266 static DEVICE_ATTR_RW(cpumask);
7267
7268 static struct attribute *wq_sysfs_cpumask_attrs[] = {
7269         &dev_attr_cpumask.attr,
7270         &dev_attr_cpumask_requested.attr,
7271         &dev_attr_cpumask_isolated.attr,
7272         NULL,
7273 };
7274 ATTRIBUTE_GROUPS(wq_sysfs_cpumask);
7275
7276 static int __init wq_sysfs_init(void)
7277 {
7278         return subsys_virtual_register(&wq_subsys, wq_sysfs_cpumask_groups);
7279 }
7280 core_initcall(wq_sysfs_init);
7281
7282 static void wq_device_release(struct device *dev)
7283 {
7284         struct wq_device *wq_dev = container_of(dev, struct wq_device, dev);
7285
7286         kfree(wq_dev);
7287 }
7288
7289 /**
7290  * workqueue_sysfs_register - make a workqueue visible in sysfs
7291  * @wq: the workqueue to register
7292  *
7293  * Expose @wq in sysfs under /sys/bus/workqueue/devices.
7294  * alloc_workqueue*() automatically calls this function if WQ_SYSFS is set
7295  * which is the preferred method.
7296  *
7297  * Workqueue user should use this function directly iff it wants to apply
7298  * workqueue_attrs before making the workqueue visible in sysfs; otherwise,
7299  * apply_workqueue_attrs() may race against userland updating the
7300  * attributes.
7301  *
7302  * Return: 0 on success, -errno on failure.
7303  */
7304 int workqueue_sysfs_register(struct workqueue_struct *wq)
7305 {
7306         struct wq_device *wq_dev;
7307         int ret;
7308
7309         /*
7310          * Adjusting max_active breaks ordering guarantee.  Disallow exposing
7311          * ordered workqueues.
7312          */
7313         if (WARN_ON(wq->flags & __WQ_ORDERED))
7314                 return -EINVAL;
7315
7316         wq->wq_dev = wq_dev = kzalloc(sizeof(*wq_dev), GFP_KERNEL);
7317         if (!wq_dev)
7318                 return -ENOMEM;
7319
7320         wq_dev->wq = wq;
7321         wq_dev->dev.bus = &wq_subsys;
7322         wq_dev->dev.release = wq_device_release;
7323         dev_set_name(&wq_dev->dev, "%s", wq->name);
7324
7325         /*
7326          * unbound_attrs are created separately.  Suppress uevent until
7327          * everything is ready.
7328          */
7329         dev_set_uevent_suppress(&wq_dev->dev, true);
7330
7331         ret = device_register(&wq_dev->dev);
7332         if (ret) {
7333                 put_device(&wq_dev->dev);
7334                 wq->wq_dev = NULL;
7335                 return ret;
7336         }
7337
7338         if (wq->flags & WQ_UNBOUND) {
7339                 struct device_attribute *attr;
7340
7341                 for (attr = wq_sysfs_unbound_attrs; attr->attr.name; attr++) {
7342                         ret = device_create_file(&wq_dev->dev, attr);
7343                         if (ret) {
7344                                 device_unregister(&wq_dev->dev);
7345                                 wq->wq_dev = NULL;
7346                                 return ret;
7347                         }
7348                 }
7349         }
7350
7351         dev_set_uevent_suppress(&wq_dev->dev, false);
7352         kobject_uevent(&wq_dev->dev.kobj, KOBJ_ADD);
7353         return 0;
7354 }
7355
7356 /**
7357  * workqueue_sysfs_unregister - undo workqueue_sysfs_register()
7358  * @wq: the workqueue to unregister
7359  *
7360  * If @wq is registered to sysfs by workqueue_sysfs_register(), unregister.
7361  */
7362 static void workqueue_sysfs_unregister(struct workqueue_struct *wq)
7363 {
7364         struct wq_device *wq_dev = wq->wq_dev;
7365
7366         if (!wq->wq_dev)
7367                 return;
7368
7369         wq->wq_dev = NULL;
7370         device_unregister(&wq_dev->dev);
7371 }
7372 #else   /* CONFIG_SYSFS */
7373 static void workqueue_sysfs_unregister(struct workqueue_struct *wq)     { }
7374 #endif  /* CONFIG_SYSFS */
7375
7376 /*
7377  * Workqueue watchdog.
7378  *
7379  * Stall may be caused by various bugs - missing WQ_MEM_RECLAIM, illegal
7380  * flush dependency, a concurrency managed work item which stays RUNNING
7381  * indefinitely.  Workqueue stalls can be very difficult to debug as the
7382  * usual warning mechanisms don't trigger and internal workqueue state is
7383  * largely opaque.
7384  *
7385  * Workqueue watchdog monitors all worker pools periodically and dumps
7386  * state if some pools failed to make forward progress for a while where
7387  * forward progress is defined as the first item on ->worklist changing.
7388  *
7389  * This mechanism is controlled through the kernel parameter
7390  * "workqueue.watchdog_thresh" which can be updated at runtime through the
7391  * corresponding sysfs parameter file.
7392  */
7393 #ifdef CONFIG_WQ_WATCHDOG
7394
7395 static unsigned long wq_watchdog_thresh = 30;
7396 static struct timer_list wq_watchdog_timer;
7397
7398 static unsigned long wq_watchdog_touched = INITIAL_JIFFIES;
7399 static DEFINE_PER_CPU(unsigned long, wq_watchdog_touched_cpu) = INITIAL_JIFFIES;
7400
7401 /*
7402  * Show workers that might prevent the processing of pending work items.
7403  * The only candidates are CPU-bound workers in the running state.
7404  * Pending work items should be handled by another idle worker
7405  * in all other situations.
7406  */
7407 static void show_cpu_pool_hog(struct worker_pool *pool)
7408 {
7409         struct worker *worker;
7410         unsigned long irq_flags;
7411         int bkt;
7412
7413         raw_spin_lock_irqsave(&pool->lock, irq_flags);
7414
7415         hash_for_each(pool->busy_hash, bkt, worker, hentry) {
7416                 if (task_is_running(worker->task)) {
7417                         /*
7418                          * Defer printing to avoid deadlocks in console
7419                          * drivers that queue work while holding locks
7420                          * also taken in their write paths.
7421                          */
7422                         printk_deferred_enter();
7423
7424                         pr_info("pool %d:\n", pool->id);
7425                         sched_show_task(worker->task);
7426
7427                         printk_deferred_exit();
7428                 }
7429         }
7430
7431         raw_spin_unlock_irqrestore(&pool->lock, irq_flags);
7432 }
7433
7434 static void show_cpu_pools_hogs(void)
7435 {
7436         struct worker_pool *pool;
7437         int pi;
7438
7439         pr_info("Showing backtraces of running workers in stalled CPU-bound worker pools:\n");
7440
7441         rcu_read_lock();
7442
7443         for_each_pool(pool, pi) {
7444                 if (pool->cpu_stall)
7445                         show_cpu_pool_hog(pool);
7446
7447         }
7448
7449         rcu_read_unlock();
7450 }
7451
7452 static void wq_watchdog_reset_touched(void)
7453 {
7454         int cpu;
7455
7456         wq_watchdog_touched = jiffies;
7457         for_each_possible_cpu(cpu)
7458                 per_cpu(wq_watchdog_touched_cpu, cpu) = jiffies;
7459 }
7460
7461 static void wq_watchdog_timer_fn(struct timer_list *unused)
7462 {
7463         unsigned long thresh = READ_ONCE(wq_watchdog_thresh) * HZ;
7464         bool lockup_detected = false;
7465         bool cpu_pool_stall = false;
7466         unsigned long now = jiffies;
7467         struct worker_pool *pool;
7468         int pi;
7469
7470         if (!thresh)
7471                 return;
7472
7473         rcu_read_lock();
7474
7475         for_each_pool(pool, pi) {
7476                 unsigned long pool_ts, touched, ts;
7477
7478                 pool->cpu_stall = false;
7479                 if (list_empty(&pool->worklist))
7480                         continue;
7481
7482                 /*
7483                  * If a virtual machine is stopped by the host it can look to
7484                  * the watchdog like a stall.
7485                  */
7486                 kvm_check_and_clear_guest_paused();
7487
7488                 /* get the latest of pool and touched timestamps */
7489                 if (pool->cpu >= 0)
7490                         touched = READ_ONCE(per_cpu(wq_watchdog_touched_cpu, pool->cpu));
7491                 else
7492                         touched = READ_ONCE(wq_watchdog_touched);
7493                 pool_ts = READ_ONCE(pool->watchdog_ts);
7494
7495                 if (time_after(pool_ts, touched))
7496                         ts = pool_ts;
7497                 else
7498                         ts = touched;
7499
7500                 /* did we stall? */
7501                 if (time_after(now, ts + thresh)) {
7502                         lockup_detected = true;
7503                         if (pool->cpu >= 0 && !(pool->flags & POOL_BH)) {
7504                                 pool->cpu_stall = true;
7505                                 cpu_pool_stall = true;
7506                         }
7507                         pr_emerg("BUG: workqueue lockup - pool");
7508                         pr_cont_pool_info(pool);
7509                         pr_cont(" stuck for %us!\n",
7510                                 jiffies_to_msecs(now - pool_ts) / 1000);
7511                 }
7512
7513
7514         }
7515
7516         rcu_read_unlock();
7517
7518         if (lockup_detected)
7519                 show_all_workqueues();
7520
7521         if (cpu_pool_stall)
7522                 show_cpu_pools_hogs();
7523
7524         wq_watchdog_reset_touched();
7525         mod_timer(&wq_watchdog_timer, jiffies + thresh);
7526 }
7527
7528 notrace void wq_watchdog_touch(int cpu)
7529 {
7530         unsigned long thresh = READ_ONCE(wq_watchdog_thresh) * HZ;
7531         unsigned long touch_ts = READ_ONCE(wq_watchdog_touched);
7532         unsigned long now = jiffies;
7533
7534         if (cpu >= 0)
7535                 per_cpu(wq_watchdog_touched_cpu, cpu) = now;
7536         else
7537                 WARN_ONCE(1, "%s should be called with valid CPU", __func__);
7538
7539         /* Don't unnecessarily store to global cacheline */
7540         if (time_after(now, touch_ts + thresh / 4))
7541                 WRITE_ONCE(wq_watchdog_touched, jiffies);
7542 }
7543
7544 static void wq_watchdog_set_thresh(unsigned long thresh)
7545 {
7546         wq_watchdog_thresh = 0;
7547         del_timer_sync(&wq_watchdog_timer);
7548
7549         if (thresh) {
7550                 wq_watchdog_thresh = thresh;
7551                 wq_watchdog_reset_touched();
7552                 mod_timer(&wq_watchdog_timer, jiffies + thresh * HZ);
7553         }
7554 }
7555
7556 static int wq_watchdog_param_set_thresh(const char *val,
7557                                         const struct kernel_param *kp)
7558 {
7559         unsigned long thresh;
7560         int ret;
7561
7562         ret = kstrtoul(val, 0, &thresh);
7563         if (ret)
7564                 return ret;
7565
7566         if (system_wq)
7567                 wq_watchdog_set_thresh(thresh);
7568         else
7569                 wq_watchdog_thresh = thresh;
7570
7571         return 0;
7572 }
7573
7574 static const struct kernel_param_ops wq_watchdog_thresh_ops = {
7575         .set    = wq_watchdog_param_set_thresh,
7576         .get    = param_get_ulong,
7577 };
7578
7579 module_param_cb(watchdog_thresh, &wq_watchdog_thresh_ops, &wq_watchdog_thresh,
7580                 0644);
7581
7582 static void wq_watchdog_init(void)
7583 {
7584         timer_setup(&wq_watchdog_timer, wq_watchdog_timer_fn, TIMER_DEFERRABLE);
7585         wq_watchdog_set_thresh(wq_watchdog_thresh);
7586 }
7587
7588 #else   /* CONFIG_WQ_WATCHDOG */
7589
7590 static inline void wq_watchdog_init(void) { }
7591
7592 #endif  /* CONFIG_WQ_WATCHDOG */
7593
7594 static void bh_pool_kick_normal(struct irq_work *irq_work)
7595 {
7596         raise_softirq_irqoff(TASKLET_SOFTIRQ);
7597 }
7598
7599 static void bh_pool_kick_highpri(struct irq_work *irq_work)
7600 {
7601         raise_softirq_irqoff(HI_SOFTIRQ);
7602 }
7603
7604 static void __init restrict_unbound_cpumask(const char *name, const struct cpumask *mask)
7605 {
7606         if (!cpumask_intersects(wq_unbound_cpumask, mask)) {
7607                 pr_warn("workqueue: Restricting unbound_cpumask (%*pb) with %s (%*pb) leaves no CPU, ignoring\n",
7608                         cpumask_pr_args(wq_unbound_cpumask), name, cpumask_pr_args(mask));
7609                 return;
7610         }
7611
7612         cpumask_and(wq_unbound_cpumask, wq_unbound_cpumask, mask);
7613 }
7614
7615 static void __init init_cpu_worker_pool(struct worker_pool *pool, int cpu, int nice)
7616 {
7617         BUG_ON(init_worker_pool(pool));
7618         pool->cpu = cpu;
7619         cpumask_copy(pool->attrs->cpumask, cpumask_of(cpu));
7620         cpumask_copy(pool->attrs->__pod_cpumask, cpumask_of(cpu));
7621         pool->attrs->nice = nice;
7622         pool->attrs->affn_strict = true;
7623         pool->node = cpu_to_node(cpu);
7624
7625         /* alloc pool ID */
7626         mutex_lock(&wq_pool_mutex);
7627         BUG_ON(worker_pool_assign_id(pool));
7628         mutex_unlock(&wq_pool_mutex);
7629 }
7630
7631 /**
7632  * workqueue_init_early - early init for workqueue subsystem
7633  *
7634  * This is the first step of three-staged workqueue subsystem initialization and
7635  * invoked as soon as the bare basics - memory allocation, cpumasks and idr are
7636  * up. It sets up all the data structures and system workqueues and allows early
7637  * boot code to create workqueues and queue/cancel work items. Actual work item
7638  * execution starts only after kthreads can be created and scheduled right
7639  * before early initcalls.
7640  */
7641 void __init workqueue_init_early(void)
7642 {
7643         struct wq_pod_type *pt = &wq_pod_types[WQ_AFFN_SYSTEM];
7644         int std_nice[NR_STD_WORKER_POOLS] = { 0, HIGHPRI_NICE_LEVEL };
7645         void (*irq_work_fns[2])(struct irq_work *) = { bh_pool_kick_normal,
7646                                                        bh_pool_kick_highpri };
7647         int i, cpu;
7648
7649         BUILD_BUG_ON(__alignof__(struct pool_workqueue) < __alignof__(long long));
7650
7651         BUG_ON(!alloc_cpumask_var(&wq_online_cpumask, GFP_KERNEL));
7652         BUG_ON(!alloc_cpumask_var(&wq_unbound_cpumask, GFP_KERNEL));
7653         BUG_ON(!alloc_cpumask_var(&wq_requested_unbound_cpumask, GFP_KERNEL));
7654         BUG_ON(!zalloc_cpumask_var(&wq_isolated_cpumask, GFP_KERNEL));
7655
7656         cpumask_copy(wq_online_cpumask, cpu_online_mask);
7657         cpumask_copy(wq_unbound_cpumask, cpu_possible_mask);
7658         restrict_unbound_cpumask("HK_TYPE_WQ", housekeeping_cpumask(HK_TYPE_WQ));
7659         restrict_unbound_cpumask("HK_TYPE_DOMAIN", housekeeping_cpumask(HK_TYPE_DOMAIN));
7660         if (!cpumask_empty(&wq_cmdline_cpumask))
7661                 restrict_unbound_cpumask("workqueue.unbound_cpus", &wq_cmdline_cpumask);
7662
7663         cpumask_copy(wq_requested_unbound_cpumask, wq_unbound_cpumask);
7664
7665         pwq_cache = KMEM_CACHE(pool_workqueue, SLAB_PANIC);
7666
7667         wq_update_pod_attrs_buf = alloc_workqueue_attrs();
7668         BUG_ON(!wq_update_pod_attrs_buf);
7669
7670         /*
7671          * If nohz_full is enabled, set power efficient workqueue as unbound.
7672          * This allows workqueue items to be moved to HK CPUs.
7673          */
7674         if (housekeeping_enabled(HK_TYPE_TICK))
7675                 wq_power_efficient = true;
7676
7677         /* initialize WQ_AFFN_SYSTEM pods */
7678         pt->pod_cpus = kcalloc(1, sizeof(pt->pod_cpus[0]), GFP_KERNEL);
7679         pt->pod_node = kcalloc(1, sizeof(pt->pod_node[0]), GFP_KERNEL);
7680         pt->cpu_pod = kcalloc(nr_cpu_ids, sizeof(pt->cpu_pod[0]), GFP_KERNEL);
7681         BUG_ON(!pt->pod_cpus || !pt->pod_node || !pt->cpu_pod);
7682
7683         BUG_ON(!zalloc_cpumask_var_node(&pt->pod_cpus[0], GFP_KERNEL, NUMA_NO_NODE));
7684
7685         pt->nr_pods = 1;
7686         cpumask_copy(pt->pod_cpus[0], cpu_possible_mask);
7687         pt->pod_node[0] = NUMA_NO_NODE;
7688         pt->cpu_pod[0] = 0;
7689
7690         /* initialize BH and CPU pools */
7691         for_each_possible_cpu(cpu) {
7692                 struct worker_pool *pool;
7693
7694                 i = 0;
7695                 for_each_bh_worker_pool(pool, cpu) {
7696                         init_cpu_worker_pool(pool, cpu, std_nice[i]);
7697                         pool->flags |= POOL_BH;
7698                         init_irq_work(bh_pool_irq_work(pool), irq_work_fns[i]);
7699                         i++;
7700                 }
7701
7702                 i = 0;
7703                 for_each_cpu_worker_pool(pool, cpu)
7704                         init_cpu_worker_pool(pool, cpu, std_nice[i++]);
7705         }
7706
7707         /* create default unbound and ordered wq attrs */
7708         for (i = 0; i < NR_STD_WORKER_POOLS; i++) {
7709                 struct workqueue_attrs *attrs;
7710
7711                 BUG_ON(!(attrs = alloc_workqueue_attrs()));
7712                 attrs->nice = std_nice[i];
7713                 unbound_std_wq_attrs[i] = attrs;
7714
7715                 /*
7716                  * An ordered wq should have only one pwq as ordering is
7717                  * guaranteed by max_active which is enforced by pwqs.
7718                  */
7719                 BUG_ON(!(attrs = alloc_workqueue_attrs()));
7720                 attrs->nice = std_nice[i];
7721                 attrs->ordered = true;
7722                 ordered_wq_attrs[i] = attrs;
7723         }
7724
7725         system_wq = alloc_workqueue("events", 0, 0);
7726         system_highpri_wq = alloc_workqueue("events_highpri", WQ_HIGHPRI, 0);
7727         system_long_wq = alloc_workqueue("events_long", 0, 0);
7728         system_unbound_wq = alloc_workqueue("events_unbound", WQ_UNBOUND,
7729                                             WQ_MAX_ACTIVE);
7730         system_freezable_wq = alloc_workqueue("events_freezable",
7731                                               WQ_FREEZABLE, 0);
7732         system_power_efficient_wq = alloc_workqueue("events_power_efficient",
7733                                               WQ_POWER_EFFICIENT, 0);
7734         system_freezable_power_efficient_wq = alloc_workqueue("events_freezable_pwr_efficient",
7735                                               WQ_FREEZABLE | WQ_POWER_EFFICIENT,
7736                                               0);
7737         system_bh_wq = alloc_workqueue("events_bh", WQ_BH, 0);
7738         system_bh_highpri_wq = alloc_workqueue("events_bh_highpri",
7739                                                WQ_BH | WQ_HIGHPRI, 0);
7740         BUG_ON(!system_wq || !system_highpri_wq || !system_long_wq ||
7741                !system_unbound_wq || !system_freezable_wq ||
7742                !system_power_efficient_wq ||
7743                !system_freezable_power_efficient_wq ||
7744                !system_bh_wq || !system_bh_highpri_wq);
7745 }
7746
7747 static void __init wq_cpu_intensive_thresh_init(void)
7748 {
7749         unsigned long thresh;
7750         unsigned long bogo;
7751
7752         pwq_release_worker = kthread_create_worker(0, "pool_workqueue_release");
7753         BUG_ON(IS_ERR(pwq_release_worker));
7754
7755         /* if the user set it to a specific value, keep it */
7756         if (wq_cpu_intensive_thresh_us != ULONG_MAX)
7757                 return;
7758
7759         /*
7760          * The default of 10ms is derived from the fact that most modern (as of
7761          * 2023) processors can do a lot in 10ms and that it's just below what
7762          * most consider human-perceivable. However, the kernel also runs on a
7763          * lot slower CPUs including microcontrollers where the threshold is way
7764          * too low.
7765          *
7766          * Let's scale up the threshold upto 1 second if BogoMips is below 4000.
7767          * This is by no means accurate but it doesn't have to be. The mechanism
7768          * is still useful even when the threshold is fully scaled up. Also, as
7769          * the reports would usually be applicable to everyone, some machines
7770          * operating on longer thresholds won't significantly diminish their
7771          * usefulness.
7772          */
7773         thresh = 10 * USEC_PER_MSEC;
7774
7775         /* see init/calibrate.c for lpj -> BogoMIPS calculation */
7776         bogo = max_t(unsigned long, loops_per_jiffy / 500000 * HZ, 1);
7777         if (bogo < 4000)
7778                 thresh = min_t(unsigned long, thresh * 4000 / bogo, USEC_PER_SEC);
7779
7780         pr_debug("wq_cpu_intensive_thresh: lpj=%lu BogoMIPS=%lu thresh_us=%lu\n",
7781                  loops_per_jiffy, bogo, thresh);
7782
7783         wq_cpu_intensive_thresh_us = thresh;
7784 }
7785
7786 /**
7787  * workqueue_init - bring workqueue subsystem fully online
7788  *
7789  * This is the second step of three-staged workqueue subsystem initialization
7790  * and invoked as soon as kthreads can be created and scheduled. Workqueues have
7791  * been created and work items queued on them, but there are no kworkers
7792  * executing the work items yet. Populate the worker pools with the initial
7793  * workers and enable future kworker creations.
7794  */
7795 void __init workqueue_init(void)
7796 {
7797         struct workqueue_struct *wq;
7798         struct worker_pool *pool;
7799         int cpu, bkt;
7800
7801         wq_cpu_intensive_thresh_init();
7802
7803         mutex_lock(&wq_pool_mutex);
7804
7805         /*
7806          * Per-cpu pools created earlier could be missing node hint. Fix them
7807          * up. Also, create a rescuer for workqueues that requested it.
7808          */
7809         for_each_possible_cpu(cpu) {
7810                 for_each_bh_worker_pool(pool, cpu)
7811                         pool->node = cpu_to_node(cpu);
7812                 for_each_cpu_worker_pool(pool, cpu)
7813                         pool->node = cpu_to_node(cpu);
7814         }
7815
7816         list_for_each_entry(wq, &workqueues, list) {
7817                 WARN(init_rescuer(wq),
7818                      "workqueue: failed to create early rescuer for %s",
7819                      wq->name);
7820         }
7821
7822         mutex_unlock(&wq_pool_mutex);
7823
7824         /*
7825          * Create the initial workers. A BH pool has one pseudo worker that
7826          * represents the shared BH execution context and thus doesn't get
7827          * affected by hotplug events. Create the BH pseudo workers for all
7828          * possible CPUs here.
7829          */
7830         for_each_possible_cpu(cpu)
7831                 for_each_bh_worker_pool(pool, cpu)
7832                         BUG_ON(!create_worker(pool));
7833
7834         for_each_online_cpu(cpu) {
7835                 for_each_cpu_worker_pool(pool, cpu) {
7836                         pool->flags &= ~POOL_DISASSOCIATED;
7837                         BUG_ON(!create_worker(pool));
7838                 }
7839         }
7840
7841         hash_for_each(unbound_pool_hash, bkt, pool, hash_node)
7842                 BUG_ON(!create_worker(pool));
7843
7844         wq_online = true;
7845         wq_watchdog_init();
7846 }
7847
7848 /*
7849  * Initialize @pt by first initializing @pt->cpu_pod[] with pod IDs according to
7850  * @cpu_shares_pod(). Each subset of CPUs that share a pod is assigned a unique
7851  * and consecutive pod ID. The rest of @pt is initialized accordingly.
7852  */
7853 static void __init init_pod_type(struct wq_pod_type *pt,
7854                                  bool (*cpus_share_pod)(int, int))
7855 {
7856         int cur, pre, cpu, pod;
7857
7858         pt->nr_pods = 0;
7859
7860         /* init @pt->cpu_pod[] according to @cpus_share_pod() */
7861         pt->cpu_pod = kcalloc(nr_cpu_ids, sizeof(pt->cpu_pod[0]), GFP_KERNEL);
7862         BUG_ON(!pt->cpu_pod);
7863
7864         for_each_possible_cpu(cur) {
7865                 for_each_possible_cpu(pre) {
7866                         if (pre >= cur) {
7867                                 pt->cpu_pod[cur] = pt->nr_pods++;
7868                                 break;
7869                         }
7870                         if (cpus_share_pod(cur, pre)) {
7871                                 pt->cpu_pod[cur] = pt->cpu_pod[pre];
7872                                 break;
7873                         }
7874                 }
7875         }
7876
7877         /* init the rest to match @pt->cpu_pod[] */
7878         pt->pod_cpus = kcalloc(pt->nr_pods, sizeof(pt->pod_cpus[0]), GFP_KERNEL);
7879         pt->pod_node = kcalloc(pt->nr_pods, sizeof(pt->pod_node[0]), GFP_KERNEL);
7880         BUG_ON(!pt->pod_cpus || !pt->pod_node);
7881
7882         for (pod = 0; pod < pt->nr_pods; pod++)
7883                 BUG_ON(!zalloc_cpumask_var(&pt->pod_cpus[pod], GFP_KERNEL));
7884
7885         for_each_possible_cpu(cpu) {
7886                 cpumask_set_cpu(cpu, pt->pod_cpus[pt->cpu_pod[cpu]]);
7887                 pt->pod_node[pt->cpu_pod[cpu]] = cpu_to_node(cpu);
7888         }
7889 }
7890
7891 static bool __init cpus_dont_share(int cpu0, int cpu1)
7892 {
7893         return false;
7894 }
7895
7896 static bool __init cpus_share_smt(int cpu0, int cpu1)
7897 {
7898 #ifdef CONFIG_SCHED_SMT
7899         return cpumask_test_cpu(cpu0, cpu_smt_mask(cpu1));
7900 #else
7901         return false;
7902 #endif
7903 }
7904
7905 static bool __init cpus_share_numa(int cpu0, int cpu1)
7906 {
7907         return cpu_to_node(cpu0) == cpu_to_node(cpu1);
7908 }
7909
7910 /**
7911  * workqueue_init_topology - initialize CPU pods for unbound workqueues
7912  *
7913  * This is the third step of three-staged workqueue subsystem initialization and
7914  * invoked after SMP and topology information are fully initialized. It
7915  * initializes the unbound CPU pods accordingly.
7916  */
7917 void __init workqueue_init_topology(void)
7918 {
7919         struct workqueue_struct *wq;
7920         int cpu;
7921
7922         init_pod_type(&wq_pod_types[WQ_AFFN_CPU], cpus_dont_share);
7923         init_pod_type(&wq_pod_types[WQ_AFFN_SMT], cpus_share_smt);
7924         init_pod_type(&wq_pod_types[WQ_AFFN_CACHE], cpus_share_cache);
7925         init_pod_type(&wq_pod_types[WQ_AFFN_NUMA], cpus_share_numa);
7926
7927         wq_topo_initialized = true;
7928
7929         mutex_lock(&wq_pool_mutex);
7930
7931         /*
7932          * Workqueues allocated earlier would have all CPUs sharing the default
7933          * worker pool. Explicitly call wq_update_pod() on all workqueue and CPU
7934          * combinations to apply per-pod sharing.
7935          */
7936         list_for_each_entry(wq, &workqueues, list) {
7937                 for_each_online_cpu(cpu)
7938                         wq_update_pod(wq, cpu, cpu, true);
7939                 if (wq->flags & WQ_UNBOUND) {
7940                         mutex_lock(&wq->mutex);
7941                         wq_update_node_max_active(wq, -1);
7942                         mutex_unlock(&wq->mutex);
7943                 }
7944         }
7945
7946         mutex_unlock(&wq_pool_mutex);
7947 }
7948
7949 void __warn_flushing_systemwide_wq(void)
7950 {
7951         pr_warn("WARNING: Flushing system-wide workqueues will be prohibited in near future.\n");
7952         dump_stack();
7953 }
7954 EXPORT_SYMBOL(__warn_flushing_systemwide_wq);
7955
7956 static int __init workqueue_unbound_cpus_setup(char *str)
7957 {
7958         if (cpulist_parse(str, &wq_cmdline_cpumask) < 0) {
7959                 cpumask_clear(&wq_cmdline_cpumask);
7960                 pr_warn("workqueue.unbound_cpus: incorrect CPU range, using default\n");
7961         }
7962
7963         return 1;
7964 }
7965 __setup("workqueue.unbound_cpus=", workqueue_unbound_cpus_setup);
This page took 0.464536 seconds and 4 git commands to generate.