From: kernel test robot <lkp@intel.com>
To: Tejun Heo <tj@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Andrea Righi <arighi@nvidia.com>
Subject: kernel/sched/ext.c:2391:33: sparse: sparse: incorrect type in initializer (different address spaces)
Date: Mon, 04 May 2026 12:28:58 +0800 [thread overview]
Message-ID: <202605041237.Rron7CNr-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 6d35786de28116ecf78797a62b84e6bf3c45aa5a
commit: 88234b075c3fc23d57406e1867523b6aba783ebf sched_ext: Introduce scx_task_sched[_rcu]()
date: 8 weeks ago
config: arm64-randconfig-r113-20260503 (https://download.01.org/0day-ci/archive/20260504/202605041237.Rron7CNr-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260504/202605041237.Rron7CNr-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: 88234b075c3f ("sched_ext: Introduce scx_task_sched[_rcu]()")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605041237.Rron7CNr-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
kernel/sched/rt.c:1513:15: sparse: expected struct task_struct *donor
kernel/sched/rt.c:1513:15: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/rt.c:1574:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/rt.c:1574:45: sparse: expected struct task_struct *p
kernel/sched/rt.c:1574:45: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1616: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:1616:39: sparse: expected struct task_struct *donor
kernel/sched/rt.c:1616:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:1641: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:1641:64: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:1641:64: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1982: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:1982:40: sparse: expected struct task_struct *task
kernel/sched/rt.c:1982:40: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2005:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:2005:13: sparse: struct task_struct *
kernel/sched/rt.c:2005:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:2356: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:2356:54: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:2356:54: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2358: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:2358:40: sparse: expected struct task_struct *p
kernel/sched/rt.c:2358:40: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/rt.c:2358: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:2358:62: sparse: expected struct task_struct *p
kernel/sched/rt.c:2358:62: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/build_policy.c: note: in included file:
kernel/sched/deadline.c:2922: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:2922:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2922:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2932:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2932:13: sparse: struct task_struct *
kernel/sched/deadline.c:2932:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:3038:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:3038:25: sparse: struct task_struct *
kernel/sched/deadline.c:3038:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2539:42: 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:2539:42: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:2539:42: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:2549: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:2549:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:2549:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1198: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:1198:39: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1198:39: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1198: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:1198:85: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1198:85: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1296: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:1296:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1296:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:1815: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:1815:31: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1815:31: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1815: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:1815:70: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1815:70: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1941: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:1941:39: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:1941:39: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:2758: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:2758:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/deadline.c:2758:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/deadline.c:2419: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:2419:14: sparse: expected struct task_struct *curr
kernel/sched/deadline.c:2419:14: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2420: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:2420:15: sparse: expected struct task_struct *donor
kernel/sched/deadline.c:2420:15: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2494: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:2494:43: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2494:43: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:3083: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:3083:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:3083:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:3085: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:3085:23: sparse: expected struct task_struct *p
kernel/sched/deadline.c:3085:23: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/deadline.c:3087: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:3087:44: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:3087:44: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:3340:23: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:3340:23: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:3340:23: sparse: struct task_struct *
kernel/sched/deadline.c:3393: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.c:1099:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:1179:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:1189:48: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:1189:48: sparse: struct task_struct *
kernel/sched/ext.c:1189:48: sparse: struct task_struct [noderef] __rcu *
kernel/sched/ext.c:1348:66: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:1348:66: sparse: struct task_struct [noderef] __rcu *
kernel/sched/ext.c:1348:66: sparse: struct task_struct *
kernel/sched/ext.c:1847: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.c:1847:35: sparse: expected struct task_struct *p
kernel/sched/ext.c:1847:35: sparse: got struct task_struct [noderef] __rcu *donor
kernel/sched/ext.c:1858: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.c:1858:38: sparse: expected struct task_struct *from
kernel/sched/ext.c:1858:38: sparse: got struct task_struct [noderef] __rcu *donor
>> kernel/sched/ext.c:2391:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:2391:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:2391:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:2596:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:2596:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:2596:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:2691:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *prev @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:2691:38: sparse: expected struct task_struct *prev
kernel/sched/ext.c:2691:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:2909:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:2909:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:2909:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3110:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3110:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3110:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3166:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3166:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3166:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3201:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3201:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3201:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3285:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3285:47: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3285:47: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3456:35: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:3456:35: sparse: expected struct task_struct *p
kernel/sched/ext.c:3456:35: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:3488:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3488:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3488:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3517:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3517:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3517:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3530:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3530:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3530:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3579:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3579:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3579:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3598:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3598:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3598:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3616:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3616:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3616:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3632:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3632:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3632:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:3649:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root @@
kernel/sched/ext.c:3649:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:3649:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [toplevel] scx_root
kernel/sched/ext.c:4568:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_kick_syncs **ksyncs @@ got struct scx_kick_syncs [noderef] __rcu ** @@
kernel/sched/ext.c:4568:50: sparse: expected struct scx_kick_syncs **ksyncs
kernel/sched/ext.c:4568:50: sparse: got struct scx_kick_syncs [noderef] __rcu **
kernel/sched/ext.c:4571:27: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:4571:27: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:4571:27: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:4571:27: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:4571:27: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:4571:27: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:4977:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root @@
kernel/sched/ext.c:4977:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:4977:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root
kernel/sched/ext.c:5020:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root @@
kernel/sched/ext.c:5020:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:5020:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root
kernel/sched/ext.c:5131:52: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/ext.c:5131:52: sparse: expected struct task_struct *p
kernel/sched/ext.c:5131:52: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:5210:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_kick_syncs **ksyncs @@ got struct scx_kick_syncs [noderef] __rcu ** @@
kernel/sched/ext.c:5210:50: sparse: expected struct scx_kick_syncs **ksyncs
kernel/sched/ext.c:5210:50: sparse: got struct scx_kick_syncs [noderef] __rcu **
kernel/sched/ext.c:5213:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:5213:17: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:5213:17: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:5222:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:5222:17: sparse: struct scx_kick_syncs [noderef] __rcu *
kernel/sched/ext.c:5222:17: sparse: struct scx_kick_syncs *
kernel/sched/ext.c:5693:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *parent @@ got struct scx_sched [noderef] __rcu *scx_sched @@
kernel/sched/ext.c:5693:40: sparse: expected struct scx_sched *parent
kernel/sched/ext.c:5693:40: sparse: got struct scx_sched [noderef] __rcu *scx_sched
kernel/sched/ext.c:5847:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *scx_sched @@
kernel/sched/ext.c:5847:38: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:5847:38: sparse: got struct scx_sched [noderef] __rcu *scx_sched
kernel/sched/ext.c:6228: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.c:6228:32: sparse: expected struct task_struct const *p
kernel/sched/ext.c:6228:32: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/ext.c:6355:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root @@
kernel/sched/ext.c:6355:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:6355:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root
kernel/sched/ext.c:6685:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root @@
kernel/sched/ext.c:6685:33: sparse: expected struct scx_sched *sch
kernel/sched/ext.c:6685:33: sparse: got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root
kernel/sched/ext.c:7600:18: sparse: sparse: symbol 'scx_bpf_reenqueue_local___v2' was not declared. Should it be static?
kernel/sched/ext.c:7774:33: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/ext.c:7774:33: sparse: struct task_struct [noderef] __rcu *
kernel/sched/ext.c:7774:33: sparse: struct task_struct const *
kernel/sched/build_policy.c: note: in included file:
>> kernel/sched/ext_idle.c:735:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct scx_sched *sch @@ got struct scx_sched [noderef] __rcu *[addressable] [assigned] [toplevel] scx_root @@
kernel/sched/ext_idle.c:755:49: 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/build_policy.c: note: in included file:
kernel/sched/syscalls.c:1382:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *donor @@
kernel/sched/build_policy.c: note: in included file:
kernel/sched/sched.h:2363:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2363:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2363:25: sparse: struct task_struct *
kernel/sched/sched.h:2363:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2363:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2363:25: sparse: struct task_struct *
kernel/sched/sched.h:2374:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2374:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2374:26: sparse: struct task_struct *
kernel/sched/sched.h:2363:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2363:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2363:25: sparse: struct task_struct *
kernel/sched/sched.h:2374:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2374:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2374:26: sparse: struct task_struct *
kernel/sched/sched.h:1395:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1395:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1395:25: sparse: struct task_struct *
kernel/sched/sched.h:2363:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2363:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2363:25: sparse: struct task_struct *
kernel/sched/sched.h:2363:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2363:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2363:25: sparse: struct task_struct *
kernel/sched/sched.h:2374:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2374:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2374:26: sparse: struct task_struct *
kernel/sched/sched.h:2374:26: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2374:26: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2374:26: sparse: struct task_struct *
kernel/sched/sched.h:2363:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2363:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2363:25: sparse: struct task_struct *
kernel/sched/sched.h:2363:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2363:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2363:25: sparse: struct task_struct *
kernel/sched/sched.h:1395:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:1395:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1395:25: sparse: struct task_struct *
kernel/sched/build_policy.c: note: in included file:
kernel/sched/syscalls.c:1307:11: sparse: sparse: dereference of noderef expression
kernel/sched/build_policy.c: note: in included file:
kernel/sched/rt.c:1665:15: sparse: sparse: dereference of noderef expression
vim +2391 kernel/sched/ext.c
a8ad873113d3fe0 Emil Tsalapatis 2025-10-10 2388
753e2836d139b43 Tejun Heo 2024-09-03 2389 static int balance_one(struct rq *rq, struct task_struct *prev)
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2390 {
cdf5a6faa8cf0ef Tejun Heo 2025-04-29 @2391 struct scx_sched *sch = scx_root;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2392 struct scx_dsp_ctx *dspc = this_cpu_ptr(scx_dsp_ctx);
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2393 bool prev_on_scx = prev->sched_class == &ext_sched_class;
30dd3b13f9de612 Henry Huang 2025-01-08 2394 bool prev_on_rq = prev->scx.flags & SCX_TASK_QUEUED;
0922f54fdd15aed Tejun Heo 2024-06-18 2395 int nr_loops = SCX_DSP_MAX_LOOPS;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2396
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2397 lockdep_assert_rq_held(rq);
f47a818950dd5e5 Tejun Heo 2024-07-12 2398 rq->scx.flags |= SCX_RQ_IN_BALANCE;
4c95380701f58b8 Peter Zijlstra 2025-10-01 2399 rq->scx.flags &= ~SCX_RQ_BAL_KEEP;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2400
d310fb40096896a Tejun Heo 2025-05-14 2401 if ((sch->ops.flags & SCX_OPS_HAS_CPU_PREEMPT) &&
245254f7081dbe1 David Vernet 2024-06-18 2402 unlikely(rq->scx.cpu_released)) {
245254f7081dbe1 David Vernet 2024-06-18 2403 /*
245254f7081dbe1 David Vernet 2024-06-18 2404 * If the previous sched_class for the current CPU was not SCX,
245254f7081dbe1 David Vernet 2024-06-18 2405 * notify the BPF scheduler that it again has control of the
245254f7081dbe1 David Vernet 2024-06-18 2406 * core. This callback complements ->cpu_release(), which is
6b8950ef993bcf1 Zhao Mengmeng 2024-11-15 2407 * emitted in switch_class().
245254f7081dbe1 David Vernet 2024-06-18 2408 */
d310fb40096896a Tejun Heo 2025-05-14 2409 if (SCX_HAS_OP(sch, cpu_acquire))
ab3f497ac18d486 Tejun Heo 2025-05-14 2410 SCX_CALL_OP(sch, SCX_KF_REST, cpu_acquire, rq,
ab3f497ac18d486 Tejun Heo 2025-05-14 2411 cpu_of(rq), NULL);
245254f7081dbe1 David Vernet 2024-06-18 2412 rq->scx.cpu_released = false;
245254f7081dbe1 David Vernet 2024-06-18 2413 }
245254f7081dbe1 David Vernet 2024-06-18 2414
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2415 if (prev_on_scx) {
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2416 update_curr_scx(rq);
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2417
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2418 /*
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2419 * If @prev is runnable & has slice left, it has priority and
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2420 * fetching more just increases latency for the fetched tasks.
753e2836d139b43 Tejun Heo 2024-09-03 2421 * Tell pick_task_scx() to keep running @prev. If the BPF
7c65ae81ea86a6e Tejun Heo 2024-09-03 2422 * scheduler wants to handle this explicitly, it should
7c65ae81ea86a6e Tejun Heo 2024-09-03 2423 * implement ->cpu_release().
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2424 *
1a2469403eb26c1 Tejun Heo 2025-04-04 2425 * See scx_disable_workfn() for the explanation on the bypassing
1a2469403eb26c1 Tejun Heo 2025-04-04 2426 * test.
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2427 */
30dd3b13f9de612 Henry Huang 2025-01-08 2428 if (prev_on_rq && prev->scx.slice && !scx_rq_bypassing(rq)) {
8b1451f2f723f84 Tejun Heo 2024-09-03 2429 rq->scx.flags |= SCX_RQ_BAL_KEEP;
81aae789181b585 Tejun Heo 2024-06-18 2430 goto has_tasks;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2431 }
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2432 }
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2433
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2434 /* if there already are tasks to run, nothing to do */
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2435 if (rq->scx.local_dsq.nr)
81aae789181b585 Tejun Heo 2024-06-18 2436 goto has_tasks;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2437
8409b800a0b1f14 Tejun Heo 2025-04-29 2438 if (consume_global_dsq(sch, rq))
81aae789181b585 Tejun Heo 2024-06-18 2439 goto has_tasks;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2440
61debc251c1c915 Tejun Heo 2025-11-11 2441 if (scx_rq_bypassing(rq)) {
61debc251c1c915 Tejun Heo 2025-11-11 2442 if (consume_dispatch_q(sch, rq, &rq->scx.bypass_dsq))
61debc251c1c915 Tejun Heo 2025-11-11 2443 goto has_tasks;
61debc251c1c915 Tejun Heo 2025-11-11 2444 else
61debc251c1c915 Tejun Heo 2025-11-11 2445 goto no_tasks;
61debc251c1c915 Tejun Heo 2025-11-11 2446 }
61debc251c1c915 Tejun Heo 2025-11-11 2447
61debc251c1c915 Tejun Heo 2025-11-11 2448 if (unlikely(!SCX_HAS_OP(sch, dispatch)) || !scx_rq_online(rq))
7c65ae81ea86a6e Tejun Heo 2024-09-03 2449 goto no_tasks;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2450
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2451 dspc->rq = rq;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2452
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2453 /*
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2454 * The dispatch loop. Because flush_dispatch_buf() may drop the rq lock,
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2455 * the local DSQ might still end up empty after a successful
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2456 * ops.dispatch(). If the local DSQ is empty even after ops.dispatch()
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2457 * produced some tasks, retry. The BPF scheduler may depend on this
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2458 * looping behavior to simplify its implementation.
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2459 */
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2460 do {
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2461 dspc->nr_tasks = 0;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2462
ab3f497ac18d486 Tejun Heo 2025-05-14 2463 SCX_CALL_OP(sch, SCX_KF_DISPATCH, dispatch, rq,
ab3f497ac18d486 Tejun Heo 2025-05-14 2464 cpu_of(rq), prev_on_scx ? prev : NULL);
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2465
cdf5a6faa8cf0ef Tejun Heo 2025-04-29 2466 flush_dispatch_buf(sch, rq);
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2467
30dd3b13f9de612 Henry Huang 2025-01-08 2468 if (prev_on_rq && prev->scx.slice) {
30dd3b13f9de612 Henry Huang 2025-01-08 2469 rq->scx.flags |= SCX_RQ_BAL_KEEP;
30dd3b13f9de612 Henry Huang 2025-01-08 2470 goto has_tasks;
30dd3b13f9de612 Henry Huang 2025-01-08 2471 }
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2472 if (rq->scx.local_dsq.nr)
81aae789181b585 Tejun Heo 2024-06-18 2473 goto has_tasks;
8409b800a0b1f14 Tejun Heo 2025-04-29 2474 if (consume_global_dsq(sch, rq))
81aae789181b585 Tejun Heo 2024-06-18 2475 goto has_tasks;
0922f54fdd15aed Tejun Heo 2024-06-18 2476
0922f54fdd15aed Tejun Heo 2024-06-18 2477 /*
0922f54fdd15aed Tejun Heo 2024-06-18 2478 * ops.dispatch() can trap us in this loop by repeatedly
0922f54fdd15aed Tejun Heo 2024-06-18 2479 * dispatching ineligible tasks. Break out once in a while to
0922f54fdd15aed Tejun Heo 2024-06-18 2480 * allow the watchdog to run. As IRQ can't be enabled in
0922f54fdd15aed Tejun Heo 2024-06-18 2481 * balance(), we want to complete this scheduling cycle and then
0922f54fdd15aed Tejun Heo 2024-06-18 2482 * start a new one. IOW, we want to call resched_curr() on the
0922f54fdd15aed Tejun Heo 2024-06-18 2483 * next, most likely idle, task, not the current one. Use
9fc687edf205dbc Tejun Heo 2025-09-23 2484 * scx_kick_cpu() for deferred kicking.
0922f54fdd15aed Tejun Heo 2024-06-18 2485 */
0922f54fdd15aed Tejun Heo 2024-06-18 2486 if (unlikely(!--nr_loops)) {
9fc687edf205dbc Tejun Heo 2025-09-23 2487 scx_kick_cpu(sch, cpu_of(rq), 0);
0922f54fdd15aed Tejun Heo 2024-06-18 2488 break;
0922f54fdd15aed Tejun Heo 2024-06-18 2489 }
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2490 } while (dspc->nr_tasks);
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2491
7c65ae81ea86a6e Tejun Heo 2024-09-03 2492 no_tasks:
7c65ae81ea86a6e Tejun Heo 2024-09-03 2493 /*
7c65ae81ea86a6e Tejun Heo 2024-09-03 2494 * Didn't find another task to run. Keep running @prev unless
7c65ae81ea86a6e Tejun Heo 2024-09-03 2495 * %SCX_OPS_ENQ_LAST is in effect.
7c65ae81ea86a6e Tejun Heo 2024-09-03 2496 */
cc39454c341e02b Tejun Heo 2025-04-09 2497 if (prev_on_rq &&
d310fb40096896a Tejun Heo 2025-05-14 2498 (!(sch->ops.flags & SCX_OPS_ENQ_LAST) || scx_rq_bypassing(rq))) {
8b1451f2f723f84 Tejun Heo 2024-09-03 2499 rq->scx.flags |= SCX_RQ_BAL_KEEP;
c201ea1578d3b9e Tejun Heo 2025-04-29 2500 __scx_add_event(sch, SCX_EV_DISPATCH_KEEP_LAST, 1);
7c65ae81ea86a6e Tejun Heo 2024-09-03 2501 goto has_tasks;
7c65ae81ea86a6e Tejun Heo 2024-09-03 2502 }
7c65ae81ea86a6e Tejun Heo 2024-09-03 2503 rq->scx.flags &= ~SCX_RQ_IN_BALANCE;
7c65ae81ea86a6e Tejun Heo 2024-09-03 2504 return false;
81aae789181b585 Tejun Heo 2024-06-18 2505
81aae789181b585 Tejun Heo 2024-06-18 2506 has_tasks:
f47a818950dd5e5 Tejun Heo 2024-07-12 2507 rq->scx.flags &= ~SCX_RQ_IN_BALANCE;
7c65ae81ea86a6e Tejun Heo 2024-09-03 2508 return true;
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2509 }
f0e1a0643a59bf1 Tejun Heo 2024-06-18 2510
:::::: The code at line 2391 was first introduced by commit
:::::: cdf5a6faa8cf0ef62ec238a18b898ca9827bc472 sched_ext: Move dsq_hash into scx_sched
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Tejun Heo <tj@kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-05-04 4:29 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202605041237.Rron7CNr-lkp@intel.com \
--to=lkp@intel.com \
--cc=arighi@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox