summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2013-01-08 17:39:13 -0500
committerPaul Gortmaker <paul.gortmaker@windriver.com>2013-01-08 17:39:13 -0500
commit6c08940e0a984b1a1f8e661d65f5b1b8185a79d8 (patch)
treeae5deaa0da79a3f1cf77ea2ab34f24ea52f56433
parent7aa7a3cc22b49827a7eed02a457acedfe29b3473 (diff)
downloadlongterm-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.patch98
-rw-r--r--queue/series3
-rw-r--r--queue/um-Use-RWSEM_GENERIC_SPINLOCK-on-x86.patch49
-rw-r--r--queue/x86-Get-rid-of-asmregparm.patch79
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
+