[kernel] r15649 - dists/sid/linux-2.6/debian/patches/bugfix/mips

Aurelien Jarno aurel32 at alioth.debian.org
Sun May 9 04:47:00 UTC 2010


Author: aurel32
Date: Sun May  9 04:46:58 2010
New Revision: 15649

Log:
Add missing patch from previous commit

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/mips/mips-ide-flush-dcache.patch

Added: dists/sid/linux-2.6/debian/patches/bugfix/mips/mips-ide-flush-dcache.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/mips/mips-ide-flush-dcache.patch	Sun May  9 04:46:58 2010	(r15649)
@@ -0,0 +1,46 @@
+From: Sebastian Andrzej Siewior <sebastian at breakpoint.cc>
+Subject: mips/ide: flush dcache also if icache does not snoop dcache
+
+If this is not done then the new just read data which remains in dcache
+will not make it into icache on time. Thus the CPU loads invalid data
+and executes crap. The result is that the user is not able to execute
+anything from its IDE based media while reading plain data is still
+working well.
+This problem has been reported as Debian #404951.
+
+Cc: stable at kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <sebastian at breakpoint.cc>
+---
+ arch/mips/include/asm/mach-generic/ide.h |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/arch/mips/include/asm/mach-generic/ide.h b/arch/mips/include/asm/mach-generic/ide.h
+index 9c93a5b..e80e47f 100644
+--- a/arch/mips/include/asm/mach-generic/ide.h
++++ b/arch/mips/include/asm/mach-generic/ide.h
+@@ -23,7 +23,7 @@
+ static inline void __ide_flush_prologue(void)
+ {
+ #ifdef CONFIG_SMP
+-	if (cpu_has_dc_aliases)
++	if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc)
+ 		preempt_disable();
+ #endif
+ }
+@@ -31,14 +31,14 @@ static inline void __ide_flush_prologue(void)
+ static inline void __ide_flush_epilogue(void)
+ {
+ #ifdef CONFIG_SMP
+-	if (cpu_has_dc_aliases)
++	if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc)
+ 		preempt_enable();
+ #endif
+ }
+ 
+ static inline void __ide_flush_dcache_range(unsigned long addr, unsigned long size)
+ {
+-	if (cpu_has_dc_aliases) {
++	if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc) {
+ 		unsigned long end = addr + size;
+ 
+ 		while (addr < end) {



More information about the Kernel-svn-changes mailing list