Browse Source

Plan 9 from Bell Labs 2007-11-04

David du Colombier 16 years ago
parent
commit
58abdb58ee

+ 8 - 8
dist/replica/_plan9.db

@@ -1,8 +1,8 @@
 386 - 20000000775 sys sys 1010957353 0
-386/9load - 775 sys sys 1194033350 337348
-386/9loaddebug - 775 sys sys 1194033361 451023
-386/9loadlite - 775 sys sys 1194033365 160632
-386/9loadlitedebug - 775 sys sys 1194033370 236546
+386/9load - 775 sys sys 1194145558 337536
+386/9loaddebug - 775 sys sys 1194145568 451295
+386/9loadlite - 775 sys sys 1194145575 160820
+386/9loadlitedebug - 775 sys sys 1194145581 236818
 386/9pc - 775 sys sys 1192646200 2054406
 386/9pc.gz - 664 sys sys 1192646200 873537
 386/9pccpu - 775 sys sys 1191889923 1749481
@@ -11,7 +11,7 @@
 386/9pcdisk.gz - 664 sys sys 1192741561 973813
 386/9pcf - 775 sys sys 1191889940 2874011
 386/9pcf.gz - 664 sys sys 1191889940 1230163
-386/9pxeload - 775 sys sys 1194033375 337356
+386/9pxeload - 775 sys sys 1194145588 337544
 386/bin - 20000000775 sys sys 1018897690 0
 386/bin/8a - 775 sys sys 1168402260 116604
 386/bin/8c - 775 sys sys 1190520740 367214
@@ -9149,7 +9149,7 @@ sys/src/boot/pc/clock.c - 664 sys sys 1103641772 6425
 sys/src/boot/pc/conf.c - 664 sys sys 1094674484 10217
 sys/src/boot/pc/console.c - 664 sys sys 1094674483 3388
 sys/src/boot/pc/dat.h - 664 sys sys 1190921443 3637
-sys/src/boot/pc/devbios.c - 664 sys sys 1193956078 9172
+sys/src/boot/pc/devbios.c - 664 sys sys 1194145648 9346
 sys/src/boot/pc/devbios.h - 664 sys sys 1193167027 493
 sys/src/boot/pc/devfloppy.c - 664 sys sys 1032215913 15505
 sys/src/boot/pc/devfloppy.h - 664 sys sys 1032409559 4081
@@ -9197,7 +9197,7 @@ sys/src/boot/pc/kfs.h - 664 sys sys 1032215924 861
 sys/src/boot/pc/kfsboot.c - 664 sys sys 1032215914 4788
 sys/src/boot/pc/l.s - 664 sys sys 1193167045 18213
 sys/src/boot/pc/lib.h - 664 sys sys 1190921452 2847
-sys/src/boot/pc/load.c - 664 sys sys 1194033271 10278
+sys/src/boot/pc/load.c - 664 sys sys 1194143072 10346
 sys/src/boot/pc/mbr.s - 664 sys sys 1015007953 6234
 sys/src/boot/pc/mem.h - 664 sys sys 1190921475 3437
 sys/src/boot/pc/memory.c - 664 sys sys 1019533021 10272
@@ -9218,7 +9218,7 @@ sys/src/boot/pc/sd53c8xx.c - 664 sys sys 1186031515 52082
 sys/src/boot/pc/sd53c8xx.i - 664 sys sys 1015007955 27245
 sys/src/boot/pc/sdaoe.c - 664 sys sys 1193341405 11270
 sys/src/boot/pc/sdata.c - 664 sys sys 1175564193 38846
-sys/src/boot/pc/sdbios.c - 664 sys sys 1193607899 3102
+sys/src/boot/pc/sdbios.c - 664 sys sys 1194145651 3282
 sys/src/boot/pc/sdiahci.c - 664 sys sys 1193607891 27167
 sys/src/boot/pc/sdmylex.c - 664 sys sys 1171783051 28694
 sys/src/boot/pc/sdscsi.c - 664 sys sys 1144961224 7006

+ 8 - 8
dist/replica/plan9.db

@@ -1,8 +1,8 @@
 386 - 20000000775 sys sys 1010957353 0
-386/9load - 775 sys sys 1194033350 337348
-386/9loaddebug - 775 sys sys 1194033361 451023
-386/9loadlite - 775 sys sys 1194033365 160632
-386/9loadlitedebug - 775 sys sys 1194033370 236546
+386/9load - 775 sys sys 1194145558 337536
+386/9loaddebug - 775 sys sys 1194145568 451295
+386/9loadlite - 775 sys sys 1194145575 160820
+386/9loadlitedebug - 775 sys sys 1194145581 236818
 386/9pc - 775 sys sys 1192646200 2054406
 386/9pc.gz - 664 sys sys 1192646200 873537
 386/9pccpu - 775 sys sys 1191889923 1749481
@@ -11,7 +11,7 @@
 386/9pcdisk.gz - 664 sys sys 1192741561 973813
 386/9pcf - 775 sys sys 1191889940 2874011
 386/9pcf.gz - 664 sys sys 1191889940 1230163
-386/9pxeload - 775 sys sys 1194033375 337356
+386/9pxeload - 775 sys sys 1194145588 337544
 386/bin - 20000000775 sys sys 1018897690 0
 386/bin/8a - 775 sys sys 1168402260 116604
 386/bin/8c - 775 sys sys 1190520740 367214
@@ -9149,7 +9149,7 @@ sys/src/boot/pc/clock.c - 664 sys sys 1103641772 6425
 sys/src/boot/pc/conf.c - 664 sys sys 1094674484 10217
 sys/src/boot/pc/console.c - 664 sys sys 1094674483 3388
 sys/src/boot/pc/dat.h - 664 sys sys 1190921443 3637
-sys/src/boot/pc/devbios.c - 664 sys sys 1193956078 9172
+sys/src/boot/pc/devbios.c - 664 sys sys 1194145648 9346
 sys/src/boot/pc/devbios.h - 664 sys sys 1193167027 493
 sys/src/boot/pc/devfloppy.c - 664 sys sys 1032215913 15505
 sys/src/boot/pc/devfloppy.h - 664 sys sys 1032409559 4081
@@ -9197,7 +9197,7 @@ sys/src/boot/pc/kfs.h - 664 sys sys 1032215924 861
 sys/src/boot/pc/kfsboot.c - 664 sys sys 1032215914 4788
 sys/src/boot/pc/l.s - 664 sys sys 1193167045 18213
 sys/src/boot/pc/lib.h - 664 sys sys 1190921452 2847
-sys/src/boot/pc/load.c - 664 sys sys 1194033271 10278
+sys/src/boot/pc/load.c - 664 sys sys 1194143072 10346
 sys/src/boot/pc/mbr.s - 664 sys sys 1015007953 6234
 sys/src/boot/pc/mem.h - 664 sys sys 1190921475 3437
 sys/src/boot/pc/memory.c - 664 sys sys 1019533021 10272
@@ -9218,7 +9218,7 @@ sys/src/boot/pc/sd53c8xx.c - 664 sys sys 1186031515 52082
 sys/src/boot/pc/sd53c8xx.i - 664 sys sys 1015007955 27245
 sys/src/boot/pc/sdaoe.c - 664 sys sys 1193341405 11270
 sys/src/boot/pc/sdata.c - 664 sys sys 1175564193 38846
-sys/src/boot/pc/sdbios.c - 664 sys sys 1193607899 3102
+sys/src/boot/pc/sdbios.c - 664 sys sys 1194145651 3282
 sys/src/boot/pc/sdiahci.c - 664 sys sys 1193607891 27167
 sys/src/boot/pc/sdmylex.c - 664 sys sys 1171783051 28694
 sys/src/boot/pc/sdscsi.c - 664 sys sys 1144961224 7006

+ 15 - 0
dist/replica/plan9.log

@@ -53270,3 +53270,18 @@
 1194033604 5 c sys/lib/dist/pc/plan9.ini - 664 sys sys 1194032589 585
 1194033604 6 c sys/lib/dist/pc/plan9.ini.cd - 664 sys sys 1194032364 562
 1194033604 7 c sys/src/boot/pc/load.c - 664 sys sys 1194033271 10278
+1194138004 0 c sys/src/boot/pc/devbios.c - 664 sys sys 1194136749 9291
+1194138004 1 c sys/src/boot/pc/sdbios.c - 664 sys sys 1194136736 3210
+1194143406 0 c 386/9load - 775 sys sys 1194142999 337468
+1194143406 1 c 386/9loaddebug - 775 sys sys 1194143013 451196
+1194143406 2 c 386/9loadlite - 775 sys sys 1194143018 160752
+1194143406 3 c 386/9loadlitedebug - 775 sys sys 1194143028 236719
+1194143406 4 c 386/9pxeload - 775 sys sys 1194143037 337476
+1194143406 5 c sys/src/boot/pc/load.c - 664 sys sys 1194143072 10346
+1194145206 0 c sys/src/boot/pc/devbios.c - 664 sys sys 1194145648 9346
+1194145206 1 c sys/src/boot/pc/sdbios.c - 664 sys sys 1194145651 3282
+1194147004 0 c 386/9load - 775 sys sys 1194145558 337536
+1194147004 1 c 386/9loaddebug - 775 sys sys 1194145568 451295
+1194147004 2 c 386/9loadlite - 775 sys sys 1194145575 160820
+1194147004 3 c 386/9loadlitedebug - 775 sys sys 1194145581 236818
+1194147004 4 c 386/9pxeload - 775 sys sys 1194145588 337544

+ 12 - 3
sys/src/boot/pc/devbios.c

@@ -86,6 +86,9 @@ typedef struct Edrvparam {
 
 void	realmode(int intr, Ureg *ureg);		/* from trap.c */
 
+int onlybios0;
+int biosinited;
+
 static Biosdev bdev[Maxdevs];
 static Biosdrive bdrive;
 static Ureg regs;
@@ -124,11 +127,14 @@ biosinit(void)
 	Devbytes size;
 	char type;
 	Biosdev *bdp;
+	static int beenhere;
 
 	mask = lastbit = 0;
-
+	if (beenhere)
+		return mask;
+	beenhere = 1;
 	/* 9pxeload can't use bios int 13 calls; they wedge the machine */
-	if (pxe || getconf("*nobiosload") != nil)
+	if (pxe || getconf("*nobiosload") != nil || onlybios0 || !biosinited)
 		return mask;
 	for (devid = 0; devid < (1 << 8) && bdrive.ndevs < Maxdevs; devid++) {
 		lba = islba(devid);
@@ -159,9 +165,12 @@ biosinit(void)
 	 * the last drive number yields a hung machine or a two-minute pause.
 	 */
 	if (bdrive.ndevs > 0) {
-		if (bdrive.ndevs == 1)
+		if (bdrive.ndevs == 1) {
 			print("biosinit: sorry, only one bios drive; "
 				"can't read last one\n");
+			onlybios0 = 1;
+		} else
+			biosinited = 1;
 		bdrive.ndevs--;	/* omit last drive number; it can't be read */
 		mask &= ~lastbit;
 	}

+ 2 - 1
sys/src/boot/pc/load.c

@@ -331,7 +331,8 @@ main(void)
 	readlsconf();
 	/* find and read plan9.ini, setting configuration variables */
 	for(tp = types; tp->type != Tnil; tp++){
-		if(!pxe && tp->type == Tether)
+		/* skip bios until we have read plan9.ini */
+		if(!pxe && tp->type == Tether || tp->type == Tbios)
 			continue;
 		if((mp = probe(tp->type, Fini, Dany)) && (mp->flag & Fini)){
 			print("using %s!%s!%s\n", mp->name, mp->part, mp->ini);

+ 7 - 2
sys/src/boot/pc/sdbios.c

@@ -18,17 +18,20 @@ long	biosread(Fs *, void *, long);
 vlong	biosseek(Fs *fs, vlong off);
 
 extern SDifc sdbiosifc;
+extern int onlybios0, biosinited;
 
 int
 biosverify(SDunit* )
 {
+	if (onlybios0 || !biosinited)
+		return 0;
 	return 1;
 }
 
 int
 biosonline(SDunit* unit)
 {
-	if (!unit)
+	if (onlybios0 || !biosinited || !unit)
 		return 0;
 	unit->sectors = 1UL << 30;	/* a bunch */
 	unit->secsize = 512;		/* conventional */
@@ -44,6 +47,8 @@ biosrio(SDreq* r)
 	uchar *p;
 	Fs fs;			/* just for fs->dev, which is zero */
 
+	if (onlybios0 || !biosinited)
+		return SDeio;
 	/*
 	 * Most SCSI commands can be passed unchanged except for
 	 * the padding on the end. The few which require munging
@@ -131,7 +136,7 @@ biospnp(void)
 	SDev *sdev;
 
 	/* 9pxeload can't use bios int 13 calls; they wedge the machine */
-	if (pxe || getconf("*nobiosload") != nil)
+	if (pxe || getconf("*nobiosload") != nil || onlybios0 || !biosinited)
 		return nil;
 	if((sdev = malloc(sizeof(SDev))) != nil) {
 		sdev->ifc = &sdbiosifc;