Hi Aubrey,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on tip/sched/core]
[also build test WARNING on tip/master linux/master linus/master v5.12-rc2 next-20210309]
[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/Aubrey-Li/sched-fair-select-idle...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
4117cebf1a9fcbf35b9aabf0e37b6c5eea296798
config: arm64-randconfig-s032-20210309 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-262-g5e674421-dirty
#
https://github.com/0day-ci/linux/commit/ca52510778e4c6e588e21b63cd407cda1...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Aubrey-Li/sched-fair-select-idle-cpu-from-idle-cpumask-for-task-wakeup/20210310-100644
git checkout ca52510778e4c6e588e21b63cd407cda130494f7
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
"sparse warnings: (new ones prefixed by >>)"
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:10638: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:10638:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:10638:9: sparse: got struct sched_domain [noderef] __rcu
*parent
kernel/sched/fair.c:5439: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:5439:38: sparse: expected struct task_struct *curr
kernel/sched/fair.c:5439:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:5673:1: sparse: sparse: symbol
'__pcpu_scope_load_balance_mask' was not declared. Should it be static?
kernel/sched/fair.c:5674:1: sparse: sparse: symbol
'__pcpu_scope_select_idle_mask' was not declared. Should it be static?
kernel/sched/fair.c:6637: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:6637:20: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:6637:20: sparse: got struct sched_domain [noderef] __rcu
*parent
kernel/sched/fair.c:6759: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:6759:9: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/fair.c:6759:9: sparse: got struct sched_domain [noderef] __rcu
*parent
> kernel/sched/fair.c:6898:12: sparse: sparse: incorrect type in
assignment (different address spaces) @@ expected struct sched_domain *sd @@ got
struct sched_domain [noderef] __rcu * @@
kernel/sched/fair.c:6898:12: sparse:
expected struct sched_domain *sd
kernel/sched/fair.c:6898:12: sparse: got struct sched_domain [noderef] __rcu *
kernel/sched/fair.c:6995: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:6995:38: sparse: expected struct task_struct *curr
kernel/sched/fair.c:6995:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:7246: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:7246:38: sparse: expected struct task_struct *curr
kernel/sched/fair.c:7246:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/fair.c:8219: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:8219:40: sparse: expected struct sched_domain *child
kernel/sched/fair.c:8219:40: sparse: got struct sched_domain [noderef] __rcu
*child
kernel/sched/fair.c:8709:22: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/fair.c:8709:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/fair.c:8709:22: sparse: struct task_struct *
kernel/sched/fair.c:9972: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:9972:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:9972:9: sparse: got struct sched_domain [noderef] __rcu
*parent
kernel/sched/fair.c:9628: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:9628:44: sparse: expected struct sched_domain *sd_parent
kernel/sched/fair.c:9628:44: sparse: got struct sched_domain [noderef] __rcu
*parent
kernel/sched/fair.c:10050: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:10050:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/fair.c:10050:9: sparse: got struct sched_domain [noderef] __rcu
*parent
kernel/sched/fair.c:5368:35: sparse: sparse: marked inline, but without a definition
kernel/sched/fair.c: note: in included file:
kernel/sched/sched.h:1735:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/sched.h:1735:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1735:25: sparse: struct task_struct *
kernel/sched/sched.h:1890:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/sched.h:1890:9: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1890:9: sparse: struct task_struct *
kernel/sched/sched.h:1735:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/sched.h:1735:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1735:25: sparse: struct task_struct *
kernel/sched/sched.h:1735:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/sched.h:1735:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:1735:25: sparse: struct task_struct *
vim +6898 kernel/sched/fair.c
6871
6872 /*
6873 * Update cpu idle state and record this information
6874 * in sd_llc_shared->idle_cpus_span.
6875 *
6876 * This function is called with interrupts disabled.
6877 */
6878 void update_idle_cpumask(int cpu, bool idle)
6879 {
6880 struct sched_domain *sd;
6881 struct rq *rq = cpu_rq(cpu);
6882 int idle_state;
6883
6884 /*
6885 * Also set SCHED_IDLE cpu in idle cpumask to
6886 * allow SCHED_IDLE cpu as a wakeup target.
6887 */
6888 idle_state = idle || sched_idle_cpu(cpu);
6889 /*
6890 * No need to update idle cpumask if the state
6891 * does not change.
6892 */
6893 if (rq->last_idle_state == idle_state)
6894 return;
6895 /*
6896 * Called with irq disabled, rcu protection is not needed.
6897 */
6898 sd = per_cpu(sd_llc, cpu);
6899 if (unlikely(!sd))
6900 return;
6901
6902 if (idle_state)
6903 cpumask_set_cpu(cpu, sds_idle_cpus(sd->shared));
6904 else
6905 cpumask_clear_cpu(cpu, sds_idle_cpus(sd->shared));
6906
6907 rq->last_idle_state = idle_state;
6908 }
6909 #endif /* CONFIG_SMP */
6910
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org