Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!harpo!decvax!decwrl!sun!qubix!ios!richa From: richa@ios.UUCP (Rich Altmaier) Newsgroups: net.unix-wizards Subject: Vax 730 memory ecc error reporting Message-ID: <118@ios.UUCP> Date: Thu, 22-Mar-84 23:04:59 EST Article-I.D.: ios.118 Posted: Thu Mar 22 23:04:59 1984 Date-Received: Sun, 25-Mar-84 13:05:59 EST Lines: 42 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