Plan 9 from Bell Labs’s /usr/web/sources/extra/changes/2006/0413

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


usb: avoid closing -1.
 [rsc] --rw-rw-r-- M 779778 sape sys 3073 Apr 13 01:11 sys/src/cmd/usb/lib/device.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/usb/lib/device.c:37,44 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/usb/lib/device.c:37,45
	  		sprint(name, "/dev/usb%d/new", ctlrno);
	  		if((d->ctl = open(name, ORDWR)) < 0){
	  		Error0:
	- 			close(d->ctl);
	  			werrstr("open %s: %r", name);
	+ 			if(d->ctl >= 0)
	+ 				close(d->ctl);
	  			free(d);
	  			/* return nil; */
	  			sysfatal("%r");
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/usb/lib/device.c:58,64 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/usb/lib/device.c:59,66
	  	strcpy(p, "setup");
	  	if((d->setup = open(name, ORDWR)) < 0){
	  	Error1:
	- 		close(d->setup);
	+ 		if(d->setup >= 0)
	+ 			close(d->setup);
	  		goto Error0;
	  	}
	  

dns: fix deadlock race
 [rsc] --rw-rw-r-- M 779778 glenda sys 28763 Apr 13 14:23 sys/src/cmd/ndb/dn.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dn.c:448,460 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dn.c:448,464
	   *  garbage collect.  block while garbage collecting.
	   */
	  int
	- getactivity(Request *req)
	+ getactivity(Request *req, int recursive)
	  {
	  	int rv;
	  
	- 	if(traceactivity) syslog(0, "dns", "get %d by %d", dnvars.active, getpid());
	+ 	if(traceactivity) syslog(0, "dns", "get %d by %d from %p", dnvars.active, getpid(), getcallerpc(&req));
	  	lock(&dnvars);
	- 	while(dnvars.mutex){
	+ 	/*
	+ 	 * can't block here if we're already holding one
	+ 	 * of the dnvars.active (recursive).  will deadlock.
	+ 	 */
	+ 	while(!recursive && dnvars.mutex){
	  		unlock(&dnvars);
	  		sleep(200);
	  		lock(&dnvars);
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dn.c:467,473 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dn.c:471,477
	  	return rv;
	  }
	  void
	- putactivity(void)
	+ putactivity(int recursive)
	  {
	  	static ulong lastclean;
	  
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dn.c:478,485 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dn.c:482,491
	  
	  	/*
	  	 *  clean out old entries and check for new db periodicly
	+ 	 *  can't block here if being called to let go a "recursive" lock
	+ 	 *  or we'll deadlock waiting for ourselves to give up the dnvars.active.
	  	 */
	- 	if(dnvars.mutex || (needrefresh == 0 && dnvars.active > 0)){
	+ 	if(recursive || dnvars.mutex || (needrefresh == 0 && dnvars.active > 0)){
	  		unlock(&dnvars);
	  		return;
	  	}
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dn.c:1234,1254 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dn.c:1240,1272
	  slave(Request *req)
	  {
	  	static int slaveid;
	+ 	int ppid;
	  
	  	if(req->isslave)
	  		return;		/* we're already a slave process */
	  
	+ 	/*
	+ 	 * These calls to putactivity cannot block. 
	+ 	 * After getactivity(), the current process is counted
	+ 	 * twice in dnvars.active (one will pass to the child).
	+ 	 * If putactivity tries to wait for dnvars.active == 0,
	+ 	 * it will never happen.
	+ 	 */
	+ 
	  	/* limit parallelism */
	- 	if(getactivity(req) > Maxactive){
	- 		putactivity();
	+ 	if(getactivity(req, 1) > Maxactive){
	+ 		if(traceactivity) syslog(0, "dns", "[%d] too much activity", getpid());
	+ 		putactivity(1);
	  		return;
	  	}
	  
	+ 	ppid = getpid();
	  	switch(rfork(RFPROC|RFNOTEG|RFMEM|RFNOWAIT)){
	  	case -1:
	- 		putactivity();
	+ 		putactivity(1);
	  		break;
	  	case 0:
	+ 		if(traceactivity) syslog(0, "dns", "[%d] take activity from %d", ppid, getpid());
	  		req->isslave = 1;
	  		break;
	  	default:
 [rsc] --rw-rw-r-- M 779778 rsc sys 3066 Apr 13 14:23 sys/src/cmd/ndb/dnnotify.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnnotify.c:150,158 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnnotify.c:150,158
	  	req.isslave = 1;	/* son't fork off subprocesses */
	  
	  	for(;;){
	- 		getactivity(&req);
	+ 		getactivity(&req, 0);
	  		notify_areas(owned, &req);
	- 		putactivity();
	+ 		putactivity(0);
	  		sleep(60*1000);
	  	}
	  }
 [rsc] --rw-rw-r-- M 779778 glenda sys 15346 Apr 13 14:23 sys/src/cmd/ndb/dnresolve.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnresolve.c:94,100 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnresolve.c:94,100
	  	char *cp;
	  
	  	if(debug)
	- 		syslog(0, LOG, "dnresolve1 %s %d %d", name, type, class);
	+ 		syslog(0, LOG, "[%d] dnresolve1 %s %d %d", getpid(), name, type, class);
	  
	  	/* only class Cin implemented so far */
	  	if(class != Cin)
 [rsc] --rw-rw-r-- M 779778 glenda sys 15308 Apr 13 14:23 sys/src/cmd/ndb/dns.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dns.c:376,382 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dns.c:376,382
	  	 *  through 'mret'.
	  	 */
	  	if(setjmp(req.mret))
	- 		putactivity();
	+ 		putactivity(0);
	  	req.isslave = 0;
	  	for(;;){
	  		n = read9pmsg(mfd[0], mdata, sizeof mdata);
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dns.c:393,399 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dns.c:393,399
	  		if(debug)
	  			syslog(0, logfile, "%F", &job->request);
	  
	- 		getactivity(&req);
	+ 		getactivity(&req, 0);
	  		req.aborttime = now + 60;	/* don't spend more than 60 seconds */
	  
	  		switch(job->request.type){
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dns.c:447,457 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dns.c:447,457
	  		 *  slave processes die after replying
	  		 */
	  		if(req.isslave){
	- 			putactivity();
	+ 			putactivity(0);
	  			_exits(0);
	  		}
	  	
	- 		putactivity();
	+ 		putactivity(0);
	  	}
	  }
	  
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dns.c:871,878 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dns.c:871,878
	  {
	  	char buf[12];
	  
	- 	syslog(0, LOG, "%d.%d: sending to %I/%s %s %s",
	- 		id, subid, addr, sname, rname, rrname(type, buf, sizeof buf));
	+ 	syslog(0, LOG, "[%d] %d.%d: sending to %I/%s %s %s",
	+ 		getpid(), id, subid, addr, sname, rname, rrname(type, buf, sizeof buf));
	  }
	  
	  RR*
 [rsc] --rw-rw-r-- M 779778 glenda sys 8492 Apr 13 14:23 sys/src/cmd/ndb/dnsdebug.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnsdebug.c:414,420 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnsdebug.c:414,420
	  		return;
	  	}
	  
	- 	getactivity(&req);
	+ 	getactivity(&req, 0);
	  	req.isslave = 1;
	  	req.aborttime = now + 60;	/* don't spend more than 60 seconds */
	  	rr = dnresolve(buf, Cin, type, &req, 0, 0, Recurse, rooted, 0);
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnsdebug.c:426,432 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnsdebug.c:426,432
	  	}
	  	rrfreelist(rr);
	  
	- 	putactivity();
	+ 	putactivity(0);
	  }
	  
	  void
 [rsc] --rw-rw-r-- M 779778 glenda sys 7349 Apr 13 14:23 sys/src/cmd/ndb/dnstcp.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnstcp.c /n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnstcp.c]
 [rsc] --rw-rw-r-- M 779778 glenda sys 5337 Apr 13 18:58 sys/src/cmd/ndb/dnudpserver.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnudpserver.c:97,107 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnudpserver.c:97,107
	  	while((fd = udpannounce(mntpt)) < 0)
	  		sleep(5000);
	  	if(setjmp(req.mret))
	- 		putactivity();
	+ 		putactivity(0);
	  	req.isslave = 0;
	  
	  	/* loop on requests */
	- 	for(;; putactivity()){
	+ 	for(;; putactivity(0)){
	  		memset(&repmsg, 0, sizeof(repmsg));
	  		memset(&reqmsg, 0, sizeof(reqmsg));
	  		alarm(60*1000);
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnudpserver.c:111,117 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnudpserver.c:111,117
	  			goto restart;
	  		uh = (OUdphdr*)buf;
	  		len -= OUdphdrsize;
	- 		getactivity(&req);
	+ 		getactivity(&req, 0);
	  		req.aborttime = now + 30;	/* don't spend more than 30 seconds */
	  		err = convM2DNS(&buf[OUdphdrsize], len, &reqmsg);
	  		if(err){
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnudpserver.c:174,180 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnudpserver.c:174,180
	  		rrfreelist(reqmsg.ar);
	  
	  		if(req.isslave){
	- 			putactivity();
	+ 			putactivity(0);
	  			_exits(0);
	  		}
	  
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnudpserver.c:190,195 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnudpserver.c:190,196
	  static int
	  udpannounce(char *mntpt)
	  {
	+ 	static int whined;
	  	int data, ctl;
	  	char dir[64];
	  	char datafile[64+6];
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnudpserver.c:198,204 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnudpserver.c:199,206
	  	sprint(datafile, "%s/udp!*!dns", mntpt);
	  	ctl = announce(datafile, dir);
	  	if(ctl < 0){
	- 		warning("can't announce on dns udp port");
	+ 		if(!whined++)
	+ 			warning("can't announce on dns udp port");
	  		return -1;
	  	}
	  	snprint(datafile, sizeof(datafile), "%s/data", dir);
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dnudpserver.c:210,216 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dnudpserver.c:212,219
	  	data = open(datafile, ORDWR);
	  	if(data < 0){
	  		close(ctl);
	- 		warning("can't announce on dns udp port");
	+ 		if(!whined++)
	+ 			warning("can't announce on dns udp port");
	  		return -1;
	  	}
	  
 [rsc] --rw-rw-r-- M 779778 glenda sys 10171 Apr 13 18:58 sys/src/cmd/ndb/dns.h
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ndb/dns.h:370,377 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ndb/dns.h:370,377
	  extern char*	rrname(int, char*, int);
	  extern int	tsame(int, int);
	  extern void	dndump(char*);
	- extern int	getactivity(Request*);
	- extern void	putactivity(void);
	+ extern int	getactivity(Request*, int);
	+ extern void	putactivity(int);
	  extern void	abort(); /* char*, ... */;
	  extern void	warning(char*, ...);
	  extern void	slave(Request*);
 [rsc] --rw-rw-r-- M 779778 glenda sys 5337 Apr 13 18:58 sys/src/cmd/ndb/dnudpserver.c

snoopy: add dns
 [rsc] --rw-rw-r-- M 779778 rsc sys 14815 Apr 13 15:32 sys/src/cmd/ip/snoopy/dns.c
 [rsc] --rw-rw-r-- M 779778 glenda sys 889 Apr 13 15:14 sys/src/cmd/ip/snoopy/mkfile
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ip/snoopy/mkfile:5,10 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ip/snoopy/mkfile:5,11
	  	arp\
	  	bootp\
	  	dhcp\
	+ 	dns\
	  	dump\
	  	eap\
	  	eap_identity\
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ip/snoopy/mkfile:46,51 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ip/snoopy/mkfile:47,53
	  	protos.h\
	  	y.tab.h\
	  
	+ YFILES=filter.y
	  
	  BIN=/$objtype/bin
	  UPDATE=\
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ip/snoopy/mkfile:79,82 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ip/snoopy/mkfile:81,83
	  		echo '};'
	  	} > protos.c
	  
	- y.tab.c: filter.y
 [rsc] --rw-rw-r-- M 779778 glenda sys 2015 Apr 13 15:14 sys/src/cmd/ip/snoopy/udp.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ip/snoopy/udp.c:39,44 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ip/snoopy/udp.c:39,45
	  
	  static Mux p_mux[] =
	  {
	+ 	{"dns",	53, },
	  	{"bootp",	67, },
	  	{"ninep",	6346, },	/* tvs */
	  	{"rtp",		ANYPORT, },
 [rsc] --rw-rw-r-- M 779778 rsc sys 14815 Apr 13 15:32 sys/src/cmd/ip/snoopy/dns.c
 [rsc] --rw-rw-r-- M 779778 glenda sys 3618 Apr 13 15:33 sys/src/cmd/ip/snoopy/tcp.c
	/n/sourcesdump/2006/0413/plan9/sys/src/cmd/ip/snoopy/tcp.c:50,55 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/cmd/ip/snoopy/tcp.c:50,56
	  
	  static Mux p_mux[] =
	  {
	+ 	{"dns",	53, },
	  	{"ninep",	17007, },	/* exportfs */
	  	{"ninep",	564, },		/* 9fs */
	  	{"ninep",	17005, },	/* ocpu */

9load: merge in current cardslot code, attempt to fix 3com
 [jmk] --rw-rw-r-- M 779778 jmk sys 9232 Apr 13 16:46 sys/src/boot/pc/cis.c
 [jmk] --rw-rw-r-- M 779778 glenda sys 3597 Apr 13 16:46 sys/src/boot/pc/dat.h
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/dat.h:112,117 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/dat.h:112,118
	  
	  typedef struct Pcidev Pcidev;
	  typedef struct PCMmap PCMmap;
	+ typedef struct PCMslot PCMslot;
	  
	  #define BOOTLINE	((char*)CONFADDR)
	  
 [jmk] --rw-rw-r-- M 779778 glenda sys 15051 Apr 13 16:46 sys/src/boot/pc/devi82365.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/devi82365.c /n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/devi82365.c]
 [jmk] --rw-rw-r-- M 779778 glenda sys 33938 Apr 13 16:46 sys/src/boot/pc/devpccard.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/devpccard.c /n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/devpccard.c]
 [jmk] --rw-rw-r-- M 779778 glenda sys 4624 Apr 13 16:46 sys/src/boot/pc/ether589.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether589.c:155,161 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether589.c:155,161
	  	if(memcmp(ea, ether->ea, 6) == 0 && strcmp(type, "3C562") == 0) {
	  		if(debug)
	  			print("read 562...");
	- 		if(pcmcistuple(slot, 0x88, ea, 6) == 6) {
	+ 		if(pcmcistuple(slot, 0x88, -1, ea, 6) == 6) {
	  			for(i = 0; i < 6; i += 2){
	  				t = ea[i];
	  				ea[i] = ea[i+1];
 [jmk] --rw-rw-r-- M 779778 jmk sys 18634 Apr 13 16:49 sys/src/boot/pc/ether8169.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether8169.c:22,29 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether8169.c:22,27
	  #define qlock(i)	while(0)
	  #define qunlock(i)	while(0)
	  #define iallocb		allocb
	- extern void mb386(void);
	- #define coherence()	mb386()
	  #define iprint		print
	  #define mallocalign(n, a, o, s)	ialloc((n), (a))
	  
 [jmk] --rw-rw-r-- M 779778 glenda sys 21993 Apr 13 16:46 sys/src/boot/pc/ether83815.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether83815.c:301,311 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether83815.c:301,306
	  #define csr16w(c, r, l)	(outs((c)->port+(r), (ulong)(l)))
	  
	  static void
	- coherence(void)
	- {
	- }
	- 
	- static void
	  dumpcregs(Ctlr *ctlr)
	  {
	  	int i;
 [jmk] --rw-rw-r-- M 779778 glenda sys 44662 Apr 13 16:46 sys/src/boot/pc/etherelnk3.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/etherelnk3.c /n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/etherelnk3.c]
 [jmk] --rw-rw-r-- M 779778 jmk sys 12383 Apr 13 16:46 sys/src/boot/pc/etherrhine.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/etherrhine.c:18,24 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/etherrhine.c:18,23
	  typedef struct QLock { int r; } QLock;
	  #define qlock(i)	while(0)
	  #define qunlock(i)	while(0)
	- #define coherence()
	  #define iprint		print
	  
	  #include "etherif.h"
 [jmk] --rw-rw-r-- M 779778 glenda sys 4457 Apr 13 16:46 sys/src/boot/pc/fns.h
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/fns.h:15,20 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/fns.h:15,21
	  void	changeconf(char*, ...);
	  void	checkalarms(void);
	  void	clockinit(void);
	+ #define coherence()	mb386()
	  void	consdrain(void);
	  void	consinit(char*, char*);
	  void	consputs(char*, int);
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/fns.h:53,63 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/fns.h:54,67
	  void	insb(int, void*, int);
	  void	inss(int, void*, int);
	  void	insl(int, void*, int);
	+ #define ioalloc(addr, len, align, name)	(addr)
	+ #define iofree(addr)
	  void	iunlock(Lock*);
	  int	isaconfig(char*, int, ISAConf*);
	  void	kbdinit(void);
	  void	kbdchar(int);
	  void	machinit(void);
	+ void	mb386(void);
	  void	meminit(ulong);
	  void	microdelay(int);
	  void	mmuinit(void);
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/fns.h:83,89 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/fns.h:87,95
	  uchar	pciipin(Pcidev *, uchar);
	  void	pcireset(void);
	  void	pcisetbme(Pcidev*);
	- int	pcmcistuple(int, int, void*, int);
	+ void	pcmcisread(PCMslot*);
	+ int	pcmcistuple(int, int, int, void*, int);
	+ PCMmap*	pcmmap(int, ulong, int, int);
	  int	pcmspecial(char*, ISAConf*);
	  void	pcmspecialclose(int);
	  void	pcmunmap(int, PCMmap*);
 [jmk] --rw-rw-r-- M 779778 glenda sys 6821 Apr 13 16:46 sys/src/boot/pc/io.h
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/io.h /n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/io.h]
 [jmk] --rw-rw-r-- M 779778 glenda sys 3112 Apr 13 16:46 sys/src/boot/pc/mkfile
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/mkfile:33,41 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/mkfile:33,42
	  	8250.$O\
	  	apm.$O\
	  	boot.$O\
	- 	devpccard.$O\
	+ 	cis.$O\
	  	conf.$O\
	  	devi82365.$O\
	+ 	devpccard.$O\
	  	devsd.$O\
	  	inflate.$O\
	  	load.$O\
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/mkfile:166,173 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/mkfile:167,174
	  		mk $MKFLAGS $i.install
	  
	  %.install:V:	$BIN/%
	- 	#import lookout / /n/lookout
	- 	#cp $prereq /n/lookout/$prereq
	+ 	import lookout / /n/lookout
	+ 	cp $prereq /n/lookout/$prereq
	  
	  $BIN/%:	%
	  	cp $stem $BIN/$stem
 [jmk] --rw-rw-r-- M 779778 glenda sys 52127 Apr 13 16:46 sys/src/boot/pc/sd53c8xx.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/sd53c8xx.c:1869,1891 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/sd53c8xx.c:1869,1896
	  static int
	  xfunc(Controller *c, enum na_external x, unsigned long *v)
	  {
	- 	switch (x)
	- 	{
	+ 	switch (x) {
	+ 	default:
	+ 		print("xfunc: can't find external %d\n", x);
	+ 		return 0;
	  	case X_scsi_id_buf:
	- 		*v = offsetof(Dsa, scsi_id_buf[0]); return 1;
	+ 		*v = offsetof(Dsa, scsi_id_buf[0]);
	+ 		break;
	  	case X_msg_out_buf:
	- 		*v = offsetof(Dsa, msg_out_buf); return 1;
	+ 		*v = offsetof(Dsa, msg_out_buf);
	+ 		break;
	  	case X_cmd_buf:
	- 		*v = offsetof(Dsa, cmd_buf); return 1;
	+ 		*v = offsetof(Dsa, cmd_buf);
	+ 		break;
	  	case X_data_buf:
	- 		*v = offsetof(Dsa, data_buf); return 1;
	+ 		*v = offsetof(Dsa, data_buf);
	+ 		break;
	  	case X_status_buf:
	- 		*v = offsetof(Dsa, status_buf); return 1;
	+ 		*v = offsetof(Dsa, status_buf);
	+ 		break;
	  	case X_dsa_head:
	- 		*v = DMASEG(&c->dsalist.head[0]); return 1;
	- 	default:
	- 		print("xfunc: can't find external %d\n", x);
	- 		return 0;
	+ 		*v = DMASEG(&c->dsalist.head[0]);
	+ 		break;
	  	}
	  	return 1;
	  }
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/sd53c8xx.c:1960,1966 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/sd53c8xx.c:1965,1971
	  		}
	  		if(v >= &variant[nelem(variant)])
	  			continue;
	- 		print("sd53c8xx: %s rev. 0x%2.2x intr=%d command=%4.4luX\n",
	+ 		print("sd53c8xx: %s rev. 0x%2.2x intr=%d command=%4.4uX\n",
	  			v->name, p->rid, p->intl, p->pcr);
	  
	  		regpa = p->mem[1].bar;
 [jmk] --rw-rw-r-- M 779778 glenda sys 38221 Apr 13 16:46 sys/src/boot/pc/sdata.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/sdata.c:1465,1471 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/sdata.c:1465,1471
	  		case (0x4D69<<16)|0x105A:	/* Promise Ultra/133 TX2 */
	  		case (0x3373<<16)|0x105A:	/* Promise 20378 RAID */
	  		case (0x3149<<16)|0x1106:	/* VIA VT8237 SATA/RAID */
	- 		case (0x3112<<16)|0x1095:   	/* SiL 3112 SATA (DMA busted?) */
	+ 		case (0x3112<<16)|0x1095:	/* SiL 3112 SATA (DMA busted?) */
	  		case (0x3114<<16)|0x1095:	/* SiL 3114 SATA/RAID */
	  			pi = 0x85;
	  			break;
 [jmk] --rw-rw-r-- M 779778 glenda sys 28693 Apr 13 16:46 sys/src/boot/pc/sdmylex.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/sdmylex.c:26,33 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/sdmylex.c:26,31
	  typedef struct Rendez{ int r; } Rendez;
	  #define	intrenable(irq, f, c, tbdf, name)	setvec(VectorPIC+(irq), f, c);\
	  						USED(tbdf);
	- #define ioalloc(p, b, c, d)	(1)
	- #define iofree(p)
	  
	  #define K2BPA(va, tbdf)	PADDR(va)
	  #define BPA2K(pa, tbdf)	KADDR(pa)
 [jmk] --rw-rw-r-- M 779778 glenda sys 7006 Apr 13 16:47 sys/src/boot/pc/sdscsi.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/sdscsi.c:133,139 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/sdscsi.c:133,139
	  // cgascreenputs("C", 1);
	  	switch(r->unit->dev->ifc->rio(r)){
	  	default:
	- 		return -1;
	+ 		break;
	  	case SDcheck:
	  		if(!(r->flags & SDvalidsense))
	  			return -1;
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/sdscsi.c:151,157 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/sdscsi.c:151,157
	  				return 2;
	  			if(r->sense[12] == 0x29)
	  				return 2;
	- 			return -1;
	+ 			break;
	  		case 0x02:		/* not ready */
	  			/*
	  			 * If no medium present, bail out.
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/sdscsi.c:166,174 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/sdscsi.c:166,174
	  			scsitest(r);
	  			return 2;
	  		default:
	- 			return -1;
	+ 			break;
	  		}
	- 		return -1;
	+ 		break;
	  	case SDok:
	  		return 0;
	  	}
 [jmk] --rw-rw-r-- M 779778 glenda sys 7499 Apr 13 16:46 sys/src/boot/pc/trap.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/trap.c:182,188 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/trap.c:182,188
	  	 */
	  	outb(Int0ctl, Icw1|0x01);	/* ICW1 - edge triggered, master,
	  					   ICW4 will be sent */
	- 	outb(Int0aux, VectorPIC);		/* ICW2 - interrupt vector offset */
	+ 	outb(Int0aux, VectorPIC);	/* ICW2 - interrupt vector offset */
	  	outb(Int0aux, 0x04);		/* ICW3 - have slave on level 2 */
	  	outb(Int0aux, 0x01);		/* ICW4 - 8086 mode, not buffered */
	  
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/trap.c:194,200 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/trap.c:194,200
	  	 */
	  	outb(Int1ctl, Icw1|0x01);	/* ICW1 - edge triggered, master,
	  					   ICW4 will be sent */
	- 	outb(Int1aux, VectorPIC+8);		/* ICW2 - interrupt vector offset */
	+ 	outb(Int1aux, VectorPIC+8);	/* ICW2 - interrupt vector offset */
	  	outb(Int1aux, 0x02);		/* ICW3 - I am a slave on level 2 */
	  	outb(Int1aux, 0x01);		/* ICW4 - 8086 mode, not buffered */
	  	outb(Int1aux, int1mask);
 [jmk] --rw-rw-r-- M 779778 glenda sys 38028 Apr 13 21:17 sys/src/boot/pc/ether2114x.c
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether2114x.c:186,191 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether2114x.c:186,193
	  	Tulip3		= (0x0019<<16)|0x1011,
	  	Pnic		= (0x0002<<16)|0x11AD,
	  	Pnic2		= (0xC115<<16)|0x11AD,
	+ 	CentaurP	= (0x0985<<16)|0x1317,
	+ 	CentaurPcb	= (0x1985<<16)|0x1317,
	  };
	  
	  typedef struct Ctlr Ctlr;
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether2114x.c:1372,1377 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether2114x.c:1374,1386
	  			ctlr->srom[20+i+1] = ctlr->srom[i];
	  		}
	  	}
	+ 	if(ctlr->id == CentaurP || ctlr->id == CentaurPcb){
	+ 		memmove(&ctlr->srom[20], leafpnic, sizeof(leafpnic));
	+ 		for(i = 0; i < Eaddrlen; i += 2){
	+ 			ctlr->srom[20+i] = ctlr->srom[8+i];
	+ 			ctlr->srom[20+i+1] = ctlr->srom[8+i+1];
	+ 		}
	+ 	}
	  
	  	/*
	  	 * Next, try to find the info leaf in the SROM for media detection.
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether2114x.c:1453,1458 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether2114x.c:1462,1469
	  	if(phy){
	  		x = 0;
	  		for(k = 0; k < nelem(ctlr->phy); k++){
	+ 			if((ctlr->id == CentaurP || ctlr->id == CentaurPcb) && k != 1)
	+ 				continue;
	  			if((oui = miir(ctlr, k, 2)) == -1 || oui == 0)
	  				continue;
	  			if(DEBUG){
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether2114x.c:1497,1506 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether2114x.c:1508,1519
	  			pcicfgw32(p, 0x40, x);
	  			/*FALLTHROUGH*/
	  
	- 		case Pnic:			/* PNIC */
	- 		case Pnic2:			/* PNIC-II */
	  		case Tulip0:			/* 21140 */
	  		case Tulip1:			/* 21041 */
	+ 		case Pnic:			/* PNIC */
	+ 		case Pnic2:			/* PNIC-II */
	+ 		case CentaurP:			/* ADMtek */
	+ 		case CentaurPcb:		/* ADMtek CardBus */
	  			break;
	  		}
	  
	/n/sourcesdump/2006/0413/plan9/sys/src/boot/pc/ether2114x.c:1531,1542 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/boot/pc/ether2114x.c:1544,1569
	  		switch(ctlr->id){
	  		default:
	  			break;
	- 
	  		case Pnic:			/* PNIC */
	  			/*
	  			 * Turn off the jabber timer.
	  			 */
	  			csr32w(ctlr, 15, 0x00000001);
	+ 			break;
	+ 		case CentaurP:
	+ 		case CentaurPcb:
	+ 			/*
	+ 			 * Nice - the register offsets change from *8 to *4
	+ 			 * for CSR16 and up...
	+ 			 * CSR25/26 give the MAC address read from the SROM.
	+ 			 * Don't really need to use this other than as a check,
	+ 			 * the SROM will be read in anyway so the value there
	+ 			 * can be used directly.
	+ 			 */
	+ 			debug("csr25 %8.8luX csr26 %8.8luX\n",
	+ 				inl(ctlr->port+0xA4), inl(ctlr->port+0xA8));
	+ 			debug("phyidr1 %4.4luX phyidr2 %4.4luX\n",
	+ 				inl(ctlr->port+0xBC), inl(ctlr->port+0xC0));
	  			break;
	  		}
	  

kernels: add new admtek cardbus controller
 [jmk] --rw-rw-r-- M 779778 glenda sys 41694 Apr 13 17:30 sys/src/9/pc/ether2114x.c
	/n/sourcesdump/2006/0413/plan9/sys/src/9/pc/ether2114x.c:190,195 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/9/pc/ether2114x.c:190,196
	  	Pnic		= (0x0002<<16)|0x11AD,
	  	Pnic2		= (0xC115<<16)|0x11AD,
	  	CentaurP	= (0x0985<<16)|0x1317,
	+ 	CentaurPcb	= (0x1985<<16)|0x1317,
	  };
	  
	  typedef struct Ctlr Ctlr;
	/n/sourcesdump/2006/0413/plan9/sys/src/9/pc/ether2114x.c:1515,1521 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/9/pc/ether2114x.c:1516,1522
	  			ctlr->srom[20+i+1] = ctlr->srom[i];
	  		}
	  	}
	- 	if(ctlr->id == CentaurP){
	+ 	if(ctlr->id == CentaurP || ctlr->id == CentaurPcb){
	  		memmove(&ctlr->srom[20], leafpnic, sizeof(leafpnic));
	  		for(i = 0; i < Eaddrlen; i += 2){
	  			ctlr->srom[20+i] = ctlr->srom[8+i];
	/n/sourcesdump/2006/0413/plan9/sys/src/9/pc/ether2114x.c:1603,1609 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/9/pc/ether2114x.c:1604,1610
	  	if(phy){
	  		x = 0;
	  		for(k = 0; k < nelem(ctlr->phy); k++){
	- 			if(ctlr->id == CentaurP && k != 1)
	+ 			if((ctlr->id == CentaurP || ctlr->id == CentaurPcb) && k != 1)
	  				continue;
	  			if((oui = miir(ctlr, k, 2)) == -1 || oui == 0)
	  				continue;
	/n/sourcesdump/2006/0413/plan9/sys/src/9/pc/ether2114x.c:1655,1660 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/9/pc/ether2114x.c:1656,1662
	  		case Pnic:			/* PNIC */
	  		case Pnic2:			/* PNIC-II */
	  		case CentaurP:			/* ADMtek */
	+ 		case CentaurPcb:		/* ADMtek CardBus */
	  			break;
	  		}
	  
	/n/sourcesdump/2006/0413/plan9/sys/src/9/pc/ether2114x.c:1698,1703 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/9/pc/ether2114x.c:1700,1706
	  			csr32w(ctlr, 15, 0x00000001);
	  			break;
	  		case CentaurP:
	+ 		case CentaurPcb:
	  			/*
	  			 * Nice - the register offsets change from *8 to *4
	  			 * for CSR16 and up...
	/n/sourcesdump/2006/0413/plan9/sys/src/9/pc/ether2114x.c:1823,1828 - 
	/n/sourcesdump/2006/0414/plan9/sys/src/9/pc/ether2114x.c:1826,1831
	  void
	  ether2114xlink(void)
	  {
	- 	addethercard("21140",  reset);
	  	addethercard("2114x",  reset);
	+ 	addethercard("21140",  reset);
	  }


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].