All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.