Vax 730 memory ecc error reporting
Rich Altmaier
richa at ios.UUCP
Fri Mar 23 14:04:59 AEST 1984
Regarding memory ecc error reporting, for the Vax 730, corrections
similar to the 750 as posted by Bill Sebok are of course required.
However there is additional trouble in the code generated for the 730.
The 'if (M730_ERR(mcr)&M730_UNCORR)' statement generates a 'bbc' instruction
which causes a further machine check as this instruction is
not valid for io space (not permitted by the Hardware Handbook,
I/O Space Restrictions appendix).
So I revised things to just read the memory controller registers, then
test bits. Changes as follows, for 4.1 at least.
sys/machdep.c, changes as shown under #ifdef IOS for memerr().
case VAX_730:
if (M730_ERR(mcr)) {
struct mcr amcr;
amcr.mc_reg[0] = mcr->mc_reg[0];
#ifdef IOS our change
amcr.mc_reg[1] = mcr->mc_reg[1]; /* Must insure valid instruction is
generated for io space access. Not extzv or bbc. */
printf("mcr%d: %s syn %x\n",
m, ((M730_ERR(&amcr) & M730_UNCORR) ? "HARD ecc" : "soft ecc"),
M730_SYN(&amcr));
/* don't bother to print M730_ADDR(&amcr)
as Hardware Handbook claims bits are undefined,
so (conveniently) one can't tell what board is bad.*/
#else as done in 4.1
printf("mcr%d: soft ecc addr %x syn %x\n",
m, M730_ADDR(&amcr), M730_SYN(&amcr));
#endif IOS
M730_INH(mcr);
}
break;
h/mem.h changes:
add
#define M730_UNCORR 0x80000000 /* Read Data Substitute, uncorrectable err in [1] */
change M730_ERR to
#define M730_ERR(mcr) ((mcr)->mc_reg[1] & (M730_CRD|M730_UNCORR))
Rich Altmaier, Integrated Office Systems, 408 257-0171
{decwrl,qubix}!ios!richa
More information about the Comp.unix.wizards
mailing list