All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robert Love <rml@tech9.net>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] BUG(): sched.c: Line 944
Date: 16 Sep 2002 17:14:56 -0400	[thread overview]
Message-ID: <1032210898.1010.32.camel@phantasy> (raw)
In-Reply-To: <Pine.LNX.4.33.0209161157300.1352-100000@penguin.transmeta.com>

On Mon, 2002-09-16 at 15:01, Linus Torvalds wrote:

> Would it not be a lot better to just mask off PREEMPT_ACTIVE() instead of 
> checking for it explicitly.
> 
> The in_interrupt() etc stuff already effectively do this by masking off
> the HARDIRQ_MASK etc. I would prefer a patch to hardirq.h that just adds a
> #define to make preempt_count() not contain PREEMPT_ACTIVE - and make the
> PREEMPT_ACTIVE checks be a totally separate check (logic: it's not a
> count, so it shouldn't show up in preempt_count())

I liked this idea, and was working on implementing it when I ran into a
few roadblocks.  Your ideas are welcome.

First, "preempt_count()" is used as an l-value in a lot of places, i.e.
look at all the "preempt_count() += foo" in the IRQ code.  We cannot
mask things out of it.

Thus, I then looked into doing a separate function for the raw value,
say an "atomic_count()" ... the code just looked ugly mixing
"atomic_count()" and "preempt_count()" for no apparent reason.

Third, PREEMPT_ACTIVE actually _is_ part of the count.  It helps assure
us a task is not preempted repeatedly.  If we did not have it, we would
have to bump preempt_count on preemption.  So we still need it in the
preempt_count().

Simplest solution is to:

	#define in_atomic() \
		(preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked())

although I still dislike the masking just to make the schedule()
code-path cleaner.

Oh, and there is another problem: printk() from schedule() implicitly
calls wake_up().  My machine dies even with just a printk() and not a
BUG()... I suspect there may be some SMP issue in that whole mess too,
because setting oops_in_progress prior did not help.

Comments?

	Robert Love


  reply	other threads:[~2002-09-16 21:10 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-09-16 18:48 [PATCH] BUG(): sched.c: Line 944 Robert Love
2002-09-16 19:01 ` Linus Torvalds
2002-09-16 21:14   ` Robert Love [this message]
2002-09-16 21:41     ` Linus Torvalds
2002-09-16 22:15       ` Robert Love
2002-09-16 22:26         ` Linus Torvalds
2002-09-16 23:15           ` Robert Love
2002-09-16 23:45             ` Linus Torvalds
2002-09-16 23:58               ` Robert Love
2002-09-17  5:56                 ` Linus Torvalds
2002-09-17  8:12                   ` Robert Love
2002-09-17  8:51                     ` Robert Love
2002-09-17  8:59                     ` Robert Love
2002-09-17  9:57                       ` Ingo Molnar
2002-09-17 18:27                         ` Robert Love
2002-09-17 18:46                           ` Ingo Molnar
2002-09-17 14:10                       ` Steven Cole
2002-09-17 18:29                         ` Robert Love
2002-09-17 18:42                           ` Steven Cole
2002-09-17 15:27                       ` Linus Torvalds
2002-09-17 15:40                         ` Linus Torvalds
2002-09-17 15:53                           ` Ingo Molnar
2002-09-17 16:18                             ` Linus Torvalds
2002-09-17 16:26                               ` Ingo Molnar
2002-09-17 18:47                                 ` Robert Love
2002-09-17 18:57                                   ` Ingo Molnar
2002-09-17 19:23                                     ` Robert Love
2002-09-17 19:54                                       ` Steven Cole
2002-09-17 20:06                                         ` Robert Love
2002-09-17 20:32                                           ` Steven Cole
2002-09-17 20:58                                           ` Steven Cole
2002-09-18  4:44                                             ` Robert Love
2002-09-18 14:08                                               ` Steven Cole
2002-09-17 15:54                           ` Ingo Molnar

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=1032210898.1010.32.camel@phantasy \
    --to=rml@tech9.net \
    --cc=linux-kernel@vger.kernel.org \
    --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 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.