As we prepare for offloading the residual 1hz scheduler ticks to workqueue, let's affine those to housekeepers so that they don't interrupt the CPUs that don't want to be disturbed.
Showing the changes to kernel/workqueue.c (1 of 3 files). Show all
Unified · Split
| @@ -5565,12 +5565,13 @@ static void __init wq_numa_init(void) · 5564 unmodified lines | |||
| 5565 | int __init workqueue_init_early(void) | 5565 | int __init workqueue_init_early(void) |
| 5566 | { | 5566 | { |
| 5567 | int std_nice[NR_STD_WORKER_POOLS] = { 0, HIGHPRI_NICE_LEVEL }; | 5567 | int std_nice[NR_STD_WORKER_POOLS] = { 0, HIGHPRI_NICE_LEVEL }; |
| 5568 | int hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ; | ||
| 5568 | int i, cpu; | 5569 | int i, cpu; |
| 5569 | 5570 | ||
| 5570 | WARN_ON(__alignof__(struct pool_workqueue) < __alignof__(long long)); | 5571 | WARN_ON(__alignof__(struct pool_workqueue) < __alignof__(long long)); |
| 5571 | 5572 | ||
| 5572 | BUG_ON(!alloc_cpumask_var(&wq_unbound_cpumask, GFP_KERNEL)); | 5573 | BUG_ON(!alloc_cpumask_var(&wq_unbound_cpumask, GFP_KERNEL)); |
| 5573 | cpumask_copy(wq_unbound_cpumask, housekeeping_cpumask(HK_FLAG_DOMAIN)); | 5574 | cpumask_copy(wq_unbound_cpumask, housekeeping_cpumask(hk_flags)); |
| 5574 | 5575 | ||
| 5575 | pwq_cache = KMEM_CACHE(pool_workqueue, SLAB_PANIC); | 5576 | pwq_cache = KMEM_CACHE(pool_workqueue, SLAB_PANIC); |
| 5576 | 5577 | ||