From: Nick Piggin <nickpiggin@yahoo.com.au>
To: David Brownell <david-b@pacbell.net>
Cc: Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
Florian Fainelli <florian.fainelli@telecomint.eu>,
Haavard Skinnemoen <hskinnemoen@atmel.com>
Subject: Re: [patch 2.6.24-rc2 1/3] generic gpio -- gpio_chip support
Date: Wed, 14 Nov 2007 08:18:59 +1100 [thread overview]
Message-ID: <200711140818.59714.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <200711140020.46764.david-b@pacbell.net>
On Wednesday 14 November 2007 19:20, David Brownell wrote:
> On Tuesday 13 November 2007, Nick Piggin wrote:
> > I mean, if you have a
> > timing critical operation, then you should ensure you have priorities
> > set correctly so that you simply don't get preempted.
>
> Which is why bitops like <asm-generic/bitops/atomic.h> use
> normal spinlocks. Oh, wait, no they don't ...
No it isn't. It's nothing to do with that because upstream raw
spinlocks disable preemption as well; the reason for using raw
spinlocks in atomic.h is completely different.
Anyway, this whole line of argument is flawed. Even if the atomic.h
code is crap, that doesn't give any license to introduce more bad
code.
> > By using a raw_spinlock_t, you're saying that you're more important
> > than anyone else (for the period of the critical section) including
> > processes which the user has explicitly set to a higher priority.
>
> Nope. Just saying that the relevant instructions (three, in the
> hot path I looked at, and not a case where priority inversion
> scenarios should be a concern) shouldn't be forcibly morphed into
> preemption points. Any more than other bitops were (not).
Don't raw_spinlock_t's quite explictly disallow preemption in the
critical section? Eg. as opposed to spinlock_t, which does not, in
-rt.
> If a higher priority task needs that CPU, nothing prevents it
> from being immediately descheduled. Ditto handling a hardirq.
>
> All this does is prevent constant and needless checking for
> "do you want to preempt me now?" "now?" "now?" in "now?" the
> middle "now?" of "now?" i/o "now?" loops.
Actually that's wrong. By disabling preemption, you have to
explicitly check whether you should be preempted when you enable
it again. If you don't disable preemption then you don't have to
check anything -- you'll simply be preempted by asynchronous
events.
> > > Any reason that stuff shouldn't move into mainline?
> >
> > This sort of raw_spinlock_t arms race throughout drivers/ would be
> > a huge reason not to move it into mainline.
>
> This isn't driver code...
Semantics. It's not something like the scheduler or interrupt handler
or something that might have real reasons to use raw locks.
> I think you've just presented an argument why that stuff
> shouldn't really exist in -rt either... :)
Anyway, I'm not going to argue about -rt specific stuff any longer.
Whatever. It shouldn't go upstream like this though.
next prev parent reply other threads:[~2007-11-14 9:22 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-09 19:36 [patch 2.6.24-rc2 1/3] generic gpio -- gpio_chip support David Brownell
2007-11-12 21:36 ` Andrew Morton
2007-11-12 22:32 ` David Brownell
2007-11-12 23:28 ` Andrew Morton
2007-11-13 1:26 ` David Brownell
2007-11-13 9:34 ` Ingo Molnar
2007-11-13 19:22 ` David Brownell
2007-11-13 12:25 ` Nick Piggin
2007-11-14 8:20 ` David Brownell
2007-11-13 21:18 ` Nick Piggin [this message]
2007-11-15 6:28 ` David Brownell
2007-11-14 18:51 ` Nick Piggin
2007-11-15 8:17 ` David Brownell
2007-11-14 19:19 ` Nick Piggin
2007-11-14 19:21 ` Nick Piggin
2007-11-13 20:46 ` Andrew Morton
2007-11-14 6:52 ` David Brownell
2007-11-13 19:45 ` Nick Piggin
2007-11-14 8:37 ` David Brownell
2007-11-13 21:08 ` Nick Piggin
2007-11-15 6:23 ` David Brownell
2007-11-14 9:54 ` Haavard Skinnemoen
2007-11-15 6:50 ` David Brownell
2007-11-15 8:43 ` Haavard Skinnemoen
2007-11-14 9:59 ` Ingo Molnar
2007-11-14 12:14 ` Thomas Gleixner
2007-11-15 7:02 ` David Brownell
2007-11-15 7:32 ` Thomas Gleixner
2007-11-15 8:20 ` David Brownell
2007-11-15 8:51 ` Haavard Skinnemoen
2007-11-15 18:55 ` David Brownell
2007-11-15 7:17 ` David Brownell
2007-11-15 7:35 ` Thomas Gleixner
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=200711140818.59714.nickpiggin@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=akpm@linux-foundation.org \
--cc=david-b@pacbell.net \
--cc=florian.fainelli@telecomint.eu \
--cc=hskinnemoen@atmel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/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