diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2013-01-08 17:39:13 -0500 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2013-01-08 17:39:13 -0500 |
commit | 6c08940e0a984b1a1f8e661d65f5b1b8185a79d8 (patch) | |
tree | ae5deaa0da79a3f1cf77ea2ab34f24ea52f56433 | |
parent | 7aa7a3cc22b49827a7eed02a457acedfe29b3473 (diff) | |
download | longterm-queue-2.6.34-6c08940e0a984b1a1f8e661d65f5b1b8185a79d8.tar.gz |
add commits to fix asmregparam build fails with new gcc
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | queue/rwsem-Remove-redundant-asmregparm-annotation.patch | 98 | ||||
-rw-r--r-- | queue/series | 3 | ||||
-rw-r--r-- | queue/um-Use-RWSEM_GENERIC_SPINLOCK-on-x86.patch | 49 | ||||
-rw-r--r-- | queue/x86-Get-rid-of-asmregparm.patch | 79 |
4 files changed, 229 insertions, 0 deletions
diff --git a/queue/rwsem-Remove-redundant-asmregparm-annotation.patch b/queue/rwsem-Remove-redundant-asmregparm-annotation.patch new file mode 100644 index 0000000..245acda --- /dev/null +++ b/queue/rwsem-Remove-redundant-asmregparm-annotation.patch @@ -0,0 +1,98 @@ +From 848a55c3c18552502eeadd58e26207378ecb7f2b Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner <tglx@linutronix.de> +Date: Wed, 26 Jan 2011 21:32:01 +0100 +Subject: [PATCH 1/3] rwsem: Remove redundant asmregparm annotation + +commit d123375425d7df4b6081a631fc1203fceafa59b2 upstream. + +Peter Zijlstra pointed out, that the only user of asmregparm (x86) is +compiling the kernel already with -mregparm=3. So the annotation of +the rwsem functions is redundant. Remove it. + +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Cc: Peter Zijlstra <peterz@infradead.org> +Cc: David Howells <dhowells@redhat.com> +Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> +Cc: Matt Turner <mattst88@gmail.com> +Cc: Tony Luck <tony.luck@intel.com> +Cc: Heiko Carstens <heiko.carstens@de.ibm.com> +Cc: Paul Mundt <lethal@linux-sh.org> +Cc: David Miller <davem@davemloft.net> +Cc: Chris Zankel <chris@zankel.net> +LKML-Reference: <alpine.LFD.2.00.1101262130450.31804@localhost6.localdomain6> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +[PG: fixes compile errors when using newer gcc on 2.6.34 baseline] +Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> +--- + arch/x86/include/asm/rwsem.h | 12 ++++-------- + lib/rwsem.c | 10 ++++------ + 2 files changed, 8 insertions(+), 14 deletions(-) + +diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h +index 606ede1..c46685c 100644 +--- a/arch/x86/include/asm/rwsem.h ++++ b/arch/x86/include/asm/rwsem.h +@@ -45,14 +45,10 @@ + + struct rwsem_waiter; + +-extern asmregparm struct rw_semaphore * +- rwsem_down_read_failed(struct rw_semaphore *sem); +-extern asmregparm struct rw_semaphore * +- rwsem_down_write_failed(struct rw_semaphore *sem); +-extern asmregparm struct rw_semaphore * +- rwsem_wake(struct rw_semaphore *); +-extern asmregparm struct rw_semaphore * +- rwsem_downgrade_wake(struct rw_semaphore *sem); ++extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); ++extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); ++extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *); ++extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); + + /* + * the semaphore definition +diff --git a/lib/rwsem.c b/lib/rwsem.c +index ceba8e2..a112c06 100644 +--- a/lib/rwsem.c ++++ b/lib/rwsem.c +@@ -188,8 +188,7 @@ rwsem_down_failed_common(struct rw_semaphore *sem, + /* + * wait for the read lock to be granted + */ +-asmregparm struct rw_semaphore __sched * +-rwsem_down_read_failed(struct rw_semaphore *sem) ++struct rw_semaphore __sched *rwsem_down_read_failed(struct rw_semaphore *sem) + { + struct rwsem_waiter waiter; + +@@ -202,8 +201,7 @@ rwsem_down_read_failed(struct rw_semaphore *sem) + /* + * wait for the write lock to be granted + */ +-asmregparm struct rw_semaphore __sched * +-rwsem_down_write_failed(struct rw_semaphore *sem) ++struct rw_semaphore __sched *rwsem_down_write_failed(struct rw_semaphore *sem) + { + struct rwsem_waiter waiter; + +@@ -217,7 +215,7 @@ rwsem_down_write_failed(struct rw_semaphore *sem) + * handle waking up a waiter on the semaphore + * - up_read/up_write has decremented the active part of count if we come here + */ +-asmregparm struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem) ++struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem) + { + unsigned long flags; + +@@ -237,7 +235,7 @@ asmregparm struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem) + * - caller incremented waiting part of count and discovered it still negative + * - just wake up any readers at the front of the queue + */ +-asmregparm struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem) ++struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem) + { + unsigned long flags; + +-- +1.7.12.1 + diff --git a/queue/series b/queue/series index 15bc304..c2b30dd 100644 --- a/queue/series +++ b/queue/series @@ -77,3 +77,6 @@ mutex-Place-lock-in-contended-state-after-fastpath_l.patch crypto-ghash-Avoid-null-pointer-dereference-if-no-ke.patch net-Fix-ip-link-add-netns-oops.patch sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch +rwsem-Remove-redundant-asmregparm-annotation.patch +um-Use-RWSEM_GENERIC_SPINLOCK-on-x86.patch +x86-Get-rid-of-asmregparm.patch diff --git a/queue/um-Use-RWSEM_GENERIC_SPINLOCK-on-x86.patch b/queue/um-Use-RWSEM_GENERIC_SPINLOCK-on-x86.patch new file mode 100644 index 0000000..17dbd56 --- /dev/null +++ b/queue/um-Use-RWSEM_GENERIC_SPINLOCK-on-x86.patch @@ -0,0 +1,49 @@ +From 116ead8990d193b47c1597037feab7b6b4346bba Mon Sep 17 00:00:00 2001 +From: Richard Weinberger <richard@nod.at> +Date: Mon, 23 May 2011 22:51:33 +0200 +Subject: [PATCH 2/3] um: Use RWSEM_GENERIC_SPINLOCK on x86 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +commit 3a3679078aed2c451ebc32836bbd3b8219a65e01 upstream. + +Commit d12337 (rwsem: Remove redundant asmregparm annotation) +broke rwsem on UML. + +As we cannot compile UML with -mregparm=3 and keeping asmregparm only +for UML is inadequate the easiest solution is using RWSEM_GENERIC_SPINLOCK. + +Thanks to Thomas Gleixner for the idea. + +Reported-by: Toralf Förster <toralf.foerster@gmx.de> +Tested-by: Toralf Förster <toralf.foerster@gmx.de> +Signed-off-by: Richard Weinberger <richard@nod.at> +Cc: user-mode-linux-devel@lists.sourceforge.net +Link: http://lkml.kernel.org/r/%3C1306183893-26655-1-git-send-email-richard%40nod.at%3E +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> +--- + arch/um/Kconfig.x86 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/um/Kconfig.x86 b/arch/um/Kconfig.x86 +index 5ee3280..91668e1 100644 +--- a/arch/um/Kconfig.x86 ++++ b/arch/um/Kconfig.x86 +@@ -20,10 +20,10 @@ config X86_32 + select HAVE_AOUT + + config RWSEM_XCHGADD_ALGORITHM +- def_bool X86_XADD ++ def_bool X86_XADD && 64BIT + + config RWSEM_GENERIC_SPINLOCK +- def_bool !X86_XADD ++ def_bool !RWSEM_XCHGADD_ALGORITHM + + config 3_LEVEL_PGTABLES + bool "Three-level pagetables (EXPERIMENTAL)" if !64BIT +-- +1.7.12.1 + diff --git a/queue/x86-Get-rid-of-asmregparm.patch b/queue/x86-Get-rid-of-asmregparm.patch new file mode 100644 index 0000000..753f111 --- /dev/null +++ b/queue/x86-Get-rid-of-asmregparm.patch @@ -0,0 +1,79 @@ +From 7853dbf698bd46aeb82d10ccc053c8a77c3ffe19 Mon Sep 17 00:00:00 2001 +From: Richard Weinberger <richard@nod.at> +Date: Tue, 24 May 2011 00:18:05 +0200 +Subject: [PATCH 3/3] x86: Get rid of asmregparm + +commit 1b4ac2a935aaf194241a2f4165d6407ba9650e1a upstream. + +As UML does no longer need asmregparm we can remove it. + +Signed-off-by: Richard Weinberger <richard@nod.at> +Cc: namhyung@gmail.com +Cc: davem@davemloft.net +Cc: fweisbec@gmail.com +Cc: dhowells@redhat.com +Link: http://lkml.kernel.org/r/%3C1306189085-29896-1-git-send-email-richard%40nod.at%3E +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> +--- + arch/x86/include/asm/linkage.h | 5 ----- + arch/x86/kernel/ptrace.c | 4 ++-- + include/linux/linkage.h | 4 ---- + 3 files changed, 2 insertions(+), 11 deletions(-) + +diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h +index 12d55e7..4814297 100644 +--- a/arch/x86/include/asm/linkage.h ++++ b/arch/x86/include/asm/linkage.h +@@ -8,11 +8,6 @@ + + #ifdef CONFIG_X86_32 + #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) +-/* +- * For 32-bit UML - mark functions implemented in assembly that use +- * regparm input parameters: +- */ +-#define asmregparm __attribute__((regparm(3))) + + /* + * Make sure the compiler doesn't do anything stupid with the +diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c +index 2e9b550..8b57128 100644 +--- a/arch/x86/kernel/ptrace.c ++++ b/arch/x86/kernel/ptrace.c +@@ -1730,7 +1730,7 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, + * We must return the syscall number to actually look up in the table. + * This can be -1L to skip running any syscall at all. + */ +-asmregparm long syscall_trace_enter(struct pt_regs *regs) ++long syscall_trace_enter(struct pt_regs *regs) + { + long ret = 0; + +@@ -1775,7 +1775,7 @@ asmregparm long syscall_trace_enter(struct pt_regs *regs) + return ret ?: regs->orig_ax; + } + +-asmregparm void syscall_trace_leave(struct pt_regs *regs) ++void syscall_trace_leave(struct pt_regs *regs) + { + bool step; + +diff --git a/include/linux/linkage.h b/include/linux/linkage.h +index 5126cce..a500d6b 100644 +--- a/include/linux/linkage.h ++++ b/include/linux/linkage.h +@@ -14,10 +14,6 @@ + #define asmlinkage CPP_ASMLINKAGE + #endif + +-#ifndef asmregparm +-# define asmregparm +-#endif +- + #define __page_aligned_data __section(.data.page_aligned) __aligned(PAGE_SIZE) + #define __page_aligned_bss __section(.bss.page_aligned) __aligned(PAGE_SIZE) + +-- +1.7.12.1 + |