Here's what I think we should do for now (attached patch). /Carsten Dominic Sweetman wrote: > Carsten, > > > I think we should get rid of the prefetches until someone comes up with a > > version that doesn't prefetch beyond the copy destination/source area. > > I agree. > > -- > Dominic -- _ _ ____ ___ Carsten Langgaard Mailto:carstenl@mips.com |\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527 | \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555 TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556 Denmark http://www.mips.com
Index: arch/mips/lib/memcpy.S =================================================================== RCS file: /home/cvs/linux/arch/mips/lib/memcpy.S,v retrieving revision 1.6.2.4 diff -u -r1.6.2.4 memcpy.S --- arch/mips/lib/memcpy.S 19 Sep 2002 14:01:24 -0000 1.6.2.4 +++ arch/mips/lib/memcpy.S 5 Dec 2002 15:06:58 -0000 @@ -21,6 +21,17 @@ #define src a1 #define len a2 +/* + * There is spread a number of PREF instructions in the memcpy function, but + * there is no check if we are prefetching out-side the "memcpy" areas. + * This is extremely dangerous because we might prefetch out-side the physical + * memory area causing e.g. a bus error or something even more nasty. + * It could also hit a DMA buffer region, and there by break the PCI DMA + * flushing scheme. + * So for now, we simply get rid of the PREFs here. + */ +#define PREF(hint,addr) + /* * Spec * Index: arch/mips64/lib/memcpy.S =================================================================== RCS file: /home/cvs/linux/arch/mips64/lib/memcpy.S,v retrieving revision 1.9.2.3 diff -u -r1.9.2.3 memcpy.S --- arch/mips64/lib/memcpy.S 19 Sep 2002 14:01:24 -0000 1.9.2.3 +++ arch/mips64/lib/memcpy.S 5 Dec 2002 15:06:59 -0000 @@ -21,6 +21,17 @@ #define src a1 #define len a2 +/* + * There is spread a number of PREF instructions in the memcpy function, but + * there is no check if we are prefetching out-side the "memcpy" areas. + * This is extremely dangerous because we might prefetch out-side the physical + * memory area causing e.g. a bus error or something even more nasty. + * It could also hit a DMA buffer region, and there by break the PCI DMA + * flushing scheme. + * So for now, we simply get rid of the PREFs here. + */ +#define PREF(hint,addr) + /* * Spec *