[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202510171328.eE4qdf84-lkp@intel.com>
Date: Fri, 17 Oct 2025 14:19:20 +0800
From: kernel test robot <lkp@...el.com>
To: Xin Zhao <jackzxcui1989@....com>, tj@...nel.org, jiangshanlai@...il.com
Cc: oe-kbuild-all@...ts.linux.dev, linux-kernel@...r.kernel.org,
Xin Zhao <jackzxcui1989@....com>
Subject: Re: [PATCH] workqueue: Support RT workqueue
Hi Xin,
kernel test robot noticed the following build warnings:
[auto build test WARNING on v6.17]
[cannot apply to tj-wq/for-next v6.18-rc1 linus/master next-20251016]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Xin-Zhao/workqueue-Support-RT-workqueue/20251016-182514
base: v6.17
patch link: https://lore.kernel.org/r/20251016102345.2200815-1-jackzxcui1989%40163.com
patch subject: [PATCH] workqueue: Support RT workqueue
config: csky-randconfig-002-20251017 (https://download.01.org/0day-ci/archive/20251017/202510171328.eE4qdf84-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 10.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251017/202510171328.eE4qdf84-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202510171328.eE4qdf84-lkp@intel.com/
All warnings (new ones prefixed by >>):
kernel/workqueue.c: In function 'workqueue_init_early':
>> kernel/workqueue.c:7791:4: warning: iteration 2 invokes undefined behavior [-Waggressive-loop-optimizations]
7791 | init_irq_work(bh_pool_irq_work(pool), irq_work_fns[i]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/workqueue.c:552:2: note: within this loop
552 | for ((pool) = &per_cpu(bh_worker_pools, cpu)[0]; \
| ^~~
kernel/workqueue.c:7788:3: note: in expansion of macro 'for_each_bh_worker_pool'
7788 | for_each_bh_worker_pool(pool, cpu) {
| ^~~~~~~~~~~~~~~~~~~~~~~
vim +7791 kernel/workqueue.c
2fcdb1b44491e08 Tejun Heo 2024-02-04 7722
3347fa0928210d9 Tejun Heo 2016-09-16 7723 /**
3347fa0928210d9 Tejun Heo 2016-09-16 7724 * workqueue_init_early - early init for workqueue subsystem
3347fa0928210d9 Tejun Heo 2016-09-16 7725 *
2930155b2e27232 Tejun Heo 2023-08-07 7726 * This is the first step of three-staged workqueue subsystem initialization and
2930155b2e27232 Tejun Heo 2023-08-07 7727 * invoked as soon as the bare basics - memory allocation, cpumasks and idr are
2930155b2e27232 Tejun Heo 2023-08-07 7728 * up. It sets up all the data structures and system workqueues and allows early
2930155b2e27232 Tejun Heo 2023-08-07 7729 * boot code to create workqueues and queue/cancel work items. Actual work item
2930155b2e27232 Tejun Heo 2023-08-07 7730 * execution starts only after kthreads can be created and scheduled right
2930155b2e27232 Tejun Heo 2023-08-07 7731 * before early initcalls.
3347fa0928210d9 Tejun Heo 2016-09-16 7732 */
2333e829952fb43 Yu Chen 2020-02-23 7733 void __init workqueue_init_early(void)
^1da177e4c3f415 Linus Torvalds 2005-04-16 7734 {
84193c07105c62d Tejun Heo 2023-08-07 7735 struct wq_pod_type *pt = &wq_pod_types[WQ_AFFN_SYSTEM];
7456d72db76b9c5 Xin Zhao 2025-10-16 7736 int std_nice[NR_STD_WORKER_POOLS] = { 0, HIGHPRI_NICE_LEVEL, RTPRI_LEVEL };
2f34d7337d98f3e Tejun Heo 2024-02-14 7737 void (*irq_work_fns[2])(struct irq_work *) = { bh_pool_kick_normal,
2f34d7337d98f3e Tejun Heo 2024-02-14 7738 bh_pool_kick_highpri };
7a4e344c5675eef Tejun Heo 2013-03-12 7739 int i, cpu;
c34056a3fdde777 Tejun Heo 2010-06-29 7740
10cdb15759540f0 Lai Jiangshan 2020-06-01 7741 BUILD_BUG_ON(__alignof__(struct pool_workqueue) < __alignof__(long long));
e904e6c2668bba7 Tejun Heo 2013-03-12 7742
8d84baf76045f5b Lai Jiangshan 2024-07-11 7743 BUG_ON(!alloc_cpumask_var(&wq_online_cpumask, GFP_KERNEL));
b05a79280b346eb Frederic Weisbecker 2015-04-27 7744 BUG_ON(!alloc_cpumask_var(&wq_unbound_cpumask, GFP_KERNEL));
fe28f631fa941fb Waiman Long 2023-10-25 7745 BUG_ON(!alloc_cpumask_var(&wq_requested_unbound_cpumask, GFP_KERNEL));
fe28f631fa941fb Waiman Long 2023-10-25 7746 BUG_ON(!zalloc_cpumask_var(&wq_isolated_cpumask, GFP_KERNEL));
b05a79280b346eb Frederic Weisbecker 2015-04-27 7747
8d84baf76045f5b Lai Jiangshan 2024-07-11 7748 cpumask_copy(wq_online_cpumask, cpu_online_mask);
4a6c5607d4502cc Tejun Heo 2023-11-21 7749 cpumask_copy(wq_unbound_cpumask, cpu_possible_mask);
4a6c5607d4502cc Tejun Heo 2023-11-21 7750 restrict_unbound_cpumask("HK_TYPE_WQ", housekeeping_cpumask(HK_TYPE_WQ));
4a6c5607d4502cc Tejun Heo 2023-11-21 7751 restrict_unbound_cpumask("HK_TYPE_DOMAIN", housekeeping_cpumask(HK_TYPE_DOMAIN));
ace3c5499e61ef7 tiozhang 2023-06-29 7752 if (!cpumask_empty(&wq_cmdline_cpumask))
4a6c5607d4502cc Tejun Heo 2023-11-21 7753 restrict_unbound_cpumask("workqueue.unbound_cpus", &wq_cmdline_cpumask);
ace3c5499e61ef7 tiozhang 2023-06-29 7754
fe28f631fa941fb Waiman Long 2023-10-25 7755 cpumask_copy(wq_requested_unbound_cpumask, wq_unbound_cpumask);
261dce3d64021e7 Chuyi Zhou 2025-06-17 7756 cpumask_andnot(wq_isolated_cpumask, cpu_possible_mask,
261dce3d64021e7 Chuyi Zhou 2025-06-17 7757 housekeeping_cpumask(HK_TYPE_DOMAIN));
e904e6c2668bba7 Tejun Heo 2013-03-12 7758 pwq_cache = KMEM_CACHE(pool_workqueue, SLAB_PANIC);
e904e6c2668bba7 Tejun Heo 2013-03-12 7759
b2b1f9338400de0 Lai Jiangshan 2024-07-11 7760 unbound_wq_update_pwq_attrs_buf = alloc_workqueue_attrs();
b2b1f9338400de0 Lai Jiangshan 2024-07-11 7761 BUG_ON(!unbound_wq_update_pwq_attrs_buf);
2930155b2e27232 Tejun Heo 2023-08-07 7762
7bd20b6b87183db Marcelo Tosatti 2024-01-19 7763 /*
7bd20b6b87183db Marcelo Tosatti 2024-01-19 7764 * If nohz_full is enabled, set power efficient workqueue as unbound.
7bd20b6b87183db Marcelo Tosatti 2024-01-19 7765 * This allows workqueue items to be moved to HK CPUs.
7bd20b6b87183db Marcelo Tosatti 2024-01-19 7766 */
7bd20b6b87183db Marcelo Tosatti 2024-01-19 7767 if (housekeeping_enabled(HK_TYPE_TICK))
7bd20b6b87183db Marcelo Tosatti 2024-01-19 7768 wq_power_efficient = true;
7bd20b6b87183db Marcelo Tosatti 2024-01-19 7769
84193c07105c62d Tejun Heo 2023-08-07 7770 /* initialize WQ_AFFN_SYSTEM pods */
84193c07105c62d Tejun Heo 2023-08-07 7771 pt->pod_cpus = kcalloc(1, sizeof(pt->pod_cpus[0]), GFP_KERNEL);
84193c07105c62d Tejun Heo 2023-08-07 7772 pt->pod_node = kcalloc(1, sizeof(pt->pod_node[0]), GFP_KERNEL);
84193c07105c62d Tejun Heo 2023-08-07 7773 pt->cpu_pod = kcalloc(nr_cpu_ids, sizeof(pt->cpu_pod[0]), GFP_KERNEL);
84193c07105c62d Tejun Heo 2023-08-07 7774 BUG_ON(!pt->pod_cpus || !pt->pod_node || !pt->cpu_pod);
84193c07105c62d Tejun Heo 2023-08-07 7775
84193c07105c62d Tejun Heo 2023-08-07 7776 BUG_ON(!zalloc_cpumask_var_node(&pt->pod_cpus[0], GFP_KERNEL, NUMA_NO_NODE));
84193c07105c62d Tejun Heo 2023-08-07 7777
84193c07105c62d Tejun Heo 2023-08-07 7778 pt->nr_pods = 1;
84193c07105c62d Tejun Heo 2023-08-07 7779 cpumask_copy(pt->pod_cpus[0], cpu_possible_mask);
84193c07105c62d Tejun Heo 2023-08-07 7780 pt->pod_node[0] = NUMA_NO_NODE;
84193c07105c62d Tejun Heo 2023-08-07 7781 pt->cpu_pod[0] = 0;
84193c07105c62d Tejun Heo 2023-08-07 7782
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7783 /* initialize BH and CPU pools */
29c91e9912bed70 Tejun Heo 2013-03-12 7784 for_each_possible_cpu(cpu) {
4ce62e9e30cacc2 Tejun Heo 2012-07-13 7785 struct worker_pool *pool;
8b03ae3cde59af9 Tejun Heo 2010-06-29 7786
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7787 i = 0;
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7788 for_each_bh_worker_pool(pool, cpu) {
2f34d7337d98f3e Tejun Heo 2024-02-14 7789 init_cpu_worker_pool(pool, cpu, std_nice[i]);
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7790 pool->flags |= POOL_BH;
2f34d7337d98f3e Tejun Heo 2024-02-14 @7791 init_irq_work(bh_pool_irq_work(pool), irq_work_fns[i]);
2f34d7337d98f3e Tejun Heo 2024-02-14 7792 i++;
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7793 }
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7794
7a4e344c5675eef Tejun Heo 2013-03-12 7795 i = 0;
2fcdb1b44491e08 Tejun Heo 2024-02-04 7796 for_each_cpu_worker_pool(pool, cpu)
2fcdb1b44491e08 Tejun Heo 2024-02-04 7797 init_cpu_worker_pool(pool, cpu, std_nice[i++]);
8b03ae3cde59af9 Tejun Heo 2010-06-29 7798 }
8b03ae3cde59af9 Tejun Heo 2010-06-29 7799
8a2b75384444488 Tejun Heo 2013-09-05 7800 /* create default unbound and ordered wq attrs */
29c91e9912bed70 Tejun Heo 2013-03-12 7801 for (i = 0; i < NR_STD_WORKER_POOLS; i++) {
29c91e9912bed70 Tejun Heo 2013-03-12 7802 struct workqueue_attrs *attrs;
29c91e9912bed70 Tejun Heo 2013-03-12 7803
be69d00d9769575 Thomas Gleixner 2019-06-26 7804 BUG_ON(!(attrs = alloc_workqueue_attrs()));
29c91e9912bed70 Tejun Heo 2013-03-12 7805 attrs->nice = std_nice[i];
29c91e9912bed70 Tejun Heo 2013-03-12 7806 unbound_std_wq_attrs[i] = attrs;
8a2b75384444488 Tejun Heo 2013-09-05 7807
8a2b75384444488 Tejun Heo 2013-09-05 7808 /*
8a2b75384444488 Tejun Heo 2013-09-05 7809 * An ordered wq should have only one pwq as ordering is
8a2b75384444488 Tejun Heo 2013-09-05 7810 * guaranteed by max_active which is enforced by pwqs.
8a2b75384444488 Tejun Heo 2013-09-05 7811 */
be69d00d9769575 Thomas Gleixner 2019-06-26 7812 BUG_ON(!(attrs = alloc_workqueue_attrs()));
8a2b75384444488 Tejun Heo 2013-09-05 7813 attrs->nice = std_nice[i];
af73f5c9febe509 Tejun Heo 2023-08-07 7814 attrs->ordered = true;
8a2b75384444488 Tejun Heo 2013-09-05 7815 ordered_wq_attrs[i] = attrs;
29c91e9912bed70 Tejun Heo 2013-03-12 7816 }
29c91e9912bed70 Tejun Heo 2013-03-12 7817
d320c03830b17af Tejun Heo 2010-06-29 7818 system_wq = alloc_workqueue("events", 0, 0);
128ea9f6ccfb696 Marco Crivellari 2025-06-14 7819 system_percpu_wq = alloc_workqueue("events", 0, 0);
1aabe902ca3638d Joonsoo Kim 2012-08-15 7820 system_highpri_wq = alloc_workqueue("events_highpri", WQ_HIGHPRI, 0);
7456d72db76b9c5 Xin Zhao 2025-10-16 7821 system_rt_wq = alloc_workqueue("events_rt", WQ_RT, 0);
d320c03830b17af Tejun Heo 2010-06-29 7822 system_long_wq = alloc_workqueue("events_long", 0, 0);
128ea9f6ccfb696 Marco Crivellari 2025-06-14 7823 system_unbound_wq = alloc_workqueue("events_unbound", WQ_UNBOUND, WQ_MAX_ACTIVE);
128ea9f6ccfb696 Marco Crivellari 2025-06-14 7824 system_dfl_wq = alloc_workqueue("events_unbound", WQ_UNBOUND, WQ_MAX_ACTIVE);
24d51add7438f96 Tejun Heo 2011-02-21 7825 system_freezable_wq = alloc_workqueue("events_freezable",
24d51add7438f96 Tejun Heo 2011-02-21 7826 WQ_FREEZABLE, 0);
0668106ca3865ba Viresh Kumar 2013-04-24 7827 system_power_efficient_wq = alloc_workqueue("events_power_efficient",
0668106ca3865ba Viresh Kumar 2013-04-24 7828 WQ_POWER_EFFICIENT, 0);
8318d6a6362f590 Audra Mitchell 2024-01-25 7829 system_freezable_power_efficient_wq = alloc_workqueue("events_freezable_pwr_efficient",
0668106ca3865ba Viresh Kumar 2013-04-24 7830 WQ_FREEZABLE | WQ_POWER_EFFICIENT,
0668106ca3865ba Viresh Kumar 2013-04-24 7831 0);
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7832 system_bh_wq = alloc_workqueue("events_bh", WQ_BH, 0);
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7833 system_bh_highpri_wq = alloc_workqueue("events_bh_highpri",
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7834 WQ_BH | WQ_HIGHPRI, 0);
7456d72db76b9c5 Xin Zhao 2025-10-16 7835 BUG_ON(!system_wq || !system_percpu_wq || !system_highpri_wq || !system_rt_wq ||
7456d72db76b9c5 Xin Zhao 2025-10-16 7836 !system_long_wq || !system_unbound_wq || !system_freezable_wq || !system_dfl_wq ||
0668106ca3865ba Viresh Kumar 2013-04-24 7837 !system_power_efficient_wq ||
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7838 !system_freezable_power_efficient_wq ||
4cb1ef64609f9b0 Tejun Heo 2024-02-04 7839 !system_bh_wq || !system_bh_highpri_wq);
3347fa0928210d9 Tejun Heo 2016-09-16 7840 }
3347fa0928210d9 Tejun Heo 2016-09-16 7841
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists