linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Mark Hounschell <markh@compro.net>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	Daniel Walker <dwalker@mvista.com>
Subject: Re: rt20 patch question
Date: Wed, 10 May 2006 08:39:52 -0400 (EDT)	[thread overview]
Message-ID: <Pine.LNX.4.58.0605100827500.3282@gandalf.stny.rr.com> (raw)
In-Reply-To: <4460ADF8.4040301@compro.net>


(It is expected on LKML to not touch the CC list, and especially keep the
one you are replying to)

On Tue, 9 May 2006, Mark Hounschell wrote:

> Daniel Walker wrote:
> > On Tue, 2006-05-09 at 08:23 -0400, Mark Hounschell wrote:
> >> Can I assume configuring 'Complete preemption' is the same as
> >> configuring ('Voluntary preemption' + 'Hardirq' + 'Softirq' + default
> >> proc settings)?
> >
> > Not Voluntary preemption, and I'm not sure what default proc settings is
> > referring too .
>
> The proc settings or boot options to enable or disable hardirq or
> softirq threading that you have avaialable in Voluntary preemption.
>
> > Complete preemption is like CONFIG_PREEMPT and softirq
> > and hardirq threading .. The preemption isn't voluntary, it's forced .
> >
>
> Complete preemption you have no choice of threading hard or soft irqs.
> They are threaded.
>
> So If I config Voluntary preemption + Hardirq and Softirq threading and
> do not disable hardirq or softirq via proc or boot cmdline, is that the
> same as configuring Complete preemption?
>

No not at all.

First Voluntary preemption means that when you are executing in the
kernel, and a higher priority process needs to run, the kernel will _not_
be preempted!  Voluntary preemption means that there are places in the
kernel that are marked as preemption points.  So if you are in the kernel
and you hit a preemption point, a check is made then to see if the
scheduler should be called. So, really this is not a true preemptive
kernel.

Next you have "Preemptible Kernel (Low Latency Desktop)".  This _is_ a
preemptive kernel.  Which means that, unless preemption is disabled, the
default is to preempt a process whether or not it's in the kernel if
either it finished it's run time, or a higher priority process wants to
run.  There is protective places in the kernel that disallow preemption
(basically between spinlocks and preempt_enable/disable).

But even with Preemptible Kernel + Hardirq and Softirq threading, you
still don't have the same as complete preemption.  This is because the
full preemption turns the spinlocks into mutexes that are not only
preemptible, but schedule on contention.  To do this, Hard and Soft irqs
must be threaded.  This is because they use spinlocks, and to schedule
in an interrupt, it must be acting as a thread.  So you can't have full
complete preemption without threading the Hard and Soft irqs, and that's
why there is no option to not have them threaded.

Without full preemption, you also lose out on having the PI for the
spinlock mutexes.

-- Steve


  parent reply	other threads:[~2006-05-10 12:40 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-09 12:23 rt20 patch question Mark Hounschell
2006-05-09 14:38 ` Daniel Walker
2006-05-09 14:58   ` Mark Hounschell
2006-05-09 15:53     ` Daniel Walker
2006-05-10 12:39     ` Steven Rostedt [this message]
2006-05-10 13:06       ` Mark Hounschell
2006-05-10 14:10         ` Steven Rostedt
2006-05-10 15:33           ` Mark Hounschell
2006-05-10 16:17             ` Steven Rostedt
2006-05-10 18:30               ` Mark Hounschell
2006-05-10 18:49                 ` Steven Rostedt
2006-05-10 19:28                   ` Mark Hounschell
2006-05-11 11:25                     ` Mark Hounschell
2006-05-11 12:01                       ` Steven Rostedt
2006-05-11 12:22                         ` Steven Rostedt
2006-05-11 13:02                           ` Mark Hounschell
2006-05-11 13:14                             ` Steven Rostedt
2006-05-11 13:26                               ` Mark Hounschell
2006-05-11 13:53                                 ` Steven Rostedt
2006-05-11 14:57                                   ` Mark Hounschell
2006-05-12  6:47                                     ` Steven Rostedt
2006-05-12  7:33                                       ` Sébastien Dugué
2006-05-12  8:18                                         ` Mark Hounschell
2006-05-12  9:08                                       ` Mark Hounschell
2006-05-12  9:20                                         ` Steven Rostedt
2006-05-10 20:33                 ` Steven Rostedt
2006-05-12  8:16                   ` Ingo Molnar
2006-05-12  8:45                     ` Steven Rostedt
2006-05-12  9:16                       ` Ingo Molnar
2006-05-12  9:21                       ` Ingo Molnar
2006-05-12 12:38                         ` Mark Hounschell
2006-05-12 13:18                           ` Steven Rostedt
2006-05-12 13:38                             ` Mark Hounschell
2006-05-12 13:43                             ` Mark Hounschell
2006-05-12 14:05                               ` Steven Rostedt
2006-05-12 14:36                                 ` Mark Hounschell
2006-05-12 14:51                                   ` Steven Rostedt
2006-05-12 13:16                         ` 3c59x vortex_timer rt hack (was: rt20 patch question) Steven Rostedt
2006-05-12 13:36                           ` Ingo Molnar
2006-05-12 13:46                             ` Steven Rostedt
2006-05-12 14:16                           ` Andrew Morton
2006-05-12 14:32                             ` Steven Rostedt
2006-05-12 14:39                               ` Steven Rostedt
2006-05-12 14:43                                 ` Ingo Molnar
2006-05-12 14:49                                 ` Andrew Morton
2006-05-12 15:04                                   ` Steven Rostedt
2006-05-12 16:53                                     ` 3c59x vortex_timer rt hack Mark Hounschell
2006-05-12 15:22                                   ` 3c59x vortex_timer rt hack (was: rt20 patch question) Steven Rostedt
2006-05-12 15:23                                     ` Andrew Morton
2006-05-12 15:36                                       ` Steven Rostedt
2006-05-12 16:03                                         ` Andrew Morton
2006-05-12 16:11                                           ` Steven Rostedt
2006-05-12 16:27                                             ` Andrew Morton
2006-05-12 16:38                                               ` Steven Rostedt
2006-05-10 18:45             ` rt20 patch question Steven Rostedt

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=Pine.LNX.4.58.0605100827500.3282@gandalf.stny.rr.com \
    --to=rostedt@goodmis.org \
    --cc=dwalker@mvista.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markh@compro.net \
    /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;
as well as URLs for NNTP newsgroup(s).