Subject: PiNT support hangs 4/330
To: NetBSD port-sparc mailing list <port-sparc@NetBSD.ORG>
From: Julian Coleman <J.D.Coleman@newcastle.ac.uk>
List: port-sparc
Date: 04/20/1998 13:26:49
I've been trying to work out why adding PINT support to the kernel wedges
my 4/330 solid.  I've got as far as (code fragment from scsipi_base.c:
scsipi_execute_xs()) :

		...
	switch (scsipi_command_direct(xs)) {
	case SUCCESSFULLY_QUEUED:
		if ((xs->flags & (SCSI_NOSLEEP | SCSI_POLL)) == SCSI_NOSLEEP)
			return (EJUSTRETURN);
#ifdef DIAGNOSTIC
		if (xs->flags & SCSI_NOSLEEP)
			panic("scsipi_execute_xs: NOSLEEP and POLL");
#endif
		s = splbio();
		while ((xs->flags & ITSDONE) == 0)
			tsleep(xs, PRIBIO + 1, "scsipi_cmd", 0);
		splx(s);
	case COMPLETE:	
		...

The kernel just loops around the while loop forever, so ITSDONE isn't being
set.  Presumably it should be set from ncr53c9x.c:ncr53c9x_done() but isn't.
BTW, this is the first time this bit of code gets exercised - every other
time the code goes to 'case COMPLETE:'

Thoughts?

J

-- 
    1024/55A5BC19        0F 3F 62 56 18 10 8B 84  43 8F F4 94 93 37 76 AA

S.E.P.