Subject: MicroVAX 2000 console blues [Was: Problem booting MicroVax 2000 - please
To: Anders Magnusson <ragge@ludd.luth.se>
From: Thomas Seidmann <tseidmann@SIMULTAN.CH>
List: port-vax
Date: 05/20/1999 10:15:56
Anders Magnusson wrote:
> 
> > Thomas Seidmann wrote:
> >
> > >Hi NetBSD/vax users,
> > >
> > >I am by far no beginner to <any>BSD, but I've come accross a problem I
> > >cannot solve. I try to netboot my MV2000 (6MB RAM)under NetBSD 1.4. >The
> > >MOP and BOOTP steps are sucessfully passed as well as loading the >kernel
> > >via NFS. The loader prints the sizes and then the console is dead. The
> > >symptoms are the same as described in the excellent netbooting HOWTO >for
> > >the when trying to boot sitting behind the non-serial-console, i.e. the
> > >machine can be pinged but the console is dead. Naturally this is
> > >definitely not my case. The console as well as the netboot server is
> > >FreeBSD/i386, the serial console is set to 9600 Bd 8N1.
> >
> >
> > I ran into similar problems with my uV2k, turns out that the console had
> > changed ports, ie. all the boot commands (B esa0 etc..) happen normally on
> > (was it?) port1 of the cigarette box thingy, the bootloader comes along
> > nicely, but when the kernel starts loading all output is switched to (don't
> > remember) port3 (the port on the right anyway).
> > This was on stock 1.3.2.
> >
> Console on VS2000 under 1.3.2 is broken.

Apparently this is true, but in 1.4 it seems to be even "more broken",
but read on for details.

> Console under 1.4 should be set followong the rules: (in priority order)
>         - If the DIAGCONS bit in the CFGTST reg is set, use line 3
>           as console.
>         - If the MULTU bit in the CFGTST reg is clear and graphics board
>           is found, use graphics console.
>         - If the MULTU bit in the CFGTST reg is set or the graphics board
>           is not found or unsupported, use line 0 as console.
> 
> This should be the correct sequence I think.

I've checked the value of the CFGTST register. It's value on my uV2000
is FFCB, which interprets: MicroVAX with net option, console NOT on line
#3, video option (?) and additional 4 MB. All except the video option
are true. Hopefully I've found the correct source code file, namely
sys/src/arch/vax/vsa/smg.c, which contains:

int smgprobe(void);
int
smgprobe()
{	switch (vax_boardtype) {
	case VAX_BTYP_410:
	case VAX_BTYP_420:
	case VAX_BTYP_43:
		if (vax_confdata & 0x20) /* doesn't use graphics console */
			break;
		sm_addr = (caddr_t)vax_map_physmem(SMADDR, (SMSIZE/VAX_NBPG));
		if (sm_addr == 0)
			return 0;
		return 1;
	default:
		break;
	}
	return 0;
}

The code checks only bit 0x20 (console on line #3), which is 0. Then it
goes on, I guess trying to map memory of the display? I have too littel
understanding whether this can succeed, but nevertheless bit 0x80
(MicroVAX or VAXStation) is not tested. I've found only place where this
is tested, and that one is only for filling the cpu_model variable in
locore.c. That's why I think, Ragge, the second and third rule is not
quite correct. Of course maybe I'm completely wrong.

My suggestion would be to replace the incriminated if-statement with:

		if (vax_confdata & (0x20 | 0x80)) /* doesn't use graphics console */
			break;

I would be happy to try to compile a kernel with this change in order to
test it, but unfortunately firstly I have to install NetBSD 1.3.2 on my
VAX (with the port 0 -> 3 switching exercise), and this I won't be able
to do until a couple of days.

> -- Ragge

Thomas