[2265] in Release_7.7_team
R5000 rev 1.x problem
daemon@ATHENA.MIT.EDU (Robert A Basch)
Wed May 17 15:53:30 2000
Message-Id: <200005171953.PAA552604@aupair.mit.edu>
To: release-team@MIT.EDU
Date: Wed, 17 May 2000 15:53:22 -0400
From: Robert A Basch <rbasch@MIT.EDU>
The two machines in the beta-sgi62 cluster which are in the list of 89
machines with the rev 1.x R5000 CPU are capacitor-bank and special-forces.
Here are the directions for disabling the software workaround which
breaks AFS under IRIX 6.5.7 on R5000 rev 1.x Indy's:
Bring the machine down, and enter the PROM command monitor. At the
">>" prompt, enter:
setenv -p _R5000_CVT_WAR 0
This sets a persistent special environment variable which will disable
the workaround in the kernel. For now, this is required in order for
the update to Athena 8.4 to succeed.
The processor revision can be obtained by doing "hinv -t cpu".
(The above setting can be undone by doing "unsetenv _R5000_CVT_WAR"
at PROM command level; this should be done after we have a fix for
the AFS problem under 6.5.7).
The mipscheck(1) man page contains some more information about the
problem, though it should be noted that the processor flaw actually
exists in all rev 1.x R5000's; according to the R5000 errata sheet,
the flaw was corrected in rev 2.1:
-cvtl[:action...]
Look for cvt.s.l and cvt.d.l instructions. These instructions
convert 64-bit integers to single or double floating point
format.
Revision [1.1] of the r5000 can misexecute cvt.s.l and cvt.d.l
instructions when the 64-bit integer input data is in either of the
following ranges:
0x7FF0 0000 0000 0000 to 0x7FFF FFFF FFFF FFFF
0x8000 0000 0000 0000 to 0x800F FFFF FFFF FFFF
When input data is in the preceding ranges, these instructions are
supposed to trap into the kernel where they will be emulated in
software. Unfortunately, they do not trap and they generate an
incorrect result. These instructions are fairly rare and are found in
mips3 and mips4 executables only; they are never in mips1 or mips2
programs. There is a work-around for this problem, implemented
entirely within the operating system kernel, which should be invisible
to all user programs. See the r5000 errata sheet for more details.