[Pkg-uml-commit] r314 - trunk/src/user-mode-linux/debian/patches

malattia at alioth.debian.org malattia at alioth.debian.org
Sat Jul 19 07:46:54 UTC 2008


Author: malattia
Date: 2008-07-19 07:46:52 +0000 (Sat, 19 Jul 2008)
New Revision: 314

Added:
   trunk/src/user-mode-linux/debian/patches/05_down_interruptible_asmregparam.patch
Modified:
   trunk/src/user-mode-linux/debian/patches/04_workaround_gcc4.3_ICE.patch
   trunk/src/user-mode-linux/debian/patches/series
Log:
update the gcc-4.3 ICE patch to the upstream one and add a fix
for UML segfaulting on downing semaphores when the semaphoew value 
goes negative


Modified: trunk/src/user-mode-linux/debian/patches/04_workaround_gcc4.3_ICE.patch
===================================================================
--- trunk/src/user-mode-linux/debian/patches/04_workaround_gcc4.3_ICE.patch	2008-07-05 06:27:16 UTC (rev 313)
+++ trunk/src/user-mode-linux/debian/patches/04_workaround_gcc4.3_ICE.patch	2008-07-19 07:46:52 UTC (rev 314)
@@ -1,21 +1,77 @@
-# Mattia Dongili <malattia at debian.org>
-# 
-# gcc-4.3 dies when building UML 2.6.25
-# -------------------------------------
-# see http://gcc.gnu.org/ml/gcc-bugs/2008-03/msg01433.html
-# apparently not using -fno-unit-at-a-time help but breaks 
-# UML on some fedora version, see
-# http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c0a18111e571138747a98af18b3a2124df56a0d1
-# we can go ahead with this here.
-#
---- a/arch/um/Makefile	2008-07-04 08:03:01.616755671 +0900
-+++ b/arch/um/Makefile	2008-07-04 08:03:20.244755494 +0900
-@@ -77,7 +77,7 @@
+[ This patch needs to get into 2.6.26 ]
+
+There are various constraints on the use of unit-at-a-time:
+        i386 uses no-unit-at-a-time for pre-4.0 (not 4.3)
+        x86_64 uses unit-at-a-time always
+
+        Uli reported a crash on x86_64 with gcc 4.1.2 with
+unit-at-a-time, resulting in commit c0a18111e571138747a98af18b3a2124df56a0d1
+        Ingo reported a gcc internal error with gcc 4.3 with
+no-unit-at-a-timem, resulting in 22eecde2f9034764a3fd095eecfa3adfb8ec9a98
+         Benny Halevy <bhalevy at panasas.com> is seeing extern inlines
+not resolved with gcc 4.3 with no-unit-at-a-time
+
+This patch reintroduces unit-at-a-time for gcc >= 4.0, bringing back
+the possibility of Uli's crash.  If that happens, we'll debug it.
+
+I started seeing both the internal compiler errors and unresolved
+inlines on Fedora 9.  This patch fixes both problems, without so far
+reintroducing the crash reported by Uli.
+	
+Signed-off-by: Jeff Dike <jdike at linux.intel.com>
+---
+ arch/um/Makefile        |    1 -
+ arch/um/Makefile-i386   |    7 +++++++
+ arch/um/Makefile-x86_64 |    3 +++
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.22/arch/um/Makefile-i386
+===================================================================
+--- linux-2.6.22.orig/arch/um/Makefile-i386	2008-05-29 11:21:25.000000000 -0400
++++ linux-2.6.22/arch/um/Makefile-i386	2008-07-07 13:11:10.000000000 -0400
+@@ -32,4 +32,11 @@ cflags-y += $(call cc-option,-mpreferred
+ # an unresolved reference.
+ cflags-y += -ffreestanding
+ 
++# Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
++# a lot more stack due to the lack of sharing of stacklots.  Also, gcc
++# 4.3.0 needs -funit-at-a-time for extern inline functions.
++KBUILD_CFLAGS += $(shell if [ $(call cc-version) -lt 0400 ] ; then \
++			echo $(call cc-option,-fno-unit-at-a-time); \
++			else echo $(call cc-option,-funit-at-a-time); fi ;)
++
+ KBUILD_CFLAGS += $(cflags-y)
+Index: linux-2.6.22/arch/um/Makefile-x86_64
+===================================================================
+--- linux-2.6.22.orig/arch/um/Makefile-x86_64	2008-05-29 11:21:25.000000000 -0400
++++ linux-2.6.22/arch/um/Makefile-x86_64	2008-06-30 12:21:01.000000000 -0400
+@@ -21,3 +21,6 @@ HEADER_ARCH := x86
+ 
+ LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64
+ LINK-y += -m64
++
++# Do unit-at-a-time unconditionally on x86_64, following the host
++KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time)
+Index: linux-2.6.22/arch/um/Makefile
+===================================================================
+--- linux-2.6.22.orig/arch/um/Makefile	2008-06-10 11:35:40.000000000 -0400
++++ linux-2.6.22/arch/um/Makefile	2008-07-07 12:54:13.000000000 -0400
+@@ -77,7 +77,6 @@ include $(srctree)/$(ARCH_DIR)/Makefile-
  KERNEL_DEFINES = $(strip -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask \
  			 -Dmktime=kernel_mktime $(ARCH_KERNEL_DEFINES))
  KBUILD_CFLAGS += $(KERNEL_DEFINES)
 -KBUILD_CFLAGS += $(call cc-option,-fno-unit-at-a-time,)
-+#KBUILD_CFLAGS += $(call cc-option,-fno-unit-at-a-time,)
  
  PHONY += linux
  
+
+-------------------------------------------------------------------------
+Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
+Studies have shown that voting for your favorite open source project,
+along with a healthy diet, reduces your potential for chronic lameness
+and boredom. Vote Now at http://www.sourceforge.net/community/cca08
+_______________________________________________
+User-mode-linux-devel mailing list
+User-mode-linux-devel at lists.sourceforge.net
+https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
+

Added: trunk/src/user-mode-linux/debian/patches/05_down_interruptible_asmregparam.patch
===================================================================
--- trunk/src/user-mode-linux/debian/patches/05_down_interruptible_asmregparam.patch	                        (rev 0)
+++ trunk/src/user-mode-linux/debian/patches/05_down_interruptible_asmregparam.patch	2008-07-19 07:46:52 UTC (rev 314)
@@ -0,0 +1,42 @@
+The patch below solves the 2.6.25 uml crash problem for me. Looks like the
+problem should be away in 2.6.26 kernel because down_interruptible has
+changed to the C code since 2.6.26. But I got kernel panic while booting
+the 2.6.26 kernel :(.
+
+Index: linux-source-2.6.25/lib/semaphore-sleepers.c
+===================================================================
+--- linux-source-2.6.25.orig/lib/semaphore-sleepers.c	2008-04-17 11:49:44.000000000 +0900
++++ linux-source-2.6.25/lib/semaphore-sleepers.c	2008-07-19 14:54:18.275652685 +0900
+@@ -48,12 +48,12 @@
+  *    we cannot lose wakeup events.
+  */
+ 
+-void __up(struct semaphore *sem)
++asmregparm void __up(struct semaphore *sem)
+ {
+ 	wake_up(&sem->wait);
+ }
+ 
+-void __sched __down(struct semaphore *sem)
++asmregparm void __sched __down(struct semaphore *sem)
+ {
+ 	struct task_struct *tsk = current;
+ 	DECLARE_WAITQUEUE(wait, tsk);
+@@ -90,7 +90,7 @@ void __sched __down(struct semaphore *se
+ 	tsk->state = TASK_RUNNING;
+ }
+ 
+-int __sched __down_interruptible(struct semaphore *sem)
++asmregparm int __sched __down_interruptible(struct semaphore *sem)
+ {
+ 	int retval = 0;
+ 	struct task_struct *tsk = current;
+@@ -153,7 +153,7 @@ int __sched __down_interruptible(struct 
+  * single "cmpxchg" without failure cases,
+  * but then it wouldn't work on a 386.
+  */
+-int __down_trylock(struct semaphore *sem)
++asmregparm int __down_trylock(struct semaphore *sem)
+ {
+ 	int sleepers;
+ 	unsigned long flags;

Modified: trunk/src/user-mode-linux/debian/patches/series
===================================================================
--- trunk/src/user-mode-linux/debian/patches/series	2008-07-05 06:27:16 UTC (rev 313)
+++ trunk/src/user-mode-linux/debian/patches/series	2008-07-19 07:46:52 UTC (rev 314)
@@ -1,3 +1,4 @@
 02_x-terminal-emulator.patch
 03_uml_switch.patch
 04_workaround_gcc4.3_ICE.patch
+05_down_interruptible_asmregparam.patch




More information about the Pkg-uml-commit mailing list