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.