Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site astrovax.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!allegra!princeton!astrovax!wls
From: wls@astrovax.UUCP (William L. Sebok)
Newsgroups: net.bugs.4bsd,net.unix-wizards
Subject: 4.2 BSD bug in handling "tbuf par fault" on VAX 750
Message-ID: <229@astrovax.UUCP>
Date: Mon, 5-Mar-84 16:41:08 EST
Article-I.D.: astrovax.229
Posted: Mon Mar  5 16:41:08 1984
Date-Received: Tue, 6-Mar-84 03:26:15 EST
Organization: Princeton Univ. Astrophysics
Lines: 40

Index:	/sys/vax/machdep.c 4.2BSD

Description:
	The computer (a Vax 750) occasionally panics:
		machine check 2:  cp tbuf par fault
	even though BSD 4.2 contains the patch to flush and return on tbuf
	parity errors.
	  The problem is that the test for the condition insists that bit 0 of
	the mcesr (prefetch reference bit) be zero, which need not be true.

Repeat-By:
	Eventually the computer will panic as described above.

Fix:
	Here are the diffs to /sys/vax/machdep.c.  The line numbers of the new
	machdep.c may vary as there have been other fixes necessary.

*** machdep.c.ORIG	Tue Feb 28 11:27:04 1984
--- machdep.c	Mon Mar  5 15:10:41 1984
***************
*** 811,817
  		    mcf->mc5_buserr, mcf->mc5_mcesr, mcf->mc5_pc, mcf->mc5_psl,
  		    mfpr(MCSR));
  		mtpr(MCESR, 0xf);
! 		if ((mcf->mc5_mcesr&0xf) == MC750_TBPAR) {
  			printf("tbuf par: flushing and returning\n");
  			mtpr(TBIA, 0);
  			return;

--- 822,828 -----
  		    mcf->mc5_buserr, mcf->mc5_mcesr, mcf->mc5_pc, mcf->mc5_psl,
  		    mfpr(MCSR));
  		mtpr(MCESR, 0xf);
! 		if ((mcf->mc5_mcesr&0xe) == MC750_TBPAR) {
  			printf("tbuf par: flushing and returning\n");
  			mtpr(TBIA, 0);
  			return;
-- 
Bill Sebok			Princeton University, Astrophysics
{allegra,akgua,burl,cbosgd,decvax,ihnp4,kpno,princeton,vax135}!astrovax!wls