Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Nov 2000 12:13:42 -0800 (PST)
From:      "Justin T. Gibbs" <gibbs@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/dev/aic7xxx aic7xxx.c aic7xxx.h aic7xxx.reg aic7xxx.seq aic7xxx_93cx6.c aic7xxx_93cx6.h aic7xxx_freebsd.c aic7xxx_inline.h aic7xxx_pci.c
Message-ID:  <200011102013.MAA00880@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
gibbs       2000/11/10 12:13:42 PST

  Modified files:
    sys/dev/aic7xxx      aic7xxx.c aic7xxx.h aic7xxx.reg 
                         aic7xxx.seq aic7xxx_93cx6.c 
                         aic7xxx_93cx6.h aic7xxx_freebsd.c 
                         aic7xxx_inline.h aic7xxx_pci.c 
  Log:
  Sync Perforce IDs, add tranceiver state change support, and correct
  numerous error recovery buglets.
  
  Many thanks to Tor Egge for his assistance in diagnosing problems with
  the error recovery code.
  
  aic7xxx.c:
  	Report missed bus free events using their own sequencer interrupt
  	code to avoid confusion with other "bad phase" interrupts.
  
  	Remove a delay used in debugging.  This delay could only be hit
  	in certain, very extreme, error recovery scenarios.
  
  	Handle transceiver state changes correctly.  You can now
  	plug an SE device into a hot-plug LVD bus without hanging
  	the controller.
  
  	When stepping through a critical section, panic if we step
  	more than a reasonable number of times.
  
  	After a bus reset, disable bus reset interupts until we either
  	our first attempt to (re)select another device, or another device
  	attemps to select us.  This removes the need to busy wait in
  	kernel for the scsi reset line to fall yet still ensures we
  	see any reset events that impact the state of either our initiator
  	or target roles.  Before this change, we had the potential of
  	servicing a "storm" of reset interrupts if the reset line was
  	held for a significant amount of time.
  
  	Indicate the current sequencer address whenever we dump the
  	card's state.
  
  aic7xxx.reg:
  	Transceiver state change register definitions.
  
  	Add the missed bussfree sequencer interrupt code.
  
  	Re-enable the scsi reset interrupt if it has been
  	disabled before every attempt to (re)select a device
  	and when we have been selected as a target.
  
  	When being (re)selected, check to see if the selection
  	dissappeared just after we enabled our bus free interrupt.
  	If the bus has gone free again, go back to the idle loop
  	and wait for another selection.
  
  	Note two locations where we should change our behavior
  	if ATN is still raised.  If ATN is raised during the
  	presentation of a command complete or disconnect message,
  	we should ignore the message and expect the target to put
  	us in msgout phase.  We don't currently do this as it
  	requires some code re-arrangement so that critical sections
  	can be properly placed around our handling of these two
  	events.  Otherwise, we cannot guarantee that the check of
  	ATN is atomic relative to our acking of the message in
  	byte (the kernel could assert ATN).
  
  	Only set the IDENTIFY_SEEN flag after we have settled
  	on the SCB for this transaction.  The kernel looks at
  	this flag before assuming that SCB_TAG is valid.  This
  	avoids confusion during certain types of error recovery.
  
  	Add a critical section around findSCB.  We cannot allow
  	the kernel to remove an entry from the disconnected
  	list while we are traversing it.  Ditto for get_free_or_disc_scb.
  
  aic7xxx_freebsd.c:
  	Only assume that SCB_TAG is accurate if IDENTIFY_SEEN is
  	set in SEQ_FLAGS.
  
  	Fix a typo that caused us to execute some code for the
  	non-SCB paging case when paging SCBs.  This only occurred
  	during error recovery.
  
  Revision  Changes    Path
  1.59      +70 -33    src/sys/dev/aic7xxx/aic7xxx.c
  1.30      +7 -2      src/sys/dev/aic7xxx/aic7xxx.h
  1.31      +8 -7      src/sys/dev/aic7xxx/aic7xxx.reg
  1.105     +62 -15    src/sys/dev/aic7xxx/aic7xxx.seq
  1.9       +2 -2      src/sys/dev/aic7xxx/aic7xxx_93cx6.c
  1.8       +2 -2      src/sys/dev/aic7xxx/aic7xxx_93cx6.h
  1.15      +3 -2      src/sys/dev/aic7xxx/aic7xxx_freebsd.c
  1.7       +2 -2      src/sys/dev/aic7xxx/aic7xxx_inline.h
  1.6       +2 -2      src/sys/dev/aic7xxx/aic7xxx_pci.c



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011102013.MAA00880>