Port-atari archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: scsi freezing problem with NetBSD current
On Sat, 25 Oct 2008, T. Makinen wrote:
Hello,
I had scsi freezing problem that has been discussed earlier here with NetBSD 4
running on Atari Falcon. I decided to try NetBSD current and it had
same problem.
It seems that scsi freezing happens because ncr5380 driver sets XS_STS_DONE
before calling scsipi_done(). Since 1.135 revision of scsipi_base.c,
scsipi_done()
bails out early if XS_STS_DONE is set.
Here is description why that check is implemented:
http://mail-index.netbsd.org/tech-kern/2005/09/22/0002.html
Leaving XS_STS_DONE out cures scsi freezing problem with my Falcon.
I tested this with NetBSD current (ncr5380.c,v 1.55).
Nice catch.
It looks like very few drivers (5 including atari/dev/ncr5380.c)
set XS_STS_DONE now and its quite possible some of the
others are abusing the interface too.
Could you build a bootable current image and see if other
users on the list could confirm it fixes it for them also?
Another issue is that I have to use loadbsd.ttp with -s option with CT63
accelerated Falcon to disable TT-ram, otherwise my scsi drive is recognized
to have just one sector with total capacity of 512K. Any ideas why
this happens ?
Hmm, one thought is there could be DMA issues with TT-ram. I'm not
familiar with the atari pmap, but if so this should be fixable by
tagging the TT-ram differently and forcing the memory provided for
to come from the other set.
--- /usr/src.0/sys/arch/atari/dev/ncr5380.c 2007-03-06
16:07:15.000000000 +0200
+++ /usr/src/sys/arch/atari/dev/ncr5380.c 2008-10-25
03:00:24.000000000 +0300
@@ -162,7 +162,9 @@
free_head = reqp;
splx(sps);
+#if 0
xs->xs_status |= XS_STS_DONE;
+#endif
if (!(reqp->dr_flag & DRIVER_LINKCHK))
scsipi_done(xs);
}
--
David/absolute -- www.NetBSD.org: No hype required --
Home |
Main Index |
Thread Index |
Old Index