diff options
| -rw-r--r-- | series | 2 | ||||
| -rw-r--r-- | tty/tty-implement-btm-as-mutex-instead-of-bkl.patch | 66 |
2 files changed, 23 insertions, 45 deletions
@@ -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 |
