Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/ic Fix for a driver bug provided by Jon W Grubbs (jg...
details: https://anonhg.NetBSD.org/src/rev/f350f21d12ec
branches: trunk
changeset: 486616:f350f21d12ec
user: ragge <ragge%NetBSD.org@localhost>
date: Fri May 26 21:11:00 2000 +0000
description:
Fix for a driver bug provided by Jon W Grubbs (jgrubbs%megsinet.net@localhost).
This bug is only visible on some disks, and I have verified that it works
correctly on VAX. However, du to the author, it is a problem on other
machines/disks as well. Here's the author's comments:
> The MI code for the NCR5380 has a small bug in it The RZ56 wants to
> negotiate for Synchronous Data Transfers and when it does, the current code
> looks like it will send a REJECT message as the spec calls for when we cant
> handle the request. However, a couple of lines of code in the
> ncr5380_msg_in routine are missing wrt the PARITY message and anything that
> wants to send a REJECT message. The ATN setup that is done in
> ncr_sched_msgout is immediately negated by the final byte ACK sequence in
> this routine. This causes bad things to happen to an RZ56.
diffstat:
sys/dev/ic/ncr5380sbc.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diffs (27 lines):
diff -r 4d740c990367 -r f350f21d12ec sys/dev/ic/ncr5380sbc.c
--- a/sys/dev/ic/ncr5380sbc.c Fri May 26 21:05:23 2000 +0000
+++ b/sys/dev/ic/ncr5380sbc.c Fri May 26 21:11:00 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ncr5380sbc.c,v 1.36 2000/03/29 13:09:02 tsutsui Exp $ */
+/* $NetBSD: ncr5380sbc.c,v 1.37 2000/05/26 21:11:00 ragge Exp $ */
/*
* Copyright (c) 1995 David Jones, Gordon W. Ross
@@ -1685,6 +1685,8 @@
NCR_TRACE("msg_in: PARITY_ERROR\n", 0);
/* Resend the last message. */
ncr_sched_msgout(sc, sc->sc_msgout);
+ /* Reset icmd after scheduling the REJECT cmd - jwg */
+ icmd = NCR5380_READ(sc, sci_icmd) & SCI_ICMD_RMASK;
break;
case MSG_MESSAGE_REJECT:
@@ -1746,6 +1748,8 @@
/* fallthrough */
reject:
ncr_sched_msgout(sc, SEND_REJECT);
+ /* Reset icmd after scheduling the REJECT cmd - jwg */
+ icmd = NCR5380_READ(sc, sci_icmd) & SCI_ICMD_RMASK;
break;
abort:
Home |
Main Index |
Thread Index |
Old Index