mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* kernel/sched/ext/ext.c:6823:19: sparse: sparse: incorrect type in assignment (different address spaces)
@ 2026-10-24  5:46 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-10-24  5:46 UTC (permalink / raw)
  To: Tejun Heo; +Cc: oe-kbuild-all, linux-kernel

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   17bb0e2f6c8043f70a693a5f3797471cbed354c8
commit: db87a8f530b62d43033ff41172d479d2ccd6fee3 sched_ext: Merge branch 'for-7.3-fixes' into for-7.4
date:   7 days ago
config: sparc64-randconfig-r2307-20261023 (https://download.01.org/0day-ci/archive/20261024/202610240742.zGIUIQt7-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
sparse: v0.6.5-rc1-1-gc4640450
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261024/202610240742.zGIUIQt7-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
| Fixes: db87a8f530b6 ("sched_ext: Merge branch 'for-7.3-fixes' into for-7.4")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610240742.zGIUIQt7-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   kernel/sched/rt.c:1579:45: sparse:     expected struct task_struct *p
   kernel/sched/rt.c:1579:45: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/rt.c:1605:35: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/rt.c:1605:35: sparse:     expected struct task_struct *p
   kernel/sched/rt.c:1605:35: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/rt.c:1627:39: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/rt.c:1627:39: sparse:     expected struct task_struct *donor
   kernel/sched/rt.c:1627:39: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/rt.c:1653:64: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/rt.c:1653:64: sparse:     expected struct task_struct *tsk
   kernel/sched/rt.c:1653:64: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/rt.c:2006:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *task @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/rt.c:2006:40: sparse:     expected struct task_struct *task
   kernel/sched/rt.c:2006:40: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/rt.c:2029:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/rt.c:2029:13: sparse:    struct task_struct *
   kernel/sched/rt.c:2029:13: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/rt.c:2380:54: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/rt.c:2380:54: sparse:     expected struct task_struct *tsk
   kernel/sched/rt.c:2380:54: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/rt.c:2382:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/rt.c:2382:40: sparse:     expected struct task_struct *p
   kernel/sched/rt.c:2382:40: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/rt.c:2382:62: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/rt.c:2382:62: sparse:     expected struct task_struct *p
   kernel/sched/rt.c:2382:62: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/deadline.c:3157:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/deadline.c:3157:23: sparse:     expected struct task_struct *p
   kernel/sched/deadline.c:3157:23: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/deadline.c:3167:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/deadline.c:3167:13: sparse:    struct task_struct *
   kernel/sched/deadline.c:3167:13: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/deadline.c:3273:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/deadline.c:3273:25: sparse:    struct task_struct *
   kernel/sched/deadline.c:3273:25: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/deadline.c:2737:39: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/deadline.c:2737:39: sparse:     expected struct task_struct *donor
   kernel/sched/deadline.c:2737:39: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/deadline.c:2757:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/deadline.c:2757:38: sparse:     expected struct task_struct *tsk
   kernel/sched/deadline.c:2757:38: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/deadline.c:1189:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/deadline.c:1189:39: sparse:     expected struct task_struct *p
   kernel/sched/deadline.c:1189:39: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/deadline.c:1189:85: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct sched_dl_entity const *b @@     got struct sched_dl_entity [noderef] __rcu * @@
   kernel/sched/deadline.c:1189:85: sparse:     expected struct sched_dl_entity const *b
   kernel/sched/deadline.c:1189:85: sparse:     got struct sched_dl_entity [noderef] __rcu *
   kernel/sched/deadline.c:1287:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/deadline.c:1287:23: sparse:     expected struct task_struct *p
   kernel/sched/deadline.c:1287:23: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/deadline.c:1816:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/deadline.c:1816:31: sparse:     expected struct task_struct *p
   kernel/sched/deadline.c:1816:31: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/deadline.c:1816:70: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct sched_dl_entity const *b @@     got struct sched_dl_entity [noderef] __rcu * @@
   kernel/sched/deadline.c:1816:70: sparse:     expected struct sched_dl_entity const *b
   kernel/sched/deadline.c:1816:70: sparse:     got struct sched_dl_entity [noderef] __rcu *
   kernel/sched/deadline.c:2131:39: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/deadline.c:2131:39: sparse:     expected struct task_struct *donor
   kernel/sched/deadline.c:2131:39: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/deadline.c:2979:9: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/deadline.c:2979:9: sparse:     expected struct sched_domain *[assigned] sd
   kernel/sched/deadline.c:2979:9: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/deadline.c:2619:14: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *curr @@     got struct task_struct [noderef] __rcu * @@
   kernel/sched/deadline.c:2619:14: sparse:     expected struct task_struct *curr
   kernel/sched/deadline.c:2619:14: sparse:     got struct task_struct [noderef] __rcu *
   kernel/sched/deadline.c:2620:15: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu * @@
   kernel/sched/deadline.c:2620:15: sparse:     expected struct task_struct *donor
   kernel/sched/deadline.c:2620:15: sparse:     got struct task_struct [noderef] __rcu *
   kernel/sched/deadline.c:2694:43: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/deadline.c:2694:43: sparse:     expected struct task_struct *p
   kernel/sched/deadline.c:2694:43: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/deadline.c:2714:35: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/deadline.c:2714:35: sparse:     expected struct task_struct *p
   kernel/sched/deadline.c:2714:35: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/deadline.c:3318:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/deadline.c:3318:38: sparse:     expected struct task_struct *tsk
   kernel/sched/deadline.c:3318:38: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/deadline.c:3320:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/deadline.c:3320:23: sparse:     expected struct task_struct *p
   kernel/sched/deadline.c:3320:23: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/deadline.c:3322:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct sched_dl_entity const *b @@     got struct sched_dl_entity [noderef] __rcu * @@
   kernel/sched/deadline.c:3322:44: sparse:     expected struct sched_dl_entity const *b
   kernel/sched/deadline.c:3322:44: sparse:     got struct sched_dl_entity [noderef] __rcu *
   kernel/sched/deadline.c:3584:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/deadline.c:3584:23: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/deadline.c:3584:23: sparse:    struct task_struct *
   kernel/sched/deadline.c:3637:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/ext/ext.c:454:47: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:1547:15: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:1751:15: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/ext/ext.c:1751:15: sparse:    struct task_struct *
   kernel/sched/ext/ext.c:1751:15: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/ext/ext.c:2559:35: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:2573:38: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *from @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:3477:39: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:3824:38: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *prev @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:5018:48: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:5019:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
>> kernel/sched/ext/ext.c:6823:19: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:7601:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct const *p @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/ext/ext.c:7602:51: sparse: sparse: incorrect type in argument 5 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/ext/ext.c:7605:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct const *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:7606:51: sparse: sparse: incorrect type in argument 5 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:9161:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct const *p @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/ext/ext.c:9207:44: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/ext/ext.c:9570:18: sparse: sparse: symbol 'scx_bpf_dsq_insert___v2' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9592:18: sparse: sparse: symbol 'scx_bpf_dsq_insert' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9652:1: sparse: sparse: symbol '__scx_bpf_dsq_insert_vtime' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9671:18: sparse: sparse: symbol 'scx_bpf_dsq_insert_vtime' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9832:17: sparse: sparse: symbol 'scx_bpf_dispatch_nr_slots' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9852:18: sparse: sparse: symbol 'scx_bpf_dispatch_cancel' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9896:18: sparse: sparse: symbol 'scx_bpf_dsq_move_to_local___v2' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9939:18: sparse: sparse: symbol 'scx_bpf_dsq_move_to_local' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9953:18: sparse: sparse: symbol 'scx_bpf_dsq_move_set_slice' was not declared. Should it be static?
   kernel/sched/ext/ext.c:9972:18: sparse: sparse: symbol 'scx_bpf_dsq_move_set_vtime' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10006:18: sparse: sparse: symbol 'scx_bpf_dsq_move' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10031:18: sparse: sparse: symbol 'scx_bpf_dsq_move_vtime' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10072:17: sparse: sparse: symbol 'scx_bpf_reenqueue_local' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10111:17: sparse: sparse: symbol 'scx_bpf_create_dsq' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10198:18: sparse: sparse: symbol 'scx_bpf_task_set_slice' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10254:18: sparse: sparse: symbol 'scx_bpf_task_set_dsq_vtime' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10391:18: sparse: sparse: symbol 'scx_bpf_kick_cpu' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10414:18: sparse: sparse: symbol 'scx_bpf_kick_cid' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10441:17: sparse: sparse: symbol 'scx_bpf_dsq_nr_queued' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10488:18: sparse: sparse: symbol 'scx_bpf_destroy_dsq' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10514:17: sparse: sparse: symbol 'bpf_iter_scx_dsq_new' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10558:32: sparse: sparse: symbol 'bpf_iter_scx_dsq_next' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10576:18: sparse: sparse: symbol 'bpf_iter_scx_dsq_destroy' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10605:32: sparse: sparse: symbol 'scx_bpf_dsq_peek' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10649:18: sparse: sparse: symbol 'scx_bpf_dsq_reenq' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10689:18: sparse: sparse: symbol 'scx_bpf_reenqueue_local___v2' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10782:18: sparse: sparse: symbol 'scx_bpf_exit_bstr' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10807:18: sparse: sparse: symbol 'scx_bpf_error_bstr' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10834:18: sparse: sparse: symbol 'scx_bpf_dump_bstr' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10889:17: sparse: sparse: symbol 'scx_bpf_cpuperf_cap' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10909:17: sparse: sparse: symbol 'scx_bpf_cidperf_cap' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10940:17: sparse: sparse: symbol 'scx_bpf_cpuperf_cur' was not declared. Should it be static?
   kernel/sched/ext/ext.c:10960:17: sparse: sparse: symbol 'scx_bpf_cidperf_cur' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11047:18: sparse: sparse: symbol 'scx_bpf_cpuperf_set' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11074:17: sparse: sparse: symbol 'scx_bpf_cidperf_set' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11101:17: sparse: sparse: symbol 'scx_bpf_nr_node_ids' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11111:17: sparse: sparse: symbol 'scx_bpf_nr_cpu_ids' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11121:17: sparse: sparse: symbol 'scx_bpf_nr_cids' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11136:17: sparse: sparse: symbol 'scx_bpf_nr_online_cids' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11154:24: sparse: sparse: symbol 'scx_bpf_online_cmask' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11178:17: sparse: sparse: symbol 'scx_bpf_this_cid' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11193:34: sparse: sparse: symbol 'scx_bpf_get_possible_cpumask' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11201:34: sparse: sparse: symbol 'scx_bpf_get_online_cpumask' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11210:18: sparse: sparse: symbol 'scx_bpf_put_cpumask' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11238:17: sparse: sparse: symbol 'scx_bpf_task_cpu' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11251:17: sparse: sparse: symbol 'scx_bpf_task_cid' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11271:23: sparse: sparse: symbol 'scx_bpf_locked_rq' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11303:32: sparse: sparse: symbol 'scx_bpf_cpu_curr' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11327:32: sparse: sparse: symbol 'scx_bpf_cid_curr' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11352:32: sparse: sparse: symbol 'scx_bpf_tid_to_task' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11420:17: sparse: sparse: symbol 'scx_bpf_now' was not declared. Should it be static?
   kernel/sched/ext/ext.c:11455:18: sparse: sparse: symbol 'scx_bpf_events' was not declared. Should it be static?
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/ext/cid.c:492:18: sparse: sparse: symbol 'scx_bpf_cid_override' was not declared. Should it be static?
   kernel/sched/ext/cid.c:656:17: sparse: sparse: symbol 'scx_bpf_cid_to_cpu' was not declared. Should it be static?
   kernel/sched/ext/cid.c:701:17: sparse: sparse: symbol 'scx_bpf_cpu_to_cid' was not declared. Should it be static?
   kernel/sched/ext/cid.c:975:18: sparse: sparse: symbol 'scx_bpf_cid_topo' was not declared. Should it be static?
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/ext/idle.c:1067:17: sparse: sparse: symbol 'scx_bpf_cpu_node' was not declared. Should it be static?
   kernel/sched/ext/idle.c:1150:1: sparse: sparse: symbol '__scx_bpf_select_cpu_and' was not declared. Should it be static?
   kernel/sched/ext/idle.c:1169:17: sparse: sparse: symbol 'scx_bpf_select_cpu_and' was not declared. Should it be static?
   kernel/sched/ext/idle.c:1212:34: sparse: sparse: symbol 'scx_bpf_get_idle_cpumask_node' was not declared. Should it be static?
   kernel/sched/ext/idle.c:1270:34: sparse: sparse: symbol 'scx_bpf_get_idle_smtmask_node' was not declared. Should it be static?
   kernel/sched/ext/idle.c:1389:17: sparse: sparse: symbol 'scx_bpf_pick_idle_cpu_node' was not declared. Should it be static?
   kernel/sched/ext/idle.c:1475:17: sparse: sparse: symbol 'scx_bpf_pick_any_cpu_node' was not declared. Should it be static?
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/ext/sub.c:2846:17: sparse: sparse: symbol 'scx_bpf_sub_grant' was not declared. Should it be static?
   kernel/sched/ext/sub.c:2854:18: sparse: sparse: symbol 'scx_bpf_sub_revoke' was not declared. Should it be static?
   kernel/sched/ext/sub.c:2860:17: sparse: sparse: symbol 'scx_bpf_sub_caps' was not declared. Should it be static?
   kernel/sched/ext/sub.c:2866:17: sparse: sparse: symbol 'scx_bpf_sub_kill_bstr' was not declared. Should it be static?
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/syscalls.c:202:48: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/syscalls.c:202:48: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/syscalls.c:202:48: sparse:    struct task_struct *
   kernel/sched/syscalls.c:1420:22: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *curr @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/syscalls.c:1420:22: sparse:     expected struct task_struct *curr
   kernel/sched/syscalls.c:1420:22: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/rt.c:1313:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/rt.c:1313:23: sparse:    struct task_struct *
   kernel/sched/rt.c:1313:23: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/build_policy.c: note: in included file:
   kernel/sched/sched.h:2505:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/sched.h:2505:25: sparse:    struct task_struct [noderef] __rcu *

vim +6823 kernel/sched/ext/ext.c

  6693	
  6694	/**
  6695	 * scx_bypass - [Un]bypass scx_ops and guarantee forward progress
  6696	 * @sch: sched to bypass
  6697	 * @bypass: true for bypass, false for unbypass
  6698	 *
  6699	 * Bypassing guarantees that all runnable tasks make forward progress without
  6700	 * trusting the BPF scheduler. We can't grab any mutexes or rwsems as they might
  6701	 * be held by tasks that the BPF scheduler is forgetting to run, which
  6702	 * unfortunately also excludes toggling the static branches.
  6703	 *
  6704	 * Let's work around by overriding a couple ops and modifying behaviors based on
  6705	 * the DISABLING state and then cycling the queued tasks through dequeue/enqueue
  6706	 * to force global FIFO scheduling.
  6707	 *
  6708	 * - ops.select_cpu() is ignored and the default select_cpu() is used.
  6709	 *
  6710	 * - ops.enqueue() is ignored and tasks are queued in simple global FIFO order.
  6711	 *   %SCX_OPS_ENQ_LAST is also ignored.
  6712	 *
  6713	 * - ops.dispatch() is ignored.
  6714	 *
  6715	 * - dispatch_one() does not report %SCX_DSP_PREV on non-zero slice as slice
  6716	 *   can't be trusted. Whenever a tick triggers, the running task is rotated to
  6717	 *   the tail of the queue.
  6718	 *
  6719	 * - pick_next_task() suppresses zero slice warning.
  6720	 *
  6721	 * - scx_kick_cpu() is disabled to avoid irq_work malfunction during PM
  6722	 *   operations.
  6723	 *
  6724	 * - scx_prio_less() reverts to the default runnable_at order.
  6725	 */
  6726	void scx_bypass(struct scx_sched *sch, bool bypass)
  6727	{
  6728		struct scx_sched *pos;
  6729		unsigned long flags;
  6730		int cpu;
  6731		bool changed;
  6732	
  6733		raw_spin_lock_irqsave(&scx_bypass_lock, flags);
  6734	
  6735		if (bypass) {
  6736			changed = inc_bypass_depth(sch);
  6737			if (changed)
  6738				enable_bypass_dsp(sch);
  6739		} else {
  6740			changed = dec_bypass_depth(sch);
  6741		}
  6742	
  6743		/*
  6744		 * Bypass state is propagated to all descendants - an scx_sched bypasses
  6745		 * if itself or any of its ancestors are in bypass mode. A descendant's
  6746		 * depth is the sum of its own bypasses and its ancestors', so every
  6747		 * call propagates whether or not @sch changed state. The descendants'
  6748		 * claims are released below with @sch's, after their tasks have moved.
  6749		 */
  6750		raw_spin_lock(&scx_sched_lock);
  6751		scx_for_each_descendant_pre(pos, sch) {
  6752			if (pos == sch)
  6753				continue;
  6754			if (bypass) {
  6755				if (inc_bypass_depth(pos))
  6756					enable_bypass_dsp(pos);
  6757			} else {
  6758				dec_bypass_depth(pos);
  6759			}
  6760		}
  6761		raw_spin_unlock(&scx_sched_lock);
  6762	
  6763		/*
  6764		 * A descendant's depth is at least @sch's, so no bypass state changed
  6765		 * unless @sch's did.
  6766		 */
  6767		if (!changed)
  6768			goto unlock;
  6769	
  6770		/*
  6771		 * No task property is changing. We just need to make sure all currently
  6772		 * queued tasks are re-queued according to the new scx_bypassing()
  6773		 * state. As an optimization, walk each rq's runnable_list instead of
  6774		 * the scx_tasks list.
  6775		 *
  6776		 * This function can't trust the scheduler and thus can't use
  6777		 * cpus_read_lock(). Walk all possible CPUs instead of online.
  6778		 */
  6779		for_each_possible_cpu(cpu) {
  6780			struct rq *rq = cpu_rq(cpu);
  6781			struct task_struct *p, *n;
  6782	
  6783			raw_spin_rq_lock(rq);
  6784			raw_spin_lock(&scx_sched_lock);
  6785	
  6786			scx_for_each_descendant_pre(pos, sch) {
  6787				struct scx_sched_pcpu *pcpu = per_cpu_ptr(pos->pcpu, cpu);
  6788				bool was_bypassing = pcpu->flags & SCX_SCHED_PCPU_BYPASSING;
  6789	
  6790				if (pos->bypass_depth) {
  6791					pcpu->flags |= SCX_SCHED_PCPU_BYPASSING;
  6792				} else {
  6793					pcpu->flags &= ~SCX_SCHED_PCPU_BYPASSING;
  6794					if (was_bypassing) {
  6795						unbypass_renotify_idle(rq, pos, pcpu);
  6796						scx_unbypass_replay_ecaps(rq, pos);
  6797					}
  6798				}
  6799			}
  6800	
  6801			raw_spin_unlock(&scx_sched_lock);
  6802	
  6803			/*
  6804			 * We need to guarantee that no tasks are on the BPF scheduler
  6805			 * while bypassing. Either we see enabled or the enable path
  6806			 * sees scx_bypassing() before moving tasks to SCX.
  6807			 */
  6808			if (!scx_enabled()) {
  6809				scx_rq_lock_drop(rq);
  6810				raw_spin_rq_unlock(rq);
  6811				continue;
  6812			}
  6813	
  6814			/*
  6815			 * Bypass trumps protection. Cycling the queued tasks below
  6816			 * clears theirs. The current donor isn't on the runnable list,
  6817			 * so strip its protection here.
  6818			 *
  6819			 * When bypass lifts, the current donor keeps running on its
  6820			 * slice without a cap check. Evict it if it can't stay on the
  6821			 * cpu.
  6822			 */
> 6823			p = rq->donor;
  6824			if (p->sched_class == &ext_sched_class &&
  6825			    scx_is_descendant(scx_task_sched(p), sch)) {
  6826				if (bypass)
  6827					scx_task_slice_ended(rq, p);
  6828				else if (!scx_task_can_stay_on_cpu(rq, p))
  6829					scx_set_task_slice(p, 0);
  6830			}
  6831	
  6832			/*
  6833			 * The use of list_for_each_entry_safe_reverse() is required
  6834			 * because each task is going to be removed from and added back
  6835			 * to the runnable_list during iteration. Because they're added
  6836			 * to the tail of the list, safe reverse iteration can still
  6837			 * visit all nodes.
  6838			 */
  6839			list_for_each_entry_safe_reverse(p, n, &rq->scx.runnable_list,
  6840							 scx.runnable_node) {
  6841				if (!scx_is_descendant(scx_task_sched(p), sch))
  6842					continue;
  6843	
  6844				/* cycling deq/enq is enough, see the function comment */
  6845				scoped_guard (sched_change, p, DEQUEUE_SAVE | DEQUEUE_MOVE) {
  6846					/* nothing */ ;
  6847				}
  6848			}
  6849	
  6850			/* resched to restore ticks and idle state */
  6851			if (cpu_online(cpu) || cpu == smp_processor_id())
  6852				resched_curr(rq);
  6853	
  6854			scx_rq_lock_drop(rq);
  6855			raw_spin_rq_unlock(rq);
  6856		}
  6857	
  6858		/* disarming must come after moving all tasks out of the bypass DSQs */
  6859		if (!bypass) {
  6860			guard(raw_spinlock)(&scx_sched_lock);
  6861			scx_for_each_descendant_pre(pos, sch)
  6862				if (!pos->bypass_depth)
  6863					scx_disable_bypass_dsp(pos);
  6864		}
  6865	unlock:
  6866		raw_spin_unlock_irqrestore(&scx_bypass_lock, flags);
  6867	}
  6868	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-10-24  5:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-24  5:46 kernel/sched/ext/ext.c:6823:19: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®