Browse Source

Plan 9 from Bell Labs 2004-04-12

David du Colombier 20 years ago
parent
commit
cc47f7dfa9

+ 13 - 13
dist/replica/plan9.db

@@ -222,7 +222,7 @@
 386/bin/ed - 775 sys sys 1064598133 91839
 386/bin/eqn - 775 sys sys 1071245302 244127
 386/bin/execnet - 775 sys sys 1064598134 173621
-386/bin/exportfs - 775 sys sys 1076990352 161586
+386/bin/exportfs - 775 sys sys 1081657627 162912
 386/bin/ext2srv - 775 sys sys 1064598136 176120
 386/bin/faces - 775 sys sys 1073851220 191138
 386/bin/factor - 775 sys sys 1064598138 59887
@@ -254,7 +254,7 @@
 386/bin/gview - 775 sys sys 1076385620 235602
 386/bin/gzip - 775 sys sys 1064598211 83770
 386/bin/hayes - 775 sys sys 1064598212 63307
-386/bin/hget - 775 sys sys 1081480407 223962
+386/bin/hget - 775 sys sys 1081657628 226993
 386/bin/history - 775 sys sys 1073851230 73560
 386/bin/hoc - 775 sys sys 1064598215 98708
 386/bin/html2ms - 775 sys sys 1064598215 64484
@@ -308,7 +308,7 @@
 386/bin/mc - 775 sys sys 1071245338 129548
 386/bin/md5sum - 775 sys sys 1064598252 59465
 386/bin/mk - 775 sys sys 1064598253 143638
-386/bin/mkdir - 775 sys sys 1064598253 57591
+386/bin/mkdir - 775 sys sys 1081657628 58376
 386/bin/mkpaqfs - 775 sys sys 1073851233 94055
 386/bin/mkstate - 775 sys sys 1064598255 61927
 386/bin/mntgen - 775 sys sys 1064598256 136777
@@ -360,7 +360,7 @@
 386/bin/rdbfs - 775 sys sys 1064598290 170393
 386/bin/read - 775 sys sys 1064598290 56294
 386/bin/replica - 20000000775 sys sys 1018321168 0
-386/bin/replica/applychanges - 775 sys sys 1068558248 98445
+386/bin/replica/applychanges - 775 sys sys 1081657628 98417
 386/bin/replica/applylog - 775 sys sys 1068558249 99090
 386/bin/replica/changes - 775 sys sys 1020319082 42
 386/bin/replica/compactdb - 775 sys sys 1068558249 77099
@@ -542,7 +542,7 @@
 386/lib/libmach.a - 664 sys sys 1073851272 746962
 386/lib/libmemdraw.a - 664 sys sys 1073851273 291288
 386/lib/libmemlayer.a - 664 sys sys 1073851273 47636
-386/lib/libmp.a - 664 sys sys 1081652367 77700
+386/lib/libmp.a - 664 sys sys 1081739421 77700
 386/lib/libndb.a - 664 sys sys 1079451578 61344
 386/lib/libplumb.a - 664 sys sys 1073851274 18876
 386/lib/libregexp.a - 664 sys sys 1073851274 37502
@@ -5331,25 +5331,25 @@ sys/src/9/pc/devvga.c - 664 sys sys 1063857412 8714
 sys/src/9/pc/dma.c - 664 sys sys 1015014515 4736
 sys/src/9/pc/errstr.h - 664 sys sys 1075069582 2137
 sys/src/9/pc/ether2000.c - 664 sys sys 1017854323 2839
-sys/src/9/pc/ether2114x.c - 664 sys sys 1067891102 41253
+sys/src/9/pc/ether2114x.c - 664 sys sys 1081706476 41545
 sys/src/9/pc/ether589.c - 664 sys sys 1015014516 4644
 sys/src/9/pc/ether79c970.c - 664 sys sys 1071245466 14094
 sys/src/9/pc/ether8003.c - 664 sys sys 1015014516 6665
 sys/src/9/pc/ether8139.c - 664 sys sys 1071245462 18026
 sys/src/9/pc/ether82543gc.c - 664 sys sys 1055689887 32296
-sys/src/9/pc/ether82557.c - 664 sys sys 1066514925 29683
-sys/src/9/pc/ether83815.c - 664 sys sys 1079387926 23128
+sys/src/9/pc/ether82557.c - 664 sys sys 1081706477 29736
+sys/src/9/pc/ether83815.c - 664 sys sys 1081706477 23479
 sys/src/9/pc/ether8390.c - 664 sys sys 1071245462 17557
 sys/src/9/pc/ether8390.h - 664 sys sys 1015014517 1511
 sys/src/9/pc/etherec2t.c - 664 sys sys 1020284820 4038
-sys/src/9/pc/etherelnk3.c - 664 sys sys 1071515332 48521
+sys/src/9/pc/etherelnk3.c - 664 sys sys 1081706477 48724
 sys/src/9/pc/etherga620.c - 664 sys sys 1074785126 28754
 sys/src/9/pc/etherga620fw.h - 644 sys sys 1026847642 222295
 sys/src/9/pc/etherif.h - 664 sys sys 1045063564 961
-sys/src/9/pc/etherigbe.c - 664 sys sys 1077985913 42824
+sys/src/9/pc/etherigbe.c - 664 sys sys 1081706478 42962
 sys/src/9/pc/ethermii.c - 664 sys sys 1039803177 4555
 sys/src/9/pc/ethermii.h - 664 sys sys 1039895684 3259
-sys/src/9/pc/etherrhine.c - 664 sys sys 1072704797 13438
+sys/src/9/pc/etherrhine.c - 664 sys sys 1081706478 13799
 sys/src/9/pc/ethersink.c - 664 sys sys 1048644103 1076
 sys/src/9/pc/ethersmc.c - 664 sys sys 1071245461 15103
 sys/src/9/pc/etherwavelan.c - 664 sys sys 1026847642 3722
@@ -6803,7 +6803,7 @@ sys/src/cmd/aan.c - 664 sys sys 1019856827 9758
 sys/src/cmd/acid - 20000000775 sys sys 944960739 0
 sys/src/cmd/acid/acid.h - 664 sys sys 1046198958 4354
 sys/src/cmd/acid/builtin.c - 664 sys sys 1071247428 19979
-sys/src/cmd/acid/dbg.y - 664 sys sys 1046198962 5450
+sys/src/cmd/acid/dbg.y - 664 sys sys 1081736447 5567
 sys/src/cmd/acid/dot.c - 664 sys sys 944960739 2161
 sys/src/cmd/acid/exec.c - 664 sys sys 1016833876 8187
 sys/src/cmd/acid/expr.c - 664 sys sys 1046198961 15093
@@ -7478,7 +7478,7 @@ sys/src/cmd/dossrv/mkfile - 664 sys sys 1032057270 310
 sys/src/cmd/dossrv/xfile.c - 664 sys sys 1017679315 4391
 sys/src/cmd/dossrv/xfssrv.c - 664 sys sys 1018323479 3397
 sys/src/cmd/du.c - 664 sys sys 1067719067 3144
-sys/src/cmd/echo.c - 664 sys sys 1015088638 553
+sys/src/cmd/echo.c - 664 sys sys 1081736344 581
 sys/src/cmd/ed.c - 664 sys sys 1055698917 21942
 sys/src/cmd/eqn - 20000000775 sys sys 944960990 0
 sys/src/cmd/eqn/diacrit.c - 664 sys sys 944960989 2302

+ 14 - 0
dist/replica/plan9.log

@@ -14890,3 +14890,17 @@
 1081621976 1 c sys/src/cmd/mkdir.c - 664 sys sys 1081621076 868
 1081652549 0 c 386/lib/libmp.a - 664 sys sys 1081652367 77700
 1081652549 1 c sys/src/cmd/hget.c - 664 sys sys 1081651071 24671
+1081657974 0 c 386/bin/exportfs - 775 sys sys 1081657627 162912
+1081657974 1 c 386/bin/hget - 775 sys sys 1081657628 226993
+1081657974 2 c 386/bin/replica/applychanges - 775 sys sys 1081657628 98417
+1081657974 3 c 386/bin/mkdir - 775 sys sys 1081657628 58376
+1081657974 4 c 386/lib/libmp.a - 664 sys sys 1081657628 81428
+1081706471 0 c sys/src/9/pc/ether2114x.c - 664 sys sys 1081706476 41545
+1081706471 1 c sys/src/9/pc/ether82557.c - 664 sys sys 1081706477 29736
+1081706471 2 c sys/src/9/pc/ether83815.c - 664 sys sys 1081706477 23479
+1081706471 3 c sys/src/9/pc/etherelnk3.c - 664 sys sys 1081706477 48724
+1081706471 4 c sys/src/9/pc/etherigbe.c - 664 sys sys 1081706478 42962
+1081706471 5 c sys/src/9/pc/etherrhine.c - 664 sys sys 1081706478 13799
+1081737134 0 c sys/src/cmd/acid/dbg.y - 664 sys sys 1081736447 5567
+1081737134 1 c sys/src/cmd/echo.c - 664 sys sys 1081736344 581
+1081740746 0 c 386/lib/libmp.a - 664 sys sys 1081739421 77700

+ 18 - 1
sys/src/9/pc/ether2114x.c

@@ -284,6 +284,12 @@ promiscuous(void* arg, int on)
 	iunlock(&ctlr->lock);
 }
 
+/* multicast already on, don't need to do anything */
+static void
+multicast(void*, uchar*, int)
+{
+}
+
 static void
 attach(Ether* ether)
 {
@@ -603,7 +609,7 @@ ctlrinit(Ether* ether)
 	ctlr->mask = Nis|Ais|Fbe|Rwt|Rps|Ru|Ri|Unf|Tjt|Tps|Ti;
 	csr32w(ctlr, 5, ctlr->mask);
 	csr32w(ctlr, 7, ctlr->mask);
-	ctlr->csr6 |= St;
+	ctlr->csr6 |= St|Pm;
 	csr32w(ctlr, 6, ctlr->csr6);
 
 	for(i = 0; i < Eaddrlen/2; i++){
@@ -799,6 +805,15 @@ reread:
 	return data & 0xFFFF;
 }
 
+static void
+shutdown(Ether* ether)
+{
+	Ctlr *ctlr = ether->ctlr;
+
+print("ether2114x shutting down\n");
+	csr32w(ctlr, 0, Swr);
+}
+
 static void
 softreset(Ctlr* ctlr)
 {
@@ -1798,6 +1813,8 @@ reset(Ether* ether)
 	ether->ifstat = ifstat;
 
 	ether->arg = ether;
+	ether->shutdown = shutdown;
+	ether->multicast = multicast;
 	ether->promiscuous = promiscuous;
 
 	return 0;

+ 1 - 0
sys/src/9/pc/ether82557.c

@@ -930,6 +930,7 @@ i82557pci(void)
 			/*FALLTHROUGH*/
 		case 0x1209:		/* Intel 82559ER */
 		case 0x1229:		/* Intel 8255[789] */
+		case 0x1030:		/* Intel 82559 InBusiness 10/100  */
 			break;
 		}
 

+ 28 - 7
sys/src/9/pc/ether83815.c

@@ -598,9 +598,13 @@ ctlrinit(Ether* ether)
 	 * unmask interrupts and start the transmit side
 	 */
 	ctlr->rdr = malloc(ctlr->nrdr*sizeof(Des));
+	if (ctlr->rdr == nil)
+		error(Enomem);
 	last = nil;
 	for(des = ctlr->rdr; des < &ctlr->rdr[ctlr->nrdr]; des++){
 		des->bp = iallocb(Rbsz);
+		if (des->bp == nil)
+			error(Enomem);
 		des->cmdsts = Rbsz;
 		des->addr = PADDR(des->bp->rp);
 		if(last != nil)
@@ -685,13 +689,10 @@ eegetw(Ctlr *ctlr, int a)
 }
 
 static void
-softreset(Ctlr* ctlr, int resetphys)
+resetctlr(Ctlr *ctlr)
 {
-	int i, w;
+	int i;
 
-	/*
-	 * Soft-reset the controller
-	 */
 	csr32w(ctlr, Rcr, Rst);
 	for(i=0;; i++){
 		if(i > 100)
@@ -701,7 +702,27 @@ softreset(Ctlr* ctlr, int resetphys)
 			break;
 		delay(1);
 	}
+}
+
+static void
+shutdown(Ether* ether)
+{
+	Ctlr *ctlr = ether->ctlr;
+
+print("ether83815 shutting down\n");
+	csr32w(ctlr, Rcr, Rxd|Txd);	/* disable transceiver */
+	resetctlr(ctlr);
+}
 
+static void
+softreset(Ctlr* ctlr, int resetphys)
+{
+	int i, w;
+
+	/*
+	 * Soft-reset the controller
+	 */
+	resetctlr(ctlr);
 	csr32w(ctlr, Rccsr, Pmests);
 	csr32w(ctlr, Rccsr, 0);
 	csr32w(ctlr, Rcfg, csr32r(ctlr, Rcfg) | Pint_acen);
@@ -953,11 +974,11 @@ reset(Ether* ether)
 	ether->transmit = transmit;
 	ether->interrupt = interrupt;
 	ether->ifstat = ifstat;
-	ether->multicast = multicast;
 
 	ether->arg = ether;
 	ether->promiscuous = promiscuous;
-
+	ether->multicast = multicast;
+	ether->shutdown = shutdown;
 	return 0;
 }
 

+ 31 - 15
sys/src/9/pc/etherelnk3.c

@@ -1748,6 +1748,35 @@ eepromdata(Ctlr* ctlr, int offset)
 	return EEPROMDATA(port);
 }
 
+static void
+resetctlr(Ctlr *ctlr)
+{
+	int x, port = ctlr->port;
+
+	txrxreset(port);
+	x = ins(port+ResetOp905B);
+	XCVRDEBUG("905[BC] reset ops 0x%uX\n", x);
+	x &= ~0x4010;
+	if(ctlr->did == 0x5157){
+		x |= 0x0010;			/* Invert LED */
+		outs(port+ResetOp905B, x);
+	}
+	if(ctlr->did == 0x6056){
+		x |= 0x4000;
+		outs(port+ResetOp905B, x);
+
+		COMMAND(port, SelectRegisterWindow, Wsetup);
+		outs(port, 0x0800);
+	}
+}
+
+static void
+shutdown(Ether *ether)
+{
+print("etherelnk3 shutting down\n");
+	resetctlr(ether->ctlr);
+}
+
 int
 etherelnk3reset(Ether* ether)
 {
@@ -1899,21 +1928,7 @@ etherelnk3reset(Ether* ether)
 	case 0x9200:
 	case 0x9201:
 		ctlr->xcvr = xcvrMii;
-		txrxreset(port);
-		x = ins(port+ResetOp905B);
-		XCVRDEBUG("905[BC] reset ops 0x%uX\n", x);
-		x &= ~0x4010;
-		if(ctlr->did == 0x5157){
-			x |= 0x0010;			/* Invert LED */
-			outs(port+ResetOp905B, x);
-		}
-		if(ctlr->did == 0x6056){
-			x |= 0x4000;
-			outs(port+ResetOp905B, x);
-
-			COMMAND(port, SelectRegisterWindow, Wsetup);
-			outs(port, 0x0800);
-		}
+		resetctlr(ctlr);
 		break;
 	}
 	XCVRDEBUG("xcvr selected: %uX, did 0x%uX\n", ctlr->xcvr, ctlr->did);
@@ -2102,6 +2117,7 @@ etherelnk3reset(Ether* ether)
 
 	ether->promiscuous = promiscuous;
 	ether->multicast = multicast;
+	ether->shutdown = shutdown;
 	ether->arg = ether;
 
 	return 0;

+ 8 - 0
sys/src/9/pc/etherigbe.c

@@ -1631,6 +1631,13 @@ igbedetach(Ctlr* ctlr)
 		;
 }
 
+static void
+igbeshutdown(Ether* ether)
+{
+print("etherigbe shutting down\n");
+	igbedetach(ether->ctlr);
+}
+
 static int
 igbereset(Ctlr* ctlr)
 {
@@ -1846,6 +1853,7 @@ igbepnp(Ether* edev)
 
 	edev->arg = edev;
 	edev->promiscuous = igbepromiscuous;
+	edev->shutdown = igbeshutdown;
 	edev->multicast = igbemulticast;
 
 	return 0;

+ 28 - 10
sys/src/9/pc/etherrhine.c

@@ -25,8 +25,8 @@ typedef struct Desc Desc;
 typedef struct Ctlr Ctlr;
 
 enum {
-	Ntxd = 8,
-	Nrxd = 16,
+	Ntxd = 16,
+	Nrxd = 64,
 	Nwait = 50,
 	Ntxstats = 9,
 	Nrxstats = 8,
@@ -480,7 +480,8 @@ promiscuous(void *arg, int enable)
 	edev = arg;
 	ctlr = edev->ctlr;
 	ilock(&ctlr->lock);
-	iow8(ctlr, Rcr, ior8(ctlr, Rcr) | (enable ? RxProm : RxBcast));
+	iow8(ctlr, Rcr, (ior8(ctlr, Rcr) & ~(RxProm|RxBcast)) |
+		(enable ? RxProm : RxBcast));
 	iunlock(&ctlr->lock);
 }
 
@@ -543,17 +544,19 @@ miiwrite(Mii *mii, int phy, int reg, int data)
 	return 0;
 }
 
+/* multicast already on, don't need to do anything */
 static void
-init(Ether *edev)
+multicast(void*, uchar*, int)
 {
-	Ctlr *ctlr;
-	MiiPhy *phy;
-	int i;
+}
 
-	ctlr = edev->ctlr;
+static void
+shutdown(Ether *edev)
+{
+	int i;
+	Ctlr *ctlr = edev->ctlr;
 
 	ilock(&ctlr->lock);
-
 	pcisetbme(ctlr->pci);
 
 	iow16(ctlr, Cr, ior16(ctlr, Cr) | Stop);
@@ -566,7 +569,20 @@ init(Ether *edev)
 	}
 	if (i == Nwait)
 		iprint("etherrhine: reset timeout\n");
+	iunlock(&ctlr->lock);
+}
 
+static void
+init(Ether *edev)
+{
+	Ctlr *ctlr;
+	MiiPhy *phy;
+	int i;
+
+	shutdown(edev);
+
+	ctlr = edev->ctlr;
+	ilock(&ctlr->lock);
 	iow8(ctlr, Eecsr, ior8(ctlr, Eecsr) | EeAutoLoad);
 	for (i = 0; i < Nwait; ++i) {
 		if ((ior8(ctlr, Eecsr) & EeAutoLoad) == 0)
@@ -598,6 +614,7 @@ init(Ether *edev)
 
 	iow16(ctlr, Imr, 0);
 	iow16(ctlr, Cr, ior16(ctlr, Cr) | Stop);
+	iow8(ctlr, Rcr, ior8(ctlr, Rcr) | RxMcast);
 
 	iunlock(&ctlr->lock);
 }
@@ -705,7 +722,8 @@ pnp(Ether *edev)
 	edev->transmit = transmit;
 	edev->ifstat = ifstat;
 	edev->promiscuous = promiscuous;
-
+	edev->multicast = multicast;
+	edev->shutdown = shutdown;
 	return 0;
 }
 

+ 3 - 0
sys/src/cmd/acid/dbg.y

@@ -50,7 +50,10 @@ prog		:
 
 bigstmnt	: stmnt
 		{
+			/* make stmnt a root so it isn't collected! */
+			mkvar("_thiscmd")->proc = $1;
 			execute($1);
+			mkvar("_thiscmd")->proc = nil;
 			gc();
 			if(interactive)
 				Bprint(bout, "acid: ");

+ 3 - 1
sys/src/cmd/echo.c

@@ -31,8 +31,10 @@ main(int argc, char *argv[])
 	if(!nflag)
 		*p++ = '\n';
 
-	if(write(1, buf, p-buf) < 0)
+	if(write(1, buf, p-buf) < 0){
 		fprint(2, "echo: write error: %r\n");
+		exits("write error");
+	}
 
 	exits((char *)0);
 }