Loading arch/x86/kernel/cpu/mcheck/mce.c +1 −1 Original line number Diff line number Diff line Loading @@ -499,7 +499,7 @@ int mce_available(struct cpuinfo_x86 *c) static void mce_schedule_work(void) { if (!mce_gen_pool_empty() && keventd_up()) if (!mce_gen_pool_empty()) schedule_work(&mce_work); } Loading drivers/tty/vt/vt.c +0 −4 Original line number Diff line number Diff line Loading @@ -3929,10 +3929,6 @@ void unblank_screen(void) */ static void blank_screen_t(unsigned long dummy) { if (unlikely(!keventd_up())) { mod_timer(&console_timer, jiffies + (blankinterval * HZ)); return; } blank_timer_expired = 1; schedule_work(&console_work); } Loading include/linux/workqueue.h +3 −8 Original line number Diff line number Diff line Loading @@ -590,14 +590,6 @@ static inline bool schedule_delayed_work(struct delayed_work *dwork, return queue_delayed_work(system_wq, dwork, delay); } /** * keventd_up - is workqueue initialized yet? */ static inline bool keventd_up(void) { return system_wq != NULL; } #ifndef CONFIG_SMP static inline long work_on_cpu(int cpu, long (*fn)(void *), void *arg) { Loading Loading @@ -632,4 +624,7 @@ int workqueue_online_cpu(unsigned int cpu); int workqueue_offline_cpu(unsigned int cpu); #endif int __init workqueue_init_early(void); int __init workqueue_init(void); #endif init/main.c +10 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,14 @@ asmlinkage __visible void __init start_kernel(void) "Interrupts were enabled *very* early, fixing it\n")) local_irq_disable(); idr_init_cache(); /* * Allow workqueue creation and work item queueing/cancelling * early. Work item execution depends on kthreads and starts after * workqueue_init(). */ workqueue_init_early(); rcu_init(); /* trace_printk() and trace points may be used after this */ Loading Loading @@ -1006,6 +1014,8 @@ static noinline void __init kernel_init_freeable(void) smp_prepare_cpus(setup_max_cpus); workqueue_init(); do_pre_smp_initcalls(); lockup_detector_init(); Loading kernel/power/qos.c +1 −10 Original line number Diff line number Diff line Loading @@ -482,16 +482,7 @@ void pm_qos_update_request(struct pm_qos_request *req, return; } /* * This function may be called very early during boot, for example, * from of_clk_init(), where irq needs to stay disabled. * cancel_delayed_work_sync() assumes that irq is enabled on * invocation and re-enables it on return. Avoid calling it until * workqueue is initialized. */ if (keventd_up()) cancel_delayed_work_sync(&req->work); __pm_qos_update_request(req, new_value); } EXPORT_SYMBOL_GPL(pm_qos_update_request); Loading Loading
arch/x86/kernel/cpu/mcheck/mce.c +1 −1 Original line number Diff line number Diff line Loading @@ -499,7 +499,7 @@ int mce_available(struct cpuinfo_x86 *c) static void mce_schedule_work(void) { if (!mce_gen_pool_empty() && keventd_up()) if (!mce_gen_pool_empty()) schedule_work(&mce_work); } Loading
drivers/tty/vt/vt.c +0 −4 Original line number Diff line number Diff line Loading @@ -3929,10 +3929,6 @@ void unblank_screen(void) */ static void blank_screen_t(unsigned long dummy) { if (unlikely(!keventd_up())) { mod_timer(&console_timer, jiffies + (blankinterval * HZ)); return; } blank_timer_expired = 1; schedule_work(&console_work); } Loading
include/linux/workqueue.h +3 −8 Original line number Diff line number Diff line Loading @@ -590,14 +590,6 @@ static inline bool schedule_delayed_work(struct delayed_work *dwork, return queue_delayed_work(system_wq, dwork, delay); } /** * keventd_up - is workqueue initialized yet? */ static inline bool keventd_up(void) { return system_wq != NULL; } #ifndef CONFIG_SMP static inline long work_on_cpu(int cpu, long (*fn)(void *), void *arg) { Loading Loading @@ -632,4 +624,7 @@ int workqueue_online_cpu(unsigned int cpu); int workqueue_offline_cpu(unsigned int cpu); #endif int __init workqueue_init_early(void); int __init workqueue_init(void); #endif
init/main.c +10 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,14 @@ asmlinkage __visible void __init start_kernel(void) "Interrupts were enabled *very* early, fixing it\n")) local_irq_disable(); idr_init_cache(); /* * Allow workqueue creation and work item queueing/cancelling * early. Work item execution depends on kthreads and starts after * workqueue_init(). */ workqueue_init_early(); rcu_init(); /* trace_printk() and trace points may be used after this */ Loading Loading @@ -1006,6 +1014,8 @@ static noinline void __init kernel_init_freeable(void) smp_prepare_cpus(setup_max_cpus); workqueue_init(); do_pre_smp_initcalls(); lockup_detector_init(); Loading
kernel/power/qos.c +1 −10 Original line number Diff line number Diff line Loading @@ -482,16 +482,7 @@ void pm_qos_update_request(struct pm_qos_request *req, return; } /* * This function may be called very early during boot, for example, * from of_clk_init(), where irq needs to stay disabled. * cancel_delayed_work_sync() assumes that irq is enabled on * invocation and re-enables it on return. Avoid calling it until * workqueue is initialized. */ if (keventd_up()) cancel_delayed_work_sync(&req->work); __pm_qos_update_request(req, new_value); } EXPORT_SYMBOL_GPL(pm_qos_update_request); Loading