IBM Support

IBM Ultra320 SCSI HBA/PCIe Controller drivers for SUSE Linux Enterprise 9 - IBM System x

Download


Version

2.0.27-1

Release Date

10 June 2008

Downloadable File

File link File size File description
17,740 CHANGE HISTORY for IBM Ultra320 SCSI PCIe Controller drivers for SUSE Linux Enterprise 9
18,320 XML for IBM Ultra320 SCSI PCIe Controller drivers for SUSE Linux Enterprise 9
22,889 README for IBM Ultra320 SCSI PCIe Controller drivers for SUSE Linux Enterprise 9
228,675 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 64-bit
228,685 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 SP2 64-bit
229,203 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 SP3 64-bit
230,997 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 SP1 64-bit
396,883 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 32-bit
397,010 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 SP1 32-bit
397,090 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 SP2 32-bit
397,140 IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9 SP3 32-bit
1,052,661 Source IBM Ultra320 SCSI PCIe Controller driver for SUSE Linux Enterprise 9
4,700,317 IBM Ultra320 SCSI PCIe Controller drivers for SUSE Linux Enterprise 9

Abstract

Download the latest IBM Ultra320 SCSI PCIe Controller drivers for SUSE Linux Enterprise 9

Download Description


Change history

Version: 2.0.27-1 (June 10, 2008)

 

Version: 2.0.27 (June 15, 2007)

  • Fixed an issue that caused compilation errors on some 2.6 kernels

Version: 2.0.26 (March 9, 2007)

  • Filtered scsi_remove_host to be used only for 2.6 kernels

Version: 2.0.25 (February 14, 2007)

  • Fix rmmod issue, wherein the interrupts were switched off before calling scsi_remove_host
  • Added 29320LPE ID in MODULE_DEVICE_TABLE

Version: 2.0.24 (February 7, 2007)

  • Filter the card dump state for "Invalid Sequencer Interrupt" to be debug only.

Version: 2.0.23 (February 1, 2007)

  • Restrict DMA to 32bit for 29320LPE

Version: 2.0.22 (November 28, 2006)

  • Added code to switch to non-packetized when we receive ENTERING_NONPACK sequencer interrupt.

Version: 2.0.21 (November 11, 2006)

  • Added support for 29320LPE card
  • Replaced scsi timer functions(add and delete) with aic79xx_add/delete_timer for >= 2.6.15 kernels
  • Added local typedefs for Scsi_Device and Scsi_Host_Template for >= 2.6.15 kernels
  • Replaced MODULE_PARM with module_param for >= 2.6.15 kernels
  • Removed host->eh_active in ahd_platform_dump_card_state for >= 2.6.15 kernels

Version: 2.0.20 (September 13, 2006)

  • In aicasm/Makefile commented(with #) the first line to avoid build error

Version: 2.0.19 (September 5, 2006)

  • In ahd_handle_scsiint changed the register check for BUSFREE from lqistat1 to lqostat1

Version: 2.0.18 (August 28, 2006)

  • Initialized the memory(memset) for scsi_device after allocation in ahd_linux_dv_target. This helps in correct detection of a device in channelB.

Version: 2.0.17 (August 27, 2006)

  • Issued a Bus reset when we receive a MKMSG_FAILED seq interrupt due to device not sending a message after we issue a ATN. This behavior is seen in some tape devices upon power reset, the speed negotiation are changed.Wherein the device moves from U320 before power off to U160 upon power up.

Version: 2.0.16 (March 10, 2006)

  • Defined SCSI_DATA_ defines and scsi_to_pci_dma_dir for kernels greater than 2.6.11 in cam.h.
  • Changed the locations of declaration/definitions for ahd_linux_dv_fallback in aic79xx_osm.c to fix driver build errors for SuSE Linux Pro 10

Version: 2.0.15 (September 25, 2005)

  • Added code to enable slowcrc bit during negotiation table update to slow down CRC interval to be compatible with packetized U320 devices that can't handle a CRC at full speed.

Version: 2.0.14 (December 23, 2004)

  • PCI memory space is 512 bytes, not 256.
  • Fix wrongly calling scsi_adjust_queue_depth() when the scsi device has no request_queue.
  • Adding module option "slowcrc" to control the setting of that bit in the NEGODAT3 (NEGCONOPTS) register. The LSI chip being used in certain external storage boxes do not allow 320 connection for Rev B of the aic79xx. Turning on this bit works around the bug in the LSI chip. Default is off. To turn on, use kernel/module parameter as: aic79xx=slowcrc:1
  • Adding proper PCI ID tables to support hotplugging.
  • Fix a compilation issue after scsi_sleep() became obsolete, in stead of the new msleep() and ssleep() functions.
  • Edit Adaptec Customer Support info.
  • Fix a bug freeing in reserve_io_regions (wrong pointer to free).
  • "Warnings are errors" is now selectable by the kbuild system -- make it so here.
  • Fix undefined symbol when compiling aic79xx for 2.6. Also regenerate the aic7xxx reg and seq files.
  • Plug leaks in aic79xx_osm.c::ahd_linux_dev_reset(). Convert AIC to ssleep() and msleep() as scsi_sleep() is no longer available in 2.6.
  • Fix a double free. If "ahc_alloc()" fails, it frees the "name" argument passed.
  • Invert the polarity of two tests in the recovery code that could cause the driver to issue a bus reset more quickly than intended. We want to *wait* if we find another SCB that could be the cause of this timeout, not proceed to a bus reset.
  • As requested by linux-scsi: Add a flag which explicitly forbids/allows the compilation of the firmware across the whole build system.
  • When doing domain validation, we send commands which do not have a struct request. In this case we cannot just call scsi_populate_tag_msg(), since it dereferences it blindly and oopses the kernel. Now we call scsi_populate_tag_msg() only if the SCSI command has a struct request associated with it.

Version: 2.0.13 (July 22, 2004)

  • Fix a compilation issue due to the changed location and name of the "hosts.h" file. Now it resides as <scsi/scsi_host.h>
  • Add support for 16 byte CDBs.

Version: 2.0.12 (May 13, 2004)

  • Flag driver threads with PF_FREEZE to support software suspend.

Version: 2.0.11 (May 7, 2004)

  • Avoid split-completion bugs in certain PCI-X chipsets by breaking up large completion entry DMAs on ADB boundaries.

Version: 2.0.10 (April 9, 2004)

  • Return "command timeout" status instead of "selection timeout status" to the SCSI mid-layer in response to selection timeouts. While the latter may seem more correct, the mid-layer will not offline devices suffering from persistent selection timeouts. This leads to extremely long recovery times for devices that go missing. Returning command timeout status causes the mid-layer to enter recovery and eventually offline persistently missing devices.

Version: 2.0.9 (March 29, 2004)

  • Abort all pending transactions on a target in response to a selection timeout. This greatly increases the speed with which we recover when a device "goes missing".

Version: 2.0.8 (March 7, 2004)

  • Fix PCI device/vendor ID mask for the 7901B probe entry so the driver will successfully attach to 7901B parts down on motherboards.

Version: 2.0.7 (February 24, 2004)

  • Implement delay on I/O after delivery of a Target Reset.
  • Correct deregistration of sysrq handler when multiple controllers are detected.

Version: 2.0.6 (February 6, 2004)

  • Force a renegotiation on all inquiry commands so that the negotiated transfer parameters are correct even if the device has been externally reset since our last command. Devices are not allowed to report unit attention conditions in response to inquiry requests otherwise we'd not need to treat inquiry commands specially.
  • Remove all vestiges of pre-2.4.X support.
  • Close a very rare race-condition in RevA 790X controllers. If both FIFOs are allocated before the sequencer's idle loop is able to service the FIFO that was allocated first, the sequencer could handle them out of order. This could lead to a deadlock where the FIFO attached to the SCSI bus is being serviced by the sequencer, but the other FIFO is required to handle a snapshot. The sequencer now detects this condition and always handles FIFOs that are not currently on the bus first.
  • Close a few race conditions by adding critical section markers into the firmware. These windows might have caused issues during error recovery.
  • Switch the complete DMA SCB list to a tailq so that multiple SCBs completing with non-zero status do not interfere with the state for the SCB currently being uploaded.
  • Use the comparison of a kernel and a sequencer qfreeze count to control the freezing of outgoing selections. This allows the kernel to handle non-zero SCB completions without having to clear firmware critical sections.
  • Change the completion FIFO mechanism so that all completion entries are guaranteed aligned on a 64bit boundary. This avoids SCB DMA engine bugs that are triggered if the transfer is interrupted (e.g. PCI disconnect) on a non-aligned boundary. In some cases, these bugs would result in duplicate completions.
  • Use one byte in the new completion entry to indicate if the SCB completed without a residual or non-zero SCSI status. This avoids an extra memory reference in our interrupt handler.

Version: 2.0.5 (December 22, 2003)

  • Correct a bug preventing the driver from renegotiating during auto-request sense operations when a check condition occurred for a zero length command.
  • Sniff sense information returned by targets for unit attention errors that may indicate that the device has been changed. If we see such status for non Domain Validation related commands, start a DV scan for the target. In the past, DV would only occur for hot-plugged devices if no target had been previously probed for a particular ID. This change guarantees that the DV process will occur even if the user swaps devices without any intervening I/O to tell us that a device has gone missing. The old behavior, among other things, would fail to spin up drives that were hot-plugged since the Linux mid-layer will only spin-up drives on initial attach.
  • Correct several issues in the rundown of the good status FIFO during error recovery. The typical failure scenario evidenced by this defect was the loss of several commands under high load when several queue full conditions occurred back to back.

Version: 2.0.4 (November 6, 2003)

  • Support the 2.6.0-test9 kernel
  • Fix rare deadlock caused by using del_timer_sync from within a timer handler.

Version: 2.0.3 (October 21, 2003)

  • On 7902A4 hardware, use the slow slew rate for transfer rates slower than U320. This behavior matches the Windows driver.
  • Fix some issues with the ahd_flush_qoutfifo() routine.
  • Add a delay in the loop waiting for selection activity to cease. Otherwise we may exhaust the loop counter too quickly on fast machines.
  • Return to processing bad status completions through the qoutfifo. This reduces the amount of time the controller is paused for these kinds of errors.
  • Move additional common routines to the aiclib OSM library to reduce code duplication.
  • Leave removal of softcs from the global list of softcs to the OSM. This allows us to avoid holding the list_lock during device destruction.
  • Enforce a bus settle delay for bus resets that the driver initiates.
  • Fall back to basic DV for U160 devices that lack an echo buffer.

Version: 2.0.2 (September 4, 2003)

  • Move additional common routines to the aiclib OSM library to reduce code duplication.
  • Avoid an inadvertent reset of the controller during the memory mapped I/O test should the controller be left in the reset state prior to driver initialization. On some systems, this extra reset resulted in a system hang due to a chip access that occurred too soon after reset.
  • Correct an endian bug in ahd_swap_with_next_hscb. This corrects strong-arm support.
  • Reset the bus for transactions that timeout waiting for the bus to go free after a disconnect or command complete message.

Version: 2.0.1 (August 26, 2003)

  • Add magic sysrq handler that causes a card dump to be output to the console for each controller.
  • Avoid waking the mid-layer's error recovery handler during timeout recovery by returning DID_ERROR instead of DID_TIMEOUT for timed-out commands that have been aborted.
  • Move additional common routines to the aiclib OSM library to reduce code duplication.

Version: 2.0.0 (August 20, 2003)

  • Remove MMAPIO definition and allow memory mapped I/O for any platform that supports PCI.
  • Avoid clearing ENBUSFREE during single stepping to avoid spurious "unexpected busfree while idle" messages.
  • Correct deadlock in ahd_run_qoutfifo() processing.
  • Optimize support for the 7901B.
  • Correct a few cases where an explicit flush of pending register writes was required to ensure accuracy in delays.
  • Correct problems in manually flushing completed commands on the controller. The FIFOs are now flushed to ensure that completed commands that are still draining to the host are completed correctly.
  • Correct incomplete CDB delivery detection on the 790XB.
  • Ignore the cmd->underflow field since userland applications using the legacy command pass-thru interface do not set it correctly. Honoring this field led to spurious errors when users used the "scsi_unique_id" program.
  • Perform timeout recovery within the driver instead of relying on the Linux SCSI mid-layer to perform this function. The mid-layer does not know the full state of the SCSI bus and is therefore prone to looping for several minutes to effect recovery. The new scheme recovers within 15 seconds of the failure.
  • Correct support for manual termination settings.
  • Increase maximum wait time for serial eeprom writes allowing writes to function correctly.

Version: 1.3.12 (August 11, 2003)

  • Implement new error recovery thread that supersedes the existing Linux SCSI error recovery code.
  • Fix termination logic for 29320ALP.
  • Fix SEEPROM delay to compensate for write ops taking longer.

Version: 1.3.11 (July 11, 2003)

  • Fix several deadlock issues.
  • Add 29320ALP and 39320B Id's.

Version: 1.3.10 (June 3, 2003)

  • Align the SCB_TAG field on a 16byte boundary. This avoids SCB corruption on some PCI-33 buses.
  • Correct non-zero luns on Rev B. hardware.
  • Update for change in 2.5.X SCSI proc FS interface.
  • When negotiation async via an 8bit WDTR message, send an SDTR with an offset of 0 to be sure the target knows we are async. This works around a firmware defect in the Quantum Atlas 10K.
  • Implement controller suspend and resume.
  • Clear PCI error state during driver attach so that we don't disable memory mapped I/O due to a stray write by some other driver probe that occurred before we claimed the controller.

Version: 1.3.9 (May 22, 2003)

  • Fix compiler errors.
  • Remove S/G splitting for segments that cross a 4GB boundary. This is guaranteed not to happen in Linux.
  • Add support for scsi_report_device_reset() found in 2.5.X kernels.
  • Add 7901B support.
  • Simplify handling of the packetized lun Rev A workaround.
  • Correct and simplify handling of the ignore wide residue message. The previous code would fail to report a residual if the transaction data length was even and we received an IWR message.

Version: 1.3.8 (April 29, 2003)

  • Fix types accessed via the command line interface code.
  • Perform a few firmware optimizations.
  • Fix "Unexpected PKT busfree" errors.
  • Use a sequencer interrupt to notify the host of commands with bad status. We defer the notification until there are no outstanding selections to ensure that the host is interrupted for as short a time as possible.
  • Remove pre-2.2.X support.
  • Add support for new 2.5.X interrupt API.
  • Correct big-endian architecture support.

Version: 1.3.7 (April 16, 2003)

  • Use del_timer_sync() to ensure that no timeouts are pending during controller shutdown.
  • For pre-2.5.X kernels, carefully adjust our segment list size to avoid SCSI malloc pool fragmentation.
  • Cleanup channel display in our /proc output.
  • Workaround duplicate device entries in the mid-layer devlice list during add- single-device.

Version: 1.3.6 (March 28, 2003)

  • Correct a double free in the Domain Validation code.
  • Correct a reference to freed memory during controller shutdown.
  • Reset the bus on an SE->LVD change. This is required to reset our transceivers.

Version: 1.3.5 (March 24, 2003)

  • Fix a few register window mode bugs.
  • Include read streaming in the PPR flags we display in diagnostics as well as /proc.
  • Add PCI hot plug support for 2.5.X kernels.
  • Correct default precompensation value for RevA hardware.
  • Fix Domain Validation thread shutdown.
  • Add a firmware workaround to make the LED blink brighter during packetized operations on the H2A4.
  • Correct /proc display of user read streaming settings.
  • Simplify driver locking by releasing the io_request_lock upon driver entry from the mid-layer.
  • Cleanup command line parsing and move much of this code to aiclib.

Version: 1.3.4 (February 28, 2003)

  • Correct a race condition in our error recovery handler.
  • Allow Test Unit Ready commands to take a full 5 seconds during Domain Validation.

Version: 1.3.2 (February 19, 2003)

  • Correct a Rev B. regression due to the GEM318 compatibility fix included in 1.3.1.

Version: 1.3.1 (February 11, 2003)

  • Add support for the 39320A.
  • Improve recovery for certain PCI-X errors.
  • Fix handling of LQ/DATA/LQ/DATA for the same write transaction that can occur without intervening training.
  • Correct compatibility issues with the GEM318 enclosure services device.
  • Correct data corruption issue that occurred under high tag depth write loads.
  • Adapt to a change in the 2.5.X daemonize() API.
  • Correct a "Missing case in ahd_handle_scsiint" panic.

Version: 1.3.0 (January 21, 2003)

  • Full regression testing for all U320 products completed.
  • Added abort and target/lun reset error recovery handler and interrupt coalescing.

Version: 1.2.0 (November 14, 2002)

  • Added support for Domain Validation
  • Add support for the Hewlett-Packard version of the 39320D and AIC-7902 adapters. Support for previous adapters has not been fully tested and should only be used at the customer's own risk.

Version: 1.1.1 (September 24, 2002)

  • Added support for the Linux 2.5.X kernel series

Version: 1.1.0 (September 17, 2002)

  • Added support for four additional SCSI products: ASC-39320, ASC-29320, ASC- 29320LP, AIC-7901.

Version: 1.0.0 (May 30, 2002)

  • Initial driver release.

Off

Document Location

Worldwide

Operating System

IntelliStation Pro:SUSE Linux

System x:SUSE Linux Enterprise Server 9

System x:SUSE Linux Enterprise Server 9 x64

[{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU01YTM","label":"System x->System x3650->7979"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU01ZJK","label":"System x->System x3400->7973"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QU01ZYT","label":"System x->System x3400->7974"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QU01ZZC","label":"IntelliStation Pro->IntelliStation Z Pro->9228"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02DKF","label":"System x->System x3455->7984"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QU02DKJ","label":"System x->System x3455->7986"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02DKY","label":"System x->System x3550->1913"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02EFQ","label":"System x->System x3800->8866"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02EFV","label":"System x->System x3850->8864"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QU02EGF","label":"System x->System x3850->7365"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02EZZ","label":"System x->System x3200->4362"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02FAT","label":"System x->System x3200->4363"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02FLC","label":"System x->System x3655->7985"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02GIA","label":"System x->System x3250->4364"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QU02GIJ","label":"System x->System x3250->4365"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU02YET","label":"System x->System x3850 M2->7141"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QU02YTZ","label":"System x->System x3850 M2->7144"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QU03EHM","label":"System x->System x3950 M2->7141"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QUOEF1K","label":"System x->System x3500->7977"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QUOEF4I","label":"System x->System x3550->7978"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QUOEKDF","label":"System x->System x3650->1914"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"HW328","label":"System x->System x3105"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"LOB26","label":"Storage"}},{"Type":"HW","Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"QUOEL1B","label":"System x->System x3250->4366"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}},{"Type":"HW","Business Unit":{"code":"BU016","label":"Multiple Vendor Support"},"Product":{"code":"QUOEOZM","label":"System x->System x3755->8877"},"Platform":[{"code":"PF047","label":"SurePOS"}],"Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
03 January 2023

UID

ibm1MIGR-5072158