aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--series2
-rw-r--r--tty/tty-implement-btm-as-mutex-instead-of-bkl.patch66
2 files changed, 23 insertions, 45 deletions
diff --git a/series b/series
index f1730fed8758db..1321864aa718cc 100644
--- a/series
+++ b/series
@@ -30,7 +30,7 @@ gregkh/gkh-version.patch
#############################################
# can we really drop it? (nope, not yet...)
-driver-core/driver-core-remove-config_sysfs_deprecated.patch
+#driver-core/driver-core-remove-config_sysfs_deprecated.patch
#####################################
# TTY patches for after 2.6.35 is out
diff --git a/tty/tty-implement-btm-as-mutex-instead-of-bkl.patch b/tty/tty-implement-btm-as-mutex-instead-of-bkl.patch
index 6185d77a518790..45f8293f15bf63 100644
--- a/tty/tty-implement-btm-as-mutex-instead-of-bkl.patch
+++ b/tty/tty-implement-btm-as-mutex-instead-of-bkl.patch
@@ -1,20 +1,15 @@
-From arnd@arndb.de Wed Jun 16 13:46:10 2010
+From arnd@arndb.de Fri Aug 6 13:19:01 2010
From: Arnd Bergmann <arnd@arndb.de>
-Date: Tue, 1 Jun 2010 22:53:09 +0200
+To: "Greg Kroah-Hartman" <gregkh@suse.de>
Subject: tty: implement BTM as mutex instead of BKL
-To: Greg KH <gregkh@suse.de>
-Cc: linux-kernel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>, Alan Cox <alan@lxorguk.ukuu.org.uk>, Frederic Weisbecker <fweisbec@gmail.com>, John Kacur <jkacur@redhat.com>
-Message-ID: <1275425591-8803-30-git-send-email-arnd@arndb.de>
-
+Date: Fri, 6 Aug 2010 21:40:30 +0200
+Cc: linux-kernel@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>
+Message-Id: <201008062140.30555.arnd@arndb.de>
The tty locking now follows the rules for mutexes, so
we can replace the BKL usage with a new subsystem
wide mutex.
-This patch for now makes the new behaviour an optional
-experimental feature that can be enabled for testing
-purposes.
-
Using a regular mutex here will change the behaviour
when blocked on the BTM from spinning to sleeping,
but that should not be visible to the user.
@@ -29,9 +24,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/char/Makefile | 1 +
drivers/char/tty_mutex.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
- include/linux/tty.h | 8 ++++++++
- lib/Kconfig.debug | 10 ++++++++++
- 4 files changed, 66 insertions(+)
+ include/linux/tty.h | 18 +++++-------------
+ 3 files changed, 53 insertions(+), 13 deletions(-)
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
@@ -39,7 +33,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
obj-y += mem.o random.o tty_io.o n_tty.o tty_ioctl.o tty_ldisc.o tty_buffer.o tty_port.o
-+obj-$(CONFIG_TTY_MUTEX) += tty_mutex.o
++obj-y += tty_mutex.o
obj-$(CONFIG_LEGACY_PTYS) += pty.o
obj-$(CONFIG_UNIX98_PTYS) += pty.o
obj-y += misc.o
@@ -95,45 +89,29 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+EXPORT_SYMBOL(tty_unlock);
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
-@@ -578,7 +578,14 @@ extern int vt_ioctl(struct tty_struct *t
+@@ -578,20 +578,12 @@ extern int vt_ioctl(struct tty_struct *t
extern long vt_compat_ioctl(struct tty_struct *tty, struct file * file,
unsigned int cmd, unsigned long arg);
+/* tty_mutex.c */
/* functions for preparation of BKL removal */
-+#ifdef CONFIG_TTY_MUTEX
+-static inline void tty_lock(void) __acquires(kernel_lock)
+-{
+-#ifdef CONFIG_LOCK_KERNEL
+- /* kernel_locked is 1 for !CONFIG_LOCK_KERNEL */
+- WARN_ON(kernel_locked());
+-#endif
+- lock_kernel();
+-}
+-static inline void tty_unlock(void) __releases(kernel_lock)
+-{
+- unlock_kernel();
+-}
+-#define tty_locked() (kernel_locked())
+extern void __lockfunc tty_lock(void) __acquires(tty_lock);
+extern void __lockfunc tty_unlock(void) __releases(tty_lock);
+extern struct task_struct *__big_tty_mutex_owner;
+#define tty_locked() (current == __big_tty_mutex_owner)
-+#else
- static inline void tty_lock(void) __acquires(kernel_lock)
- {
- #ifdef CONFIG_LOCK_KERNEL
-@@ -592,6 +599,7 @@ static inline void tty_unlock(void) __re
- unlock_kernel();
- }
- #define tty_locked() (kernel_locked())
-+#endif
/*
* wait_event_interruptible_tty -- wait for a condition with the tty lock held
---- a/lib/Kconfig.debug
-+++ b/lib/Kconfig.debug
-@@ -438,6 +438,16 @@ config RT_MUTEX_TESTER
- help
- This option enables a rt-mutex tester.
-
-+config TTY_MUTEX
-+ bool "Use a mutex instead of BKL for TTY locking"
-+ depends on EXPERIMENTAL && SMP
-+ help
-+ The TTY subsystem traditionally depends on the big kernel lock
-+ for serialization. Saying Y here replaces the BKL with the Big
-+ TTY Mutex (BTM).
-+ Building a kernel without the BKL is only possible with TTY_MUTEX
-+ enabled.
-+
- config DEBUG_SPINLOCK
- bool "Spinlock and rw-lock debugging: basic checks"
- depends on DEBUG_KERNEL