[android-common:android16-6.12-2026-03 0/1] kernel/sched/core.c:6878:56: sparse: sparse: incorrect type in argument 3 (different address spaces)

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
tree:   https://android.googlesource.com/kernel/common android16-6.12-2026-03
head:   014ca48a80ee3bc623980248041702d6772910f3
commit: e4239ea599c633d8a2bc0440ffd64f96a7bfac1c [0/1] ANDROID: sched: Handle blocked-waiter migration (and return migration)
config: i386-randconfig-062-20260719 (https://download.01.org/0day-ci/archive/20260720/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260720/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

sparse warnings: (new ones prefixed by >>)
   kernel/sched/core.c:3983:31: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:3983:31: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:3983:31: sparse:     got struct rq *
   kernel/sched/core.c:3999:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:3999:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:3999:25: sparse:     got struct rq *
   kernel/sched/core.c:4009:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4009:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4009:25: sparse:     got struct rq *
   kernel/sched/core.c:4014:36: 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/core.c:4014:36: sparse:     expected struct task_struct const *p
   kernel/sched/core.c:4014:36: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c:4127:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4127:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4127:25: sparse:     got struct rq *
   kernel/sched/core.c:4468:45: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4468:45: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4468:45: sparse:     got struct rq *
   kernel/sched/core.c:4587:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4587:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4587:25: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:4593:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:4593:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:4593:13: sparse:     got struct rq *
   kernel/sched/core.c:8523:43: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct task_struct *push_task @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/core.c:8523:43: sparse:     expected struct task_struct *push_task
   kernel/sched/core.c:8523:43: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c:8536:42: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8536:42: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8536:42: sparse:     got struct rq *
   kernel/sched/core.c:5400:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:5400:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:5400:25: sparse:     got struct rq *
   kernel/sched/core.c:5585:24: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:5585:24: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:5585:24: sparse:     got struct rq *
   kernel/sched/core.c:5605:16: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:5605:16: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:5605:16: sparse:     got struct rq *
   kernel/sched/core.c:5611:16: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:5611:16: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:5611:16: sparse:     got struct rq *
   kernel/sched/core.c:5620:24: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:5620:24: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:5620:24: sparse:     got struct rq *
   kernel/sched/core.c:5634:29: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:5634:29: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:5634:29: sparse:     got struct rq *
   kernel/sched/core.c:5832:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:5832:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:5832:25: sparse:     got struct rq *
   kernel/sched/core.c:5845:15: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *donor @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/core.c:5845:15: sparse:     expected struct task_struct *donor
   kernel/sched/core.c:5845:15: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/core.c:6857:21: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:6857:21: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:6857:21: sparse:     got struct rq *
   kernel/sched/core.c:6878:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct *prev @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/core.c:6878:45: sparse:     expected struct task_struct *prev
   kernel/sched/core.c:6878:45: sparse:     got struct task_struct [noderef] __rcu *donor
>> kernel/sched/core.c:6878:56: sparse: sparse: incorrect type in argument 3 (different address spaces) @@     expected struct task_struct *next @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/core.c:6878:56: sparse:     expected struct task_struct *next
   kernel/sched/core.c:6878:56: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c:6879:29: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct *prev @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/core.c:6879:29: sparse:     expected struct task_struct *prev
   kernel/sched/core.c:6879:29: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/core.c:6880:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct *t @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/core.c:6880:28: sparse:     expected struct task_struct *t
   kernel/sched/core.c:6880:28: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c:6881:29: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct *next @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/core.c:6881:29: sparse:     expected struct task_struct *next
   kernel/sched/core.c:6881:29: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c:6883:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/core.c:6883:9: sparse:    struct task_struct *
   kernel/sched/core.c:6883:9: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/core.c:7202:14: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:7202:14: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:7202:14: sparse:     got struct rq *
   kernel/sched/core.c:7203:14: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *prev @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/core.c:7203:14: sparse:     expected struct task_struct *prev
   kernel/sched/core.c:7203:14: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c:7261:37: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected struct task_struct *prev @@     got struct task_struct [noderef] __rcu *donor @@
   kernel/sched/core.c:7261:37: sparse:     expected struct task_struct *prev
   kernel/sched/core.c:7261:37: sparse:     got struct task_struct [noderef] __rcu *donor
   kernel/sched/core.c:7772:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
   kernel/sched/core.c:7772:17: sparse:    struct task_struct *
   kernel/sched/core.c:7772:17: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/core.c:8320:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8320:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8320:25: sparse:     got struct rq *
   kernel/sched/core.c:8478:9: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8478:9: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8478:9: sparse:     got struct rq *
   kernel/sched/core.c:8491:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8491:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8491:25: sparse:     got struct rq *
   kernel/sched/core.c:8500:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8500:13: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8500:13: sparse:     got struct rq *
   kernel/sched/core.c:8586:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8586:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8586:25: sparse:     got struct rq *
   kernel/sched/core.c:8607:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8607:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8607:25: sparse:     got struct rq *
   kernel/sched/core.c:8753:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8753:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8753:25: sparse:     got struct rq *
   kernel/sched/core.c:8791:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8791:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8791:25: sparse:     got struct rq *
   kernel/sched/core.c:8854:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8854:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8854:25: sparse:     got struct rq *
   kernel/sched/core.c:8926:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:8926:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:8926:25: sparse:     got struct rq *
   kernel/sched/core.c:9081:22: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:9081:22: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:9081:22: sparse:     got struct rq *
   kernel/sched/core.c:10678:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:10678:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:10678:25: sparse:     got struct rq *
   kernel/sched/core.c:10678:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *p @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/core.c:10678:25: sparse:     expected struct task_struct *p
   kernel/sched/core.c:10678:25: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c:10981:18: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:10981:18: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:10981:18: sparse:     got struct rq *
   kernel/sched/core.c:11001:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:11001:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:11001:25: sparse:     got struct rq *
   kernel/sched/core.c:11056:25: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:11056:25: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:11056:25: sparse:     got struct rq *
   kernel/sched/core.c:11181:14: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:11181:14: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:11181:14: sparse:     got struct rq *
   kernel/sched/core.c:11203:14: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:11203:14: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:11203:14: sparse:     got struct rq *
   kernel/sched/core.c:11225:14: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected void const [noderef] __percpu *__vpp_verify @@     got struct rq * @@
   kernel/sched/core.c:11225:14: sparse:     expected void const [noderef] __percpu *__vpp_verify
   kernel/sched/core.c:11225:14: sparse:     got struct rq *
   kernel/sched/core.c:628:6: sparse: sparse: context imbalance in 'raw_spin_rq_lock_nested' - wrong count at exit
   kernel/sched/core.c:662:23: sparse: sparse: context imbalance in 'raw_spin_rq_trylock' - wrong count at exit
   kernel/sched/core.c:678:6: sparse: sparse: context imbalance in 'raw_spin_rq_unlock' - unexpected unlock
   kernel/sched/core.c: note: in included file:
   kernel/sched/sched.h:1767:9: sparse: sparse: context imbalance in '__task_rq_lock' - wrong count at exit
   kernel/sched/sched.h:1767:9: sparse: sparse: context imbalance in 'task_rq_lock' - wrong count at exit
   kernel/sched/core.c: note: in included file:
   kernel/sched/pelt.h:106:13: 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/pelt.h:106:13: sparse:     expected struct task_struct const *p
   kernel/sched/pelt.h:106:13: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/core.c: note: in included file:
   include/trace/hooks/sched.h:67:1: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct tracepoint_func *it_func_ptr @@     got struct tracepoint_func [noderef] __rcu *funcs @@
   include/trace/hooks/sched.h:67:1: sparse:     expected struct tracepoint_func *it_func_ptr
   include/trace/hooks/sched.h:67:1: sparse:     got struct tracepoint_func [noderef] __rcu *funcs
   include/trace/hooks/sched.h:30:1: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct tracepoint_func *it_func_ptr @@     got struct tracepoint_func [noderef] __rcu *funcs @@
   include/trace/hooks/sched.h:30:1: sparse:     expected struct tracepoint_func *it_func_ptr
   include/trace/hooks/sched.h:30:1: sparse:     got struct tracepoint_func [noderef] __rcu *funcs

vim +6878 kernel/sched/core.c

  6837	
  6838	#ifdef CONFIG_SMP
  6839	/*
  6840	 * If the blocked-on relationship crosses CPUs, migrate @p to the
  6841	 * owner's CPU.
  6842	 *
  6843	 * This is because we must respect the CPU affinity of execution
  6844	 * contexts (owner) but we can ignore affinity for scheduling
  6845	 * contexts (@p). So we have to move scheduling contexts towards
  6846	 * potential execution contexts.
  6847	 *
  6848	 * Note: The owner can disappear, but simply migrate to @target_cpu
  6849	 * and leave that CPU to sort things out.
  6850	 */
  6851	static void proxy_migrate_task(struct rq *rq, struct rq_flags *rf,
  6852				       struct task_struct *p, int target_cpu)
  6853	{
  6854		struct rq *target_rq;
  6855	
  6856		lockdep_assert_rq_held(rq);
  6857		target_rq = cpu_rq(target_cpu);
  6858	
  6859		/*
  6860		 * Since we're going to drop @rq, we have to put(@rq->donor) first,
  6861		 * otherwise we have a reference that no longer belongs to us.
  6862		 *
  6863		 * Additionally, as we put_prev_task(prev) earlier, its possible that
  6864		 * prev will migrate away as soon as we drop the rq lock, however we
  6865		 * still have it marked as rq->curr, as we've not yet switched tasks.
  6866		 *
  6867		 * After the migration, we are going to pick_again in the __schedule
  6868		 * logic, so backtrack a bit before we release the lock:
  6869		 * Put rq->donor, and set rq->curr as rq->donor and set_next_task,
  6870		 * so that we're close to the situation we had entering __schedule
  6871		 * the first time.
  6872		 *
  6873		 * Then when we re-aquire the lock, we will re-put rq->curr then
  6874		 * rq_set_donor(rq->idle) and set_next_task(rq->idle), before
  6875		 * picking again.
  6876		 */
  6877		/* XXX - Added to address problems with changed dl_server semantics - double check */
> 6878		__put_prev_set_next_dl_server(rq, rq->donor, rq->curr);
  6879		put_prev_task(rq, rq->donor);
  6880		rq_set_donor(rq, rq->curr);
  6881		set_next_task(rq, rq->curr);
  6882	
  6883		WARN_ON(p == rq->curr);
  6884	
  6885		deactivate_task(rq, p, 0);
  6886		proxy_set_task_cpu(p, target_cpu);
  6887	
  6888		zap_balance_callbacks(rq);
  6889		rq_unpin_lock(rq, rf);
  6890		raw_spin_rq_unlock(rq);
  6891		raw_spin_rq_lock(target_rq);
  6892	
  6893		activate_task(target_rq, p, 0);
  6894		wakeup_preempt(target_rq, p, 0);
  6895	
  6896		raw_spin_rq_unlock(target_rq);
  6897		raw_spin_rq_lock(rq);
  6898		rq_repin_lock(rq, rf);
  6899	
  6900		/*
  6901		 * Ok, now we have the lock again, put rq->curr and
  6902		 * set_next_task() to idle
  6903		 */
  6904		proxy_resched_idle(rq);
  6905	}
  6906	#else /* !CONFIG_SMP */
  6907	static inline
  6908	void proxy_migrate_task(struct rq *rq, struct rq_flags *rf,
  6909				struct task_struct *p, int target_cpu)
  6910	{
  6911	}
  6912	#endif /* CONFIG_SMP */
  6913	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.