Subject: Re: MicroVAX 2000 console blues [Was: Problem booting MicroVax 2000 - please help]
To: Thomas Seidmann <tseidmann@SIMULTAN.CH>
From: Anders Magnusson <ragge@ludd.luth.se>
List: port-vax
Date: 05/20/1999 16:53:51
> 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.
> 
You're quite correct! A closer look shows that the console is never 
set except for when using the QDSS as console. I will find out a nice
way to do this checking.

-- Ragge