From: kernel test robot <lkp@intel.com>
To: John Stultz <jstultz@google.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v6 11/20] sched: Split scheduler execution context
Date: Sat, 11 Nov 2023 18:25:07 +0800 [thread overview]
Message-ID: <202311111836.bVMOgOgk-lkp@intel.com> (raw)
In-Reply-To: <20231106193524.866104-12-jstultz@google.com>
Hi John,
kernel test robot noticed the following build warnings:
[auto build test WARNING on tip/locking/core]
[also build test WARNING on v6.6]
[cannot apply to tip/sched/core tip/master linus/master tip/auto-latest next-20231110]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/John-Stultz/sched-Unify-runtime-accounting-across-classes/20231107-033946
base: tip/locking/core
patch link: https://lore.kernel.org/r/20231106193524.866104-12-jstultz%40google.com
patch subject: [PATCH v6 11/20] sched: Split scheduler execution context
config: i386-randconfig-062-20231111 (https://download.01.org/0day-ci/archive/20231111/202311111836.bVMOgOgk-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231111/202311111836.bVMOgOgk-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311111836.bVMOgOgk-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
kernel/sched/build_policy.c: note: in included file:
kernel/sched/rt.c:961:70: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:961:70: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:961:70: sparse: struct task_struct *
kernel/sched/rt.c:2411:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:2411:25: sparse: struct task_struct *
kernel/sched/rt.c:2411:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:1047:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1047:36: sparse: expected struct task_struct *curr
kernel/sched/rt.c:1047:36: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1585:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1585:31: sparse: expected struct task_struct *p
kernel/sched/rt.c:1585:31: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1924: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/rt.c:1924:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/rt.c:1924:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/rt.c:1605:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/rt.c:1605:14: sparse: expected struct task_struct *curr
kernel/sched/rt.c:1605:14: sparse: got struct task_struct [noderef] __rcu *
>> kernel/sched/rt.c:1606:18: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *selected @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/rt.c:1606:18: sparse: expected struct task_struct *selected
kernel/sched/rt.c:1606:18: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/rt.c:1667:43: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1667:43: sparse: expected struct task_struct *p
kernel/sched/rt.c:1667:43: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1710:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1710:36: sparse: expected struct task_struct *curr
kernel/sched/rt.c:1710:36: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:1730:63: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:1730:63: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:1730:63: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2093:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *task @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:2093:40: sparse: expected struct task_struct *task
kernel/sched/rt.c:2093:40: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2114:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/rt.c:2114:13: sparse: struct task_struct *
kernel/sched/rt.c:2114:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/rt.c:2462:54: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:2462:54: sparse: expected struct task_struct *tsk
kernel/sched/rt.c:2462:54: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2464:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:2464:38: sparse: expected struct task_struct *p
kernel/sched/rt.c:2464:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/rt.c:2464:66: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/rt.c:2464:66: sparse: expected struct task_struct *p
kernel/sched/rt.c:2464:66: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/build_policy.c: note: in included file:
kernel/sched/deadline.c:2301:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:2301:21: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2301:21: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:2311:13: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2311:13: sparse: struct task_struct *
kernel/sched/deadline.c:2311:13: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2419:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2419:25: sparse: struct task_struct *
kernel/sched/deadline.c:2419:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:1939:40: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct sched_dl_entity const *b @@ got struct sched_dl_entity [noderef] __rcu * @@
kernel/sched/deadline.c:1939:40: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:1939:40: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:1950:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:1950:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:1950:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1177:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:1177:21: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1177:21: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:1300:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:1300:36: sparse: expected struct task_struct *curr
kernel/sched/deadline.c:1300:36: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:2159: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/deadline.c:2159:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/deadline.c:2159:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/deadline.c:1823:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *curr @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/deadline.c:1823:14: sparse: expected struct task_struct *curr
kernel/sched/deadline.c:1823:14: sparse: got struct task_struct [noderef] __rcu *
>> kernel/sched/deadline.c:1824:18: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *selected @@ got struct task_struct [noderef] __rcu * @@
kernel/sched/deadline.c:1824:18: sparse: expected struct task_struct *selected
kernel/sched/deadline.c:1824:18: sparse: got struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:1900:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:1900:41: sparse: expected struct task_struct *p
kernel/sched/deadline.c:1900:41: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:2464:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:2464:38: sparse: expected struct task_struct *tsk
kernel/sched/deadline.c:2464:38: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:2466:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/deadline.c:2466:21: sparse: expected struct task_struct *p
kernel/sched/deadline.c:2466:21: sparse: got struct task_struct [noderef] __rcu *curr
kernel/sched/deadline.c:2468:42: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct sched_dl_entity const *b @@ got struct sched_dl_entity [noderef] __rcu * @@
kernel/sched/deadline.c:2468:42: sparse: expected struct sched_dl_entity const *b
kernel/sched/deadline.c:2468:42: sparse: got struct sched_dl_entity [noderef] __rcu *
kernel/sched/deadline.c:2643:29: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/deadline.c:2643:29: sparse: struct task_struct [noderef] __rcu *
kernel/sched/deadline.c:2643:29: sparse: struct task_struct *
kernel/sched/deadline.c:2692:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p @@ got struct task_struct [noderef] __rcu *curr @@
kernel/sched/build_policy.c: note: in included file:
kernel/sched/sched.h:2155:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2155:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2155:25: sparse: struct task_struct *
kernel/sched/sched.h:2155:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2155:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2155:25: sparse: struct task_struct *
kernel/sched/sched.h:2166:32: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2166:32: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2166:32: sparse: struct task_struct *
kernel/sched/sched.h:2155:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2155:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2155:25: sparse: struct task_struct *
kernel/sched/sched.h:2166:32: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2166:32: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2166:32: sparse: struct task_struct *
kernel/sched/sched.h:2155:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2155:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2155:25: sparse: struct task_struct *
kernel/sched/sched.h:2155:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2155:25: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2155:25: sparse: struct task_struct *
kernel/sched/sched.h:2166:32: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/sched.h:2166:32: sparse: struct task_struct [noderef] __rcu *
kernel/sched/sched.h:2166:32: sparse: struct task_struct *
vim +1606 kernel/sched/rt.c
1590
1591 static int
1592 select_task_rq_rt(struct task_struct *p, int cpu, int flags)
1593 {
1594 struct task_struct *curr, *selected;
1595 struct rq *rq;
1596 bool test;
1597
1598 /* For anything but wake ups, just return the task_cpu */
1599 if (!(flags & (WF_TTWU | WF_FORK)))
1600 goto out;
1601
1602 rq = cpu_rq(cpu);
1603
1604 rcu_read_lock();
1605 curr = READ_ONCE(rq->curr); /* unlocked access */
> 1606 selected = READ_ONCE(rq_selected(rq));
1607
1608 /*
1609 * If the current task on @p's runqueue is an RT task, then
1610 * try to see if we can wake this RT task up on another
1611 * runqueue. Otherwise simply start this RT task
1612 * on its current runqueue.
1613 *
1614 * We want to avoid overloading runqueues. If the woken
1615 * task is a higher priority, then it will stay on this CPU
1616 * and the lower prio task should be moved to another CPU.
1617 * Even though this will probably make the lower prio task
1618 * lose its cache, we do not want to bounce a higher task
1619 * around just because it gave up its CPU, perhaps for a
1620 * lock?
1621 *
1622 * For equal prio tasks, we just let the scheduler sort it out.
1623 *
1624 * Otherwise, just let it ride on the affined RQ and the
1625 * post-schedule router will push the preempted task away
1626 *
1627 * This test is optimistic, if we get it wrong the load-balancer
1628 * will have to sort it out.
1629 *
1630 * We take into account the capacity of the CPU to ensure it fits the
1631 * requirement of the task - which is only important on heterogeneous
1632 * systems like big.LITTLE.
1633 */
1634 test = curr &&
1635 unlikely(rt_task(selected)) &&
1636 (curr->nr_cpus_allowed < 2 || selected->prio <= p->prio);
1637
1638 if (test || !rt_task_fits_capacity(p, cpu)) {
1639 int target = find_lowest_rq(p);
1640
1641 /*
1642 * Bail out if we were forcing a migration to find a better
1643 * fitting CPU but our search failed.
1644 */
1645 if (!test && target != -1 && !rt_task_fits_capacity(p, target))
1646 goto out_unlock;
1647
1648 /*
1649 * Don't bother moving it if the destination CPU is
1650 * not running a lower priority task.
1651 */
1652 if (target != -1 &&
1653 p->prio < cpu_rq(target)->rt.highest_prio.curr)
1654 cpu = target;
1655 }
1656
1657 out_unlock:
1658 rcu_read_unlock();
1659
1660 out:
1661 return cpu;
1662 }
1663
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2023-11-11 10:25 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-06 19:34 [PATCH v6 00/20] Proxy Execution: A generalized form of Priority Inheritance v6 John Stultz
2023-11-06 19:34 ` [PATCH v6 01/20] sched: Unify runtime accounting across classes John Stultz
2023-12-17 16:19 ` Qais Yousef
2023-12-18 20:23 ` John Stultz
2023-12-28 16:21 ` Qais Yousef
2023-11-06 19:34 ` [PATCH v6 02/20] locking/mutex: Removes wakeups from under mutex::wait_lock John Stultz
2023-11-06 19:34 ` [PATCH v6 03/20] locking/mutex: make mutex::wait_lock irq safe John Stultz
2023-11-06 19:34 ` [PATCH v6 04/20] locking/mutex: Expose __mutex_owner() John Stultz
2023-11-06 19:34 ` [PATCH v6 05/20] locking/mutex: Rework task_struct::blocked_on John Stultz
2023-11-06 19:34 ` [PATCH v6 06/20] locking/mutex: Add task_struct::blocked_lock to serialize changes to the blocked_on state John Stultz
2023-11-06 19:34 ` [PATCH v6 07/20] locking/mutex: Add p->blocked_on wrappers for correctness checks John Stultz
2023-11-06 19:34 ` [PATCH v6 08/20] sched: Add CONFIG_PROXY_EXEC & boot argument to enable/disable John Stultz
2023-11-06 19:34 ` [PATCH v6 09/20] locking/mutex: Split blocked_on logic into two states (blocked_on and blocked_on_waking) John Stultz
2023-11-06 19:34 ` [PATCH v6 10/20] locking/mutex: Switch to mutex handoffs for CONFIG_PROXY_EXEC John Stultz
2023-11-06 19:34 ` [PATCH v6 11/20] sched: Split scheduler execution context John Stultz
2023-11-11 9:34 ` kernel test robot
2023-11-11 10:25 ` kernel test robot [this message]
2023-11-06 19:34 ` [PATCH v6 12/20] sched: Fix runtime accounting w/ split exec & sched contexts John Stultz
2023-11-11 11:26 ` kernel test robot
2023-11-06 19:34 ` [PATCH v6 13/20] sched: Split out __sched() deactivate task logic into a helper John Stultz
2023-11-06 19:34 ` [PATCH v6 14/20] sched: Add a very simple proxy() function John Stultz
2023-11-11 13:32 ` kernel test robot
2023-11-06 19:34 ` [PATCH v6 15/20] sched: Add proxy deactivate helper John Stultz
2023-11-08 2:51 ` kernel test robot
2023-11-18 0:27 ` John Stultz
2023-11-06 19:34 ` [PATCH v6 16/20] sched: Fix proxy/current (push,pull)ability John Stultz
2023-11-06 19:35 ` [PATCH v6 17/20] sched: Start blocked_on chain processing in proxy() John Stultz
2023-11-06 19:35 ` [PATCH v6 18/20] sched: Handle blocked-waiter migration (and return migration) John Stultz
2023-11-09 5:31 ` Xuewen Yan
2023-11-09 6:08 ` John Stultz
2023-11-09 6:38 ` Xuewen Yan
2023-11-10 3:45 ` John Stultz
2023-11-06 19:35 ` [PATCH v6 19/20] sched: Add blocked_donor link to task for smarter mutex handoffs John Stultz
2023-11-06 19:35 ` [PATCH v6 20/20] sched: Add deactivated (sleeping) owner handling to proxy() John Stultz
[not found] ` <20231108111458.1368-1-hdanton@sina.com>
2023-11-08 22:13 ` [PATCH v6 00/20] Proxy Execution: A generalized form of Priority Inheritance v6 John Stultz
2023-11-10 9:07 ` Xuewen Yan
2023-12-13 6:37 ` K Prateek Nayak
2023-12-13 16:20 ` Metin Kaya
2023-12-13 19:11 ` John Stultz
2023-12-14 5:15 ` K Prateek Nayak
2023-12-14 1:00 ` John Stultz
2023-12-14 1:03 ` John Stultz
2023-12-17 3:07 ` Qais Yousef
2023-12-18 23:38 ` John Stultz
2023-12-28 16:45 ` Qais Yousef
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202311111836.bVMOgOgk-lkp@intel.com \
--to=lkp@intel.com \
--cc=jstultz@google.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.