From: george anzinger <george@mvista.com>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Dave Hansen <haveblue@us.ibm.com>,
"Adam J. Richter" <adam@yggdrasil.com>,
linux-kernel@vger.kernel.org, Robert Love <rml@tech9.net>
Subject: Re: Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() atboot time
Date: Thu, 04 Apr 2002 11:48:22 -0800 [thread overview]
Message-ID: <3CACAE05.5422E3B0@mvista.com> (raw)
In-Reply-To: <Pine.LNX.4.33.0204041108040.12895-100000@penguin.transmeta.com>
Linus Torvalds wrote:
>
> On Thu, 4 Apr 2002, Dave Hansen wrote:
> >
> > I've diabled preemption in the area where it used to be disabled because
> > of the old lock_kernel(). I'm sending this message from a machine with
> > that patch applied, so the patch does fix it.
>
> I think the real fix is to make sure that preemption never hits while
> current->state == TASK_ZOMBIE.
>
> In other words, I think the _correct_ fix is to just make
> preempt_schedule() check for something like
>
> if (current->state != TASK_RUNNING)
> return;
>
I agree that the set state to running code should go, but there are
places in the kernel where a great deal of time is spent with the state
other than running. AND most of them make sense. Adding a PREEMPTING
super state, as was in the original patch, addressed this quite well
IMHO. This super state was treated by the scheduler as RUNNING
regardless of the actual state. As long as it is not in the actual
"state" member, the condition waited for can still set the true state to
RUNNING and all is well.
What is the objection to this?
> and just getting rid of the current "unconditionally set state to
> running".
>
> (Side note: if the state isn't running, we're most likely going to
> reschedule in a controlled manner soon anyway. Sure, there are some loops
> which set state to non-runnable early for race avoidance, but is it a
> _problem_?)
>
All I can say is that we thought it was when we did the original
preemption work. Some of those loops are long.
I tend to agree with not doing the random "set state to running". It
breeds paranoia, and rightly so.
And yes the ZOMBIE code must not be preempted. This is one of the
reasons the preempt code was designed to allow schedule() to be called
with preemption disabled. I gives a nice clean schedule() call. It
might be a better solution than the interrupt off schedule() calls made
in the sleep calls in sched.c.
> Linus
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
George Anzinger george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Real time sched: http://sourceforge.net/projects/rtsched/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml
prev parent reply other threads:[~2002-04-04 19:51 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-04 11:59 Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() at boot time Adam J. Richter
2002-04-04 12:56 ` Stelian Pop
2002-04-04 13:40 ` Alessandro Suardi
2002-04-04 16:23 ` David C. Hansen
2002-04-04 18:28 ` Dave Hansen
2002-04-04 18:51 ` Robert Love
2002-04-04 19:14 ` Linus Torvalds
2002-04-04 19:26 ` Robert Love
2002-04-04 19:41 ` Dave Hansen
2002-04-04 20:02 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() atboot time george anzinger
2002-04-04 20:54 ` Andrew Morton
2002-04-04 21:34 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() at boot time Roger Larsson
2002-04-04 22:38 ` Andrew Morton
2002-04-04 22:42 ` Linus Torvalds
2002-04-04 22:54 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() atboot time Andrew Morton
2002-04-04 23:07 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() at boot time Robert Love
2002-04-04 23:42 ` Linus Torvalds
2002-04-04 23:47 ` Robert Love
2002-04-04 23:55 ` Linus Torvalds
2002-04-05 0:03 ` [PATCH] preemptive kernel behavior change: don't be rude Robert Love
2002-04-05 1:51 ` george anzinger
2002-04-05 2:06 ` Robert Love
2002-04-04 22:55 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() at boot time Robert Love
2002-04-04 23:10 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() atboot time Andrew Morton
2002-04-04 23:16 ` Robert Love
2002-04-04 19:13 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() at boot time Linus Torvalds
2002-04-04 19:16 ` Robert Love
2002-04-04 19:45 ` Linus Torvalds
2002-04-04 20:09 ` Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() atboot time george anzinger
2002-04-04 19:48 ` george anzinger [this message]
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=3CACAE05.5422E3B0@mvista.com \
--to=george@mvista.com \
--cc=adam@yggdrasil.com \
--cc=haveblue@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rml@tech9.net \
--cc=torvalds@transmeta.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox