mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] sched/debug, sys_info: Introduce SYS_INFO_CPU_RUNQUEUES
@ 2026-09-11  2:28 Aaron Tomlin
  2026-09-11 20:45 ` kernel test robot
  0 siblings, 1 reply; 3+ messages in thread
From: Aaron Tomlin @ 2026-09-11  2:28 UTC (permalink / raw)
  To: akpm, mingo, peterz, juri.lelli, vincent.guittot
  Cc: dietmar.eggemann, rostedt, bsegall, mgorman, vschneid, feng.tang,
	pmladek, kprateek.nayak, atomlin, linux-kernel

When investigating kernel panics, inspectability of per-CPU runqueues
and runnable task states is valuable for diagnosing CPU starvation
priority inversion, etc.

While debugfs (/sys/kernel/debug/sched/debug) exposes runqueue metrics
to userspace, these details are not captured during an automated kernel
panic or crash dump. Capturing per-CPU runqueue state directly into
log_buf fills this diagnostic gap for post-mortem crash analysis.

Introduce SYS_INFO_CPU_RUNQUEUES and its corresponding string token
"cpu_runqueues" to panic_sys_info. Add sched_show_runqueues(), modelled
on print_rq(), to emit per-CPU scheduler diagnostics to the kernel log.

Unlike /sys/kernel/debug/sched/debug which dumps all threads assigned to
a CPU, sched_show_runqueues() only emits threads that are actively
running or queued on the runqueue (via task_on_rq_queued() and
task_current()). This keeps the panic log concise, reflects the true
runqueue depth, and prevents overflowing the printk ring buffer on
systems with high thread counts.

Additionally, to guarantee deadlock and memory safety in panic context:
    - Acquire the runqueue lock using raw_spin_rq_trylock() with
      READ_ONCE() fallback, marking contended queues with
      " (contended)"

    - Wrap the per-CPU inspection in rcu_read_lock() to protect the
      sampled current task (comm and PID) against premature release
      during pr_info() across other callers

    - Omit cgroup group-path printing in print_rq() to avoid acquiring
      cgroup_mutex and traversing kernfs dentries

Suggested-by: Rishil Sandip Shah <rishil1999@outlook.com>
Signed-off-by: Aaron Tomlin <atomlin@atomlin.com>
---
 Documentation/admin-guide/sysctl/kernel.rst |  1 +
 include/linux/sched/debug.h                 |  1 +
 include/linux/sys_info.h                    |  1 +
 kernel/sched/debug.c                        | 76 +++++++++++++++++----
 lib/sys_info.c                              |  4 ++
 5 files changed, 70 insertions(+), 13 deletions(-)

diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
index b6328cd0f43e..0962b031e035 100644
--- a/Documentation/admin-guide/sysctl/kernel.rst
+++ b/Documentation/admin-guide/sysctl/kernel.rst
@@ -939,6 +939,7 @@ locks           print locks info if CONFIG_LOCKDEP is on
 ftrace          print ftrace buffer
 all_bt          print all CPUs backtrace (if available in the arch)
 blocked_tasks   print only tasks in uninterruptible (blocked) state
+cpu_runqueues   print per-CPU runqueue depth and runnable tasks
 =============   ===================================================
 
 
diff --git a/include/linux/sched/debug.h b/include/linux/sched/debug.h
index 35ed4577a6cc..d4276d8ead29 100644
--- a/include/linux/sched/debug.h
+++ b/include/linux/sched/debug.h
@@ -39,6 +39,7 @@ struct seq_file;
 extern void proc_sched_show_task(struct task_struct *p,
 				 struct pid_namespace *ns, struct seq_file *m);
 extern void proc_sched_set_task(struct task_struct *p);
+extern void sched_show_runqueues(void);
 
 /* Attach to any functions which should be ignored in wchan output. */
 #define __sched		__section(".sched.text")
diff --git a/include/linux/sys_info.h b/include/linux/sys_info.h
index a5bc3ea3d44b..c571aad1e178 100644
--- a/include/linux/sys_info.h
+++ b/include/linux/sys_info.h
@@ -16,6 +16,7 @@
 #define SYS_INFO_PANIC_CONSOLE_REPLAY	0x00000020
 #define SYS_INFO_ALL_BT			0x00000040
 #define SYS_INFO_BLOCKED_TASKS		0x00000080
+#define SYS_INFO_CPU_RUNQUEUES		0x00000100
 
 void sys_info(unsigned long si_mask);
 unsigned long sys_info_parse_param(char *str);
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 72236db67983..d510a23b625d 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -968,7 +968,8 @@ static void task_group_path(struct task_group *tg, char *path, int plen)
 #endif
 
 static void
-print_task(struct seq_file *m, struct rq *rq, struct task_struct *p)
+print_task(struct seq_file *m, struct rq *rq, struct task_struct *p,
+	   bool show_cgroup_path)
 {
 	if (task_current(rq, p))
 		SEQ_printf(m, ">R");
@@ -996,13 +997,15 @@ print_task(struct seq_file *m, struct rq *rq, struct task_struct *p)
 	SEQ_printf(m, "   %d      %d", task_node(p), task_numa_group_id(p));
 #endif
 #ifdef CONFIG_CGROUP_SCHED
-	SEQ_printf_task_group_path(m, task_group(p), "        %s")
+	if (show_cgroup_path)
+		SEQ_printf_task_group_path(m, task_group(p), "        %s")
 #endif
 
 	SEQ_printf(m, "\n");
 }
 
-static void print_rq(struct seq_file *m, struct rq *rq, int rq_cpu)
+static void print_rq(struct seq_file *m, struct rq *rq, int rq_cpu,
+		     bool show_cgroup_path, bool queued_only)
 {
 	struct task_struct *g, *p;
 
@@ -1010,31 +1013,36 @@ static void print_rq(struct seq_file *m, struct rq *rq, int rq_cpu)
 	SEQ_printf(m, "runnable tasks:\n");
 	SEQ_printf(m, " S            task   PID     weight       vruntime   eligible    "
 		   "deadline             slice          sum-exec      switches  "
-		   "prio         wait-time        sum-sleep       sum-block"
+		   "prio         wait-time        sum-sleep       sum-block");
 #ifdef CONFIG_NUMA_BALANCING
-		   "  node   group-id"
+	SEQ_printf(m, "  node   group-id");
 #endif
 #ifdef CONFIG_CGROUP_SCHED
-		   "  group-path"
+	if (show_cgroup_path)
+		SEQ_printf(m, "  group-path");
 #endif
-		   "\n");
+	SEQ_printf(m, "\n");
 	SEQ_printf(m, "-------------------------------------------------------"
 		   "------------------------------------------------------"
-		   "------------------------------------------------------"
+		   "------------------------------------------------------");
 #ifdef CONFIG_NUMA_BALANCING
-		   "--------------"
+	SEQ_printf(m, "--------------");
 #endif
 #ifdef CONFIG_CGROUP_SCHED
-		   "--------------"
+	if (show_cgroup_path)
+		SEQ_printf(m, "--------------");
 #endif
-		   "\n");
+	SEQ_printf(m, "\n");
 
 	rcu_read_lock();
 	for_each_process_thread(g, p) {
 		if (task_cpu(p) != rq_cpu)
 			continue;
 
-		print_task(m, rq, p);
+		if (queued_only && !task_current(rq, p) && !task_on_rq_queued(p))
+			continue;
+
+		print_task(m, rq, p, show_cgroup_path);
 	}
 	rcu_read_unlock();
 }
@@ -1234,7 +1242,7 @@ do {									\
 	print_rt_stats(m, cpu);
 	print_dl_stats(m, cpu);
 
-	print_rq(m, rq, cpu);
+	print_rq(m, rq, cpu, true, false);
 	SEQ_printf(m, "\n");
 }
 
@@ -1322,6 +1330,48 @@ void sysrq_sched_debug_show(void)
 	}
 }
 
+void sched_show_runqueues(void)
+{
+	int cpu;
+
+	pr_info("CPU Runqueues:\n");
+	for_each_online_cpu(cpu) {
+		struct rq *rq = cpu_rq(cpu);
+		struct task_struct *curr;
+		unsigned int nr_running;
+		u64 nr_switches;
+		unsigned long flags;
+		bool locked;
+
+		touch_nmi_watchdog();
+		touch_all_softlockup_watchdogs();
+
+		rcu_read_lock();
+		local_irq_save(flags);
+		locked = raw_spin_rq_trylock(rq);
+		if (locked) {
+			nr_running = rq->nr_running;
+			nr_switches = rq->nr_switches;
+			curr = rq->curr;
+			raw_spin_rq_unlock(rq);
+		} else {
+			nr_running = READ_ONCE(rq->nr_running);
+			nr_switches = READ_ONCE(rq->nr_switches);
+			curr = READ_ONCE(rq->curr);
+		}
+		local_irq_restore(flags);
+
+		pr_info("cpu#%d: nr_running:%u switches:%llu curr:%s[%d]%s\n",
+			cpu, nr_running, nr_switches,
+			curr ? curr->comm : "<none>",
+			curr ? task_pid_nr(curr) : -1,
+			locked ? "" : " (contended)");
+
+		print_rq(NULL, rq, cpu, false, true);
+		rcu_read_unlock();
+	}
+}
+
 /*
  * This iterator needs some explanation.
  * It returns 1 for the header position.
diff --git a/lib/sys_info.c b/lib/sys_info.c
index f32a06ec9ed4..fc5bfcc121de 100644
--- a/lib/sys_info.c
+++ b/lib/sys_info.c
@@ -22,6 +22,7 @@ static const char * const si_names[] = {
 	[ilog2(SYS_INFO_PANIC_CONSOLE_REPLAY)]	= "",
 	[ilog2(SYS_INFO_ALL_BT)]		= "all_bt",
 	[ilog2(SYS_INFO_BLOCKED_TASKS)]		= "blocked_tasks",
+	[ilog2(SYS_INFO_CPU_RUNQUEUES)]		= "cpu_runqueues",
 };
 
 /*
@@ -158,6 +159,9 @@ static void __sys_info(unsigned long si_mask)
 
 	if (si_mask & SYS_INFO_BLOCKED_TASKS)
 		show_state_filter(TASK_UNINTERRUPTIBLE);
+
+	if (si_mask & SYS_INFO_CPU_RUNQUEUES)
+		sched_show_runqueues();
 }
 
 void sys_info(unsigned long si_mask)
-- 
2.55.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] sched/debug, sys_info: Introduce SYS_INFO_CPU_RUNQUEUES
  2026-09-11  2:28 [PATCH] sched/debug, sys_info: Introduce SYS_INFO_CPU_RUNQUEUES Aaron Tomlin
@ 2026-09-11 20:45 ` kernel test robot
  2026-09-12  1:00   ` Aaron Tomlin
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2026-09-11 20:45 UTC (permalink / raw)
  To: Aaron Tomlin, akpm, mingo, peterz, juri.lelli, vincent.guittot
  Cc: oe-kbuild-all, dietmar.eggemann, rostedt, bsegall, mgorman,
	vschneid, feng.tang, pmladek, kprateek.nayak, atomlin,
	linux-kernel

Hi Aaron,

kernel test robot noticed the following build warnings:

[auto build test WARNING on akpm-mm/mm-everything]
[also build test WARNING on tip/sched/core akpm-mm/mm-nonmm-unstable linus/master v7.3-rc2 next-20260909]
[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/Aaron-Tomlin/sched-debug-sys_info-Introduce-SYS_INFO_CPU_RUNQUEUES/20260910-222844
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/20260911022844.521413-1-atomlin%40atomlin.com
patch subject: [PATCH] sched/debug, sys_info: Introduce SYS_INFO_CPU_RUNQUEUES
config: microblaze-randconfig-r132-20260911 (https://download.01.org/0day-ci/archive/20260912/202609120421.J3jtss6v-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260912/202609120421.J3jtss6v-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/202609120421.J3jtss6v-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   kernel/sched/build_utility.c: note: in included file:
   kernel/sched/debug.c:868:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/debug.c:868:17: sparse:     expected struct sched_domain *[assigned] sd
   kernel/sched/debug.c:868:17: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/debug.c:1220:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/debug.c:1220:9: sparse:     expected struct task_struct *tsk
   kernel/sched/debug.c:1220:9: sparse:     got struct task_struct [noderef] __rcu *curr
   kernel/sched/debug.c:1220:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/debug.c:1220:9: sparse:     expected struct task_struct *tsk
   kernel/sched/debug.c:1220:9: sparse:     got struct task_struct [noderef] __rcu *curr
>> kernel/sched/debug.c:1355:30: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *curr @@     got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/debug.c:1355:30: sparse:     expected struct task_struct *curr
   kernel/sched/debug.c:1355:30: sparse:     got struct task_struct [noderef] __rcu *curr
>> kernel/sched/debug.c:1360:30: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *curr @@     got struct task_struct [noderef] __rcu * @@
   kernel/sched/debug.c:1360:30: sparse:     expected struct task_struct *curr
   kernel/sched/debug.c:1360:30: sparse:     got struct task_struct [noderef] __rcu *
   kernel/sched/build_utility.c: note: in included file:
   kernel/sched/topology.c:118:56: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:118:56: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:118:56: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:137:60: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:137:60: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:137:60: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:160:20: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:160:20: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:160:20: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:470:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct perf_domain *pd @@     got struct perf_domain [noderef] __rcu *pd @@
   kernel/sched/topology.c:470:19: sparse:     expected struct perf_domain *pd
   kernel/sched/topology.c:470:19: sparse:     got struct perf_domain [noderef] __rcu *pd
   kernel/sched/topology.c:654:49: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:654:49: sparse:     expected struct sched_domain *parent
   kernel/sched/topology.c:654:49: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:753:50: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:753:50: sparse:     expected struct sched_domain *parent
   kernel/sched/topology.c:753:50: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:775:55: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain [noderef] __rcu *[noderef] __rcu child @@     got struct sched_domain *[assigned] tmp @@
   kernel/sched/topology.c:775:55: sparse:     expected struct sched_domain [noderef] __rcu *[noderef] __rcu child
   kernel/sched/topology.c:775:55: sparse:     got struct sched_domain *[assigned] tmp
   kernel/sched/topology.c:788:29: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] tmp @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:788:29: sparse:     expected struct sched_domain *[assigned] tmp
   kernel/sched/topology.c:788:29: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:793:20: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:793:20: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:793:20: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:826:13: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] tmp @@     got struct sched_domain [noderef] __rcu *sd @@
   kernel/sched/topology.c:826:13: sparse:     expected struct sched_domain *[assigned] tmp
   kernel/sched/topology.c:826:13: sparse:     got struct sched_domain [noderef] __rcu *sd
   kernel/sched/topology.c:1069:38: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *sdp @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:1069:38: sparse:     expected struct sched_domain *sdp
   kernel/sched/topology.c:1069:38: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:1076:21: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sdp @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:1076:21: sparse:     expected struct sched_domain *sdp
   kernel/sched/topology.c:1076:21: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:1223:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1223:70: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:1223:70: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1252:59: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1252:59: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:1252:59: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1298:57: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1298:57: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:1298:57: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1300:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sibling @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1300:25: sparse:     expected struct sched_domain *sibling
   kernel/sched/topology.c:1300:25: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1308:55: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1308:55: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:1308:55: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1310:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sibling @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1310:25: sparse:     expected struct sched_domain *sibling
   kernel/sched/topology.c:1310:25: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1380:62: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1380:62: sparse:     expected struct sched_domain *sd
   kernel/sched/topology.c:1380:62: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1484:40: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *child @@     got struct sched_domain [noderef] __rcu *child @@
   kernel/sched/topology.c:1484:40: sparse:     expected struct sched_domain *child
   kernel/sched/topology.c:1484:40: sparse:     got struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1620: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/topology.c:1620:9: sparse:     expected struct sched_domain *[assigned] sd
   kernel/sched/topology.c:1620:9: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:1877:52: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:1877:52: sparse:     expected struct sched_domain *[assigned] sd
   kernel/sched/topology.c:1877:52: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:1987:43: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain [noderef] __rcu *child @@     got struct sched_domain *child @@
   kernel/sched/topology.c:1987:43: sparse:     expected struct sched_domain [noderef] __rcu *child
   kernel/sched/topology.c:1987:43: sparse:     got struct sched_domain *child
   kernel/sched/topology.c:2791:31: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain [noderef] __rcu *parent @@     got struct sched_domain *sd @@
   kernel/sched/topology.c:2791:31: sparse:     expected struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:2791:31: sparse:     got struct sched_domain *sd
   kernel/sched/topology.c:2919:16: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *[noderef] __rcu parent @@
   kernel/sched/topology.c:2919:16: sparse:     expected struct sched_domain *parent
   kernel/sched/topology.c:2919:16: sparse:     got struct sched_domain [noderef] __rcu *[noderef] __rcu parent
   kernel/sched/topology.c:2921:24: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:2921:24: sparse:     expected struct sched_domain *parent
   kernel/sched/topology.c:2921:24: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:2926:16: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:2926:16: sparse:     expected struct sched_domain *parent
   kernel/sched/topology.c:2926:16: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:2931:24: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:2931:24: sparse:     expected struct sched_domain *parent
   kernel/sched/topology.c:2931:24: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:3008:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd_asym @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:3008:25: sparse:     expected struct sched_domain *[assigned] sd_asym
   kernel/sched/topology.c:3008:25: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:3143:57: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:3143:57: sparse:     expected struct sched_domain *[assigned] sd
   kernel/sched/topology.c:3143:57: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:3165:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:3165:28: sparse:     expected struct sched_domain *[assigned] sd
   kernel/sched/topology.c:3165:28: sparse:     got struct sched_domain [noderef] __rcu *parent
   kernel/sched/topology.c:3191:57: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
   kernel/sched/topology.c:3191:57: sparse:     expected struct sched_domain *[assigned] sd
   kernel/sched/topology.c:3191:57: sparse:     got struct sched_domain [noderef] __rcu *parent

vim +1355 kernel/sched/debug.c

  1212	
  1213	#define PN(x) \
  1214		SEQ_printf(m, "  .%-30s: %Ld.%06ld\n", #x, SPLIT_NS(rq->x))
  1215	
  1216		P(nr_running);
  1217		P(nr_switches);
  1218		P(nr_uninterruptible);
  1219		PN(next_balance);
> 1220		SEQ_printf(m, "  .%-30s: %ld\n", "curr->pid", (long)(task_pid_nr(rq->curr)));
  1221		PN(clock);
  1222		PN(clock_task);
  1223	#undef P
  1224	#undef PN
  1225	
  1226	#define P64(n) SEQ_printf(m, "  .%-30s: %Ld\n", #n, rq->n);
  1227		P64(avg_idle);
  1228		P64(max_idle_balance_cost);
  1229	#undef P64
  1230	
  1231	#define P(n) SEQ_printf(m, "  .%-30s: %d\n", #n, schedstat_val(rq->n));
  1232		if (schedstat_enabled()) {
  1233			P(yld_count);
  1234			P(sched_count);
  1235			P(sched_goidle);
  1236			P(ttwu_count);
  1237			P(ttwu_local);
  1238		}
  1239	#undef P
  1240	
  1241		print_cfs_stats(m, cpu);
  1242		print_rt_stats(m, cpu);
  1243		print_dl_stats(m, cpu);
  1244	
  1245		print_rq(m, rq, cpu, true, false);
  1246		SEQ_printf(m, "\n");
  1247	}
  1248	
  1249	static const char *sched_tunable_scaling_names[] = {
  1250		"none",
  1251		"logarithmic",
  1252		"linear"
  1253	};
  1254	
  1255	static void sched_debug_header(struct seq_file *m)
  1256	{
  1257		u64 ktime, sched_clk, cpu_clk;
  1258		unsigned long flags;
  1259	
  1260		local_irq_save(flags);
  1261		ktime = ktime_to_ns(ktime_get());
  1262		sched_clk = sched_clock();
  1263		cpu_clk = local_clock();
  1264		local_irq_restore(flags);
  1265	
  1266		SEQ_printf(m, "Sched Debug Version: v0.11, %s %.*s\n",
  1267			init_utsname()->release,
  1268			(int)strcspn(init_utsname()->version, " "),
  1269			init_utsname()->version);
  1270	
  1271	#define P(x) \
  1272		SEQ_printf(m, "%-40s: %Ld\n", #x, (long long)(x))
  1273	#define PN(x) \
  1274		SEQ_printf(m, "%-40s: %Ld.%06ld\n", #x, SPLIT_NS(x))
  1275		PN(ktime);
  1276		PN(sched_clk);
  1277		PN(cpu_clk);
  1278		P(jiffies);
  1279	#ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
  1280		P(sched_clock_stable());
  1281	#endif
  1282	#undef PN
  1283	#undef P
  1284	
  1285		SEQ_printf(m, "\n");
  1286		SEQ_printf(m, "sysctl_sched\n");
  1287	
  1288	#define P(x) \
  1289		SEQ_printf(m, "  .%-40s: %Ld\n", #x, (long long)(x))
  1290	#define PN(x) \
  1291		SEQ_printf(m, "  .%-40s: %Ld.%06ld\n", #x, SPLIT_NS(x))
  1292		PN(sysctl_sched_base_slice);
  1293		P(sysctl_sched_features);
  1294	#undef PN
  1295	#undef P
  1296	
  1297		SEQ_printf(m, "  .%-40s: %d (%s)\n",
  1298			"sysctl_sched_tunable_scaling",
  1299			sysctl_sched_tunable_scaling,
  1300			sched_tunable_scaling_names[sysctl_sched_tunable_scaling]);
  1301		SEQ_printf(m, "\n");
  1302	}
  1303	
  1304	static int sched_debug_show(struct seq_file *m, void *v)
  1305	{
  1306		int cpu = (unsigned long)(v - 2);
  1307	
  1308		if (cpu != -1)
  1309			print_cpu(m, cpu);
  1310		else
  1311			sched_debug_header(m);
  1312	
  1313		return 0;
  1314	}
  1315	
  1316	void sysrq_sched_debug_show(void)
  1317	{
  1318		int cpu;
  1319	
  1320		sched_debug_header(NULL);
  1321		for_each_online_cpu(cpu) {
  1322			/*
  1323			 * Need to reset softlockup watchdogs on all CPUs, because
  1324			 * another CPU might be blocked waiting for us to process
  1325			 * an IPI or stop_machine.
  1326			 */
  1327			touch_nmi_watchdog();
  1328			touch_all_softlockup_watchdogs();
  1329			print_cpu(NULL, cpu);
  1330		}
  1331	}
  1332	
  1333	void sched_show_runqueues(void)
  1334	{
  1335		int cpu;
  1336	
  1337		pr_info("CPU Runqueues:\n");
  1338		for_each_online_cpu(cpu) {
  1339			struct rq *rq = cpu_rq(cpu);
  1340			struct task_struct *curr;
  1341			unsigned int nr_running;
  1342			u64 nr_switches;
  1343			unsigned long flags;
  1344			bool locked;
  1345	
  1346			touch_nmi_watchdog();
  1347			touch_all_softlockup_watchdogs();
  1348	
  1349			rcu_read_lock();
  1350			local_irq_save(flags);
  1351			locked = raw_spin_rq_trylock(rq);
  1352			if (locked) {
  1353				nr_running = rq->nr_running;
  1354				nr_switches = rq->nr_switches;
> 1355				curr = rq->curr;
  1356				raw_spin_rq_unlock(rq);
  1357			} else {
  1358				nr_running = READ_ONCE(rq->nr_running);
  1359				nr_switches = READ_ONCE(rq->nr_switches);
> 1360				curr = READ_ONCE(rq->curr);
  1361			}
  1362			local_irq_restore(flags);
  1363	
  1364			pr_info("cpu#%d: nr_running:%u switches:%llu curr:%s[%d]%s\n",
  1365				cpu, nr_running, nr_switches,
  1366				curr ? curr->comm : "<none>",
  1367				curr ? task_pid_nr(curr) : -1,
  1368				locked ? "" : " (contended)");
  1369	
  1370			print_rq(NULL, rq, cpu, false, true);
  1371			rcu_read_unlock();
  1372		}
  1373	}
  1374	

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] sched/debug, sys_info: Introduce SYS_INFO_CPU_RUNQUEUES
  2026-09-11 20:45 ` kernel test robot
@ 2026-09-12  1:00   ` Aaron Tomlin
  0 siblings, 0 replies; 3+ messages in thread
From: Aaron Tomlin @ 2026-09-12  1:00 UTC (permalink / raw)
  To: kernel test robot, peterz, akpm
  Cc: akpm, mingo, peterz, juri.lelli, vincent.guittot, oe-kbuild-all,
	dietmar.eggemann, rostedt, bsegall, mgorman, vschneid, feng.tang,
	pmladek, kprateek.nayak, linux-kernel, rishil1999

On Sat, Sep 12, 2026 at 04:45:18AM +0800, kernel test robot wrote:
> Hi Aaron,
> 
> kernel test robot noticed the following build warnings:
> 
> [auto build test WARNING on akpm-mm/mm-everything]
> [also build test WARNING on tip/sched/core akpm-mm/mm-nonmm-unstable linus/master v7.3-rc2 next-20260909]
> [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/Aaron-Tomlin/sched-debug-sys_info-Introduce-SYS_INFO_CPU_RUNQUEUES/20260910-222844
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> patch link:    https://lore.kernel.org/r/20260911022844.521413-1-atomlin%40atomlin.com
> patch subject: [PATCH] sched/debug, sys_info: Introduce SYS_INFO_CPU_RUNQUEUES
> config: microblaze-randconfig-r132-20260911 (https://download.01.org/0day-ci/archive/20260912/202609120421.J3jtss6v-lkp@intel.com/config)
> compiler: microblaze-linux-gcc (GCC) 8.5.0
> sparse: v0.6.5-rc1
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260912/202609120421.J3jtss6v-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/202609120421.J3jtss6v-lkp@intel.com/
> 
> sparse warnings: (new ones prefixed by >>)
>    kernel/sched/build_utility.c: note: in included file:
>    kernel/sched/debug.c:868:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/debug.c:868:17: sparse:     expected struct sched_domain *[assigned] sd
>    kernel/sched/debug.c:868:17: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/debug.c:1220:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
>    kernel/sched/debug.c:1220:9: sparse:     expected struct task_struct *tsk
>    kernel/sched/debug.c:1220:9: sparse:     got struct task_struct [noderef] __rcu *curr
>    kernel/sched/debug.c:1220:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct task_struct *tsk @@     got struct task_struct [noderef] __rcu *curr @@
>    kernel/sched/debug.c:1220:9: sparse:     expected struct task_struct *tsk
>    kernel/sched/debug.c:1220:9: sparse:     got struct task_struct [noderef] __rcu *curr
> >> kernel/sched/debug.c:1355:30: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *curr @@     got struct task_struct [noderef] __rcu *curr @@
>    kernel/sched/debug.c:1355:30: sparse:     expected struct task_struct *curr
>    kernel/sched/debug.c:1355:30: sparse:     got struct task_struct [noderef] __rcu *curr
> >> kernel/sched/debug.c:1360:30: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct task_struct *curr @@     got struct task_struct [noderef] __rcu * @@
>    kernel/sched/debug.c:1360:30: sparse:     expected struct task_struct *curr
>    kernel/sched/debug.c:1360:30: sparse:     got struct task_struct [noderef] __rcu *
>    kernel/sched/build_utility.c: note: in included file:
>    kernel/sched/topology.c:118:56: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:118:56: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:118:56: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:137:60: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:137:60: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:137:60: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:160:20: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:160:20: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:160:20: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:470:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct perf_domain *pd @@     got struct perf_domain [noderef] __rcu *pd @@
>    kernel/sched/topology.c:470:19: sparse:     expected struct perf_domain *pd
>    kernel/sched/topology.c:470:19: sparse:     got struct perf_domain [noderef] __rcu *pd
>    kernel/sched/topology.c:654:49: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:654:49: sparse:     expected struct sched_domain *parent
>    kernel/sched/topology.c:654:49: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:753:50: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:753:50: sparse:     expected struct sched_domain *parent
>    kernel/sched/topology.c:753:50: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:775:55: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain [noderef] __rcu *[noderef] __rcu child @@     got struct sched_domain *[assigned] tmp @@
>    kernel/sched/topology.c:775:55: sparse:     expected struct sched_domain [noderef] __rcu *[noderef] __rcu child
>    kernel/sched/topology.c:775:55: sparse:     got struct sched_domain *[assigned] tmp
>    kernel/sched/topology.c:788:29: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] tmp @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:788:29: sparse:     expected struct sched_domain *[assigned] tmp
>    kernel/sched/topology.c:788:29: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:793:20: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:793:20: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:793:20: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:826:13: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] tmp @@     got struct sched_domain [noderef] __rcu *sd @@
>    kernel/sched/topology.c:826:13: sparse:     expected struct sched_domain *[assigned] tmp
>    kernel/sched/topology.c:826:13: sparse:     got struct sched_domain [noderef] __rcu *sd
>    kernel/sched/topology.c:1069:38: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *sdp @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:1069:38: sparse:     expected struct sched_domain *sdp
>    kernel/sched/topology.c:1069:38: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:1076:21: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sdp @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:1076:21: sparse:     expected struct sched_domain *sdp
>    kernel/sched/topology.c:1076:21: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:1223:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1223:70: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:1223:70: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1252:59: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1252:59: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:1252:59: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1298:57: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1298:57: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:1298:57: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1300:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sibling @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1300:25: sparse:     expected struct sched_domain *sibling
>    kernel/sched/topology.c:1300:25: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1308:55: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1308:55: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:1308:55: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1310:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *sibling @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1310:25: sparse:     expected struct sched_domain *sibling
>    kernel/sched/topology.c:1310:25: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1380:62: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct sched_domain *sd @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1380:62: sparse:     expected struct sched_domain *sd
>    kernel/sched/topology.c:1380:62: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1484:40: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain *child @@     got struct sched_domain [noderef] __rcu *child @@
>    kernel/sched/topology.c:1484:40: sparse:     expected struct sched_domain *child
>    kernel/sched/topology.c:1484:40: sparse:     got struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1620: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/topology.c:1620:9: sparse:     expected struct sched_domain *[assigned] sd
>    kernel/sched/topology.c:1620:9: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:1877:52: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:1877:52: sparse:     expected struct sched_domain *[assigned] sd
>    kernel/sched/topology.c:1877:52: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:1987:43: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct sched_domain [noderef] __rcu *child @@     got struct sched_domain *child @@
>    kernel/sched/topology.c:1987:43: sparse:     expected struct sched_domain [noderef] __rcu *child
>    kernel/sched/topology.c:1987:43: sparse:     got struct sched_domain *child
>    kernel/sched/topology.c:2791:31: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain [noderef] __rcu *parent @@     got struct sched_domain *sd @@
>    kernel/sched/topology.c:2791:31: sparse:     expected struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:2791:31: sparse:     got struct sched_domain *sd
>    kernel/sched/topology.c:2919:16: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *[noderef] __rcu parent @@
>    kernel/sched/topology.c:2919:16: sparse:     expected struct sched_domain *parent
>    kernel/sched/topology.c:2919:16: sparse:     got struct sched_domain [noderef] __rcu *[noderef] __rcu parent
>    kernel/sched/topology.c:2921:24: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:2921:24: sparse:     expected struct sched_domain *parent
>    kernel/sched/topology.c:2921:24: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:2926:16: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:2926:16: sparse:     expected struct sched_domain *parent
>    kernel/sched/topology.c:2926:16: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:2931:24: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *parent @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:2931:24: sparse:     expected struct sched_domain *parent
>    kernel/sched/topology.c:2931:24: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:3008:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd_asym @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:3008:25: sparse:     expected struct sched_domain *[assigned] sd_asym
>    kernel/sched/topology.c:3008:25: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:3143:57: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:3143:57: sparse:     expected struct sched_domain *[assigned] sd
>    kernel/sched/topology.c:3143:57: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:3165:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:3165:28: sparse:     expected struct sched_domain *[assigned] sd
>    kernel/sched/topology.c:3165:28: sparse:     got struct sched_domain [noderef] __rcu *parent
>    kernel/sched/topology.c:3191:57: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct sched_domain *[assigned] sd @@     got struct sched_domain [noderef] __rcu *parent @@
>    kernel/sched/topology.c:3191:57: sparse:     expected struct sched_domain *[assigned] sd
>    kernel/sched/topology.c:3191:57: sparse:     got struct sched_domain [noderef] __rcu *parent

Hi Andrew, Peter,

Thanks test robot! I will fix these __rcu Sparse warnings
(make C=2 kernel/sched/) on rq->curr using rcu_dereference() and send a
version 2.

Kind regards,
-- 
Aaron Tomlin

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-09-12  1:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-11  2:28 [PATCH] sched/debug, sys_info: Introduce SYS_INFO_CPU_RUNQUEUES Aaron Tomlin
2026-09-11 20:45 ` kernel test robot
2026-09-12  1:00   ` Aaron Tomlin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®