Hi Peter,
[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on tip/locking/core]
[cannot apply to tip/sched/core kselftest/next tip/auto-latest v5.8-rc1 next-20200615]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see
https://stackoverflow.com/a/37406982]
url:
https://github.com/0day-ci/linux/commits/Peter-Oskolkov/futex-sched-intro...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
19f545b6e07f753c4dc639c2f0ab52345733b6a8
config: microblaze-randconfig-c022-20200616 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
microblaze-linux-ld: kernel/futex.o: in function `futex_wait_queue_me':
> kernel/futex.c:2649: undefined reference to
`wake_up_process_prefer_current_cpu'
vim +2649 kernel/futex.c
2611
2612 /**
2613 * futex_wait_queue_me() - queue_me() and wait for wakeup, timeout, or signal
2614 * @hb: the futex hash bucket, must be locked by the caller
2615 * @q: the futex_q to queue up on
2616 * @timeout: the prepared hrtimer_sleeper, or null for no timeout
2617 * @next: if present, wake next and hint to the scheduler that we'd
2618 * prefer to execute it locally.
2619 */
2620 static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
2621 struct hrtimer_sleeper *timeout,
2622 struct task_struct *next)
2623 {
2624 /*
2625 * The task state is guaranteed to be set before another task can
2626 * wake it. set_current_state() is implemented using smp_store_mb() and
2627 * queue_me() calls spin_unlock() upon completion, both serializing
2628 * access to the hash list and forcing another memory barrier.
2629 */
2630 set_current_state(TASK_INTERRUPTIBLE);
2631 queue_me(q, hb);
2632
2633 /* Arm the timer */
2634 if (timeout)
2635 hrtimer_sleeper_start_expires(timeout, HRTIMER_MODE_ABS);
2636
2637 /*
2638 * If we have been removed from the hash list, then another task
2639 * has tried to wake us, and we can skip the call to schedule().
2640 */
2641 if (likely(!plist_node_empty(&q->list))) {
2642 /*
2643 * If the timer has already expired, current will already be
2644 * flagged for rescheduling. Only call schedule if there
2645 * is no timeout, or if it has yet to expire.
2646 */
2647 if (!timeout || timeout->task) {
2648 if (next) {
2649 wake_up_process_prefer_current_cpu(next);
2650 put_task_struct(next);
2651 next = NULL;
2652 }
2653 freezable_schedule();
2654 }
2655 }
2656 __set_current_state(TASK_RUNNING);
2657
2658 if (next) {
2659 /* Maybe call wake_up_process_prefer_current_cpu()? */
2660 wake_up_process(next);
2661 put_task_struct(next);
2662 }
2663 }
2664
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org