[kernel] r13458 - in dists/lenny/linux-2.6/debian: . patches/bugfix/s390 patches/series

Dann Frazier dannf at alioth.debian.org
Mon Apr 20 17:21:56 UTC 2009


Author: dannf
Date: Mon Apr 20 17:21:54 2009
New Revision: 13458

Log:
[s390] Fix __div64_31 for CONFIG_MARCH_G5 (Closes: #511334)

Added:
   dists/lenny/linux-2.6/debian/patches/bugfix/s390/fix__div64_31_for_G5.patch
Modified:
   dists/lenny/linux-2.6/debian/changelog
   dists/lenny/linux-2.6/debian/patches/series/16

Modified: dists/lenny/linux-2.6/debian/changelog
==============================================================================
--- dists/lenny/linux-2.6/debian/changelog	Mon Apr 20 09:38:23 2009	(r13457)
+++ dists/lenny/linux-2.6/debian/changelog	Mon Apr 20 17:21:54 2009	(r13458)
@@ -1,5 +1,6 @@
 linux-2.6 (2.6.26-16) UNRELEASED; urgency=low
 
+  [ maximilian attems ]
   * [openvz] 5dcfcf5 NETLINK: disable netns broadcast filtering.
     (closes: #520551)
   * Fix SQLite performance regression. (closes: #521420)
@@ -13,6 +14,9 @@
   * [openvz] 5b58141 ubc: uncharging too much for TCPSNDBUF.
   * [openvz] 0ff728e ve: show task's vpid and veid even inside a container.
 
+  [ dann frazier ]
+  * [s390] Fix __div64_31 for CONFIG_MARCH_G5 (Closes: #511334)
+
  -- maximilian attems <maks at debian.org>  Mon, 30 Mar 2009 17:11:49 +0200
 
 linux-2.6 (2.6.26-15) stable; urgency=high

Added: dists/lenny/linux-2.6/debian/patches/bugfix/s390/fix__div64_31_for_G5.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/lenny/linux-2.6/debian/patches/bugfix/s390/fix__div64_31_for_G5.patch	Mon Apr 20 17:21:54 2009	(r13458)
@@ -0,0 +1,31 @@
+commit 4fa81ed27781a12f6303b9263056635ae74e3e21
+Author: Martin Schwidefsky <schwidefsky at de.ibm.com>
+Date:   Wed Mar 18 13:27:32 2009 +0100
+
+    [S390] __div64_31 broken for CONFIG_MARCH_G5
+    
+    The implementation of __div64_31 for G5 machines is broken. The comments
+    in __div64_31 are correct, only the code does not do what the comments
+    say. The part "If the remainder has overflown subtract base and increase
+    the quotient" is only partially realized, the base is subtracted correctly
+    but the quotient is only increased if the dividend had the last bit set.
+    Using the correct instruction fixes the problem.
+    
+    Cc: stable at kernel.org
+    Reported-by: Frans Pop <elendil at planet.nl>
+    Tested-by: Frans Pop <elendil at planet.nl>
+    Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
+
+diff --git a/arch/s390/lib/div64.c b/arch/s390/lib/div64.c
+index a5f8300..d9e62c0 100644
+--- a/arch/s390/lib/div64.c
++++ b/arch/s390/lib/div64.c
+@@ -61,7 +61,7 @@ static uint32_t __div64_31(uint64_t *n, uint32_t base)
+ 		"	clr	%0,%3\n"
+ 		"	jl	0f\n"
+ 		"	slr	%0,%3\n"
+-		"	alr	%1,%2\n"
++		"	ahi	%1,1\n"
+ 		"0:\n"
+ 		: "+d" (reg2), "+d" (reg3), "=d" (tmp)
+ 		: "d" (base), "2" (1UL) : "cc" );

Modified: dists/lenny/linux-2.6/debian/patches/series/16
==============================================================================
--- dists/lenny/linux-2.6/debian/patches/series/16	Mon Apr 20 09:38:23 2009	(r13457)
+++ dists/lenny/linux-2.6/debian/patches/series/16	Mon Apr 20 17:21:54 2009	(r13458)
@@ -1 +1,2 @@
 + bugfix/all/0001-block-revert-part-of-18ce3751ccd488c78d3827e9f6bf54.patch
++ bugfix/s390/fix__div64_31_for_G5.patch



More information about the Kernel-svn-changes mailing list