Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Dec 2000 17:11:39 -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 ahc_eisa.c ahc_pci.c aic7xxx.c aic7xxx.h aic7xxx.seq aic7xxx_93cx6.c aic7xxx_93cx6.h aic7xxx_freebsd.c aic7xxx_freebsd.h aic7xxx_inline.h aic7xxx_pci.c
Message-ID:  <200012200111.eBK1BdK09560@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
gibbs       2000/12/19 17:11:38 PST

  Modified files:
    sys/dev/aic7xxx      ahc_eisa.c ahc_pci.c aic7xxx.c aic7xxx.h 
                         aic7xxx.seq aic7xxx_93cx6.c 
                         aic7xxx_93cx6.h aic7xxx_freebsd.c 
                         aic7xxx_freebsd.h aic7xxx_inline.h 
                         aic7xxx_pci.c 
  Log:
  	ahc_eisa.c:
  	ahc_pci.c:
  		Add detach support.
  
  		Make use of soft allocated on our behalf by newbus.
  
  		For PCI devices, disable the mapping type we aren't
  		using for extra protection from rogue code.
  
  	aic7xxx_93cx6.c:
  	aic7xxx_93cx6.h:
  		Sync perforce IDs.
  
  	aic7xxx_freebsd.c:
  		Capture the eventhandle returned by EVENTHANDER_REGISTER
  		so we can kill the handler off during detach.
  
  		Use AHC_* constants instead of hard coded numbers in a
  		few more places.
  
  		Test PPR option state when deciding to "really" negotiate
  		when the CAM_NEGOTIATE flag is passed in a CCB.
  
  		Make use of core "ahc_pause_and_flushwork" routine in our
  		timeout handler rather than re-inventing this code.
  
  		Cleanup all of our resources (really!) in ahc_platform_free().
  		We should be all set to become a module now.
  
  		Implement the core ahc_detach() routine shared by all of
  		the FreeBSD front-ends.
  
  	aic7xxx_freebsd.h:
  		Softc storage for our event handler.
  
  		Null implementation for the ahc_platform_flushwork() OSM
  		callback.  FreeBSD doesn't need this as XPT callbacks are
  		safe from all contexts and are done directly in ahc_done().
  
  	aic7xxx_inline.h:
  		Implement new lazy interrupt scheme.  To avoid an extra
  		PCI bus read, we first check our completion queues to
  		see if any work has completed.  If work is available, we
  		assume that this is the source of the interrupt and skip
  		reading INTSTAT.  Any remaining interrupt status will be
  		cleared by a second call to the interrupt handler should
  		the interrupt line still be asserted.  This drops the
  		interrupt handler down to a single PCI bus read in the
  		common case of I/O completion.  This is the same overhead
  		as in the not so distant past, but the extra sanity of
  		perforning a PCI read after clearing the command complete
  		interrupt and before running the completion queue to avoid
  		missing command complete interrupts added a cycle.
  
  	aic7xxx.c:
  		During initialization, be sure to initialize all scratch
  		ram locations before they are read to avoid parity errors.
  		In this case, we use a new function, ahc_unbusy_tcl() to
  		initialize the scratch ram busy target table.
  
  		Replace instances of ahc_index_busy_tcl() used to unbusy
  		a tcl without looking at the old value with ahc_unbusy_tcl().
  
  		Modify ahc_sent_msg so that it can find single byte messages.
  		ahc_sent_msg is now used to determine if a transfer negotiation
  		attempt resulted in a bus free.
  
  		Be more careful in filtering out only the SCSI interrupts
  		of interest in ahc_handle_scsiint.
  
  		Rearrange interrupt clearing code to ensure that at least
  		one PCI transaction occurrs after hitting CLRSINT1 and
  		writting to CLRINT.  CLRSINT1 writes take a bit to
  		take effect, and the re-arrangement provides sufficient
  		delay to ensure the write to CLRINT is effective.  The
  		old code might report a spurious interrupt on some "fast"
  		chipsets.
  
  		export ahc-update_target_msg_request for use by OSM code.
  
  		If a target does not respond to our ATN request, clear
  		it once we move to a non-message phase.  This avoids
  		sending a MSG_NOOP in some later message out phase.
  
  		Use max lun and max target constants instead of
  		hard-coded values.
  
  		Use softc storage built into our device_t under FreeBSD.
  
  		Fix a bug in ahc_free() that caused us to delete
  		resources that were not allocated.
  
  		Clean up any tstate/lstate info in ahc_free().
  
  		Clear the powerdown state in ahc_reset() so that
  		registers can be accessed.
  
  		Add a preliminary function for pausing the chip and
  		processing any posted work.
  
  		Add a preliminary suspend and resume functions.
  
  	aic7xxx.h:
  		Limit the number of supported luns to 64.  We don't
  		support information unit transfers, so this is the
  		maximum that makes sense for these chips.
  
  		Add a new flag AHC_ALL_INTERRUPTS that forces the
  		processing of all interrupt state in a single invokation
  		of ahc_intr().  When the flag is not set, we use the
  		lazy interrupt handling scheme.
  
  		Add data structures to store controller state while
  		we are suspended.
  
  		Use constants instead of hard coded values where appropriate.
  
  		Correct some harmless "unsigned/signed" conflicts.
  
  	aic7xxx.seq:
  		Only perform the SCSIBUSL fix on ULTRA2 or newer controllers.
  		Older controllers seem to be confused by this.
  
  		In target mode, ignore PHASEMIS during data phases.
  		This bit seems to be flakey on U160 controllers acting
  		in target mode.
  
  	aic7xxx_pci.c:
  		Add support for the 29160C CPCI adapter.
  
  		Add definitions for subvendor ID information
  		available for devices with the "9005" vendor id.
  		We currently use this information to determine
  		if a multi-function device doesn't have the second
  		channel hooked up on a board.
  
  		Add rudimentary power mode code so we can put the
  		controller into the D0 state.  In the future this
  		will be an OSM callback so that in FreeBSD we don't
  		duplicate functionality provided by the PCI code.
  		The powerstate code was added after I'd completed
  		my regression tests on this code.
  
  		Only capture "left over BIOS state" if the POWRDN
  		setting is not set in HCNTRL.
  
  		In target mode, don't bother sending incremental
  		CRC data.
  
  Revision  Changes    Path
  1.18      +3 -3      src/sys/dev/aic7xxx/ahc_eisa.c
  1.38      +14 -2     src/sys/dev/aic7xxx/ahc_pci.c
  1.62      +365 -103  src/sys/dev/aic7xxx/aic7xxx.c
  1.31      +48 -13    src/sys/dev/aic7xxx/aic7xxx.h
  1.107     +12 -3     src/sys/dev/aic7xxx/aic7xxx.seq
  1.10      +2 -2      src/sys/dev/aic7xxx/aic7xxx_93cx6.c
  1.9       +2 -2      src/sys/dev/aic7xxx/aic7xxx_93cx6.h
  1.16      +52 -32    src/sys/dev/aic7xxx/aic7xxx_freebsd.c
  1.5       +13 -2     src/sys/dev/aic7xxx/aic7xxx_freebsd.h
  1.9       +57 -23    src/sys/dev/aic7xxx/aic7xxx_inline.h
  1.7       +88 -14    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?200012200111.eBK1BdK09560>