Subject: Re: panic: crazy interrupts
To: None <port-sparc@NetBSD.ORG>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: port-sparc
Date: 11/01/1997 09:47:36
>> I fixed the race condition that was causing this earlier this year
>> in the previous version of the zs driver.  I fear that change was
>> not ported to the current driver.

> i believe we should backout the new zs driver for NetBSD/sparc 1.3,
> as it has so far shown at least two cases of lossage (hangs when DCD
> asserted, and crtscts being set, and this new panic).

I can't speak to the former, but I've thought about it and believe I
can make the latter go away with a few lines of code.  Given the twisty
little maze of structures, all different, that the zs code seems to be,
I can't fix it right without understanding it a lot better than one
afternoon's study produces.  But it'd be easy enough to do something
like

static volatile int zs_expectstray = 0;
zshard() {	...
		if (returnvalue==0 && zs_expectstray) {
			zs_expectstray=0; returnvalue=1;
		}
		return(returnvalue);
	}
zs_putc() {	...
		s=splhigh();
		...
		zs_expectstray=1;
		splx(s);
		zs_expectstray=0;
		...
	}

which should at least paper over the problem.

					der Mouse

			       mouse@rodents.montreal.qc.ca
		     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B