From: Ingo Molnar <mingo@elte.hu>
To: linux-kernel@vger.kernel.org
Cc: Arjan van de Ven <arjanv@infradead.org>,
Roman Zippel <zippel@linux-m68k.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
Ingo Oeser <ioe-lkml@axxeo.de>, Andrew Morton <akpm@osdl.org>,
Christoph Hellwig <hch@infradead.org>, Andi Kleen <ak@suse.de>,
Thomas Gleixner <tglx@linutronix.de>,
Al Viro <viro@parcelfarce.linux.theplanet.co.uk>,
"David S. Miller" <davem@redhat.com>
Subject: [patch] spinlock consolidation, v2
Date: Fri, 3 Jun 2005 17:40:29 +0200 [thread overview]
Message-ID: <20050603154029.GA2995@elte.hu> (raw)
the latest version of the spinlock consolidation patch can be found at:
http://redhat.com/~mingo/spinlock-patches/consolidate-spinlocks.patch
the patch is now complete in the sense that it does everything i wanted
it to do. If you have any other suggestions (or i have missed to
incorporate an earlier suggestion of yours), please yell.
Changes:
- all architectures have been converted to the new spinlock code.
arm, i386, ia64, ppc, ppc64, s390/s390x, x64 was build-tested via
crosscompilers. Alpha, m32r, mips, parisc, sh, sparc, sparc64 has
not been tested yet, but should be mostly fine. x86 and x64 was
boot-tested in all relevant .config variations. It all brought a nice
reduction in source code size:
62 files changed, 1455 insertions(+), 3025 deletions(-)
Al, would you be interested in checking this patch on your build
farm? It should build on all architectures, UP and SMP alike.
(NOTE: i've switched sparc32, sparc64, alpha, ppc, parisc to use the
generic spinlock debugging code. I believe the generic debugging
code is now capable enough to be a replacement - but especially the
Sparc ones are pretty advanced; so if i've missed some important
feature please let me know and i'll implement it in the generic
code.)
- linux/spinlock_types.h: new, pure header file that can be used
by other headers to define spinlock fields - without having to
pull in all the other include files that are needed on the
implementational side. (Roman Zippel)
- lib/spinlock_debug.c: got rid of the __FILE__/__LINE__ debug output
(suggested by Ingo Oeser), and streamlined the debug output.
Implemented 'lockup detection' which is a must for architectures that
dont have the equivalent of an NMI watchdog. (but is useful on other
architectures as well.) Both spinlocks and rwlocks are now fully
debugged.
- linux/spinlock.h: got rid of the ATOMIC_DEC_AND_LOCK cruft. This is
achieved by not doing the UP-nonpreempt-nondebug specific
optimization but letting it pick the generic _atomic_dec_and_lock
function. The assembly looks sane on x86 (no locked ops, etc.) so
there's no performance problem. Other architectures should work fine
too, those which implement _atomic_dec_and_lock unconditionally might
want to review whether they want to use the CONFIG_HAVE_DEC_LOCK
mechanism to get the optimized (generic) version of the function on
UP.
- asm-generic/spinlock_types_up.h: further simplifications (suggested
by Arjan van de Ven), typo fixed
- linux/spinlock_up.h: since this an UP-nondebug branch now, the macros
were simplified and streamlined significantly.
- asm-generic/spinlock_up.h: further cleanups, reordering of op
definitions into 'natural' op order.
- asm-i386/spinlock.h and asm-x86_64/spinlock.h: reordering of ops,
cleanups
- include/linux/spinlock.h: more cleanups, reordering
- linux/spinlock_smp.h: cleanups, reordering of prototypes
- kernel/spinlock.c: fixed bug in generic_raw_read_trylock and renamed
it to generic__raw_read_trylock to ease conversion.
- lib/kernel_lock.c: simplification
- (lots of small details i forgot)
Ingo
next reply other threads:[~2005-06-03 15:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-03 15:40 Ingo Molnar [this message]
[not found] ` <20050604113809.GD19819@infradead.org>
2005-06-05 10:42 ` [patch] spinlock consolidation, v2 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=20050603154029.GA2995@elte.hu \
--to=mingo@elte.hu \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=arjanv@infradead.org \
--cc=davem@redhat.com \
--cc=hch@infradead.org \
--cc=ioe-lkml@axxeo.de \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=viro@parcelfarce.linux.theplanet.co.uk \
--cc=zippel@linux-m68k.org \
--cc=zwane@arm.linux.org.uk \
/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