Module Name: src Committed By: mrg Date: Thu Jan 13 05:20:27 UTC 2011
Modified Files: src/sys/arch/sparc/include: cpu.h src/sys/arch/sparc/sparc: cpu.c cpuvar.h genassym.cf locore.s machdep.c trap.c vm_machdep.c Log Message: introduce a hack to workaround the savefpstate IPI get's NULL struct fpstate *. add a new entry point ipi_savefpstate() that is used for this IPI instead of the plain ipi_savefpstate(). check for %o0 being NULL, and if so, just return. add event counters for the savefpstate IPI, and another one for when it detects the NULL problem. make the cpu_info struct xmpsg be aligned to a single cache line. with this change applied (and another minor change in testing) my SS20 with dual SM75's has survived for 17 hours on build.sh -j5, and has reported 7 NULL savefps. (the minor change seems to have a significant effect at reducing this number, but more testing is needed for it.) XXX: this is horrible and we really need to find the real problem XXX: but this should let people use sparc smp again, and fixes XXX: for the real problem can be tested by seeing if any of the XXX: savefp IPI null counter becomes non-zero. To generate a diff of this commit: cvs rdiff -u -r1.89 -r1.90 src/sys/arch/sparc/include/cpu.h cvs rdiff -u -r1.223 -r1.224 src/sys/arch/sparc/sparc/cpu.c cvs rdiff -u -r1.83 -r1.84 src/sys/arch/sparc/sparc/cpuvar.h cvs rdiff -u -r1.61 -r1.62 src/sys/arch/sparc/sparc/genassym.cf cvs rdiff -u -r1.258 -r1.259 src/sys/arch/sparc/sparc/locore.s cvs rdiff -u -r1.303 -r1.304 src/sys/arch/sparc/sparc/machdep.c cvs rdiff -u -r1.184 -r1.185 src/sys/arch/sparc/sparc/trap.c cvs rdiff -u -r1.101 -r1.102 src/sys/arch/sparc/sparc/vm_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.