tree:
https://github.com/zen-kernel/zen-kernel 5.7/muqss
head: 4567060b2f5ff28fb444b38edc2122aff6aa34ce
commit: cd3b420bc9cd575a1eaf051463cfb1204599e8d9 [1/16] MultiQueue Skiplist Scheduler
v0.202
config: alpha-allyesconfig (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout cd3b420bc9cd575a1eaf051463cfb1204599e8d9
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=alpha
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
kernel/sched/MuQSS.c:239:12: warning: no previous prototype for
'arch_sd_sibling_asym_packing' [-Wmissing-prototypes]
239 | int __weak arch_sd_sibling_asym_packing(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:637:6: warning: no previous prototype for 'resched_task'
[-Wmissing-prototypes]
637 | void resched_task(struct task_struct *p)
| ^~~~~~~~~~~~
kernel/sched/MuQSS.c: In function 'best_mask_cpu':
> kernel/sched/MuQSS.c:1092:14: warning: variable 'tmp_rq'
set but not used [-Wunused-but-set-variable]
1092 | struct rq *tmp_rq;
| ^~~~~~
kernel/sched/MuQSS.c: At top level:
kernel/sched/MuQSS.c:2243:5: warning: no previous prototype for
'sysctl_schedstats' [-Wmissing-prototypes]
2243 | int sysctl_schedstats(struct ctl_table *table, int write,
| ^~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:2932:15: warning: no previous prototype for 'nr_active'
[-Wmissing-prototypes]
2932 | unsigned long nr_active(void)
| ^~~~~~~~~
kernel/sched/MuQSS.c:5880:6: warning: no previous prototype for
'__do_set_cpus_allowed' [-Wmissing-prototypes]
5880 | void __do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
| ^~~~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:6000:6: warning: no previous prototype for 'resched_cpu'
[-Wmissing-prototypes]
6000 | void resched_cpu(int cpu)
| ^~~~~~~~~~~
kernel/sched/MuQSS.c:6013:6: warning: no previous prototype for
'select_nohz_load_balancer' [-Wmissing-prototypes]
6013 | void select_nohz_load_balancer(int stop_tick)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:6017:6: warning: no previous prototype for
'set_cpu_sd_state_idle' [-Wmissing-prototypes]
6017 | void set_cpu_sd_state_idle(void) {}
| ^~~~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:6071:6: warning: no previous prototype for 'wake_up_idle_cpu'
[-Wmissing-prototypes]
6071 | void wake_up_idle_cpu(int cpu)
| ^~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:6334:6: warning: no previous prototype for
'sched_set_stop_task' [-Wmissing-prototypes]
6334 | void sched_set_stop_task(int cpu, struct task_struct *stop)
| ^~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c: In function 'setup_rq_orders':
kernel/sched/MuQSS.c:6952:22: warning: unused variable 'i' [-Wunused-variable]
6952 | int cpu, other_cpu, i;
| ^
kernel/sched/MuQSS.c: At top level:
kernel/sched/MuQSS.c:7464:6: warning: no previous prototype for
'init_idle_bootup_task' [-Wmissing-prototypes]
7464 | void init_idle_bootup_task(struct task_struct *idle)
| ^~~~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:7488:20: warning: no previous prototype for
'sched_create_group' [-Wmissing-prototypes]
7488 | struct task_group *sched_create_group(struct task_group *parent)
| ^~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:7499:6: warning: no previous prototype for
'sched_online_group' [-Wmissing-prototypes]
7499 | void sched_online_group(struct task_group *tg, struct task_group *parent)
| ^~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:7510:6: warning: no previous prototype for
'sched_destroy_group' [-Wmissing-prototypes]
7510 | void sched_destroy_group(struct task_group *tg)
| ^~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:7516:6: warning: no previous prototype for
'sched_offline_group' [-Wmissing-prototypes]
7516 | void sched_offline_group(struct task_group *tg)
| ^~~~~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:7607:20: warning: initialized field overwritten [-Woverride-init]
7607 | .legacy_cftypes = cpu_legacy_files,
| ^~~~~~~~~~~~~~~~
kernel/sched/MuQSS.c:7607:20: note: (near initialization for
'cpu_cgrp_subsys.legacy_cftypes')
vim +/tmp_rq +1092 kernel/sched/MuQSS.c
1064
1065 /*
1066 * The best idle CPU is chosen according to the CPUIDLE ranking above where the
1067 * lowest value would give the most suitable CPU to schedule p onto next. The
1068 * order works out to be the following:
1069 *
1070 * Same thread, idle or busy cache, idle or busy threads
1071 * Other core, same cache, idle or busy cache, idle threads.
1072 * Same node, other CPU, idle cache, idle threads.
1073 * Same node, other CPU, busy cache, idle threads.
1074 * Other core, same cache, busy threads.
1075 * Same node, other CPU, busy threads.
1076 * Other node, other CPU, idle cache, idle threads.
1077 * Other node, other CPU, busy cache, idle threads.
1078 * Other node, other CPU, busy threads.
1079 */
1080 static int best_mask_cpu(int best_cpu, struct rq *rq, cpumask_t *tmpmask)
1081 {
1082 int best_ranking = CPUIDLE_DIFF_NODE | CPUIDLE_THREAD_BUSY |
1083 CPUIDLE_DIFF_CPU | CPUIDLE_CACHE_BUSY | CPUIDLE_DIFF_CORE |
1084 CPUIDLE_DIFF_CORE_LLC | CPUIDLE_DIFF_THREAD;
1085 int cpu_tmp;
1086
1087 if (cpumask_test_cpu(best_cpu, tmpmask))
1088 goto out;
1089
1090 for_each_cpu(cpu_tmp, tmpmask) {
1091 int ranking, locality;
1092 struct rq *tmp_rq;
1093
1094 ranking = 0;
1095 tmp_rq = cpu_rq(cpu_tmp);
1096
1097 locality = rq->cpu_locality[cpu_tmp];
1098 #ifdef CONFIG_NUMA
1099 if (locality > LOCALITY_SMP)
1100 ranking |= CPUIDLE_DIFF_NODE;
1101 else
1102 #endif
1103 if (locality > LOCALITY_MC)
1104 ranking |= CPUIDLE_DIFF_CPU;
1105 #ifdef CONFIG_SCHED_MC
1106 else if (locality == LOCALITY_MC_LLC)
1107 ranking |= CPUIDLE_DIFF_CORE_LLC;
1108 else if (locality == LOCALITY_MC)
1109 ranking |= CPUIDLE_DIFF_CORE;
1110 if (!(tmp_rq->cache_idle(tmp_rq)))
1111 ranking |= CPUIDLE_CACHE_BUSY;
1112 #endif
1113 #ifdef CONFIG_SCHED_SMT
1114 if (locality == LOCALITY_SMT)
1115 ranking |= CPUIDLE_DIFF_THREAD;
1116 #endif
1117 if (ranking < best_ranking
1118 #ifdef CONFIG_SCHED_SMT
1119 || (ranking == best_ranking && (tmp_rq->siblings_idle(tmp_rq)))
1120 #endif
1121 ) {
1122 best_cpu = cpu_tmp;
1123 best_ranking = ranking;
1124 }
1125 }
1126 out:
1127 return best_cpu;
1128 }
1129
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org