linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/1] Incorrect name of the idle tasks in SMP kernels v3
@ 2011-10-26 21:14 Carsten Emde
  2011-10-26 21:14 ` [PATCH 1/1] Set the command " Carsten Emde
  0 siblings, 1 reply; 2+ messages in thread
From: Carsten Emde @ 2011-10-26 21:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Peter Zijlstra, Thomas Gleixner, Steven Rostedt, Carsten Emde,
	LKML, RT-users

Hi Ingo,

The command name of the idle tasks in SMP kernels was incorrect which
resulted in misleading trace output. This patch fixes it.

	-Carsten.

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

* [PATCH 1/1] Set the command name of the idle tasks in SMP kernels v3
  2011-10-26 21:14 [PATCH 0/1] Incorrect name of the idle tasks in SMP kernels v3 Carsten Emde
@ 2011-10-26 21:14 ` Carsten Emde
  0 siblings, 0 replies; 2+ messages in thread
From: Carsten Emde @ 2011-10-26 21:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Peter Zijlstra, Thomas Gleixner, Steven Rostedt, Carsten Emde,
	LKML, RT-users

[-- Attachment #1: kernel-sched-smp-set-idletask-comm.patch --]
[-- Type: text/plain, Size: 2281 bytes --]

In UP systems, the idle task is initialized using the init_task
structure from which the command name is taken (currently "swapper").

In SMP systems, one idle task per CPU is forked by the worker thread
from which the task structure is copied. The command name is, therefore,
"kworker/0:0" or "kworker/0:1", if not updated. Since such update was
lacking, all idle tasks in SMP systems were incorrectly named. This
longtime bug was not discovered immediately, because there is no /proc/0
entry - the bug only becomes apparent when tracing is enabled.

This patch sets the command name of the idle tasks in SMP systems to the
name that is used in the INIT_TASK structure suffixed by a slash and the
number of the CPU.

Signed-off-by: Carsten Emde <C.Emde@osadl.org>

---
 include/linux/init_task.h |    3 ++-
 kernel/sched.c            |    4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)

Index: linux-3.0.7-rt20/include/linux/init_task.h
===================================================================
--- linux-3.0.7-rt20.orig/include/linux/init_task.h
+++ linux-3.0.7-rt20/include/linux/init_task.h
@@ -132,6 +132,7 @@ extern struct cred init_cred;
 # define INIT_TIMER_LIST
 #endif
 
+#define INIT_TASK_COMM "swapper"
 /*
  *  INIT_TASK is used to set up the first task table, touch at
  * your own risk!. Base=0, limit=0x1fffff (=2MB)
@@ -168,7 +169,7 @@ extern struct cred init_cred;
 	.group_leader	= &tsk,						\
 	RCU_INIT_POINTER(.real_cred, &init_cred),			\
 	RCU_INIT_POINTER(.cred, &init_cred),				\
-	.comm		= "swapper",					\
+	.comm		= INIT_TASK_COMM,				\
 	.thread		= INIT_THREAD,					\
 	.fs		= &init_fs,					\
 	.files		= &init_files,					\
Index: linux-3.0.7-rt20/kernel/sched.c
===================================================================
--- linux-3.0.7-rt20.orig/kernel/sched.c
+++ linux-3.0.7-rt20/kernel/sched.c
@@ -71,6 +71,7 @@
 #include <linux/ctype.h>
 #include <linux/ftrace.h>
 #include <linux/slab.h>
+#include <linux/init_task.h>
 
 #include <asm/tlb.h>
 #include <asm/irq_regs.h>
@@ -6104,6 +6105,9 @@ void __cpuinit init_idle(struct task_str
 	 */
 	idle->sched_class = &idle_sched_class;
 	ftrace_graph_init_idle_task(idle, cpu);
+#if defined(CONFIG_SMP)
+	sprintf(idle->comm, "%s/%d", INIT_TASK_COMM, cpu);
+#endif
 }
 
 /*

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

end of thread, other threads:[~2011-10-26 21:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-26 21:14 [PATCH 0/1] Incorrect name of the idle tasks in SMP kernels v3 Carsten Emde
2011-10-26 21:14 ` [PATCH 1/1] Set the command " Carsten Emde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).