All of lore.kernel.org
 help / color / mirror / Atom feed
From: george anzinger <george@mvista.com>
To: "Eric W. Biederman" <ebiederman@uswest.net>
Cc: Victor Yodaiken <yodaiken@fsmlabs.com>,
	BALBIR SINGH <balbir.singh@wipro.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC] I still see people using cli()
Date: Mon, 08 Oct 2001 11:11:12 -0700	[thread overview]
Message-ID: <3BC1EC40.9B1BF68E@mvista.com> (raw)
In-Reply-To: <20011008084950.B16204@hq2> <m1itdqw4hu.fsf@frodo.biederman.org>

"Eric W. Biederman" wrote:
> 
> Victor Yodaiken <yodaiken@fsmlabs.com> writes:
> 
> > On Mon, Oct 08, 2001 at 07:59:05PM +0530, BALBIR SINGH wrote:
> > > BTW, that brings me to another issue, once the kernel becomes preemptibel,
> > what
> >
> > > are the locking issues? how are semaphores and spin-locks affected? Has
> > anybody
> >
> > > defined or come up with the rules/document yet?
> >
> > IF the kernel becomes preemptible it will be so slow, so buggy, and so painful
> > to maintain, that those issues won't matter.
> 
> The preemptible kernel work just takes the current SMP code, and
> allows it to work on a single processor.  You are not interruptted if
> you have a lock held.  This makes the number of cases in the kernel
> simpler, and should improve maintenance as more people will be
> affected by the SMP issues.
> 
> Right now there is a preemptible kernel patch being maintained
> somewhere.  I haven't had a chance to look recently.  But the recent
> threads on low latency mentioned it.
> 
> As for rules.  They are the usual SMP rules.  In earlier version there
> was a requirement or that you used balanced constructs.
> 
> i.e.
> spin_lock_irqsave
> ...
> spin_unlock_irqrestore
> 
> and not.
> 
> spin_lock_irqsave
> ...
> spin_unlock
> ..
> restore_flags.
> 
This rule is not there any more, but there are a few more:

SMP code that uses the cpu number (i.e. cpu data structures, etc.) and
thus depends on staying on that cpu, should be protected to prevent
preemption, which, MAY move the task to another cpu.  Currently there is
code in the preemption patch to prevent this movement, however, it would
be faster to allow it and protect the areas that care.

Also, areas that use hareware resources that are not saved on preemption
must be protected.  In the x86 this includes some of the MMX code which
uses the fp registers.  

We also had some problems with the page info register on page faults,
however this proved to be a hazard in systems without preemption and
thus was fixed.

George

      parent reply	other threads:[~2001-10-08 18:11 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-08 14:29 [RFC] I still see people using cli() BALBIR SINGH
2001-10-08 14:49 ` Victor Yodaiken
2001-10-08 15:11   ` Eric W. Biederman
2001-10-08 15:42     ` Victor Yodaiken
2001-10-08 16:45       ` Eric W. Biederman
2001-10-08 17:12         ` Victor Yodaiken
2001-10-08 19:09           ` Eric W. Biederman
2001-10-08 19:42             ` Victor Yodaiken
2001-10-08 18:11     ` 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=3BC1EC40.9B1BF68E@mvista.com \
    --to=george@mvista.com \
    --cc=balbir.singh@wipro.com \
    --cc=ebiederman@uswest.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=yodaiken@fsmlabs.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.