All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ilya Loginov <isloginov@gmail.com>
To: torvalds@linux-foundation.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] fix problem with reschenduling in rest_init (2.6.35-rc3)
Date: Thu, 24 Jun 2010 00:11:48 +0400	[thread overview]
Message-ID: <20100624001148.61e9da1c.isloginov@gmail.com> (raw)

	There is a bug in rest_init function. The problem is that kernel_init
thread starts before initialization of kthreadd_task when
CONFIG_PREEMPT_VOLUNTARY is enabled.

kernel_init thread do wake_up_process(kthreadd_task) and I have kernel Oops in
try_to_wake_up when I try to get p->state.

	I found this problem on 2.6.34 on FPGA. It is very slow, and
find_task_by_pid is done after reschenduling. I have no this problem on
2.6.35-rc3 because kernel code is moved. But if I write simple loop like
	volatile int tmp;
	for(i = 0; i < preset_lpj; i++)
		tmp++;
right after kernel_thread(kernel_init,.... , I have this problem on
2.6.35-rc3 too.

	I understand that real problem is reschenduling in init code, but
I have no ability to fix it.

Signed-off-by: Ilya Loginov <isloginov@gmail.com>
---
diff --git a/init/main.c b/init/main.c
index 3bdb152..9febd69 100644
--- a/init/main.c
+++ b/init/main.c
@@ -428,12 +428,12 @@ static noinline void __init_refok rest_init(void)
 	int pid;
 
 	rcu_scheduler_starting();
-	kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
 	numa_default_policy();
 	pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);
 	rcu_read_lock();
 	kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns);
 	rcu_read_unlock();
+	kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
 	unlock_kernel();
 
 	/*

             reply	other threads:[~2010-06-23 20:11 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-23 20:11 Ilya Loginov [this message]
2010-06-24 13:11 ` [PATCH] fix problem with reschenduling in rest_init (2.6.35-rc3) Peter Zijlstra
2010-06-24 13:23   ` Ilya Loginov
2010-06-24 14:08     ` Илья Логинов
2010-06-28  9:01     ` [PATCH] init: Fix race between init and kthreadd Peter Zijlstra
2010-06-28 11:53       ` [PATCH] init: Fix race between init and kthreadd -v2 Peter Zijlstra
2010-06-28 14:19         ` Ingo Molnar
2010-06-28 14:51           ` [PATCH] init: Fix race between init and kthreadd -v3 Peter Zijlstra
2010-06-28 15:03             ` Linus Torvalds
2010-06-28 16:23             ` Randy Dunlap
2010-06-28 20:24             ` [tip:sched/urgent] init, sched: Fix race between init and kthreadd tip-bot for Peter Zijlstra
2010-06-30  8:32             ` [PATCH] init: Fix race between init and kthreadd -v3 Ilya Loginov
2010-06-30  8:37               ` [PATCH] init: Fix comment Peter Zijlstra
2010-06-30  8:45                 ` [tip:sched/urgent] " tip-bot for Peter Zijlstra
2010-06-28 20:06         ` [PATCH] init: Fix race between init and kthreadd -v2 Ilya Loginov

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=20100624001148.61e9da1c.isloginov@gmail.com \
    --to=isloginov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.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.