Messages in this thread |  | | Date | Wed, 12 Sep 2001 12:51:55 +0200 | From | Steffen Persvold <> | Subject | Re: Duron kernel crash (i686 works) |
| |
VDA wrote: > > >> ... > >> kernel_fpu_end(); > >> + from-=4096; > >> + to-=4096; > >> + if(memcmp(from,to,4096)!=0) { > >> + printk("Athlon bug!"); //add printout of from,to,...? > >> + memcpy(to,from,4096); > >> + } > >> } > > RJD> I then get 'Athlon bug!' Still oopses. > > Waah! That means movntq's moved data to some other place in memory! > memcmp detected that and memcpy fixed, but that 'other place' was > corrupted and that's the cause of oops. Well, not necessarily. It might be that data just hasn't "arrived" yet because of the movntq instruction.
One thing that also puzzels me is that my is the fast_copy_page() routine laid out like this :
"2: movq (%0), %%mm0\n" " movntq %%mm0, (%1)\n" " movq 8(%0), %%mm1\n" " movntq %%mm1, 8(%1)\n" " movq 16(%0), %%mm2\n" " movntq %%mm2, 16(%1)\n" " movq 24(%0), %%mm3\n" " movntq %%mm3, 24(%1)\n" " movq 32(%0), %%mm4\n" " movntq %%mm4, 32(%1)\n" " movq 40(%0), %%mm5\n" " movntq %%mm5, 40(%1)\n" " movq 48(%0), %%mm6\n" " movntq %%mm6, 48(%1)\n" " movq 56(%0), %%mm7\n" " movntq %%mm7, 56(%1)\n"
When it's more intuitively more effective to fill the registers with reads first and then write it with "movntq" like this :
"2: movq (%0), %%mm0\n" " movq 8(%0), %%mm1\n" " movq 16(%0), %%mm2\n" " movq 24(%0), %%mm3\n" " movq 32(%0), %%mm4\n" " movq 40(%0), %%mm5\n" " movq 48(%0), %%mm6\n" " movq 56(%0), %%mm7\n" " movntq %%mm0, (%1)\n" " movntq %%mm1, 8(%1)\n" " movntq %%mm2, 16(%1)\n" " movntq %%mm3, 24(%1)\n" " movntq %%mm4, 32(%1)\n" " movntq %%mm5, 40(%1)\n" " movntq %%mm6, 48(%1)\n" " movntq %%mm7, 56(%1)\n"
Regards, -- Steffen Persvold | Scali Computer AS | Try out the world's best mailto:sp@scali.no | http://www.scali.com | performing MPI implementation: Tel: (+47) 2262 8950 | Olaf Helsets vei 6 | - ScaMPI 1.12.2 - Fax: (+47) 2262 8951 | N0621 Oslo, NORWAY | >300MBytes/s and <4uS latency - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |