summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx
Commit message (Collapse)AuthorAgeFilesLines
* Convert the use of MAXBSIZE in the dma tag to more appropriate values.scottl2002-12-315-8/+13
| | | | | | Use BUS_SPACE_MAXSIZE_32BIT for the parent dma tags, and (NSEGS - 1) * PAGE_SIZE for the data buffer tags. FreeBSD/sparc64 is more strict about checking these values that other arches.
* The sequencer downloading code assumes that all jumpscottl2002-12-051-3/+5
| | | | | | | | | | labels are acurate in relation to a fully compiled sequencer program (all patches downloaded). Correct a few occurances of a relative jump across a macro that ended up jumping us into the last instruction of the macro. Spproved by: re (bmah)
* Last minute fixes to ahc and ahd:scottl2002-12-046-47/+94
| | | | | | | | | | | | | | | | | | | | | | | | | ahd_pci.c: Retrieve the allow_memio hint from the resource manager to determine whether or not to try PCI MEMIO. aic79xx_osm.h: aic7xxx_osm.h: Don't wrongly abuse the callout_reset() interface when trying to abuse timeouts generated from the CAM layer. This fixes the console freeze and lost timeout problem that many have reported, especially on SMP systems. aic79xx_pci.c aic7xxx_pci.c Rewrite the MEMIO test routine to prevent certain broken chipsets from trying to burst multiple DWORDs to the registers. Also make the routine better detect byte merging by the host bridge and deal with it. aic79xx.reg: Correct an incorrect register definition. Approved by: re (rwatson, jhb)
* Major update to the ahd driver to fix many bugs found in the previousscottl2002-12-014-372/+949
| | | | | | | | | | version, plus add support for the new features found in the Rev B version of the chip. The changelog is quite long and can be provided on request. Major features include vastly improved protocol violation handling, full support for the 7902 Rev B, better parity error handling, and better packetized overrun handling, to name a few. Approved by: re (blanket)
* Implement workaround for broken busfree-rev in the A4.scottl2002-12-011-69/+148
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | HP -> CPQ Rearrange IDs to better match which chips they use. Convert to uniform product description strings. Simplify 7901A setup function. Add the NONPACKFIFO_BUG and PACED_NEGTABLE_BUG entries for the A. Add rev B bugs and features. The double write workaround for CURRSCB is only required if abort pending is set. Remove this work around and set the abort pending bug bit on the B at least until we have better confirmation that the double write is always safe. Add updated H2B identifiers Move IOCell paramters into softc and add a hook for the OSM to modify these as well as other settings prior to committing them to the chip. SLEW -> SLEWRATE PREQDIS in DEVCONFIG1 went away after the A2. Remove all code that references this bit. This is especially important since this bit was reused in the B for a different HW fix workaround. Properly set the AHD_NEW_IOCELL_OPTS and AHD_NEW_DFCNTRL_OPTS features for the B. Remove stray/random extra 7901A generic PCI table entry. Also switch the correct 7901A generic entry to use ID_ALL_MASK since we can only differentiate the 7901A from the 7902 by checking for a "type field" of 0xE. Set AHD_INTCOLLISIONT_BUG for the Rev B. Set the PREQDIS bit in DEVCONFIG1 for the B. The bit is misnamed, but seems to disable a work-around that breaks on the B on PCI busses. Add a routine for testing memory mapped register access. This will hopefully detect things like buggy via chipsets so that the OSM can fallback to using I/O mapped access when memory mapped I/O simply will not work. Approved by: re (blanket)
* Add our controller name to the front of ourscottl2002-12-011-3/+16
| | | | | | | | | | | diagnostic "Setting Mode" messages. Use a read of HCNTRL to flush our write to CLRCMDCMPLT on the RevB. This allows us to check to see if the sequencer is paused and to initiate the interrupt collision workaround without incuring an extra read. Approved by: re (blanket)
* Remove redundant check for chip type being PCI-X.scottl2002-12-011-4/+4
| | | | | | | | | PCI-X only workarounds are automatically masked out if we are operating in PCI mode. Make use of ahd_pci_test_register_access() Approved by: re (blanket)
* Update to include new ahd_scb_timer_reset APIscottl2002-12-011-3/+12
| | | | | | | | Move IOCell paramters into softc and add a hook for the OSM to modify these as well as other settings prior to committing them to the chip. Approved by: re (blanket)
* Synchronize perforce Id tagsscottl2002-11-301-1/+1
| | | | Approved by: re (blanket)
* Bring in many bugfixes and changes obtained from formal testing:scottl2002-11-304-149/+435
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | aic7xxx.c: aic7xxx.h: aic7xxx.reg: aic7xxx.seq: Bring in the protocol violation handler from the U320 driver and replace the NO_IDENT sequencer interrupt code with the PROTO_VIOLATION code. Support for this code required the following changes: SEQ_FLAGS: IDENTIFY_SEEN -> NOT_IDENTIFIED Added NO_CDB_SENT SCB_CONTROL: TARGET_SCB == STATUS_RCVD for initiator mode scb->flags: Added SCB_TARGET_SCB since we cannot rely on TARGET_SCB as a target/initiator differentiator due to it being overloaded in initiator mode to indicate that status has been received. aic7xxx.seq: Move data fifo CLRCHN to mesgin_rdptrs which is a safer location for doing this operation. This also saves a sequencer instruction. aic7xxx.c: aic7xxx.h: Change ahc/ahd_upate_neg_request() to take a "negotiation type" enum that allows us to negotiate: o only if the goal and current parameters differ. o only if the goal is non-async o always - even if the negotiation will be for async. aic7xxx.seq: Reset the FIFO whenever a short CDB transfer occurs so that the FIFO contents do not corrupt a future CDB transfer retry. Add support for catching the various protocol violations handled by ahc_handle_protocol_violation. Reformat some comments. aic7xxx.c: aic7xxx.h: Just for safety, have the aic7xxx driver probe the stack depth. aic7xxx.c: aic7xxx.h: Save and restore stack contents during diagnostics. Some chip variants overwrite stale entries on a stack "pop". Don't use 0 to probe the stack depth. 0 is the typical value used to backfill the stack if entries are overwritten on a "pop". aic7xxx.h: Add a missing typedef. Collapse SCB flag entries so they are bit contiguous. Add AHD_ULTRA2_XFER_PERIOD for narrow fallback calculations aic7xxx.c: Don't panic (as a diagnostic to catch bugs) if we decided to force the renegotiation of async even if we believe we are already async. This should allow us to negotiate async instead of the full user goal rate during startup if bus resets are disabled. Add a space to the end of the ahc/ahd_print_devinfo routines so that it behaves as expected by the code that uses it. Only force a renegotiation on a selection timeout if the SCB was valid. Doing otherwise may be dangerous as the connection was not valid for an unknown reason. Add additional diagnostic output to ahc_dump_card_state(), and have it use the register pretty printing functions. Update ahc_reg_print() to handle a NULL cur_col. Add a newline to ahc_dump_card_state() output. Bring back "use_ppr". We need to use_ppr anytime doppr is true or we have non-zero protocol options. The later case was not handled in the recent removal of use_ppr. Move a comment and remove a useless clearing of use_ppr. Don't disable ENBUSFREE when single stepping on a DT capable controller. We cannot re-enable unexpected busfree detection, so we must clear BUSFREE on each step instead. Correct the lookup of the SCB ID in ahc_handle_proto_error. Remove a diagnostic printf. Remove unecessary restoration of the STACK for older chips. Approved by: re (blanket)
* Add a routine for testing memory mapped register access.scottl2002-11-301-8/+58
| | | | | | | | This will hopefully detect things like buggy via chipsets so that the OSM can fallback to using I/O mapped access when memory mapped I/O simply will not work. Approved by: re (blanket)
* Always compile in the AHC_ALLOW_MEMIO code, but only try MEMIO ifscottl2002-11-301-4/+22
| | | | | | | | | AHC_ALLOW_MEMIO is set, or the hint hint.ahc.N.allow_memio=1 is set in the bootloader. Make use of ah?_pci_test_register_access(). Approved by: re (blanket)
* Handle changes to SCB_CONTROL, scb->flags and SEQ_FLAGSscottl2002-11-301-5/+6
| | | | Approved by: re (blanket)
* Use the new ahc_scb_timer_reset APIscottl2002-11-301-4/+27
| | | | | | Remove AHC_ALLOW_MEMIO Approved by: re (blanket)
* Add support for the Olivetti branded EISA boards.scottl2002-11-301-1/+15
| | | | Approved by: re (blanket)
* Revisit the printf format fixes for alpha. intmax_t doesn't exist inscottl2002-11-282-5/+4
| | | | | | RELENG_4, so cast to u_long in order to stay compatible. Approved by: re (blanket)
* Minor updates to the aicasm:scottl2002-11-273-5/+5
| | | | | | | | | | | | | | aicasm_gram.y: Use a direct move from allzeros to emulate a mvi of 0. aicasm_insformat.h: sync $Id$ aicasm_symbol.c: Minor header change. Approved by: re (blanket)
* Fix printf format problems that were stopping LINT on alphascottl2002-11-252-4/+5
| | | | | Submitted by: jmallett, many others Approved by: re
* Use better return types and a couple of casts to eliminate warnings onscottl2002-11-121-7/+7
| | | | | | | alpha. This will take the file out of sync with the private version that we maintain, but alpha tinderbox has been broken for too long. Tested on: i386, sparc64, alpha
* Never allow memory mapped I/O in PCI-X mode on controllers thatgibbs2002-10-161-2/+4
| | | | | do not support that configuration. This should fix problems with embedded 7902 controllers running in PCI-X mode.
* Remove a left over '&' from the conversion to using ourgibbs2002-09-301-2/+2
| | | | | | softc referenced seeprom store. MFC after: 1 day
* Use fcntl.h from inside /sys.obrien2002-09-301-1/+1
| | | | Reviewd by: scottl
* Be consistent about "static" functions: if the function is markedphk2002-09-281-1/+1
| | | | | | static in its prototype, mark it static at the definition too. Inspired by: FlexeLint warning #512
* Add a missing pair of curly braces to a conditional debuggibbs2002-09-271-2/+3
| | | | | statement. This ensures that debug code doesn't trigger if it isn't enabled. <blush>
* Remove redundant inclusion of inttypes.h in aicasm_gram.ygibbs2002-09-274-8/+7
| | | | | | and properly sort inttypes.h into list of includes. Noticed by: Mike Barcroft <mike@freebsd.org>
* Upgrade to version 1.1 of the aic79xx U320 driver.gibbs2002-09-266-243/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | aic79xx.c: o Remove redundant ahd_update_modes() call. o Correct panic in diagnostic should state corruption cause the SCB Id to be invalid during a selection timeout. o Add workaround for missing BUSFREEREV feature in Rev A silicon. o Corect formatting nits. o Use register pretty printing in more places. o Save and restore our SCB pointer when updating the waiting queue list for an "expected" LQ-out busfree. o In ahd_clear_intstat, deal with the missing autoclear in the CLRLQO* registers. o BE fixup in a diagnostic printf. o Make sure that we are in the proper mode before disabling selections in ahd_update_pending_scbs. o Add more diagnostics. o task_attribute_nonpkt_tag -> task_attribute: we don't need a nonpkt_tag field anymore for allowing all 512 SCBs to be used in non-packetized connections. o Negotiate HOLD_MCS to U320 devices. o Add a few additional mode assertions. o Restore the chip mode after clearing out the qinfifo so that code using ahd_abort_scbs sees a consistent mode. o Simplify the DMA engine shutdown routine prior to performing a bus reset. o Perform the sequencer restart after a chip reset prior to setting up our timer to poll for the reset to be complete. On some OSes, the timer could actually pre-empt us and order is important here. o Have our "reset poller" set the expected mode since there is no guarantee of what mode will be in force when we are called from the OS timer. o Save and restore the SCB pointer in ahd_dump_card_state(). This routine must not modify card state. o Ditto for ahd_dump_scbs(). aic79xx.h: o Add a few more chip bug definitions. o Align our tag on a 32bit boundary. aic79xx.reg: aic79xx.seq: o Start work on removing workarounds for Rev B. o Use a special location in scratch from for stroring our SCBPTR during legacy FIFO allocations. This corrects problems in mixed packetized/non-packetized configurations where calling into a FIFO task corrupted our SCBPTR. o Don't rely on DMA priority to guarantee that all data in our FIFOs will flush prior to a command completion notification going out of the command channel. We've never seen this assumption fail, but better safe than sorry. o Deal with missing BUSFREEREV feature in H2A. o Simplify disconnect list code now that the list will always have only a single entry. o Implement the AHD_REG_SLOW_SETTLE_BUG workaround. o Swith to using "REG_ISR" for local mode scratch during our ISR. o Add a missing jmp to the data_group_dma_loop after our data pointers have been re-initialized by the kernel. o Correct test in the bitbucket code so that we actually wait for the bitbucket to complete before signaling the kernel of the overrun condition. o Reposition pkt_saveptrs to avoid a jmp instruction. o Update a comment to reflect that the code now waits for a FIFO to drain prior to issuing a CLRCHN. aic79xx_inline.h: o Remove unused untagged queue handling code. o Don't attempt to htole64 what could be a 32bit value. aic79xx_pci.c: o Set additional bug flags for rev A chips.
* Expand vendor ID.gibbs2002-09-261-1/+1
|
* Correct a spelling error.gibbs2002-09-261-2/+2
|
* Sync perforce IDs for changes first committed to FreeBSD and thengibbs2002-09-264-4/+4
| | | | to the Adaptec driver repository.
* Use inttypes.hgibbs2002-09-265-7/+26
| | | | | | Upgrade assembler to allow a move immediate of 0. This is helpful in certain macros where we can't know the value of the immediate in advance.
* The ahc driver should only have one devclass, not one for each busscottl2002-09-224-9/+10
| | | | | | | attachment. Submitted by: too many people to count MFC after: 3 days
* Use the correct bit value for a debug optionsscottl2002-09-011-1/+1
|
* Sync perforce Ids.gibbs2002-08-312-2/+2
|
* Identify new controllers and the aic7901A.gibbs2002-08-311-33/+55
| | | | | | | | Move interrupt enable to the OSM. Remove some debugging messages. Remove chip bug workarounds for non-production asics.
* Hook up the endian macros.gibbs2002-08-311-28/+41
| | | | Correct some comments.
* Enable card interrupts in our OSM rather than in the core.gibbs2002-08-311-19/+29
| | | | | | | | | | | | | | This ensures that we don't enter our interrupt handler until all OSM components it might reference have been fully initialized during attach. Remove vestiges of untagged queue handling. Add hints to ahd_get_scb() so it knows what type of SCB collision management to perform for each new transaction. Properly disable/enable IU_REQ with changes in tagged queuing and disconnection settings passed in by CAM.
* Correct lun representation during packetized operation.gibbs2002-08-311-44/+26
| | | | | | | | | | | | | | | | Uninline some routines that are just too big to be inlined. Add some helper macros for SCB ID collision management. Use a hardware SCB rather than a full SCB for the "next SCB to queue" sentinal. Update for new "high SCBID bit" qoutfifo delivery scheme. If interrupts are disabled on the card, don't bother running our interrupt handler. Our handler was called due to a shared interrupt, and the card's interrupts are explicitly disabled to prevent entry into our interrupt handler.
* Add a prefix to be used for assembler generated tables andgibbs2002-08-311-83/+62
| | | | | | | | | | | | | | | | | | | | | | | functions for register pretty-printing. Implement "top bit of SCBID is valid bit" qoutfifo delivery scheme. "the the" -> "the". Remove old and never used tag collision chain handling in the sequencer. Tag collisions are never allowed to get as far as on the controller. Simplify busy target table handling routines. Update comments to reflect reality. Add support for catching more protocol violations. Correct a bug in data fifo handling in mixed packetized and non-packetized environments. SG_STATE must be cleared even if an SG fetch is not in progress at the time of FIFO shutdown or we may confuse the non-packetized transaction idle-loop.
* Convert to new assembler field syntax.gibbs2002-08-311-776/+834
| | | | | | | | Add preliminary Rev B definitions. Add QOUTFIFO_ENTRY_VALID_TAG for new qoufifo scheme. Reserve SCB space for large luns.
* Updates for new non-packetized SCB-ID collision avoidance,gibbs2002-08-311-107/+125
| | | | | | | | | | | | | | busy target table addressing changes, our qoufifo scheme, and long lun support. Drop bus reset hold delay to 25us. Remove chip workarounds for revisions that never went to production. Add aic7901A identification information. Remove untagged queue logic.
* Identify the AIC7901A as such instead of an AIC7902.gibbs2002-08-311-477/+775
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Push protocol violation handler to its own routine. We now properly detect and recovery from the following target induced protocol violations: o Unexpected or invalid non-packetized Relesection o Command complete with no status message o Good Status after incomplete cdb transfer Add an SCB collision avoidance algorithm that allows us to use all 512 SCBs for non-packetized operations. There is still the possibility of running out of SCBs with non-colliding tag identifiers, but the algorithm ensures that the stall will be rare and short lived. Convert to a read-only algorithm for validing entries in the qoufifo. The sequencer now toggles the high bit of the SCB identifier on each wrap around of the qinfifo. If the high bit doesn't match the expected value for this pass of the qoufifo, the entry is not valid. This has the benefit of working on machines that have large granularity cache write back semantics without requiring any additional memory. Remove lots of code related to untagged SCB queues. Since these controllers can keep a fully busy target table, we will never have untagged SCB queues. Lots of improvements to diagnostic logging. Clarify some comments. Don't clear BUSFREE interrupt enable in SIMODE1 in the SELTO handler. Just clearing the interrupt status is sufficient and this avoids the chance of disabling busfree detection in connection that occurs while we are handling the busfree interrupt. Clear all possible interrupt sources when handling a busfree interrupt. The hardware clears some but not all of them. Don't panic if we get into the default SCSIINT handler. Dump the card state and clear all interrupt sources in the hope that we can continue. LASTPHASE != PREVPHASE. Use the correct PREVPHASE for testing against values in the PERRDIAG register. According to SPI4, the bus free that is required after certain PPR negotiations will only occur at the end of all message phases. Handle the bus free if it occurs after a transaction in either the message-in or message-out phases. The busfree can also occur if the status of IU_REQ changes due to a WDTR or SDTR message. We now set the expect busfree flag in ahd_set_syncrate so that it works regardless of message type. Correct a problem with missing certain busfree events. The chip supports single-stepping even if a SCSIINT is pending. This obviates the need to clear all of the SCSI interrupt enables prior to single stepping. Since ENBUSFREE can only be disabled manually and not re-enabled, avoiding touching this bit in the single-step case yields reliable bus free detection. Enhance ahd_clear_intstat to clear all SCSIINT sources. Only use ahd_update_pending_scbs() if we are active on the bus. We cannot modify the "MK_MESSAGE" bits on SCBs in the execution queue if a selection might be in process since the sequencer uses this bit to detect PPR negotiation to a target with an outstanding IU_REQ agreement. Allocate the SCB delivery mechansim's sentinal SCB specially so we don't waste a valid SCB for this task. Move tranceive state settle logic to ahd_chip_init() since this needs to occur after every chip reset, not just the chip reset that happens during primary driver initialization. Correct a bug with transmitting lun information in packetized connections. Restrict busy target table operations to the range of luns that can be used for non-packetized connections. Larger luns can only be accessed in packetized mode. Correct a busy target table addressing bug. Be more careful about how we shutdown the DMA engines during bus reset events. Only freeze the SIMQ once regardless of the number of bus reset events that occur while we are polling for the resets to stop. Don't rely on the sequencer remaining paused() during our reset poll. It is safe for the sequencer to run during this time, and many callers to the bus reset code would need to be modified to make this assumption universally true. Even if we are not going to clobber SCB state when an auto-request sense SCB has a check condition, we must still unfreeze the queue. Re-arrange the BAD STATUS handler to handle this case appropriately. Modify the SCB download size depending on whether long luns are being stored in the SCB. Add ahd_print_register() for pretty printing register diagnostics. Don't trust that the flexport logic to detect the presence of a seeprom is available. It may not be on some motherboard implementations. "the the" -> "the"
* If interrupts are disabled on the card, don't bother runninggibbs2002-08-311-1/+10
| | | | | | our interrupt handler. Our handler was called due to a shared interrupt, and the card's interrupts are explicitly disabled to prevent entry into our interrupt handler.
* Update Perforce Ids.gibbs2002-08-312-2/+2
|
* Move interrupt enable into the OSM.gibbs2002-08-311-168/+179
| | | | | | | | | | | | | | Set the AHC_LSCBS_ENABLED softc flag appropriately. Convert to using softc storage for our seeprom data. Break seeprom parsing out into a separate routine. Change our policy in regards to AHC_SPIOCAP so that we will allow auto-termination to take place on some aic7855 based cards. Remove initialized but never really used variables.
* Cleanup endian macros.gibbs2002-08-311-1/+44
| | | | | | | Honor the AHC_REG_PRETTY_PRINT option. Add lock placeholders for new locks used by the core. These are not currently needed for FreeBSD.
* Enable card interrupts from the OSM.gibbs2002-08-311-9/+22
| | | | | | | | | | | | | | Use "offset == 0" not "period == 0" to denote async trasnfers. Implement TARG_IMMEDIATE_SCB non-disconnected target mode SCB delivery scheme. In our timeout handler, don't rely on the phase already being set to denote an active connection. IDENTIFY_SEEN is more than sufficient. Verify that the softc passed in ahc_detach is still known to the driver before blindly using it.
* Add a prefix to be used for assembler generated tables andgibbs2002-08-311-16/+22
| | | | | | | | | | | | | | | | | functions for register pretty-printing. Only clear SELDO once we've recorded enough information for the host to understand that the connection is valid. The host uses the SELDO status as a handshake to close this race window. Correct a bug in target mode handling of non-disconnected transactions. The host would indicate the correct SCB to DMA by setting the SCB id in the currently selected hardware SCB. Unfortunately, we would then immediated allocate a hardware SCB which, depending on the access patern might not be the same hardware SCB that the host setup for us. Avoid this by having the host put the SCBID into scratch ram.
* Convert to new assembler field syntax.gibbs2002-08-311-304/+330
| | | | | | | | | | | Document the SXFRCTL2 register found on U2 and U160 controllers. Overload the MWI_RESIDUAL field for use as the SCB to be downloaded for "immediate" (or those without the disconnect privledge) transactions. Add scratch ram locations for the 274X that give us a bit more information including whether to enable extended translation.
* Drop the bus reset hold delay back down to 25us. The 250usgibbs2002-08-311-13/+32
| | | | | | | | | | | | | | | | value slipped in from a debugging session. Add AHC_LSCBS_ENABLED and AHC_SCB_CONFIG_USED ahc_flags which allow for some code to move to the core. Remove extern for ahc_syncrates[]. The OSMs no longer need direct access to this array. Add serial eeprom field to the ahc softc. Prototype ahc_search_untagged_queues() and ahc_print_register(). Convert to AHC_SHOW_XXX debug option format.
* Add ahc_print_devinfo() to simplify some diagnostic output.gibbs2002-08-311-77/+289
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch to using the same AHC_SHOW_XXX format as the ahd driver. Always give the target a MSG_INITIATOR_DET_ERR for unexpected DT or ST phase errors. Add AHC_SHOW_SELTO diagnostics. Force renegotiation whenever an unexpected bus free occurs to rule out a negotiation mismatch as the cause for the error. Use "offset != 0" as an intenal indicator of "async" rather than using a period of 0. In ahc_fetch_devinfo(), correct a bug in getting "our id" as target. We weren't looking at all the SEQ_FLAGS that indicate that we are still in a selected rather than reselected state. Add support for the AHC_SHOW_MESSAGES debugging option. If ahc_parse_msg() tells us to terminate the message loop, do so without acking the message. The message may be one that the sequencer needs to handle on its own. In ahc_parse_msg() return MSGLOOP_TERMINATED for all messages the sequencer handles. Allocate storage for, and track, seeprom contents in our softc. Touch all SCB bytes to avoid parity errors should one of our debugging routines read an otherwise uninitiatlized byte. S/G lists must be 8 byte aligned. Reflect this in our DMA tag. "the the" -> "the" in a comment When pausing the card to perform error recovery, ensure that we are not in the process of being selected or have just been selected but have not yet handled that selection. This leaves only one other race window, in the command complete handler, that needs to be fixed to make recovery 100% bullet proof. Convert a few straglers from bsd u_intX_t to inttypes uintX_t. Remove unused variables. Split out searching of the untagged holding queues to its own routine. In certain recovery scenarios, we want to just remove entries in the untagged queue without touching related transactions that are in the QINFIFO or WAITING queues that are searched by ahc_search_qinfifo(). Add an implementation of the ahc_print_register() routine which "pretty prints" registers. The extra bloat in the form of string tables for this feature is controlled by the AHC_REG_PRETTY_PRINT option. Fix a few bugs in ahc_enable_lun() that could prevent controllers lacking the multiple-target-id feature from changing "our id" on the fly. Add a large comment to this section while I'm here describing the restrictions on "id switching".
OpenPOWER on IntegriCloud