- avr32-fix-__const_udelay-overflow-bug.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled

     AVR32: Fix __const_udelay overflow bug

has been removed from the -mm tree.  Its filename is

     avr32-fix-__const_udelay-overflow-bug.patch

This patch was dropped because it was folded into avr32-arch.patch

------------------------------------------------------
Subject: AVR32: Fix __const_udelay overflow bug
From: Haavard Skinnemoen <hskinnemoen@xxxxxxxxx>

During testing it was discovered that mdelay() didn't provide as long delay
as it should.  The reason is that __const_udelay() should have stored the
result of (loops_per_jiffy * HZ * xloops) in a 64-bit register pair but
didn't.

Fix the problem by doing a 32 x 32 => 64 bit multiplication in inline
assembly.  This could probably have been solved by some casting, but IMO
the inline asm makes the intention more clear.  As an added bonus, the new
code looks more like the i386 code.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@xxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 arch/avr32/lib/delay.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

diff -puN arch/avr32/lib/delay.c~avr32-fix-__const_udelay-overflow-bug arch/avr32/lib/delay.c
--- a/arch/avr32/lib/delay.c~avr32-fix-__const_udelay-overflow-bug
+++ a/arch/avr32/lib/delay.c
@@ -38,7 +38,9 @@ inline void __const_udelay(unsigned long
 {
 	unsigned long long loops;
 
-	loops = (current_cpu_data.loops_per_jiffy * HZ) * xloops;
+	asm("mulu.d %0, %1, %2"
+	    : "=r"(loops)
+	    : "r"(current_cpu_data.loops_per_jiffy * HZ), "r"(xloops));
 	__delay(loops >> 32);
 }
 
_

Patches currently in -mm which might be from hskinnemoen@xxxxxxxxx are

origin.patch
avr32-arch.patch
avr32-fix-__const_udelay-overflow-bug.patch
remove-zone_dma-remains-from-avr32.patch
avr32-mtd-static-memory-controller-driver-try-2.patch
avr32-mtd-at49bv6416-platform-device-for-atstk1000.patch
directed-yield-cpu_relax-variants-for-spinlocks-and-rw-locks.patch
generic-ioremap_page_range-implementation.patch
generic-ioremap_page_range-implementation-fix.patch
generic-ioremap_page_range-implementation-nommu-fix.patch
generic-ioremap_page_range-flush_cache_vmap.patch
generic-ioremap_page_range-alpha-conversion.patch
generic-ioremap_page_range-avr32-conversion.patch
generic-ioremap_page_range-cris-conversion.patch
generic-ioremap_page_range-i386-conversion.patch
generic-ioremap_page_range-i386-conversion-fix.patch
generic-ioremap_page_range-m32r-conversion.patch
generic-ioremap_page_range-mips-conversion.patch
generic-ioremap_page_range-mips-conversion-fix.patch
generic-ioremap_page_range-parisc-conversion.patch
generic-ioremap_page_range-s390-conversion.patch
generic-ioremap_page_range-sh-conversion.patch
generic-ioremap_page_range-sh64-conversion.patch
generic-ioremap_page_range-x86_64-conversion.patch
generic-ioremap_page_range-x86_64-conversion-fix.patch
avr32-implement-kernel_execve.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux