All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Tejun Heo <tj@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [tj-sched-ext:scx-sub-sched-v2 29/40] kernel/sched/ext.c:2459:27: error: 'struct scx_sched_pcpu' has no member named 'bypass_host_seq'
Date: Wed, 25 Feb 2026 19:58:34 +0800	[thread overview]
Message-ID: <202602251959.622Zkdps-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git scx-sub-sched-v2
head:   f2122e67cf5ccb9d8844e72cd437a6fd56f0ad80
commit: 6f0091bd18342d745facac02f1f57490f8a67d49 [29/40] sched_ext: Implement hierarchical bypass mode
config: powerpc-randconfig-001-20260225 (https://download.01.org/0day-ci/archive/20260225/202602251959.622Zkdps-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 12.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260225/202602251959.622Zkdps-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/202602251959.622Zkdps-lkp@intel.com/

All errors (new ones prefixed by >>):

         |                                                    ^
   include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:507:50: note: in expansion of macro 'READ_ONCE'
     507 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
         |                                                  ^~~~~~~~~
   include/linux/rcupdate.h:626:31: note: in expansion of macro '__rcu_access_pointer'
     626 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
         |                               ^~~~~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:2435:24: note: in expansion of macro 'rcu_access_pointer'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                        ^~~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:2435:52: error: 'struct sched_ext_entity' has no member named 'sched'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                                                    ^
   include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rcupdate.h:507:50: note: in expansion of macro 'READ_ONCE'
     507 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
         |                                                  ^~~~~~~~~
   include/linux/rcupdate.h:626:31: note: in expansion of macro '__rcu_access_pointer'
     626 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
         |                               ^~~~~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:2435:24: note: in expansion of macro 'rcu_access_pointer'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                        ^~~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:2435:52: error: 'struct sched_ext_entity' has no member named 'sched'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                                                    ^
   include/linux/compiler_types.h:633:27: note: in definition of macro '__unqual_scalar_typeof'
     633 |                 _Generic((x),                                           \
         |                           ^
   include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
      50 |         __READ_ONCE(x);                                                 \
         |         ^~~~~~~~~~~
   include/linux/rcupdate.h:507:50: note: in expansion of macro 'READ_ONCE'
     507 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
         |                                                  ^~~~~~~~~
   include/linux/rcupdate.h:626:31: note: in expansion of macro '__rcu_access_pointer'
     626 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
         |                               ^~~~~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:2435:24: note: in expansion of macro 'rcu_access_pointer'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                        ^~~~~~~~~~~~~~~~~~
   In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:372,
                    from include/linux/build_bug.h:5,
                    from include/linux/container_of.h:5,
                    from include/linux/list.h:5,
                    from include/linux/smp.h:12,
                    from include/linux/sched/clock.h:5,
                    from kernel/sched/build_policy.c:16:
   kernel/sched/ext.c:2435:52: error: 'struct sched_ext_entity' has no member named 'sched'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                                                    ^
   include/asm-generic/rwonce.h:44:73: note: in definition of macro '__READ_ONCE'
      44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                         ^
   include/linux/rcupdate.h:507:50: note: in expansion of macro 'READ_ONCE'
     507 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
         |                                                  ^~~~~~~~~
   include/linux/rcupdate.h:626:31: note: in expansion of macro '__rcu_access_pointer'
     626 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
         |                               ^~~~~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:2435:24: note: in expansion of macro 'rcu_access_pointer'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                        ^~~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:2435:52: error: 'struct sched_ext_entity' has no member named 'sched'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                                                    ^
   include/linux/rcupdate.h:509:19: note: in definition of macro '__rcu_access_pointer'
     509 |         ((typeof(*p) __force __kernel *)(local)); \
         |                   ^
   kernel/sched/ext.c:2435:24: note: in expansion of macro 'rcu_access_pointer'
    2435 |                 sch == rcu_access_pointer(prev->scx.sched);
         |                        ^~~~~~~~~~~~~~~~~~
   In file included from kernel/sched/build_policy.c:62:
>> kernel/sched/ext.c:2459:27: error: 'struct scx_sched_pcpu' has no member named 'bypass_host_seq'
    2459 |                 if (!(pcpu->bypass_host_seq++ % SCX_BYPASS_HOST_NTH) &&
         |                           ^~
   kernel/sched/ext.c: In function '__scx_init_task':
   kernel/sched/ext.c:3190:28: warning: unused variable 'tg' [-Wunused-variable]
    3190 |         struct task_group *tg = task_group(p);
         |                            ^~
   kernel/sched/ext.c: In function 'scx_root_disable':
   kernel/sched/ext.c:4833:9: error: implicit declaration of function 'drain_descendants' [-Werror=implicit-function-declaration]
    4833 |         drain_descendants(sch);
         |         ^~~~~~~~~~~~~~~~~
   kernel/sched/ext.c:4894:29: error: 'struct scx_sched' has no member named 'cgrp'
    4894 |         set_cgroup_sched(sch->cgrp, NULL);
         |                             ^~
   kernel/sched/ext.c: In function 'scx_vexit':
   kernel/sched/ext.c:5368:9: warning: function 'scx_vexit' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
    5368 |         vscnprintf(ei->msg, SCX_EXIT_MSG_LEN, fmt, args);
         |         ^~~~~~~~~~
   kernel/sched/ext.c: In function 'scx_root_enable':
   kernel/sched/ext.c:5619:45: error: 'cgrp_dfl_root' undeclared (first use in this function)
    5619 |         sch = scx_alloc_and_add_sched(ops, &cgrp_dfl_root.cgrp, NULL);
         |                                             ^~~~~~~~~~~~~
   kernel/sched/ext.c:5619:45: note: each undeclared identifier is reported only once for each function it appears in
   kernel/sched/ext.c:5745:29: error: 'struct scx_sched' has no member named 'cgrp'
    5745 |         set_cgroup_sched(sch->cgrp, sch);
         |                             ^~
   kernel/sched/ext.c: At top level:
   kernel/sched/ext.c:4820:13: warning: 'scx_propgate_disable' defined but not used [-Wunused-function]
    4820 | static void scx_propgate_disable(struct scx_sched *sch) { }
         |             ^~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +2459 kernel/sched/ext.c

  2427	
  2428	static bool scx_dispatch_sched(struct scx_sched *sch, struct rq *rq,
  2429				       struct task_struct *prev)
  2430	{
  2431		struct scx_dsp_ctx *dspc = this_cpu_ptr(scx_dsp_ctx);
  2432		int nr_loops = SCX_DSP_MAX_LOOPS;
  2433		s32 cpu = cpu_of(rq);
  2434		bool prev_on_sch = (prev->sched_class == &ext_sched_class) &&
  2435			sch == rcu_access_pointer(prev->scx.sched);
  2436	
  2437		if (consume_global_dsq(sch, rq))
  2438			return true;
  2439	
  2440		if (bypass_dsp_enabled(sch)) {
  2441			struct scx_sched_pcpu *pcpu = per_cpu_ptr(sch->pcpu, cpu);
  2442	
  2443			/* if @sch is bypassing, only the bypass DSQs are active */
  2444			if (scx_bypassing(sch, cpu))
  2445				return consume_dispatch_q(sch, rq, bypass_dsq(sch, cpu));
  2446	
  2447			/*
  2448			 * If @sch isn't bypassing but its children are, @sch is
  2449			 * responsible for making forward progress for both its own
  2450			 * tasks that aren't bypassing and the bypassing descendants'
  2451			 * tasks. The following implements a simple built-in behavior -
  2452			 * let each CPU try to run the bypass DSQ every Nth time.
  2453			 *
  2454			 * Later, if necessary, we can add an ops flag to suppress the
  2455			 * auto-consumption and a kfunc to consume the bypass DSQ and,
  2456			 * so that the BPF scheduler can fully control scheduling of
  2457			 * bypassed tasks.
  2458			 */
> 2459			if (!(pcpu->bypass_host_seq++ % SCX_BYPASS_HOST_NTH) &&
  2460			    consume_dispatch_q(sch, rq, bypass_dsq(sch, cpu))) {
  2461				__scx_add_event(sch, SCX_EV_SUB_BYPASS_DISPATCH, 1);
  2462				return true;
  2463			}
  2464		}
  2465	
  2466		if (unlikely(!SCX_HAS_OP(sch, dispatch)) || !scx_rq_online(rq))
  2467			return false;
  2468	
  2469		dspc->rq = rq;
  2470	
  2471		/*
  2472		 * The dispatch loop. Because flush_dispatch_buf() may drop the rq lock,
  2473		 * the local DSQ might still end up empty after a successful
  2474		 * ops.dispatch(). If the local DSQ is empty even after ops.dispatch()
  2475		 * produced some tasks, retry. The BPF scheduler may depend on this
  2476		 * looping behavior to simplify its implementation.
  2477		 */
  2478		do {
  2479			dspc->nr_tasks = 0;
  2480	
  2481			SCX_CALL_OP(sch, SCX_KF_DISPATCH, dispatch, rq, cpu,
  2482				    prev_on_sch ? prev : NULL);
  2483	
  2484			flush_dispatch_buf(sch, rq);
  2485	
  2486			if ((prev->scx.flags & SCX_TASK_QUEUED) && prev->scx.slice) {
  2487				rq->scx.flags |= SCX_RQ_BAL_KEEP;
  2488				return true;
  2489			}
  2490			if (rq->scx.local_dsq.nr)
  2491				return true;
  2492			if (consume_global_dsq(sch, rq))
  2493				return true;
  2494	
  2495			/*
  2496			 * ops.dispatch() can trap us in this loop by repeatedly
  2497			 * dispatching ineligible tasks. Break out once in a while to
  2498			 * allow the watchdog to run. As IRQ can't be enabled in
  2499			 * balance(), we want to complete this scheduling cycle and then
  2500			 * start a new one. IOW, we want to call resched_curr() on the
  2501			 * next, most likely idle, task, not the current one. Use
  2502			 * __scx_bpf_kick_cpu() for deferred kicking.
  2503			 */
  2504			if (unlikely(!--nr_loops)) {
  2505				scx_kick_cpu(sch, cpu, 0);
  2506				break;
  2507			}
  2508		} while (dspc->nr_tasks);
  2509	
  2510		/*
  2511		 * Prevent the CPU from going idle while bypassed descendants have tasks
  2512		 * queued. Without this fallback, bypassed tasks could stall if the host
  2513		 * scheduler's ops.dispatch() doesn't yield any tasks.
  2514		 */
  2515		if (bypass_dsp_enabled(sch))
  2516			return consume_dispatch_q(sch, rq, bypass_dsq(sch, cpu));
  2517	
  2518		return false;
  2519	}
  2520	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2026-02-25 11:59 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202602251959.622Zkdps-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=tj@kernel.org \
    /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.