diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-12-13 15:59:57 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-12-13 15:59:57 -0500 |
commit | c11a6cfb0103d5d831e20bd9b75d10d13519fec5 (patch) | |
tree | f6706e6c68ad5c07922eb9a40e5bdb5f0a68581f /init | |
parent | e6efef7260ac2bb170059980a78440499f2cc0db (diff) | |
parent | 8bc4a04455969c36bf54a942ad9d28d80969ed51 (diff) |
Merge branch 'for-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue updates from Tejun Heo:
"Mostly patches to initialize workqueue subsystem earlier and get rid
of keventd_up().
The patches were headed for the last merge cycle but got delayed due
to a bug found late minute, which is fixed now.
Also, to help debugging, destroy_workqueue() is more chatty now on a
sanity check failure."
* 'for-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
workqueue: move wq_numa_init() to workqueue_init()
workqueue: remove keventd_up()
debugobj, workqueue: remove keventd_up() usage
slab, workqueue: remove keventd_up() usage
power, workqueue: remove keventd_up() usage
tty, workqueue: remove keventd_up() usage
mce, workqueue: remove keventd_up() usage
workqueue: make workqueue available early during boot
workqueue: dump workqueue state on sanity check failures in destroy_workqueue()
Diffstat (limited to 'init')
-rw-r--r-- | init/main.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c index fa201166cba7..23c275cca73a 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -553,6 +553,14 @@ asmlinkage __visible void __init start_kernel(void) | |||
553 | "Interrupts were enabled *very* early, fixing it\n")) | 553 | "Interrupts were enabled *very* early, fixing it\n")) |
554 | local_irq_disable(); | 554 | local_irq_disable(); |
555 | idr_init_cache(); | 555 | idr_init_cache(); |
556 | |||
557 | /* | ||
558 | * Allow workqueue creation and work item queueing/cancelling | ||
559 | * early. Work item execution depends on kthreads and starts after | ||
560 | * workqueue_init(). | ||
561 | */ | ||
562 | workqueue_init_early(); | ||
563 | |||
556 | rcu_init(); | 564 | rcu_init(); |
557 | 565 | ||
558 | /* trace_printk() and trace points may be used after this */ | 566 | /* trace_printk() and trace points may be used after this */ |
@@ -1009,6 +1017,8 @@ static noinline void __init kernel_init_freeable(void) | |||
1009 | 1017 | ||
1010 | smp_prepare_cpus(setup_max_cpus); | 1018 | smp_prepare_cpus(setup_max_cpus); |
1011 | 1019 | ||
1020 | workqueue_init(); | ||
1021 | |||
1012 | do_pre_smp_initcalls(); | 1022 | do_pre_smp_initcalls(); |
1013 | lockup_detector_init(); | 1023 | lockup_detector_init(); |
1014 | 1024 | ||