From owner-cvs-all@FreeBSD.ORG Tue May 11 13:39:47 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5544716A4CE; Tue, 11 May 2004 13:39:47 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 170C743D3F; Tue, 11 May 2004 13:39:47 -0700 (PDT) (envelope-from gibbs@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i4BKdkGe047797; Tue, 11 May 2004 13:39:46 -0700 (PDT) (envelope-from gibbs@repoman.freebsd.org) Received: (from gibbs@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i4BKdk9W047796; Tue, 11 May 2004 13:39:46 -0700 (PDT) (envelope-from gibbs) Message-Id: <200405112039.i4BKdk9W047796@repoman.freebsd.org> From: "Justin T. Gibbs" Date: Tue, 11 May 2004 13:39:46 -0700 (PDT) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/dev/aic7xxx aic7xxx.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 May 2004 20:39:47 -0000 gibbs 2004/05/11 13:39:46 PDT FreeBSD src repository Modified files: sys/dev/aic7xxx aic7xxx.c Log: o When restarting the sequencer, clear any pending sequencer interrupt codes. These codes are only relevant to the code that was last being executed and that context is cleared when we reset the program counter. This addresses a race condition between a sequencer interrupt and any SCSI event that causes us to restart the sequencer. o When running the untagged-Q, we must start the timer for any transaction we queue. o Give the firmware half a millisecond between pauses to flush work out. This should give us around half a second of total delay before flagging an issue with pausing and flushing controller work. Only attempt to clear critical sections if there are no pending interrupts in the pause and flush loop. If the sequencer has issued an INTSTAT, we may not be able to step out of the critical section. o Cancel pending transactions on devices that respond with a selection timeout. This decreases the duration of timeout recovery when a device disappears. Don't bother forcing renegotiation on a selection timeout now that we use the device reset handler to abort any pending commands on the target. The device reset handler already takes us down to async narrow and forces a renegotiation. o In the device reset handlers, only send a BDR sent async event if the status is not CAM_SEL_TIMEOUT. This avoids sending this event in the selection timeout case. o Modify the Core timeout handler to verify that another command has the potential to timeout before passing off a command timeout as due to some other command. Revision Changes Path 1.100 +88 -26 src/sys/dev/aic7xxx/aic7xxx.c