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