Subject: Re: VT420 and VAXstation 4000/90
To: Chuck McManis <cmcmanis@mcmanis.com>
From: Hugh Graham <hugh@openbsd.org>
List: port-vax
Date: 04/28/2002 12:05:45
On Sat, Apr 27, 2002 at 09:37:54PM -0700, Chuck McManis wrote:
> 
> Second NetBSD _will_ screw up the Flash monitor on your 4000/90 so before 
> you start you should really make a copy of it. Either peruse the archives 
> of this list or write me off line and I can share with you a fairly painful 
> way to do it.
> 
Since it seemed likely OpenBSD would have inherited this bug, I put
some effort into trying to track down possible causes. Well one of
our developers recently obtained a 4000/90, and I had him spend a
couple days incrementally booting and power cycling, trying to
isolate the exact position of any probe that caused any problems.

We finally let it go multiuser, and no corruption has been observed
over the last few weeks. It's *possible* that a check I added to dz
some time ago, when I learned it probed in the middle of the feprom,
has prevented the corruption. We haven't removed the check to test
this hypothesis, and I'm not even sure if this type of memory is
vulnerable to a simple write without special gymnastics.

Anyway, I don't see how it can hurt, so here's the check:

Index: dz_ibus.c
===================================================================
RCS file: /cvs/src/sys/arch/vax/vsa/dz_ibus.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- dz_ibus.c	2001/08/26 18:25:06	1.8
+++ dz_ibus.c	2001/10/01 13:05:07	1.9
@@ -1,4 +1,4 @@
-/*	$OpenBSD: dz_ibus.c,v 1.8 2001/08/26 18:25:06 hugh Exp $	*/
+/*	$OpenBSD: dz_ibus.c,v 1.9 2001/10/01 13:05:07 hugh Exp $	*/
 /*	$NetBSD: dz_ibus.c,v 1.15 1999/08/27 17:50:42 ragge Exp $ */
 /*
  * Copyright (c) 1998 Ludd, University of Lule}, Sweden.
@@ -125,10 +125,11 @@
 	struct ss_dz *dzP;
 	short i;
 
-#if VAX53
-	if (vax_boardtype == VAX_BTYP_1303)
+#if VAX53 || VAX49
+	if (vax_boardtype == VAX_BTYP_49 ||
+	    vax_boardtype == VAX_BTYP_1303)
 		if (cf->cf_loc[0] != 0x25000000)
-			return 0; /* Ugly */
+			return 0; /* don't probe unnecessarily */
 #endif
 
 	dzP = (struct ss_dz *)va->va_addr;

> After you do that, it would be really nice if you could make the firmware 
> image available for those of us with screwed up 90's.
> 
I did also have him make a dump of the firmware before beginning,
but it seems that the layout changed between revisions, so I'm not
sure if it will be useful to isolate any points of corruption in
the one you provided some time back. I suppose it's also possible
the different revision isn't vulnerable.

You can get it here: http://209.53.9.99/vax/millert-4k90firm.bin

Hope it's helpful,

/Hugh