Hi Steven,
First bad commit (maybe != root cause):
tree:
https://github.com/zen-kernel/zen-kernel 5.9/muqss
head: bb2916b2fc9b8433563583c67044135c9cfad84e
commit: bb2916b2fc9b8433563583c67044135c9cfad84e [1/1] Revert "Fix cpufreq_cooling
build."
config: alpha-randconfig-s031-20201117 (attached as .config)
compiler: alpha-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-107-gaf3512a6-dirty
#
https://github.com/zen-kernel/zen-kernel/commit/bb2916b2fc9b8433563583c67...
git remote add zen-kernel-zen-kernel
https://github.com/zen-kernel/zen-kernel
git fetch --no-tags zen-kernel-zen-kernel 5.9/muqss
git checkout bb2916b2fc9b8433563583c67044135c9cfad84e
# 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=alpha
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/MuQSS.c:2471:11: sparse: sparse: incorrect type in
assignment (different address spaces) @@ expected struct task_struct *p @@ got
struct task_struct [noderef] __rcu *curr @@
> kernel/sched/MuQSS.c:2471:11: sparse: expected struct task_struct *p
> kernel/sched/MuQSS.c:2471:11: sparse: got struct task_struct [noderef] __rcu
*curr
> kernel/sched/MuQSS.c:2518:16: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct task_struct *parent @@ got struct task_struct
[noderef] __rcu *parent @@
> kernel/sched/MuQSS.c:2518:16: sparse: expected struct task_struct *parent
> kernel/sched/MuQSS.c:2518:16: sparse: got struct task_struct [noderef] __rcu
*parent
> kernel/sched/MuQSS.c:2530:17: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct task_struct *rq_curr @@ got struct task_struct
[noderef] __rcu *curr @@
> kernel/sched/MuQSS.c:2530:17: sparse: expected struct task_struct *rq_curr
kernel/sched/MuQSS.c:2530:17: sparse: got struct task_struct [noderef] __rcu *curr
> kernel/sched/MuQSS.c:3480:35: sparse: sparse: incorrect type in
initializer (different address spaces) @@ expected struct task_struct *p @@ got
struct task_struct [noderef] __rcu *curr @@
kernel/sched/MuQSS.c:3480:35: sparse:
expected struct task_struct *p
kernel/sched/MuQSS.c:3480:35: sparse: got struct task_struct [noderef] __rcu *curr
> kernel/sched/MuQSS.c:3712:37: sparse: sparse: incorrect type in
argument 2 (different address spaces) @@ expected struct task_struct *p @@ got
struct task_struct [noderef] __rcu *curr @@
kernel/sched/MuQSS.c:3712:37: sparse:
expected struct task_struct *p
kernel/sched/MuQSS.c:3712:37: sparse: got struct task_struct [noderef] __rcu *curr
> kernel/sched/MuQSS.c:4158:14: sparse: sparse: incorrect type in
assignment (different address spaces) @@ expected struct task_struct *prev @@ got
struct task_struct [noderef] __rcu *curr @@
> kernel/sched/MuQSS.c:4158:14: sparse: expected struct task_struct *prev
kernel/sched/MuQSS.c:4158:14: sparse: got struct task_struct [noderef] __rcu *curr
> kernel/sched/MuQSS.c:4661:17: sparse: sparse: incompatible types
in comparison expression (different address spaces):
> kernel/sched/MuQSS.c:4661:17: sparse: struct task_struct *
> kernel/sched/MuQSS.c:4661:17: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.c:4834:22: sparse: sparse: incompatible types in comparison expression
(different address spaces):
kernel/sched/MuQSS.c:4834:22: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.c:4834:22: sparse: struct task_struct *
> kernel/sched/MuQSS.c:5847:14: sparse: sparse: incorrect type in
assignment (different address spaces) @@ expected struct task_struct *rq_p @@ got
struct task_struct [noderef] __rcu *curr @@
> kernel/sched/MuQSS.c:5847:14: sparse: expected struct task_struct *rq_p
kernel/sched/MuQSS.c:5847:14: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/MuQSS.c:5855:34: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct task_struct *p @@ got struct task_struct
[noderef] __rcu *curr @@
kernel/sched/MuQSS.c:5855:34: sparse: expected struct task_struct *p
kernel/sched/MuQSS.c:5855:34: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/MuQSS.c:6117: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/MuQSS.c:6117:25: sparse: expected struct task_struct *p
kernel/sched/MuQSS.c:6117:25: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/MuQSS.c:1234:24: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct task_struct *p @@ got struct task_struct
[noderef] __rcu *curr @@
kernel/sched/MuQSS.c:1234:24: sparse: expected struct task_struct *p
kernel/sched/MuQSS.c:1234:24: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/MuQSS.c:1225:27: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/MuQSS.c:1225:27: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.c:1225:27: sparse: struct task_struct *
kernel/sched/MuQSS.c:1225:27: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/MuQSS.c:1225:27: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.c:1225:27: sparse: struct task_struct *
kernel/sched/MuQSS.c:3398:15: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/MuQSS.c:3398:15: sparse: struct task_struct *
kernel/sched/MuQSS.c:3398:15: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.c: note: in included file:
kernel/sched/MuQSS.h:382:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct *
kernel/sched/MuQSS.h:382:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct *
kernel/sched/MuQSS.h:382:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct *
kernel/sched/MuQSS.h:382:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/MuQSS.h:382:25: sparse: struct task_struct *
vim +2471 kernel/sched/MuQSS.c
49e82d66c704858 Con Kolivas 2019-10-25 2452
49e82d66c704858 Con Kolivas 2019-10-25 2453 /*
49e82d66c704858 Con Kolivas 2019-10-25 2454 * High-resolution time_slice expiry.
49e82d66c704858 Con Kolivas 2019-10-25 2455 * Runs from hardirq context with interrupts
disabled.
49e82d66c704858 Con Kolivas 2019-10-25 2456 */
49e82d66c704858 Con Kolivas 2019-10-25 2457 static enum hrtimer_restart hrexpiry(struct
hrtimer *timer)
49e82d66c704858 Con Kolivas 2019-10-25 2458 {
49e82d66c704858 Con Kolivas 2019-10-25 2459 struct rq *rq = container_of(timer, struct
rq, hrexpiry_timer);
49e82d66c704858 Con Kolivas 2019-10-25 2460 struct task_struct *p;
49e82d66c704858 Con Kolivas 2019-10-25 2461
49e82d66c704858 Con Kolivas 2019-10-25 2462 /* This can happen during CPU hotplug /
resume */
49e82d66c704858 Con Kolivas 2019-10-25 2463 if (unlikely(cpu_of(rq) !=
smp_processor_id()))
49e82d66c704858 Con Kolivas 2019-10-25 2464 goto out;
49e82d66c704858 Con Kolivas 2019-10-25 2465
49e82d66c704858 Con Kolivas 2019-10-25 2466 /*
49e82d66c704858 Con Kolivas 2019-10-25 2467 * We're doing this without the
runqueue lock but this should always
49e82d66c704858 Con Kolivas 2019-10-25 2468 * be run on the local CPU. Time slice
should run out in __schedule
49e82d66c704858 Con Kolivas 2019-10-25 2469 * but we set it to zero here in case
niffies is slightly less.
49e82d66c704858 Con Kolivas 2019-10-25 2470 */
49e82d66c704858 Con Kolivas 2019-10-25 @2471 p = rq->curr;
49e82d66c704858 Con Kolivas 2019-10-25 2472 p->time_slice = 0;
49e82d66c704858 Con Kolivas 2019-10-25 2473 __set_tsk_resched(p);
49e82d66c704858 Con Kolivas 2019-10-25 2474 out:
49e82d66c704858 Con Kolivas 2019-10-25 2475 return HRTIMER_NORESTART;
49e82d66c704858 Con Kolivas 2019-10-25 2476 }
49e82d66c704858 Con Kolivas 2019-10-25 2477
49e82d66c704858 Con Kolivas 2019-10-25 2478 /*
49e82d66c704858 Con Kolivas 2019-10-25 2479 * Called to set the hrexpiry timer state.
49e82d66c704858 Con Kolivas 2019-10-25 2480 *
49e82d66c704858 Con Kolivas 2019-10-25 2481 * called with irqs disabled from the local
CPU only
49e82d66c704858 Con Kolivas 2019-10-25 2482 */
49e82d66c704858 Con Kolivas 2019-10-25 2483 static void hrexpiry_start(struct rq *rq,
u64 delay)
49e82d66c704858 Con Kolivas 2019-10-25 2484 {
49e82d66c704858 Con Kolivas 2019-10-25 2485 if (!hrexpiry_enabled(rq))
49e82d66c704858 Con Kolivas 2019-10-25 2486 return;
49e82d66c704858 Con Kolivas 2019-10-25 2487
49e82d66c704858 Con Kolivas 2019-10-25 2488 hrtimer_start(&rq->hrexpiry_timer,
ns_to_ktime(delay),
49e82d66c704858 Con Kolivas 2019-10-25 2489 HRTIMER_MODE_REL_PINNED);
49e82d66c704858 Con Kolivas 2019-10-25 2490 }
49e82d66c704858 Con Kolivas 2019-10-25 2491
49e82d66c704858 Con Kolivas 2019-10-25 2492 static void init_rq_hrexpiry(struct rq *rq)
49e82d66c704858 Con Kolivas 2019-10-25 2493 {
49e82d66c704858 Con Kolivas 2019-10-25 2494 hrtimer_init(&rq->hrexpiry_timer,
CLOCK_MONOTONIC, HRTIMER_MODE_REL);
49e82d66c704858 Con Kolivas 2019-10-25 2495 rq->hrexpiry_timer.function = hrexpiry;
49e82d66c704858 Con Kolivas 2019-10-25 2496 }
49e82d66c704858 Con Kolivas 2019-10-25 2497
49e82d66c704858 Con Kolivas 2019-10-25 2498 static inline int rq_dither(struct rq *rq)
49e82d66c704858 Con Kolivas 2019-10-25 2499 {
49e82d66c704858 Con Kolivas 2019-10-25 2500 if (!hrexpiry_enabled(rq))
49e82d66c704858 Con Kolivas 2019-10-25 2501 return HALF_JIFFY_US;
49e82d66c704858 Con Kolivas 2019-10-25 2502 return 0;
49e82d66c704858 Con Kolivas 2019-10-25 2503 }
49e82d66c704858 Con Kolivas 2019-10-25 2504
49e82d66c704858 Con Kolivas 2019-10-25 2505 /*
49e82d66c704858 Con Kolivas 2019-10-25 2506 * wake_up_new_task - wake up a newly
created task for the first time.
49e82d66c704858 Con Kolivas 2019-10-25 2507 *
49e82d66c704858 Con Kolivas 2019-10-25 2508 * This function will do some initial
scheduler statistics housekeeping
49e82d66c704858 Con Kolivas 2019-10-25 2509 * that must be done for every newly created
context, then puts the task
49e82d66c704858 Con Kolivas 2019-10-25 2510 * on the runqueue and wakes it.
49e82d66c704858 Con Kolivas 2019-10-25 2511 */
49e82d66c704858 Con Kolivas 2019-10-25 2512 void wake_up_new_task(struct task_struct
*p)
49e82d66c704858 Con Kolivas 2019-10-25 2513 {
49e82d66c704858 Con Kolivas 2019-10-25 2514 struct task_struct *parent, *rq_curr;
49e82d66c704858 Con Kolivas 2019-10-25 2515 struct rq *rq, *new_rq;
49e82d66c704858 Con Kolivas 2019-10-25 2516 unsigned long flags;
49e82d66c704858 Con Kolivas 2019-10-25 2517
49e82d66c704858 Con Kolivas 2019-10-25 @2518 parent = p->parent;
49e82d66c704858 Con Kolivas 2019-10-25 2519
49e82d66c704858 Con Kolivas 2019-10-25 2520 raw_spin_lock_irqsave(&p->pi_lock,
flags);
49e82d66c704858 Con Kolivas 2019-10-25 2521 p->state = TASK_RUNNING;
49e82d66c704858 Con Kolivas 2019-10-25 2522 /* Task_rq can't change yet on a new
task */
49e82d66c704858 Con Kolivas 2019-10-25 2523 new_rq = rq = task_rq(p);
49e82d66c704858 Con Kolivas 2019-10-25 2524 if (unlikely(needs_other_cpu(p,
task_cpu(p)))) {
49e82d66c704858 Con Kolivas 2019-10-25 2525 set_task_cpu(p, valid_task_cpu(p));
49e82d66c704858 Con Kolivas 2019-10-25 2526 new_rq = task_rq(p);
49e82d66c704858 Con Kolivas 2019-10-25 2527 }
49e82d66c704858 Con Kolivas 2019-10-25 2528
49e82d66c704858 Con Kolivas 2019-10-25 2529 double_rq_lock(rq, new_rq);
49e82d66c704858 Con Kolivas 2019-10-25 @2530 rq_curr = rq->curr;
49e82d66c704858 Con Kolivas 2019-10-25 2531
49e82d66c704858 Con Kolivas 2019-10-25 2532 /*
49e82d66c704858 Con Kolivas 2019-10-25 2533 * Make sure we do not leak PI boosting
priority to the child.
49e82d66c704858 Con Kolivas 2019-10-25 2534 */
49e82d66c704858 Con Kolivas 2019-10-25 2535 p->prio = rq_curr->normal_prio;
49e82d66c704858 Con Kolivas 2019-10-25 2536
49e82d66c704858 Con Kolivas 2019-10-25 2537 trace_sched_wakeup_new(p);
49e82d66c704858 Con Kolivas 2019-10-25 2538
49e82d66c704858 Con Kolivas 2019-10-25 2539 /*
49e82d66c704858 Con Kolivas 2019-10-25 2540 * Share the timeslice between parent and
child, thus the
49e82d66c704858 Con Kolivas 2019-10-25 2541 * total amount of pending timeslices in
the system doesn't change,
49e82d66c704858 Con Kolivas 2019-10-25 2542 * resulting in more scheduling fairness.
If it's negative, it won't
49e82d66c704858 Con Kolivas 2019-10-25 2543 * matter since that's the same as
being 0. rq->rq_deadline is only
49e82d66c704858 Con Kolivas 2019-10-25 2544 * modified within schedule() so it is
always equal to
49e82d66c704858 Con Kolivas 2019-10-25 2545 * current->deadline.
49e82d66c704858 Con Kolivas 2019-10-25 2546 */
49e82d66c704858 Con Kolivas 2019-10-25 2547 account_task_cpu(rq, rq_curr);
49e82d66c704858 Con Kolivas 2019-10-25 2548 p->last_ran = rq_curr->last_ran;
49e82d66c704858 Con Kolivas 2019-10-25 2549 if (likely(rq_curr->policy !=
SCHED_FIFO)) {
49e82d66c704858 Con Kolivas 2019-10-25 2550 rq_curr->time_slice /= 2;
49e82d66c704858 Con Kolivas 2019-10-25 2551 if (rq_curr->time_slice <
RESCHED_US) {
49e82d66c704858 Con Kolivas 2019-10-25 2552 /*
49e82d66c704858 Con Kolivas 2019-10-25 2553 * Forking task has run out of timeslice.
Reschedule it and
49e82d66c704858 Con Kolivas 2019-10-25 2554 * start its child with a new time slice
and deadline. The
49e82d66c704858 Con Kolivas 2019-10-25 2555 * child will end up running first
because its deadline will
49e82d66c704858 Con Kolivas 2019-10-25 2556 * be slightly earlier.
49e82d66c704858 Con Kolivas 2019-10-25 2557 */
49e82d66c704858 Con Kolivas 2019-10-25 2558 __set_tsk_resched(rq_curr);
49e82d66c704858 Con Kolivas 2019-10-25 2559 time_slice_expired(p, new_rq);
49e82d66c704858 Con Kolivas 2019-10-25 2560 if (suitable_idle_cpus(p))
49e82d66c704858 Con Kolivas 2019-10-25 2561 resched_best_idle(p, task_cpu(p));
49e82d66c704858 Con Kolivas 2019-10-25 2562 else if (unlikely(rq != new_rq))
49e82d66c704858 Con Kolivas 2019-10-25 2563 try_preempt(p, new_rq);
49e82d66c704858 Con Kolivas 2019-10-25 2564 } else {
49e82d66c704858 Con Kolivas 2019-10-25 2565 p->time_slice =
rq_curr->time_slice;
49e82d66c704858 Con Kolivas 2019-10-25 2566 if (rq_curr == parent && rq ==
new_rq && !suitable_idle_cpus(p)) {
49e82d66c704858 Con Kolivas 2019-10-25 2567 /*
49e82d66c704858 Con Kolivas 2019-10-25 2568 * The VM isn't cloned, so we're
in a good position to
49e82d66c704858 Con Kolivas 2019-10-25 2569 * do child-runs-first in anticipation
of an exec. This
49e82d66c704858 Con Kolivas 2019-10-25 2570 * usually avoids a lot of COW
overhead.
49e82d66c704858 Con Kolivas 2019-10-25 2571 */
49e82d66c704858 Con Kolivas 2019-10-25 2572 __set_tsk_resched(rq_curr);
49e82d66c704858 Con Kolivas 2019-10-25 2573 } else {
49e82d66c704858 Con Kolivas 2019-10-25 2574 /*
49e82d66c704858 Con Kolivas 2019-10-25 2575 * Adjust the hrexpiry since rq_curr
will keep
49e82d66c704858 Con Kolivas 2019-10-25 2576 * running and its timeslice has been
shortened.
49e82d66c704858 Con Kolivas 2019-10-25 2577 */
49e82d66c704858 Con Kolivas 2019-10-25 2578 hrexpiry_start(rq,
US_TO_NS(rq_curr->time_slice));
49e82d66c704858 Con Kolivas 2019-10-25 2579 try_preempt(p, new_rq);
49e82d66c704858 Con Kolivas 2019-10-25 2580 }
49e82d66c704858 Con Kolivas 2019-10-25 2581 }
49e82d66c704858 Con Kolivas 2019-10-25 2582 } else {
49e82d66c704858 Con Kolivas 2019-10-25 2583 time_slice_expired(p, new_rq);
49e82d66c704858 Con Kolivas 2019-10-25 2584 try_preempt(p, new_rq);
49e82d66c704858 Con Kolivas 2019-10-25 2585 }
49e82d66c704858 Con Kolivas 2019-10-25 2586 activate_task(new_rq, p, 0);
49e82d66c704858 Con Kolivas 2019-10-25 2587 double_rq_unlock(rq, new_rq);
49e82d66c704858 Con Kolivas 2019-10-25 2588
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
49e82d66c704858 Con Kolivas 2019-10-25 2589 }
49e82d66c704858 Con Kolivas 2019-10-25 2590
:::::: The code at line 2471 was first introduced by commit
:::::: 49e82d66c704858ba77947984535811593d6dacb MultiQueue Skiplist Scheduler v0.204
:::::: TO: Con Kolivas <kernel(a)kolivas.org>
:::::: CC: Con Kolivas <kernel(a)kolivas.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org