From: Frederic Weisbecker <fweisbec@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: linux-kernel@vger.kernel.org, Matthew Wilcox <matthew@wil.cx>,
Thomas Gleixner <tglx@linutronix.de>,
jblunck@suse.de, Alan Cox <alan@linux.intel.com>,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [GIT, RFC] Killing the Big Kernel Lock
Date: Sun, 28 Mar 2010 22:04:14 +0200 [thread overview]
Message-ID: <20100328200411.GC5116@nowhere> (raw)
In-Reply-To: <201003242240.54907.arnd@arndb.de>
On Wed, Mar 24, 2010 at 10:40:54PM +0100, Arnd Bergmann wrote:
> I've spent some time continuing the work of the people on Cc and many others
> to remove the big kernel lock from Linux and I now have bkl-removal branch
> in my git tree at git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git
> that lets me run a kernel on my quad-core machine with the only users of the BKL
> being mostly obscure device driver modules.
>
> The oldest patch in this series is roughly eight years old and is Willy's patch
> to remove the BKL from fs/locks.c, and I took a series of patches from Jan that
> removes it from most of the VFS.
>
> The other non-obvious changes are:
>
> - all file operations that either have an .ioctl method or do not have their
> own .llseek method used to implicitly require the BKL. I've changed that
> so they need to explicitly set .llseek = default_llseek, .unlocked_ioctl =
> default_ioctl, and changed all the code that either has supplied a .ioctl
> method or looks like it needs the BKL somewhere else, meaning the
> default_llseek function might actually do something.
>
> - The block layer now has a global bkldev_mutex that is used in all block
> drivers in place of the BKL. The only recursive instance of the BKL was
> __blkdev_get(), which is now called with the blkdev_mutex held instead of
> grabbing the BKL. This has some possible performance implications that
> need to be looked into.
>
> - The init/main.c code no longer take the BKL. I figured that this was
> completely unnecessary because there is no other code running at the
> same time that takes the BKL.
>
> - The most invasive change is in the TTY layer, which has a new global
> mutex (sorry!). I know that Alan has plans of his own to remove the BKL
> from this subsystem, so my patches may not go anywhere, but they seem
> to work fine for me.
> I've called the new lock the 'Big TTY Mutex' (BTM), a name that probably
> makes more sense if you happen to speak German.
> The basic idea here is to make recursive locking and the release-on-sleep
> explicit, so every mutex_lock, wait_event, workqueue_flush and schedule
> in the TTY layer now explicitly releases the BTM before blocking.
>
> - All drivers that still require the BKL are now listed as 'depends on BKL'
> in Kconfig, and you can set that symbol to 'y', 'm' or 'n'. If the lock
> itself is a module, only other modules can use it, and /proc/modules
> will tell you exactly which ones those are. I've thought about adding
> a module_init function in that module that will taint the kernel, but so
> far I haven't done that.
>
> - Included is a debugfs file that gives statistics over the BKL usage from
> early boot on. This is now obsolete and will not get merged, but I'm
> including it for reference.
>
> Frederic has volunteered to help merging all of this upstream, which I
> very much welcome. The shape that the tree is in now is very inconsistent,
> especially some of the bits at the end are a bit dodgy and all of it needs
> more testing.
>
> I've built-tested an allmodconfig kernel with CONFIG_BKL disabled
> on x86_64, i386, powerpc64, powerpc32, s390 and arm to make sure I
> catch all the modules that depend on BKL, and I've been running
> various versions of this tree on my desktop machine over the last few
> weeks while adding stuff.
>
> Arnd
>
> ---
>
> Arnd Bergmann (44):
> input: kill BKL, fix input_open_file locking
> ptrace: kill BKL
> procfs: kill BKL in llseek
> random: forbid llseek on random chardev
> x86/microcode: use nonseekable_open
> perf_event: use nonseekable_open
I just queued the perf_event one. It looks pretty good. I'm also
looking at some of the most trivials (ehm..less hards) in the list
and see which we can submit right away.
Thanks.
next prev parent reply other threads:[~2010-03-28 20:04 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-24 21:40 [GIT, RFC] Killing the Big Kernel Lock Arnd Bergmann
2010-03-24 21:07 ` Andrew Morton
2010-03-25 10:26 ` Arnd Bergmann
2010-03-28 20:33 ` Frederic Weisbecker
2010-03-24 21:53 ` Roland Dreier
2010-03-24 21:59 ` Arnd Bergmann
2010-03-31 5:22 ` Roland Dreier
2010-03-24 22:10 ` Alan Cox
2010-03-24 22:25 ` Arnd Bergmann
2010-03-24 22:23 ` Ingo Molnar
2010-03-25 12:55 ` Jiri Kosina
2010-03-25 13:06 ` Arnd Bergmann
2010-03-25 13:38 ` Arnd Bergmann
2010-03-26 23:47 ` Stefan Richter
2010-03-27 9:16 ` [PATCH] firewire: char device files are not seekable (BKL removal) Stefan Richter
2010-03-27 9:20 ` [PATCH] ieee1394: " Stefan Richter
2010-03-27 10:40 ` [PATCH RFC] DVB: add dvb_generic_nonseekable_open, dvb_generic_unlocked_ioctl, use in firedtv Stefan Richter
2010-03-28 14:47 ` [PATCH RFC v2] " Stefan Richter
2010-03-27 14:37 ` [GIT, RFC] Killing the Big Kernel Lock Arnd Bergmann
2010-03-28 12:27 ` Stefan Richter
2010-03-28 20:05 ` Arnd Bergmann
2010-03-28 20:15 ` Frederic Weisbecker
2010-03-28 21:34 ` Arnd Bergmann
2010-03-28 23:24 ` Frederic Weisbecker
2010-04-08 20:45 ` Jan Blunck
2010-04-08 21:27 ` Arnd Bergmann
2010-04-08 21:30 ` Frederic Weisbecker
2010-04-09 11:02 ` Jan Blunck
2010-04-10 15:13 ` Stefan Richter
2010-03-28 21:58 ` Andi Kleen
2010-03-29 1:07 ` [GIT, RFC] Killing the Big Kernel Lock II Andi Kleen
2010-03-29 11:48 ` Arnd Bergmann
2010-03-29 12:30 ` Andi Kleen
2010-03-29 14:43 ` Arnd Bergmann
2010-03-29 20:11 ` Andi Kleen
2010-03-31 15:30 ` Arnd Bergmann
2010-03-25 13:40 ` [GIT, RFC] Killing the Big Kernel Lock Dan Carpenter
2010-03-25 14:14 ` Arnd Bergmann
2010-03-28 20:04 ` Frederic Weisbecker [this message]
2010-03-28 20:11 ` Frederic Weisbecker
2010-03-28 23:18 ` Frederic Weisbecker
2010-03-28 23:38 ` Frederic Weisbecker
2010-03-29 11:04 ` Arnd Bergmann
2010-03-29 17:59 ` Frederic Weisbecker
2010-03-29 21:18 ` Arnd Bergmann
2010-03-29 12:45 ` John Kacur
2010-03-31 22:11 ` Roland Dreier
2010-03-31 22:20 ` Frederic Weisbecker
2010-04-01 8:50 ` Arnd Bergmann
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=20100328200411.GC5116@nowhere \
--to=fweisbec@gmail.com \
--cc=alan@linux.intel.com \
--cc=arnd@arndb.de \
--cc=jblunck@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/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