* [peterz-queue:sched/core 6/9] kernel/sched/topology.c:2705:25: sparse: sparse: incorrect type in assignment (different address spaces)
@ 2026-05-14 13:13 kernel test robot
2026-05-14 17:17 ` Andrea Righi
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2026-05-14 13:13 UTC (permalink / raw)
To: K Prateek Nayak; +Cc: oe-kbuild-all, Peter Zijlstra, Andrea Righi
tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/core
head: 238b6f2b3a4948ca7048025a15874b2c253a34bf
commit: c3d608e99c540bb4a68f31a1e0dffa7af2827216 [6/9] sched/fair: Attach sched_domain_shared to sd_asym_cpucapacity
config: nios2-randconfig-r123-20260514 (https://download.01.org/0day-ci/archive/20260514/202605142117.gyxGm7SY-lkp@intel.com/config)
compiler: nios2-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/20260514/202605142117.gyxGm7SY-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605142117.gyxGm7SY-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
kernel/sched/build_utility.c: note: in included file:
kernel/sched/debug.c:730:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/debug.c:730:17: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/debug.c:730:17: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/debug.c:1071:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/debug.c:1071:9: sparse: expected struct task_struct *tsk
kernel/sched/debug.c:1071:9: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/debug.c:1071:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/debug.c:1071:9: sparse: expected struct task_struct *tsk
kernel/sched/debug.c:1071:9: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/build_utility.c: note: in included file:
kernel/sched/topology.c:116:56: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:116:56: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:116:56: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:135:60: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:135:60: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:135:60: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:158:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:158:20: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:158:20: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:468:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct perf_domain *pd @@ got struct perf_domain [noderef] __rcu *pd @@
kernel/sched/topology.c:468:19: sparse: expected struct perf_domain *pd
kernel/sched/topology.c:468:19: sparse: got struct perf_domain [noderef] __rcu *pd
kernel/sched/topology.c:643:49: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:643:49: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:643:49: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:746:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:746:50: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:746:50: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:761:55: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain [noderef] __rcu *[noderef] __rcu child @@ got struct sched_domain *[assigned] tmp @@
kernel/sched/topology.c:761:55: sparse: expected struct sched_domain [noderef] __rcu *[noderef] __rcu child
kernel/sched/topology.c:761:55: sparse: got struct sched_domain *[assigned] tmp
kernel/sched/topology.c:774:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] tmp @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:774:29: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/topology.c:774:29: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:779:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:779:20: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:779:20: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:800:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] tmp @@ got struct sched_domain [noderef] __rcu *sd @@
kernel/sched/topology.c:800:13: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/topology.c:800:13: sparse: got struct sched_domain [noderef] __rcu *sd
kernel/sched/topology.c:964:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:964:70: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:964:70: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:993:59: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:993:59: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:993:59: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1039:57: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1039:57: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:1039:57: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1041:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sibling @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1041:25: sparse: expected struct sched_domain *sibling
kernel/sched/topology.c:1041:25: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1049:55: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1049:55: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:1049:55: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1051:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sibling @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1051:25: sparse: expected struct sched_domain *sibling
kernel/sched/topology.c:1051:25: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1121:62: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1121:62: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:1121:62: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1225:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *child @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1225:40: sparse: expected struct sched_domain *child
kernel/sched/topology.c:1225:40: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1361: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/topology.c:1361:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:1361:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:1618:52: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:1618:52: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:1618:52: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:1728:43: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain [noderef] __rcu *child @@ got struct sched_domain *child @@
kernel/sched/topology.c:1728:43: sparse: expected struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1728:43: sparse: got struct sched_domain *child
kernel/sched/topology.c:2522:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain [noderef] __rcu *parent @@ got struct sched_domain *sd @@
kernel/sched/topology.c:2522:31: sparse: expected struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2522:31: sparse: got struct sched_domain *sd
kernel/sched/topology.c:2650:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *[noderef] __rcu parent @@
kernel/sched/topology.c:2650:16: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:2650:16: sparse: got struct sched_domain [noderef] __rcu *[noderef] __rcu parent
kernel/sched/topology.c:2652:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2652:24: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:2652:24: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2657:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2657:16: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:2657:16: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2662:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2662:24: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:2662:24: sparse: got struct sched_domain [noderef] __rcu *parent
>> kernel/sched/topology.c:2705:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd_asym @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2705:25: sparse: expected struct sched_domain *[assigned] sd_asym
kernel/sched/topology.c:2705:25: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2759:57: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2759:57: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:2759:57: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2783:28: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2783:28: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:2783:28: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2809:57: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2809:57: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:2809:57: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/build_utility.c: note: in included file:
kernel/sched/sched.h:2379:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2379:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2379:25: sparse: struct task_struct *
vim +2705 kernel/sched/topology.c
2679
2680 /*
2681 * For asymmetric CPU capacity, attach sched_domain_shared on the innermost
2682 * SD_ASYM_CPUCAPACITY_FULL ancestor of @cpu's base domain when that ancestor is
2683 * not an overlapping NUMA-built domain (then LLC should claim shared).
2684 *
2685 * A CPU may lack any FULL ancestor (e.g., exclusive cpuset symmetric island),
2686 * then LLC must claim shared instead.
2687 *
2688 * Note: SD_ASYM_CPUCAPACITY_FULL is only set when all CPU capacity values
2689 * are present in the domain span, so the asym domain we attach to cannot
2690 * degenerate into a single-capacity group. The relevant edge cases are instead
2691 * covered by the caveats above.
2692 *
2693 * Return true if this CPU's asym path claimed sd->shared, false otherwise.
2694 */
2695 static bool claim_asym_sched_domain_shared(struct s_data *d, int cpu)
2696 {
2697 struct sched_domain *sd = *per_cpu_ptr(d->sd, cpu);
2698 struct sched_domain *sd_asym;
2699
2700 if (!sd)
2701 return false;
2702
2703 sd_asym = sd;
2704 while (sd_asym && !(sd_asym->flags & SD_ASYM_CPUCAPACITY_FULL))
> 2705 sd_asym = sd_asym->parent;
2706
2707 if (!sd_asym || (sd_asym->flags & SD_NUMA))
2708 return false;
2709
2710 init_sched_domain_shared(d, sd_asym);
2711 return true;
2712 }
2713
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [peterz-queue:sched/core 6/9] kernel/sched/topology.c:2705:25: sparse: sparse: incorrect type in assignment (different address spaces)
2026-05-14 13:13 [peterz-queue:sched/core 6/9] kernel/sched/topology.c:2705:25: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot
@ 2026-05-14 17:17 ` Andrea Righi
0 siblings, 0 replies; 2+ messages in thread
From: Andrea Righi @ 2026-05-14 17:17 UTC (permalink / raw)
To: kernel test robot; +Cc: K Prateek Nayak, oe-kbuild-all, Peter Zijlstra
On Thu, May 14, 2026 at 09:13:09PM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/core
> head: 238b6f2b3a4948ca7048025a15874b2c253a34bf
> commit: c3d608e99c540bb4a68f31a1e0dffa7af2827216 [6/9] sched/fair: Attach sched_domain_shared to sd_asym_cpucapacity
> config: nios2-randconfig-r123-20260514 (https://download.01.org/0day-ci/archive/20260514/202605142117.gyxGm7SY-lkp@intel.com/config)
> compiler: nios2-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/20260514/202605142117.gyxGm7SY-lkp@intel.com/reproduce)
>
...
> kernel/sched/build_utility.c: note: in included file:
> kernel/sched/sched.h:2379:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
> kernel/sched/sched.h:2379:25: sparse: struct task_struct [noderef] __rcu *
> kernel/sched/sched.h:2379:25: sparse: struct task_struct *
>
> vim +2705 kernel/sched/topology.c
>
> 2679
> 2680 /*
> 2681 * For asymmetric CPU capacity, attach sched_domain_shared on the innermost
> 2682 * SD_ASYM_CPUCAPACITY_FULL ancestor of @cpu's base domain when that ancestor is
> 2683 * not an overlapping NUMA-built domain (then LLC should claim shared).
> 2684 *
> 2685 * A CPU may lack any FULL ancestor (e.g., exclusive cpuset symmetric island),
> 2686 * then LLC must claim shared instead.
> 2687 *
> 2688 * Note: SD_ASYM_CPUCAPACITY_FULL is only set when all CPU capacity values
> 2689 * are present in the domain span, so the asym domain we attach to cannot
> 2690 * degenerate into a single-capacity group. The relevant edge cases are instead
> 2691 * covered by the caveats above.
> 2692 *
> 2693 * Return true if this CPU's asym path claimed sd->shared, false otherwise.
> 2694 */
> 2695 static bool claim_asym_sched_domain_shared(struct s_data *d, int cpu)
> 2696 {
> 2697 struct sched_domain *sd = *per_cpu_ptr(d->sd, cpu);
> 2698 struct sched_domain *sd_asym;
> 2699
> 2700 if (!sd)
> 2701 return false;
> 2702
> 2703 sd_asym = sd;
> 2704 while (sd_asym && !(sd_asym->flags & SD_ASYM_CPUCAPACITY_FULL))
> > 2705 sd_asym = sd_asym->parent;
This looks like a false positive to me: claim_asym_sched_domain_shared() is only
called from build_sched_domains() and we are walking child -> parent during
sched_domain construction, before the tree is published to RCU readers, so the
code holds exclusive ownership at that point, therefore plain dereference seems
correct.
-Andrea
> 2706
> 2707 if (!sd_asym || (sd_asym->flags & SD_NUMA))
> 2708 return false;
> 2709
> 2710 init_sched_domain_shared(d, sd_asym);
> 2711 return true;
> 2712 }
> 2713
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-05-14 17:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-14 13:13 [peterz-queue:sched/core 6/9] kernel/sched/topology.c:2705:25: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot
2026-05-14 17:17 ` Andrea Righi
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.