[net.bugs.4bsd] autoconf botch with multiple UBA's

jim@haring.UUCP (02/15/84)

Subject: autoconf botch with multiple UBA's
Index:	/usr/sys/vax/autoconf.c

Description:
	The autoconfiguration code tries to use structures assigned
	per UBA if it finds one, even if the system has not been
	configured for those UBA's, causing illegal references and
	panic on boot.

Repeat-By:
	Try booting a system configured with only one UBA on a machine
	which has more.

Fix:
	The code in autoconf.c/probenexus() around "case NEX_UBA?"
	should look something like:

			........
		case NEX_UBA3:
			printf("uba%d at tr%d\n", numuba, nexnum);
			if(numuba >= MAXNUBA){
				printf("%d uba's", numuba);
				goto unsupp;
			}
			if(numuba >= NUBA){
				printf("uba%d", numuba);
				goto unconfig;
			}
#if VAX780
			if (cpu == VAX_780)
				setscbnex(ubaintv[numuba]);
			.........

	You can then throw the following code in autoconf.c/unifind()
	away too, as the situation is now handled by the code above:

#if defined(VAX_750)
		if (cpu == VAX_750)
			printf("More than 2 UBA's not supported\n");
		else
#endif

	Another (small) point, the existing code will always print
		uba? at trX
		uba? not configured
	for each extra UBA found, where ? remains the same each time.
	A solution would be to have another (local) count of physical
	UBA's found, "numuba" is the count of those found and configured.
	The same goes for MBA counts.

Jim McKie  Centrum voor Wiskunde en Informatica, Amsterdam  ..mcvax!jim