Hi Srikar, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on powerpc/next] [also build test WARNING on linus/master v5.12-rc8] [cannot apply to tip/sched/core tip/master next-20210422] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Srikar-Dronamraju/sched-fair-wake_affine-improvements/20210422-182725 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: x86_64-randconfig-s022-20210421 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://github.com/0day-ci/linux/commit/dcb752591087d90fd4093094e42baf167fdcae7b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Srikar-Dronamraju/sched-fair-wake_affine-improvements/20210422-182725 git checkout dcb752591087d90fd4093094e42baf167fdcae7b # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) kernel/sched/topology.c:106: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:106:56: sparse: expected struct sched_domain *sd kernel/sched/topology.c:106:56: sparse: got struct sched_domain [noderef] __rcu *child kernel/sched/topology.c:125: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:125:60: sparse: expected struct sched_domain *sd kernel/sched/topology.c:125:60: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:148: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:148:20: sparse: expected struct sched_domain *sd kernel/sched/topology.c:148:20: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:431:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct perf_domain *[assigned] tmp @@ got struct perf_domain [noderef] __rcu *pd @@ kernel/sched/topology.c:431:13: sparse: expected struct perf_domain *[assigned] tmp kernel/sched/topology.c:431:13: sparse: got struct perf_domain [noderef] __rcu *pd kernel/sched/topology.c:440:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct perf_domain *[assigned] tmp @@ got struct perf_domain [noderef] __rcu *pd @@ kernel/sched/topology.c:440:13: sparse: expected struct perf_domain *[assigned] tmp kernel/sched/topology.c:440:13: sparse: got struct perf_domain [noderef] __rcu *pd kernel/sched/topology.c:461:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct perf_domain *[assigned] pd @@ got struct perf_domain [noderef] __rcu *pd @@ kernel/sched/topology.c:461:19: sparse: expected struct perf_domain *[assigned] pd kernel/sched/topology.c:461:19: sparse: got struct perf_domain [noderef] __rcu *pd kernel/sched/topology.c:635: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:635:49: sparse: expected struct sched_domain *parent kernel/sched/topology.c:635:49: sparse: got struct sched_domain [noderef] __rcu *parent >> kernel/sched/topology.c:678:52: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *sd_parent @@ got struct sched_domain [noderef] __rcu *parent @@ kernel/sched/topology.c:678:52: sparse: expected struct sched_domain *sd_parent kernel/sched/topology.c:678:52: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:686:81: 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:686:81: sparse: expected struct sched_domain *sd kernel/sched/topology.c:686:81: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:742: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:742:50: sparse: expected struct sched_domain *parent kernel/sched/topology.c:742:50: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:749: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:749:55: sparse: expected struct sched_domain [noderef] __rcu *[noderef] __rcu child kernel/sched/topology.c:749:55: sparse: got struct sched_domain *[assigned] tmp kernel/sched/topology.c:759: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:759:29: sparse: expected struct sched_domain *[assigned] tmp kernel/sched/topology.c:759:29: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:764: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:764:20: sparse: expected struct sched_domain *sd kernel/sched/topology.c:764:20: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:770:33: 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:770:33: sparse: expected struct sched_domain *[assigned] tmp kernel/sched/topology.c:770:33: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:805: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:805:13: sparse: expected struct sched_domain *[assigned] tmp kernel/sched/topology.c:805:13: sparse: got struct sched_domain [noderef] __rcu *sd kernel/sched/topology.c:967: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:967:70: sparse: expected struct sched_domain *sd kernel/sched/topology.c:967:70: sparse: got struct sched_domain [noderef] __rcu *child kernel/sched/topology.c:996: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:996:59: sparse: expected struct sched_domain *sd kernel/sched/topology.c:996:59: sparse: got struct sched_domain [noderef] __rcu *child kernel/sched/topology.c:1166: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:1166:40: sparse: expected struct sched_domain *child kernel/sched/topology.c:1166:40: sparse: got struct sched_domain [noderef] __rcu *child kernel/sched/topology.c:1468: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:1468:43: sparse: expected struct sched_domain [noderef] __rcu *child kernel/sched/topology.c:1468:43: sparse: got struct sched_domain *child kernel/sched/topology.c:1955: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:1955:31: sparse: expected struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:1955:31: sparse: got struct sched_domain *sd kernel/sched/topology.c:2123: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:2123:57: sparse: expected struct sched_domain *[assigned] sd kernel/sched/topology.c:2123:57: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:2140: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:2140:57: sparse: expected struct sched_domain *[assigned] sd kernel/sched/topology.c:2140:57: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:59:25: sparse: sparse: dereference of noderef expression kernel/sched/topology.c:64:25: sparse: sparse: dereference of noderef expression kernel/sched/topology.c: note: in included file: kernel/sched/sched.h:1459: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/sched.h:1459:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/sched.h:1459:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/sched.h:1472: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/sched.h:1472:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/sched.h:1472:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/sched.h:1459: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/sched.h:1459:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/sched.h:1459:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/sched.h:1472: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/sched.h:1472:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/sched.h:1472:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/topology.c:1483:19: sparse: sparse: dereference of noderef expression -- kernel/sched/fair.c:861:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_entity *se @@ got struct sched_entity [noderef] __rcu * @@ kernel/sched/fair.c:861:34: sparse: expected struct sched_entity *se kernel/sched/fair.c:861:34: sparse: got struct sched_entity [noderef] __rcu * kernel/sched/fair.c:10750: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/fair.c:10750:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/fair.c:10750:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/fair.c:4907:22: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/fair.c:4907:22: sparse: struct task_struct [noderef] __rcu * kernel/sched/fair.c:4907:22: sparse: struct task_struct * kernel/sched/fair.c:5430:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/fair.c:5430:38: sparse: expected struct task_struct *curr kernel/sched/fair.c:5430:38: sparse: got struct task_struct [noderef] __rcu *curr >> kernel/sched/fair.c:5905:80: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *parent @@ kernel/sched/fair.c:5905:80: sparse: expected struct sched_domain *sd kernel/sched/fair.c:5905:80: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/fair.c:6755:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@ kernel/sched/fair.c:6755:20: sparse: expected struct sched_domain *[assigned] sd kernel/sched/fair.c:6755:20: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/fair.c:6878:9: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] tmp @@ got struct sched_domain [noderef] __rcu *parent @@ kernel/sched/fair.c:6878:9: sparse: expected struct sched_domain *[assigned] tmp kernel/sched/fair.c:6878:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/fair.c:7076:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/fair.c:7076:38: sparse: expected struct task_struct *curr kernel/sched/fair.c:7076:38: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/fair.c:7327:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@ kernel/sched/fair.c:7327:38: sparse: expected struct task_struct *curr kernel/sched/fair.c:7327:38: sparse: got struct task_struct [noderef] __rcu *curr kernel/sched/fair.c:8298:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *child @@ got struct sched_domain [noderef] __rcu *child @@ kernel/sched/fair.c:8298:40: sparse: expected struct sched_domain *child kernel/sched/fair.c:8298:40: sparse: got struct sched_domain [noderef] __rcu *child kernel/sched/fair.c:8791:22: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/fair.c:8791:22: sparse: struct task_struct [noderef] __rcu * kernel/sched/fair.c:8791:22: sparse: struct task_struct * kernel/sched/fair.c:10067: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/fair.c:10067:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/fair.c:10067:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/fair.c:9723:44: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *sd_parent @@ got struct sched_domain [noderef] __rcu *parent @@ kernel/sched/fair.c:9723:44: sparse: expected struct sched_domain *sd_parent kernel/sched/fair.c:9723:44: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/fair.c:10145: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/fair.c:10145:9: sparse: expected struct sched_domain *[assigned] sd kernel/sched/fair.c:10145:9: sparse: got struct sched_domain [noderef] __rcu *parent kernel/sched/fair.c:4575:31: sparse: sparse: marked inline, but without a definition kernel/sched/fair.c: note: in included file: kernel/sched/sched.h:1730:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1730:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1730:25: sparse: struct task_struct * kernel/sched/sched.h:1885:9: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1885:9: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1885:9: sparse: struct task_struct * kernel/sched/sched.h:1730:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1730:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1730:25: sparse: struct task_struct * kernel/sched/sched.h:1730:25: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/sched/sched.h:1730:25: sparse: struct task_struct [noderef] __rcu * kernel/sched/sched.h:1730:25: sparse: struct task_struct * vim +678 kernel/sched/topology.c 668 669 static void update_top_cache_domain(int cpu) 670 { 671 struct sched_domain_shared *sds = NULL; 672 struct sched_domain *sd; 673 int id = cpu; 674 int size = 1; 675 676 sd = highest_flag_domain(cpu, SD_SHARE_PKG_RESOURCES); 677 if (sd) { > 678 struct sched_domain *sd_parent = sd->parent; 679 680 id = cpumask_first(sched_domain_span(sd)); 681 size = cpumask_weight(sched_domain_span(sd)); 682 sds = sd->shared; 683 684 if (sds->fallback_llc_id == -1 && sd_parent && 685 sd_parent->flags & SD_FALLBACK_LLC) { 686 const struct cpumask *parent_span = sched_domain_span(sd->parent); 687 struct cpumask *span = sched_domains_tmpmask; 688 int fcpu; 689 690 /* 691 * If LLC's parent domain has SD_FALLBACK_LLC flag 692 * set and this LLC's fallback_llc_id is not yet 693 * set, then walk through the LLC parent's domain to 694 * find a fallback_llc. 695 */ 696 cpumask_andnot(span, parent_span, sched_domain_span(sd)); 697 for_each_cpu_wrap(fcpu, span, cpu) { 698 struct sched_domain_shared *next_sds; 699 700 next_sds = rcu_dereference(per_cpu(sd_llc_shared, fcpu)); 701 if (next_sds && next_sds->fallback_llc_id == -1) { 702 sds->fallback_llc_id = fcpu; 703 next_sds->fallback_llc_id = cpu; 704 break; 705 } 706 } 707 } 708 } 709 710 rcu_assign_pointer(per_cpu(sd_llc, cpu), sd); 711 per_cpu(sd_llc_size, cpu) = size; 712 per_cpu(sd_llc_id, cpu) = id; 713 #ifdef CONFIG_SCHED_SMT 714 per_cpu(smt_id, cpu) = cpumask_first(cpu_smt_mask(cpu)); 715 #endif 716 per_cpu(is_idle, cpu) = 1; 717 rcu_assign_pointer(per_cpu(sd_llc_shared, cpu), sds); 718 719 sd = lowest_flag_domain(cpu, SD_NUMA); 720 rcu_assign_pointer(per_cpu(sd_numa, cpu), sd); 721 722 sd = highest_flag_domain(cpu, SD_ASYM_PACKING); 723 rcu_assign_pointer(per_cpu(sd_asym_packing, cpu), sd); 724 725 sd = lowest_flag_domain(cpu, SD_ASYM_CPUCAPACITY); 726 rcu_assign_pointer(per_cpu(sd_asym_cpucapacity, cpu), sd); 727 } 728 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org