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