Linux MPT Release Notes (Driver Module names: mptbase, mptscsih, mptctl, mptlan) (Firmware Download Utility name: mptfdu) (Firmware Flash name: mptflash) Driver Version: mptlinux-2.06.77.00 3/13/2008 Hardware Supported: • 53C1020, 53C1030 • FC909, FC919, FC929 • FC919X, FC929X, FC929XL, FC939X, FC949X • SAS 1064, 1068, 1064E, 1068E, 1078 Bundling Information: • No update available at this time. • Official Kernel: o No update available at this time. OS Release Restrictions: For restrictions with other Linux releases, please see the NOTES, ISSUES and DETAILS section located at the end of this document. Driver Release Restrictions: • If installing a Red Hat 2.4 kernel with a Driver Update Disk (DUD) to a disk drive attached to a LSI HBA, use this command at the install prompt: linux dd updates I This command causes the mpt driver modules to be read from the DUD and those modules placed in the proper /lib/modules directories. In addition, the mptclt module (IOCTL) will be automatically started with each reboot. Be sure to allow the floppy disk drive to be accessed a second time for the “updates” to be completed. NOTE: This procedure replaces the “post-script” procedure previously recommended. There appears to be an error in Red Hat 3.0 when using a USB floppy drive. The USB floppy drive gets reassigned after the initial DUD access. This reassignment does not get presented for selection during the “updates” portion of the install. This causes the “updates” to not be run, resulting in the mptctl module to not be automatically loaded during system boot. No known workaround at this time except replacing the USB floppy drive with another type of floppy drive. • Recommended FW: o 1.0 series: Initiator: Version 1.0.16 or later o 1.1 series: Initiator: Version 1.1.46 or later o 1.1 Series: Mirroring: Version 1.1.26 or later • LAN support requires 2.4 Kernel series. • IA64 requires 2.4 Kernel series. • Initiator support requires 2.2.12 or later 2.2 Kernel series, full 2.4 Kernel series support. • If you modify the system configuration after installation and these changes affect the label of the SCSI boot disk, i.e., disk was /dev/sda and is now /dev/sdg or vica versa, your system will fail to reboot. In particular, the Linux driver always loads Channel A first. Therefore, if your boot disk is on Channel B of a dual channel adapter and disks are added to or removed from Channel A, the boot disk label will be altered preventing reboot. It is recommended that your boot device be on Channel A of a dual channel controller. Flash Utility Release Restrictions: • mptfdu should not be used when the 1030 FW version is less than 1.00.04 or when FC929 FW is less than 1.00.06. • Driver Release Package Contents mptlinux-xxx-src.tar.gz: Full driver source that is suitable for inclusion with any publicly available kernels. Flash and download utilities are included in the mptfdu compressed tar file. Other ioctl applications are included in the apps, mptutil and hptest compressed tar files. mptlinux-xxx-rpms.zip: RPM images are named as: mptlinux-vendor--release.arch.rpm where: vendor = {suse, redhat} release = release tag for this rpm arch = ia64 Itanium Processor x86_64 Opteron Processor, w/ x86_64 Install i686 i686 or later processor (Redhat) i686 x86 installations (SuSE) ia32e EM64T processor (Redhat) Red Hat: i686 3.0 Base 2.4.21-4.EL (normal, BOOT, hugemem, smp) Thumb Update 2 2.4.21-15.EL (normal, BOOT, hugemem, smp) Thumb Update 3 2.4.21-20.EL (normal, BOOT, hugemem, smp) Thumb Update 4 2.4.21-27.EL (normal, BOOT, hugemem, smp) Thumb Update 5 2.4.21-32.EL (normal, BOOT, hugemem, smp) Thumb Update 6 2.4.21-37.EL (normal, BOOT, hugemem, smp) DUD Thumb Update 7 2.4.21-40.EL (normal, BOOT, hugemem, smp) Thumb Update 8 2.4.21-47.EL (normal, BOOT, hugemem, smp) DUD Thumb Update 9 2.4.21-50.EL (normal, BOOT, hugemem, smp) DUD Thumb x86_64 3.0 Base 2.4.21-4.EL (normal, smp) DUD Thumb Update 2 2.4.21-15.EL (normal, smp) Thumb Update 3 2.4.21-20.EL (normal, smp) Thumb Update 4 2.4.21-27.EL (normal, smp) Thumb Update 5 2.4.21-32.EL (normal, smp) Thumb Update 6 2.4.21-37.EL (normal, smp) DUD Thumb Update 7 2.4.21-40.EL (normal, smp) Thumb Update 8 2.4.21-47.EL (normal, smp) DUD Thumb Update 9 2.4.21-50.EL (normal, smp) DUD Thumb ia32e 3.0 Update 2 2.4.21-15.EL (normal: implied smp) Thumb Update 3 2.4.21-20.EL (normal: implied smp) Thumb Update 4 2.4.21-27.EL (normal: implied smp) Thumb Update 5 2.4.21-32.EL (normal: implied smp) DUD Thumb Update 6 2.4.21-37.EL (normal: implied smp) DUD Thumb Update 7 2.4.21-40.EL (normal: implied smp) DUD Thumb Update 8 2.4.21-47.EL (normal: implied smp) DUD Thumb Update 9 2.4.21-50.EL (normal: implied smp) DUD Thumb ia64 3.0 Base 2.4.21-4.EL (normal, smp) DUD Thumb Update 2 2.4.21-15.EL (normal, smp) Thumb Update 3 2.4.21-20.EL (normal, smp) Thumb Update 4 2.4.21-27.EL (normal, smp) Thumb Update 5 2.4.21-32.EL (normal, smp) Thumb Update 6 2.4.21-37.EL (normal, smp) DUD Thumb Update 7 2.4.21-40.EL (normal, smp) Thumb Update 8 2.4.21-47.EL (normal, smp) DUD Thumb Update 9 2.4.21-50.EL (normal, smp) DUD Thumb SuSE: SLES8 x86 BASE 2.4.19-82 (k_deflt, k_smp, k_psmp) SP 2.0 2.4.19-304 (k_deflt, k_smp, k_psmp) SP 3.0 2.4.21-138 (k_deflt, k_smp, k_psmp) SP 4.0 2.4.21-278 (k_deflt, k_smp, k_psmp) x86_64 BASE 2.4.19-189 (k_deflt, k_smp, k_psmp) SP 2.0 2.4.19-249 (k_deflt, k_smp, k_psmp) SP 3.0 2.4.21-143 (k_deflt, k_smp, k_psmp) SP 4.0 2.4.21-278 (k_deflt, k_smp, k_psmp) ia64 BASE 2.4.19-97 (k_itanium2, k_itanium2_smp) SP 2.0 2.4.19-153 (k_itanium2, k_itanium2_smp) SP 3.0 2.4.21-112 (k_itanium2, k_itanium2_smp) SP 4.0 2.4.21-278 (k_itanium2, k_itanium2_smp) mptlinux-xxx-y-disks.zip: VFAT or EXT2 formatted disk images suitable for use as driver update disks during installation. The name of the file includes the Linux Vendor, driver version and release tag (corresponds with the RPM version and release tag). In this release, driver disks are provided for: Red Hat and SuSE. Major Changes For Version 2.06.77.00-1 Release Date: 3/13/2008 General Changes Functionality • Code has been added to determine the amount of memory the system has. If there is less that 4 GB of memory, all Scatter/Gather (SG) addresses can be contained in 32 bits, regardless of the machine type (32 bit or 64 bit). This increases the number of SG entries in each Message Frame and the number of SG entries in each Chain Buffer. The driver determines the maximum number of SGs needed per IO from the sg_tablesize value and adjusts the number of Chain Buffers needed for the maximum number of IOs possible (can_queue), allocating memory from that calculation. For instance, the allocation of memory for Chain Buffers was reduced from 284,592 to 157,696 on a 64 bit machine with less than 4 GB of memory (example is for a SAS 1068 with sg_tablesize=128 and can_queue=127), a 43% reduction of memory needed for Chain Buffers for the same IO capability. This reduction of memory allocation is per Host Adapter controlled by the driver; with several Host Adapters, the memory savings multiply rapidly. • In addition, large IO performance is improved, since fewer Chain Buffers are needed (generated by the driver and obtained by FW via the PCI bus). • DKMS version has been updated to 2.0.17.5-1. • RHEL 3 Update 9 has been added to DKMS builds. The DKMS build now includes the Base and all of the Update kernels listed above for i686 and x86_64. Defect fixes • None. Major Changes For Version 2.06.76.00-1 Release Date: 1/23/2008 General Changes Functionality • None. Defect fixes • When a 106xE with a B0 or B1 chip is used, the driver operates in 32 bit mode, regardless of the machine type (32 bit or 64 bit). There was a flaw in mptctl.c and csmisas.c which generated 64 bit Scatter/Gather addresses in smp_passthru message generation, causing an error condition with any of the above chips. This flaw has been fixed with this version. Major Changes For Version 2.06.75.00-1 Release Date: 12/10/2007 General Changes Functionality • Task Aborts for commands to a Volume are returned as FAILED and not sent to FW. • Dual Port support has been added. Defect fixes • The mpt_HardResetHandler routine will first attempt to issue a MESSAGE_UNIT_RESET (MUR) and an IOC Recovery before resorting to a chip Diagnostic Reset. If the MUR is successful, this results in a reset of only one side of a Dual Function HBA, causing the other side to not be disturbed. Major Changes For Version 2.06.74.00-1 Release Date: 10/22/2007 General Changes Functionality • The High Priority Request queue feature is implemented. This is used to send Task Management messages to the chips that support that feature, rather than use the Handshake method. • When the driver is removed, a MESSAGE_UNIT_RESET is issued to each adapter, placing each chip in READY state, rather than leaving in OPERATIONAL state. When the driver is restarted, each chip being controlled is in the expected READY state, eliminating the need for the driver to place the chip in READY state, resulting in faster initialization. Defect fixes • If Scatter/Gather addresses are 32 bit values (1064E or 1068E with B1 or earlier chips, or sizeof (dma_addr_t) is 4 bytes), the data address portion will be 4 bytes long and the FlagsLength will so indicate. The result is that each Scatter/Gather List item is 8 bytes rather than 12 bytes, resulting in more items per Message Frame and Chain Buffer, improving performance. Major Changes For Version 2.06.73.00-1 Release Date: 9/11/2007 General Changes Functionality • None. Defect fixes • DMA addressing is forced to 32 bit (lower 4 GB of memory for Scatter/Gather) for B1 or earlier SAS 1064E and 1068E chips, due to a hardware defect that may cause data corruption if 64 bit addressing is allowed. Major Changes For Version 2.06.72.00-1 Release Date: 8/24/2007 General Changes Functionality • None. Defect fixes • A for loop in the mptlinux.dkms.spec file did not include the RHEL 4 Update 4 or Update 5 kernels when determining if pre-build binary files should be installed. On machines with the kernel source files installed, a compile of the source code would be done and those object files installed. If the kernel source files are not installed, an error message would occur. The for loop has been corrected. • The PrimeIocFifos routine now has a 1078 fix forcing message and sense buffer allocations from low 4 GB memory. Major Changes For Version 2.06.71.00-1 Release Date: 8/22/2007 General Changes Functionality • Support for 1078 scatter/gather entries in systems with greater than 36 GB of memory has been added. Defect fixes • A change was made in mptctl to fix SR 2-188096080. This will allow the lsiutil application to program SAS WWN. Major Changes For Version 2.06.70.00-1 Release Date: 8/15/2007 General Changes Functionality • Support for handling Event MPI_EVENT_SAS_BROADCAST_PRIMITIVE (0X17) with primitive value of MPI_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT (0X04) has been added. When this event is encountered, a routine will be scheduled for execution. This routine will examine the ScsiLookup list of outstanding commands. When a non-Raid Volume command is found, a Task Management QUERY_TASK will be issued. If that is successful, a Task Management ABRT_TASK_SET is issued. That will terminate all IOs to that Bus, Id and Lun. The ScsiLookup list will continue to be searched for an IO command with a different Bus, Id and LUN; when found, the same sequence of Task Management commands as listed above will be generated. Defect fixes • An erroneous check in the code to see if the device supports Command Queuing has been corrected. This prevents the device from being noted as Non-Queuing. Major Changes For Version 2.06.69.00-1 Release Date: 7/23/2007 General Changes Functionality • MPI version 1.05.16 header files are in use. • Included changes for common CSMI functionality Defect fixes • After a SAS 1078 reset is completed via an IOCTL, a call of the mptctl IOCTL handlers is done with Post-Reset status. This clears the IOC Reset flag, allowing subsequent IOCTL requests to execute. Major Changes For Version 2.06.68.00-1 Release Date: 6/26/2007 General Changes Functionality • None. Defect fixes • The CSMI IOCTL routine csmisas_get_raid_config has been changed to report the correct drive count when either DRIVES or DEVICE_ID is requested. Major Changes For Version 2.06.67.00-1 Release Date: 6/20/2007 General Changes Functionality • RHEL 3 Update 9 has been included in the rpm and DUD files. See above lists for specifics. Defect fixes • A timeout argument has been added to routine mpt_send_handshake_request, with all calls to that routine including a timeout value. This accommodates a call to that routine in common code csmisas.c which include that argument. • The CSMI_GET_RAID_CONFIG IOCTL handler is modified to provide at least drive serial number of the pulled hard drives of a RAID volume even after system reboot. • Changed the code to allocate memory for input/output buffer from kernel slab rather than the stack in the functions csmisas_stp_passthru and csmisas_get_phy_info to avoid possible stack overflow. • Checks for request_data_sz > 0xffff in csmisas_stp_passthru and csmisas_smpt_passthru that would have resulted in an error return status were removed. The requests can now proceed with a data length greater than 64 KB. Major Changes For Version 2.06.66.00-1 Release Date: 6/8/2007 General Changes Functionality • None. Defect fixes • When a SCSI_IOC_TERMINATED IOCStatus is received and the HBA type is FC, the IO result is set to DID_ERROR. This is to permit retries of the command but not an infinite number of times. • SCSI commands are placed in a queue when DV is being performed, the started when DV completes. • The data from the first successful Inquiry command to a device attached to a SAS HBA is checked. If the device doesn’t support Command Queuing, the device is noted as Non-Queing and IOs will be one-command-at-a time. Major Changes For Version 2.06.65.00-4 Release Date: 3/2/2007 General Changes Functionality • File lsi_csmitest.tar.gz has been removed from the source code tar file, as requested by an OEM. Major Changes For Version 2.06.65.00-3 Release Date: 2/16/2007 General Changes Functionality • None. Defect fixes • The test team noticed that DUD installs to drives attached to a 1078 would not work. The build environment had Device Id of 0x60 rather than the correct 0x62. The -3 package version contains that change. Major Changes For Version 2.06.65.00-2 Release Date: 1/31/2007 General Changes Functionality • An OEM has requested that the rhel 3 x86 DUD support Update 6. Due to the limited space on a DUD, the Base kernel has been removed and the Update 6 kernel added. No code change is needed, just a change to the build environment. Hence, the -2 package version is now available. Defect fixes • None. Major Changes For Version 2.06.65.00 Release Date: 1/23/2007 General Changes Functionality • None. Defect fixes • Manufacturing Page 0 is obtained for all board types, not just SAS, during IOC_BRINGUP. • Added argument reqBytes back in routine mpt_send_handshake_request so Target Driver can utilize this routine during a Target Assist operation. • Added csmisas_get_raid_element and csmisas_set_raid_operation support. • For SAS IO’s which have an IOCStatus of MPI_IOCSTATUS_SCSI_IO_TERMINATED, the IO result is set to DID_SOFT_ERROR rather than DID_RESET, unless there is also a LogInfo of DID_BUS_BUSY which causes a result of DID_BUS_BUSY (no change from previous driver). The DID_SOFT_ERROR results in the IO being retried. • If an IO request is received for a LUN greater than what the device supports, the IO will be completed with a DID_BAD_TARGET and the return value is changed from FAILED to 0. This prevents the scsi mid-layer host_busy and device_busy values for the adapter’s host structure to be decremented only once instead of twice, as was the case if FAILED is returned. • Memory allocation in csmisas.c was changed from kmalloc to get_free_pages where more that 128 KB of memory may be requested. This allows the IOCTL to proceed normally rather than failing due to a memory allocation failure. This was noticed in the ssp_passthru routine that was being used by an application to flash disk drive FW that was about 750 KB. Major Changes For Version 2.06.62.00 Release Date: 12/7/2006 General Changes Functionality • As requested by an OEM, the version numbering scheme will follow this format: 2.06.xx.yy. Defect fixes • Issue: With different mpt HBAs in the system, the sg_tablesize parameter set by the driver may be smaller that allowed by the IOCFacts MaxChainDepth. This may limit the number of Scatter/Gather elements to a smaller number than could be handled. Reported by: Development To Reproduce: Insert a 1030, a FC and a SAS board in a system. Compile the driver with MPT_DEBUG_INIT and bring up the system. Observe the mpt_sg_tablesize parameter in the dmesg output. It may be set to the smallest value for the HBAs MaxChainDepth value. Description of Change: The code was changed to use a local variable to calculate the maximum number of SGE’s based upon each IOCFacts MaxChainDepth value. This value is stored in the MPT_ADAPTER structure and is used to set the proper sg_tablesize that is provided to the scsi mid-layer during IOC initialization. • Issue: The driver was not properly handling IOs (reporting DID_RESET rather than DID_NO_CONNECT) during ESG failover. Reported by: ESG. To Reproduce: Cause a controller failover when a SAS HBA is connected to a ESG controller. Observe the IOC results during the failover operation. Description of Change: In file mptsas.c, routine mptsas_remove_device, the device structure was being freed. This caused the check in mptscsih_qcmd for MPT_TARGET_FLAGS_DELETED to not occur, hence the DID_NO_CONNECT results was not returned (the flag is set when an Event with ReasonCode of MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING is received). An ifdef for a 2.4 kernel was added so the device structure was not freed, leaving the flag intact. Major Changes For Version 2.06.61 Release Date: 11/22/2006 General Changes Functionality • The MPI 1.05.14 header files have been installed and are in use. Defect fixes • Issue: An Integrated Raid event is generated with Bus=0xff and TargetID=0xff. Reported by: Test To Reproduce: Create an IM volume with a Hot Spare, remove a drive. Issue a Diagnostic Reset or reboot the machine. Delete the volume. A panic occurs. Description of Change: The driver attempts to access the device structure for bus=0xff and id=0xff in routine initTarget. Since those values are invalid, the pointer is NULL, causing a panic when the pointer is used. Code is added to check that bus is < NumberOfBuses and id is < DevicesPerBus before using those values to determine the device pointer. If either is invalid, initTarget is exited. • Issue: A panic occurs when a Raid Volume is attached to a 1030. Reported by: Development. To Reproduce: Create an IM volume. Reboot the machine or reload the driver modules. A panic occurs. Description of Change: The code in routine mptscsih_qas_check was changed to check for a NULL device structure pointer. If the pointer is NULL, the loop is continued. • Issue: A hang condition occurs during driver unload or a reboot if there is not a SAS Host Adapter in the system. Reported by: Development. To Reproduce: Boot the system with only a 1030 Host adapter. Load and unload the driver. A hang condition occurs. Description of Change: Routine mptscsih_release was calling mptsas_del_device_components for each Host Adapter. If the Host Adapter is not SAS Host Adapter, the routine looped. A check for SAS Host Adapter was added and the call is skipped if the Host Adapter is not SAS. • Issue: Executing “rpm –Uhv xxx.rpm” (rpm Upgrade) results in the mptctl module not being loaded during a subsequent boot. Reported by: Test. To Reproduce: Execute an rpm Upgrade. Reboot the system. Observe that the mptctl module is not being loaded. Description of Change: The spec.redhat file is changed to execute “chkconfig -–del fusion.mptctl_2.4“ only when a rpm Erase is executed, not when a rpm Upgrade is executed. This change is in effect with the 2.06.62-2 Red Hat rpm packages. Major Changes For Version 2.06.60 Release Date: 11/16/2006 General Changes Functionality • The Red Hat spec file has been modified to copy the object files to the /lib/modules//updates directory, if that directory exists. This directory is used when a subsequent mkinitrd command is executed to rebuild the Ram Disk Image. Defect fixes • Issue: Panic occurred on a CSMI IOCTL test. Reported by: Test To Reproduce: Run the CSMI IOCTL test. Observe the panic. Description of Change: A pointer in csmisas.c is checked to ensure it is not NULL before using it. If it is NULL, the loop is continued. Major Changes For Version 2.06.58 Release Date: 11/15/2006 General Changes Functionality • Change ioc->DevicesPerBus max value based on port_facts->PortSCSIID, instead of ioc->MaxDevices. This is to insure proper device scan at driver load time. The MaxDevices field means max number of targets the firmware will enumerate, but with persistant ids, it does not reflect the maximum number of target_ids that firmware could assign. The firmware reserves some target_ids for persistent_ids, but it will not exceed PortSCSIID, thus this required change. Defect fixes • Issue: SSP_PASSTHRU doesn’t display info on resyncing IM volume Reported by: Test To Reproduce: Create an IM volume, remove a drive and reinsert. While IM volme is resyncing, issue SSP_PASSTHRU, and observe data being returned for all drives. Description of Change: Incorrect implementation for semaphores that were added to control access to sas_device_info_list. This resulted in memory corruption which would over write the ioc->num_ports parameter to zero. This resulting in ssp_passthru failing due to a sanity check on bPhyIndentifier; a parameter passed in from user space. • Issue: SSP_PASSTHRU doesn’t display info for drives that are members of inactive volumes. GET_RAID_CONFIG not displaying info for inactive volumes. Reported by: Test To Reproduce: Create an Inactive volume, and observe data returned for both SSP_PASSTHRU and GET_RAID_CONFIG. Description of Change: Adding support for inactive volumes. This involved adding devices found in inactive volume into the sas_device_info_list at driver load time, and when driver received MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED event. A separate inactive_list was implemented to maintain PHY_DISK info for inactive volumes (which is not provided in ioc_page_3), required inside mptscsih_is_phys_disk and csmisas_is_phys_disk. Major Changes For Version 2.06.57 Release Date: 11/13/2006 General Changes Functionality • Kernel numbers are used to distinguish which csmi code is to be compiled for the 2.4 versus the 2.6 drivers. Defect fixes • Issue: CSMI GET_RAID_CONFIG Ioctl shows RAID volume status as “Degraded” when actually the drives in the volume are rebuilding Reported by: Customer To Reproduce: Create a 2-drive SAS IM volume. Remove one of the SAS drives and replace with a new unconfigured SAS drive. Issue GET_RAID_CONFIG Ioctl and note that “Raid status” shows as “Degraded” Description of Change: Updated check for volume status using VolumeStatus.Flags field instead of VolumeStatus.State • Issue: Both SSP_PASSTHROUGH and GET_LOCATION CSMI Ioctls does not show information of new drives hotswap inserted in a RAID volume Reported by: Customer To Reproduce: Create a 2-drive IM volume using drives SAS1 and SAS2. Remove SAS2 drive and insert a new drive SAS3 in same location. SAS1 and SAS3 drives will start rebuilding. Issue SSP_PASSTHROUGH and GET_LOCATION and note that they do not show information for SAS3 drive. Insert new unconfigured drive SAS4 in a new location and note that both Ioctl do not show information for SAS4 drive too Description of Change: Added device link list to retain sas_address’s when devices are added. Devices are not removed from the list after they have been deleted, however when a device is added, there are sanity checks to insure there are unique target id and/or sas address populated in the list. • Issue: CSMI GET_RAID_CONFIG Ioctl shows same SAS Address for a replaced drive and a pulled drive from a raid set Reported by: Customer To Reproduce: Create a 2-drive IM volume using drives SAS1 and SAS2. Remove SAS2 drive and insert a new drive SAS3 in same location. Issue GET_RAID_CONFIG Ioctl and note that SAS Address of inserted SAS3 drive is same as that of pulled SAS2 drive Description of Change: Added device link list to retain sas_address’s when devices are added. Devices are not removed from the list after they have been deleted, however when a device is added, there are sanity checks to insure there are unique target id and/or sas address populated in the list. • The erroneous setting of pointer tmPtr was removed when a NON TM message is sent to the FW via an IOCTL request. This will allow subsequent NON TM IOCTL generated messages to be executed properly and not return an error status. Major Changes For Version 2.06.55 Release Date: 11/1/2006 General Changes Functionality • The csmisas files have been modified to support the 2.06 driver and the 3.02 driver. The same files will be used with both drivers, with “#ifdef DRVR_206” and “ifdef DRVR_302” used to differentiate which driver interface code is to be compile (mainly timers and completions). The Makefiles have been modified to provide the proper define to the compile process. This will provide consistent CSMI IOCTL execution and data output with the two driver flavors. Defect fixes • The 3.02.83.05 CSMI IOCTL code has been integrated into the csmisas.c files. The code has been compared with the 3.03.17.04 csmisas.c file and no data processing differences were found. The CSMI IOCTL executions should now provide the same data. • The IOCStatus value is now printed with the sas_log_info prints. • The Macro INITIALIZE_IOCTL_STATUS is used to initialize ioclt status before each message is sent to the FW. This is done in all IOCLT code (mptctl.c and csmisas.c). • A routine mpt_update_sas_info is now scheduled for execution when an event occurs with: ReasonCode of RAID_RC_VOLUME_STATUS_CHANGED and status is STATE_FAILED or STATE_OPTIMAL. ReasonCode of DEV_STAT_RC_ADDED or DEV_STAT_RC_NOT_RESPONDING. This will update the SASAddresses when a Volume Fails or becomes Optimal, or when a device is added or removed. Major Changes For Version 2.06.48.02 Release Date: 10/16/2006 General Changes Functionality • None Defect fixes • The decision to request commands be Queue Tagged or not to each device is made based upon a local flag indicating if the device supports Queue Tagging. This flag is set by the driver after the device’s first Inquiry command has completed successfully and is based upon the Inquiry data’s Queue Tagged supported field. Major Changes For Version 2.06.50 Release Date: 10/6/2006 General Changes Functionality • None Defect fixes • The decision to request commands be Queue Tagged or not to each device is made based upon a local flag indicating if the device supports Queue Tagging. This flag is set by the driver after the device’s first successful Inquiry command is completed and based upon the Inquiry data’s Queue Tagged supported field. • For SCSI devices, Domain Validation to a particular device is now scheduled only after the device’s first Inquiry command is completed successfully, and is scheduled only once when the driver is first started. Major Changes For Version 2.06.49 Release Date: 9/28/2006 General Changes Functionality • Red Hat “thumb” files of 15 MB are now generated. These files contain all kernels listed above and are not limited by the 1.44 MB of a DUD. These files can be placed on a memory stick or cdrom and used in place of a floppy disk DUD during installation. Defect fixes • The IOCTL status flags are cleared immediately before each IOCTL message frame is sent to the FW, instead of after the command has completed. This prevents the IOCTL command completion routines from checking stale status flags and IOCStatus values, and erroneously performing the wrong completions code. This fixes a problem when an OEM’s System Health application is running in the background and another application is sending Inquiries, which was being notified that an error had occurred when in fact the command completed successfully; the application displayed 4 bytes of Inquiry data rather than the entire data that was returned. • SAS replies with LogInfo will now also print the IOCStatus contained in the reply. • Commands that are received after a SAS device has been removed from the system are returned with a DID_NO_CONNECT status rather than being sent to the FW. • Prints involving Events will be printed as Informational rather than as Warning. This prevents the messages from appearing on the console but they will be present in the /var/log/messages file and with dmesg output. Major Changes For Version 2.06.48.01 Release Date: 9/14/2006 General Changes Functionality • None Defect fixes • Issue: Floating hot spare drive is shown as part of an IS Volume. Reported by: Customer To Reproduce: Create an IM Volume with a Hot Spare and an IS volume. Using csmitest tool issue CC_CSMI_SAS_GET_RAID_CONFIG call to display drive information and note the SAS Address field for the hot spare drive with the IS volume. IS volumes do not have hot spare capability. Description of Change: Check the volume type. If IS, skip the config page read and filling the data with hot spare information. Major Changes For Version 2.06.48 Release Date: 8/22/2006 General Changes Functionality • None Defect fixes • CSMISAS ioctl routine get_raid_info determines MaxDrivesPerSet from maximum of MaxDrivesIS, MaxDrivesIM, MaxDrivesIME from IOC Page 6 if that page is available, otherwise that values is set to 8. • CSMISAS ioctl routine raid_inq uses the argument inq_vpd_sz in its Inquiry command. • A TMpendingQ has been implemented to contain additional Task Management requests when a Task Management request is already in execution (only one Task Management request can be occurring). When the executing Task Management request completes, if the TMpendingQ is not empty, the Task Management request at the top of the queue is obtained and its execution is started. This queuing mechanism is necessary when several devices are attached to a SAS HBA and the attaching cable (or the link) is removed, resulting in Events of NOT_RESPONDING for each device. As part of that Event processing, a Task Management Target Reset is issued to cause the SAS FW to terminate any outstanding IOs. Prior to this change, the system would be unresponsive for about 10 seconds for each device other than the first device. This method is also in use with Task Management requests issued from IOCTL executions. • Issue:SAS Address of hot spare drive is all zero’s in the data returned from CSMI GET_RAID_CONFIG Ioctl call Reported by: Customer To Reproduce: Create an IM volume with a hot spare drive and using csmitest tool issue CC_CSMI_SAS_GET_RAID_CONFIG call to display Drives information and note the SAS Address field for the hot spare drive Description of Change: Moved memset of buffer before filling in SAS Address for a hot spare drive • Issue: uChangeCount field in CSMI Ioctl is being incremented for all RAID actions and phys disk status changes for non-SAS controllers too Reported by: Developer To Reproduce: Attach a 1030 SCSI controller and create and delete a volume. Run the csmitest tool to display fields in GET_RAID_INFO Ioctl and notice that Change Count value is incremented which should reflect the change count events only for SAS controllers Description of Change: Moved incrementing csmi_change_count from mptbase to mptsas so it is confined to changes to SAS events • Issue: Some of the fields returned by GET_RAID_CONFIG CSMI Ioctl call are not filled-in or returns default values for hot spare drives Reported by: Developer To Reproduce: Create an IM volume with a hot spare drive and using csmitest tool issue CC_CSMI_SAS_GET_RAID_CONFIG call to display Drives information and note that usBlockSize, uDriveIndex are returned zero and bDriveType is returned UNKNOWN Description of Change: Filled in usBlockSize, uDriveIndex, and bDriveType fields for hot spare drives in GET_RAID_CONFIG Ioctl Major Changes For Version 2.06.45 Release Date: 7/28/2006 General Changes Functionality • Implemented following CSMI 0.90 Phase I and II changes and additional features: - CSMI_SAS_GET_CNTLR_CONFIG – updated uControllerFlags - CSMI_SAS_GET_RAID_INFO – updated uMaxDriverPerSet and implemented new fields - CSMI_SAS_GET_RAID_CONFIG – updated bDriveCount, bStatus, bInformation, union.Drives and implemented new fields - CSMI_SAS_GET_RAID_FEATURES – new IOCTL - CSMI_SAS_GET_RAID_CONTROL – new IOCTL • Updated CSMI_SAS_GET_CONNECTOR_INFO Ioctl by filling in data from Manufacturing Page 7 Defect fixes • It was noted that the i686 DUD image space was exhausted when file rhdd-6.1 was written. This caused that file to be empty, resulting in the DUD is not being recognized when attempting to use it with an install. To fix this situation, Update 6 has been removed from the DUD. The DUD file image is now contained in file mptlinux-2.06.45-2.rhel3.i686.dd.gz. For completeness, the entire package has been regenerated with a -2 package version designation. The Update 8 Beta 2.4.21-43.EL kernel-source files were provided and used to generate the 2.06.45-2 rpm and DUD files. The released Update 8 kernel is instead 2.4.21-47.EL. Those kernel-source files were obtained and replaced the Beta files, the build environment was modified to use 2.4.21-47.EL and the binary files were regenerated. Package -3 now contains files for kernel 2.4.21-47.EL rather than 2.4.21-43.EL. Major Changes For Version 2.06.44 Release Date: 7/6/2006 General Changes Functionality • None. Defect fixes • All CSMI IOCTL functions have been reverted to the 0.83 version. Major Changes For Version 2.06.43 Release Date: 6/16/2006 General Changes Functionality • The capability of having 2048 devices attached to single controller has been implemented. These devices will be logically allocated to up to eight buses with up to 256 devices per bus. Defect fixes • A chip Diagnostic Reset and initialization is performed if the IOC is not Operational when a Task Management message is to be sent. • Issue: System crashes caused by doubly-completing a SCSI command. Reported by: Customer. To Reproduce: Bad FC cables cause CRC errors and lost SCSI commands. These commands time out and the mid-layer attempts to abort them. If the abort times out, FC firmware will complete the abort with failure status, but the driver was not checking – it was looking only for the abort to complete. When the abort finishes, the mid-layer completes the outstanding SCSI command, while unfortunately the firmware continues to work on it, and might complete it later itself. If this happens, the driver will complete the SCSI command a second time, and the system will typically crash. Description of Change: Keep track of the message frame assigned to a SCSI command (using the host_scribble field). Validate this field before completing any SCSI command. When aborting a SCSI command, check to see if it’s still outstanding when the abort completes from the firmware, and if so, fail the abort to the mid-layer. (If the mid-layer sees the abort fail, it will not complete that SCSI command.) Majo Major Changes For Version 2.06.42 Release Date: 6/6/2006 General Changes Functionality • The capability of having 1024 devices attached to single SAS controller has been implemented. These devices can be allocated to four buses with up to 256 devices per bus. The driver will obtain the actual number of buses and devices per bus and that information will be provided to the scsi midlayer during initialization. A device discovery scan over those buses and id’s will occur. Normal IOs will occur, since all IO requests contain a bus and id uniquely identifying each device on a particular HBA channel. Defect fixes • A chip Diagnostic Reset and initialization is performed if the IOC is not Operational when a Task Management message is to be sent. • The IOCTL chip Reset handler now performs a wake-up of all sleeping threads. • The throttling mechanism utilizing aen_event_read_flag has been removed. This results in a notification signal being sent to an application for each event that is received and needed by the application. • The ChainOffset and Reserved fields are cleared in CSMI Message Frames to the Firmware. • The timeout values were adjusted to allow for seconds, not milliseconds, before the request is failed. Major Changes For Version 2.06.41 (5/1/2006) Driver General Changes Functionality • An OEM’s Tape TLR capability was added. • Defect fixes • None. Major Changes For Version 2.06.40 (4/10/2006) Driver General Changes Functionality • If a Raid Volume contains SATA drives, the CSMI IOCTL that requests the Serial number has been changed to include 4 bytes of data from the ExtDiskIdentifier field, producing a total of 20 bytes of data, including the 16 bytes of data from the DiskIdentifier field. If the drives are not SATA drives, the 16 bytes of data in the DiskIdentifier field is provided. • If the LogInfo field in an IOC_TERMINATED reply indicates NEXUS_LOSS, a DID_BUS_BUSY result is returned to the scsi mid-layer. This causes a retry of the command. • The 1.05.13 MPI Header files are used with this driver. • Support for the 1035, 1066 and 1066E chips has been removed, since those chips are not going to be released to customers. Defect fixes • None. Major Changes For Version 2.06.39 (3/31/2006) Driver General Changes Functionality • A command-line parameter, mpt_qas_disable, has been added. Turning on this parameter disables QAS in all Ultra 320 negotiations. The default is for QAS to be included in all Ultra 320 negotiations, if all devices on the SCSI bus operate at Ultra 320. • Red Hat 3.0, Update 7 has been added to the DUD and rpm files. Defect fixes • A Task Management Target Reset is sent to the SAS Firmware when a DEVICE_NOT_RESPONDING Event is received. This results in all outstanding commands to that device to be returned with IOCStatus of IOC_TERMINATED; those commands will be returned to the scsi mid-layer with an error status. Major Changes For Version 2.06.38 (3/8/2006) Driver General Changes Functionality • None. Defect fixes • If the initial Inquiry data received is less than 57 bytes, the drive is assumed to not be capable of Ultra 160 or Ultra 320 speeds. Domain Validation will start with Ultra 80 (WDTR, SDTR) unless throttled further by NvRam data. This prevents a hang condition when Ultra 2 drives are used in one OEM’s enclosure. • If an Event indicating a DEVICE_NOT_RESPONDING is received, the pointer to the device’s data structure is checked. If NULL, no further action is taken. This prevents a panic if the pointer is used. • When a Task Management request is made, the status of the chip is checked. If the chip is not operational, a Hard Reset (Diagnostic Reset, chip initialization, etc) is performed, bring the chip to Operational status. This fixes a situation where the chip has faulted and needs to be reset to Operational to continue normal operations. Major Changes For Version 2.06.36 (2/1/2006) Driver General Changes Functionality • Full support for the SAS 1078 chip has been added. • Support for SAS Enclosures with SMART drives for a particular OEM has been added. Defect fixes • None. Major Changes For Version 2.06.34 (1/11/2006) Driver General Changes Functionality • None. Defect fixes • The code that checks for the necessity for a Firmware downloadboot when a chip is reset was not verifying if the HBA was a single channel adapter. This caused a panic when a SAS HBA is reset via a lsiutil request. This check has been added. Major Changes For Version 2.06.33 (12/20/2005) Driver General Changes Functionality • None. Defect fixes • A Firmware downloadboot will be included when either channel of an onboard 1030 is reset. This is necessary in order for the onboard 1030 to become operational. Major Changes For Version 02.06.32 (12/12/2005) Driver General Changes Functionality • None. Defect fixes • Writes for IOCPage4 will be done for only SCSI (1030) controllers. • Domain Validation will be initiated upon completion of the first successful Inquiry command to devices attached to SCSI (1030 controllers. • Changes to the code that writes to the IntMask register will allow LSI PCI Express chips to be recognized and operate properly with the Linux driver. • Hot Spare information provided by the IOCTL interface will not list SATA drives for Raid arrays with SAS drives and conversely, SAS drives will not be listed for Raid arrays with SATA drives. • RH 3.0 Update 6 kernel was added to the dkms build procedure. • Directory names were changed from amd64 to x86_64 in SLES 8 DUDs and RH 3.0 rpm files. Major Changes For Version 02.06.31 (11/28/2005) Driver General Changes Functionality • None. Defect fixes • After chip initialization and the chip is Operational, the instruction for allowing Reply Message Interrupts to occur was changed slightly. This allows Reply Message Interrupts to occur as expected on LSI PCI Express chips, such as the 1068E chip. Prior to this change, the Reply Message Interrupts Mask bit was not being disabled, causing no 1068E interrupts to occur, hanging the system. Major Changes For Version 02.06.30 (11/10/2005) Driver General Changes Functionality • None. Defect fixes • The SCSI Domain Validation routine is changed to do Domain Validation to one “device” only, rather than loop through all the devices on an IOC. For a non-Raid device, Domain Validation is performed on that single device. For a Raid device, Domain Validation is done on each physical disk of the array. • The SCSI Domain Validation routine is scheduled and executed for each device that successfully completes its first Inquiry command. • The SCSI Domain Validation routine is scheduled and executed when an Event of MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED is received. Major Changes For Version 02.06.29 (11/07/2005) Driver General Changes Functionality • None. Defect fixes • SCSI Domain Validation is done upon successful completion of the first Inquiry command, during initialization. This allows Domain Validation to be done immediately, without waiting for an application to issue Read Capacities (disk drives) or Mode Sense (cdroms, tape drives) as was done previously. A tape application demonstrated issues when Domain Validation was not done during initialization. • A new line containing “Version 0” has been added at the beginning of file modinfo in the build_files directory. This file is copied to DUDs. DKMS DUD generation also uses this file, so it is now universal across builds. • The DKMS build procedure was modified to automatically load the IOCTL module, mptctl, when a system with the mpt driver is booted. This allows applications to operate without having to manually start the IOCTL module. The mptctl module is removed when the mpt driver is deactivated. Major Changes For Version 02.06.28 (10/27/2005) Driver General Changes Functionality • None. Defect fixes • DATA OVERRUN replies will report good status and resid = 0. This allows wide SCSI tape drives negotiated at Ultra 80 or slower to operate properly when an odd number of data bytes are requested. Major Changes For Version 02.06.27 (10/11/2005) Driver General Changes Functionality • Red Hat 3.0 Update 6 is included in the DUD and rpm files. Defect fixes • Code has been added to provide crash dump output. • CSMI Phase III support – modifications are added in the driver and the hptest application. Support was added in sas_phy_control, which allows link rate change, disabling/enabling phys, and returning default phy settings. Support was also added in sas_get_location which returns locate array info for raid volumes. Using the updated hptest provided in the driver source, one can validate these changes. The hptest tool selection items 18 and 19 will test these updated ioctls. • CSMI Ioctls – Timeout values are honored by the application timeout value, which are provided in the ioctl header. Previously, the driver was using a 10 second timeout. Major Changes For Version 02.06.26 (9/27/2005) Driver General Changes Functionality • None. Defect fixes • Commands are placed in a PendingQ while a Task Management operation is occurring. Those commands are now started upon the completion of the Task Management operation. Note: Task Management operations can be initiated by the driver as a result of a scsi-midlayer request, or by an IOCTL request. This change allows commands that are in the PendingQ to be started upon Task Management completion, specifically those that were queued as a result of a Task Management via an IOCTL execution. • Code was added to detect if Flash Memory is present on a SAS HBA. This information is provided to applications that requests HBAPCIINFO ioctl execution (Mptutil in particular). • File post-script on the DUD for rhel3 EM64T machines was modified to install the object files from the ia32e directories, rather than the `uname –m` directories. A `uname –m` execution returns x86_64 on EM64T machines, resulting in x86_64 files being installed rather than the correct ia32e files. • The dkms.conf files were corrected in the binary and rpm build procedures, allowing correct dkms rpm operations. Major Changes For Version 02.06.25 (9/7/2005) Driver General Changes Functionality • MPI Header files 1.05.12 are in use. Defect fixes • When the driver receives a Reply with RC_NOT_RESPONDING, a Task Management Device Reset message is sent for that device. This results in the SAS firmware to reply for all outstanding IO’s with a Terminated IOC Status. The IO’s are then completed back to the SCSI mid-layer, preventing IO timeouts, aborts, etc. • “New” error handling has been implemented, replacing “Old” error handling. This approach allows Task Management Aborts, Device Resets and Bus Resets to complete when IO’s timeout. This change was a result of problems that occurred when power was removed from drives associated with SAS Volumes, resulting in Hot Spare drives being activated, etc. • Mptlan – Fix for the Lan driver. In the interrupt handler, message frames were not being freed in certain circumstances. • Fix for ioctl= MPTEVENTQUERY. The event log size was returning ‘0’ instead of ‘50’, when driver first loaded. Previously the driver would only initialize the event log size after ioctl=MPTEVENTENABLE was called. • Fix for Asyn event notification logic. The aen_event_read_flag was never getting turned on when SIGIO event was raised. This flag is used to inhibit SIGIO notification between reading the event log. • Fix for CSMI get_raid_config_info. This fix involves recognizing smart errors, and marking a drive as degraded when smart errors are detected. Major Changes For Version 02.06.24 (8/23/2005) Driver General Changes Functionality • None. Defect fixes • MPT_HOST_LOCK and MPT_HOST_UNLOCK removed when returning running commands to the scsi midlayer before an IOC reset (host_reset requested by the midlayer) is attempted. This prevents a possible spinlock conflict. • Changed possible wait time from 10 seconds to 2 seconds for a previous Task Management to complete before attempting to issue another Task Management. This prevents an NMI watchdog spinlock timer from timing out on certain SuSE systems. • Return SUCCESS rather than FAILURE when an Abort Task Management completes successfully. • Only set LIPRESET option in MsgFlags field of Bus Reset Task Management request if the IOC is Fibre Channel. • CSMI – Get Raid Config – Fix for setting Phys Disk to REBUILDING state when the volume is being resyn’ed. Major Changes For Version 02.06.23 Driver General Changes Functionality • None. Defect fixes • “New” error handling has been implemented. This allows Abort, Target Reset, Bus Reset and Host Reset tasks to function via the Task Management interface much more cleanly. • Task Management functionality has been improved, especially Bus Resets. The scsi midlayer/driver now has the capability to request a host reset if a Bus Reset fails to complete on time. Major Changes For Version 02.06.22 (8/8/2005) Driver General Changes Functionality • CSMI – CC_CSMI_SAS_SSP_PASSTHRU and CC_CSMI_SAS_STP_PASSTHRU – remove the quiece io surrounding raid passthru request. Defect fixes • CSMI – CC_CSMI_SAS_SSP_PASSTHRU, CC_CSMI_SAS_STP_PASSTHRU – add check in code to insure that driver doesn’t write beyond user space when returning data for scsi passthrus request. • CSMI – CC_CSMI_GET_RAID_CONFIG – Initialize the bDriveCount field to zero. In some cases the application was sending an non-zero value, and the driver incremented the drive count assuming bDriveCount was zero. Thus if bDriveCount was non-zero, the driver would report more drives in raid volume than actually existed • CSMI – CC_CSMI_GET_RAID_CONFIG – The application was sending a buffer size larger than what was actually allocated by the application. The driver would overwrite the entire buffer when data was returned to user space. When the application freed the memory allocated for this transaction, the application would crash. • CSMI – CC_CSMI_GET_RAID_CONFIG – Fix a panic in the driver when divide by zero occurred. This occurred due to firmware falsely reporting that raid1 volume was re-syncing. The driver was calculating the rebuilding rate expecting the divisor to be non-zero value, thus resulting in the panic. Major Changes For Version 02.06.21 Driver General Changes Functionality • None. Defect fixes • Big endian/Little Endian fix's thru out code, but mostly in ioctls. • csmi ssp_passthru and stp_passthru - check to see if there is data transfer to device. If there is not going to be data transfer, then eliminate the need to allocate memory with zero data length. • csmi ssp_passthru and stp_passthru - remove the commented code for quiesing io. This was commented out in previous 3.02.53. There has been a fix for this in the 4.01+ firmware for thus. csmi get_raid_info - max drives per set was returning 0 when there were no volumes created. This release will always return valid data for this member even if there are no volumes. Typical value for this is 10. Major Changes For Version 02.06.20 (7/19/2005) Driver General Changes Functionality • None. Defect fixes • Checks were added for request_data_sz > 0 before memory allocation to ensure SSP, STP and SMP PASSTHRUs do not fail when there is to be no data transfer. • Added MPT_DEBUG_LOCKS for debugging spin locks and printing where they are invoked. • Fixes were added to the mptutil interfaces. • RESIDUAL_MISMATCH processing was modified per Engenio MPP requirements for controller failover. Major Changes For Version 02.06.19 Driver General Changes Functionality • None. Defect fixes • CSMI – get controller config – was not returning the proper data for usSlotNumber. The driver returns the slot number from IOC Page 1. If the ioc_page1->pci_slot_number = 0xFF, then return SLOT_NUMBER_UNKNOWN • CSMI – get phy info – was not returning the proper device type for the attached device. This driver returns the Attached Device Info bits regarding device type from Phy Page 0. • CSMI – get raid config – was not returning spare drive info. This driver returns the spare pool info from IOC page 5. • SAS adapter type changed from 02 to 03 ( Signifies SCSI protocol through a SAS Adapter) for MPTIOCINFO IOCTL. Major Changes For Version 02.06.18 (7/12/2005) Driver General Changes Functionality • IR Event Handling – Added support for handling IR Events such as Volume Creation/Deletion, Phys Disks Creation/Deletion. • CSMI STP/SSP passthru support for IR hidden phys disk. The driver will pass scsi command block to physical disks hidden in a volume. The driver will Quiese IO during passthru. • Added clearing persistency table full • Asynchronous Event Notification (AEN) – Added support for raising SIGIO for persistent events. Defect fixes • None Major Changes For Version 02.06.17 (5/13/2005) Driver General Changes Functionality • None. Defect fixes • Ioctl allows FW download of FW image even if a Boot loader image is not found when a FW downloadboot is requested. • User memory for FW downloadboot operation since this data is handshook one word at a time. This eliminates kernel memory allocation, which is restricted to 128 K bytes. The SAS IR FW is larger than 128 K bytes. • Sync Cache commands will be issued to only disk drives upon driver termination. Major Changes For Version 02.06.16 (4/25/2005) Driver General Changes There is a known issue when trying to install Red Hat 3 Update kernels to a disk drive attached to a LSI 1030 HBA, using an LSI DUD, on an x86_64 machine. Instead of using a DUD, install normally. After rebooting the system, upgrade the driver using the LSI rpm package containing this driver. Functionality • Default mpt_sg_tablesize is increased to 128. This allows increased IO performance, especially with large IO’s. Defect fixes • Removed “reason” check for IOC_BRINGUP when obtaining IOC reply_size, reply_depth, req_depth and PortFacts. This is needed for SAS FW download boot to work properly. • A 1 millisecond delay was added during SAS FW download boot, to allow the FW to initialize properly. • A check for a NULL task management pointer was added in mptctl_ioc_reset to prevent use of the NULL pointer. This was seen during IR Volume testing when a device didn’t respond to an Inquiry, causing the application to request IOC resets. • Read_16 and Write_16 CDB opcodes (16 byte CDB) were added to switch statements that set data direction. • If an Abort request is received for a target that is not present, the “result” is set to DID_BAD_TARGET and SCSI_ABORT_ERROR status is returned. If a Bus Reset is received for a command that is on the PendingQ, the command and chain buffers are returned to their free queues, “result” is set to DID_RESET and SCSI_RESET_SUCCESS status is returned. These changes prevent a loop and panic if many devices are powered down simultaneously (probably in a JBOD) while performing IO stress tests to those devices. • Sync Cache commands are only issued to Direct Access, WORM and Optical devices during driver termination. This prevents problems with “tape” devices that claim they support Q-Tags. Major Changes For Version 02.06.15 (4/22/2005) Driver General Changes Functionality • Fibre Channel device persistency is implemented utilizing World Wide names. • Asynchronous Event Notification (AEN) has been implemented. This causes the driver to notify applications when certain events occur so they can immediately perform related activities. • A Peripheral Qualifier Filter command line option is implemented. This allows certain Raid controllers to operate properly. • The EBOS option in Echo Buffer data is checked. Reserve and Release commands during Domain Validation are not issued if this option is present. • Upgraded to 1.05.09 MPI headers. Defect fixes • The default Reply Buffer count has been reduced to 64, to be consistent with other LSI drivers. • IOCInfo data is not printed for replies generated by Target Mode or LAN driver commands. Those driver perform their own functions based upon that data. • Event Notification message frames that are outstanding when a Diagnostic Reset is performed are returned to the Message Frame pool. Currently only the 1030 FW do not return Event Notification message frames immediately to the driver. This change allows those message frames to become available for normal operation after a Diagnostic Reset has completed. • Debug code was added to detect and handle an instance of the FW returning a non-active message frame to the driver. • Code was re-arranged to ensure that PCI Config Space (MOST, MMRC values) is set for both instances of dual function HBA’s. • MsgVersion and HeaderVersion fields are set based upon the machine’s Big Endian/Little Endian characteristics. • SAS FW Download Boot code searches the FW data for the BOOTLOADER ImageType and sends that image. • FW download code was adjusted to accommodate SAS chip requirements. • Code to allow handshakes of commands has been implemented. This is only done during SAS FW download or download boot operations. • Added mptscsih command line option: mpt_pq_filter: Enable peripheral qualifier filter: enable=1 (default=0) • A Pending Queue is implemented. This queue holds request from the scsi-layer that cannot be immediately issued. Requests may be placed in this queue during a Diagnostic Reset, if no message frame is available or if insufficient Chain Buffers are available to contain the entire Scatter/Gather list. These commands are then issued when the Diagnostic Reset is complete or when sufficient resources become available. • Internally generated commands that do not DMA data have their Control field set to NODATATRANSFER. This eliminates unexpected FW replies, especially on Sync Cache commands to 1030 chips during driver termination. • An IOCTL that performs a Diagnostic Reset, then waits for the chip to go to READY, has been implemented. This is needed for SAS FW download to a new or erased board. Major Changes For Version 02.06.14 (2/18/2005) Driver General Changes Functionality • None. Defect fixes • Driver returns an ABORT_PENDING status to the scsi-layer if no Message Frame is available to perform an Abort. • Send a Task Management AbortTask rather than a ResetBus when a SAS IO times out. • Target memory is not freed when a SAS NOT_RESPONDING event is received. SAS devices may go offline periodically for short periods of time without system operation being affected. • The x86 BOOT mpt modules were inadvertently left out of the 2.06.13 DUDs, causing the mpt driver to not install properly. Those modules have been restored in the build process and are contained in this driver release. Major Changes For Version 02.06.13 (2/10/2005) Driver General Changes Functionality • Upgraded to 1.5.7 MPI headers. • Added processes in Red Hat rpms and DUDs to detect LSI Logic chips that have no associated driver. These processes will update /etc/modules.conf and generate Ram Disk Images including the 2.06.13 driver so the driver will be loaded on the next boot. Driver installation via an rpm will perform the above processes automatically and will load the driver if it is not already loaded, so a reboot is not necessary. Note: this is due to Red Hat Kudzu not recognizing the 1064 and 1068 chips yet. • To perform the above process when installing via DUD: At the last screen just before exiting to reboot (double quotes are for emphasize; do not enter): Change to the prompt screen by entering “” Change root by entering “chroot /mnt/sysimage” Make a floppy mount point “mkdir /floppy” Mount the DUD “mount /dev/fd0 /floppy” Change to floppy mount point “cd /floppy” Execute process “./post-script” Return to the installation screen by entering “” Exit the installation • Added new version update for LSIUTIL v1.30 • Added case for MPI_FUNCTION_TOOLBOX in IOCLT path for MPI Passthru’s • Host Buffer Support Fix’s: added new function mpt_host_page_alloc. Defect fixes • Code was modified to eliminate a panic situation when multiple SAS or SATA driver are powered down nearly simultaneously. • Fix in IOCTL path for SCSI_IO passthru’s: the sense width in the message flags was getting overwritten by a call to mpt_msg_flags() . Major Changes For Version 02.06.12 (1/28/2005) Driver General Changes Functionality • Upgraded to 1.5.6 MPI headers. • Added v.83 CSMI headers. • Added CSMI ioctls framework for get_location, get_connector_info, phy_control. • For Integrated Raid, added support for recreating the SAS device link list when volumes are added or deleted. • Cleanup and renaming SAS support routines in mptbase. Defect fixes • Recognition for MPI_FUNCTION_TOOLBOX was added to mptctl_do_mpt_command in module mptctl, allowing processing needed by utility Mptutil for SAS Firmware downloads and uploads. • Added mptctl_hba_pciinfo code to obtain SAS HBA parameters for utility Mptutil. • Fixed code so that all Ultra 320 devices have QAS disabled if at least one non-Processor device is running at a speed less than Ultra 320 on the SCSI bus. • Minor fixes in CSMI – get raid configuration. Major Changes For Version 02.06.11 (1/7/2005) Driver General Changes Functionality • None. Defect fixes • Code was changed to return “BUS_BUSY” for IO’s that are received for which there are no available Message Frames, insufficient Chain Buffers, or if the IOC is being reset. This causes the IO’s to be retried rather than placed in a “doneQ” and never started (causing an infinite Abort request loop). The “doneQ” was removed as was all associated code. • Code was added to force the host sg_tablesize parameter to be no more than the number of Scatter/Gather entries in the Chain Buffers plus the number of Scatter/Gather entries in a Message Frame. This ensures that IO’s can be completed. Performance can be severely impacted if the number of Chain Buffers is small (this can be done by setting the mpt_chain_alloc_percent to 1 or two), causing the IO’s to be retried often. If mpt_chain_alloc_percent is set to zero, sg_tablesize is set to the amount of Scatter/Gather entires that will fit in a Message Frame; this reduces performance somewhat but does not cause IO’s to be retried. Major Changes For Version 02.06.10 Driver General Changes Functionality • Debug code added (MPT_DEBUG_QCMD_DEPTH) added for tracking when then number of outstanding IO’s near the IOC’s can_queue limit. Defect fixes • New chip recognition code was modified so that only one set of code is used, eliminating the possibility that new chips would not be detected. • Message Frame allocation is mpt_can_queue + 12 to allow for messages that are sent to the IOC but the IOC doesn’t return the Message Frame back to the host driver. An example of this is the Event Notification request. This also reduces the amount of memory allocated per IOC. • CSMISAS ioctl code was moved from file mptctl.c to file csmisas.c. This file is included if CSMISAS ioctl code is needed. • MPTHBAPCIINFO ioctl code has been removed, as requested by kernel.org. This information can be obtained from other sources. Major Changes For Version 02.06.09 Driver General Changes Functionality • Added support for FC939X, FC949X • Added support for SAS1066, SAS1068, SAS1064E, SAS1066E, SAS1068E • Added mptbase command line options: mpt_can_queue: Maximum IO depth per HBA instance (default 128). mpt_sg_tablesize: Maximum Scatter/Gather entries allowed per IO (default 40). mpt_reply_depth: Maximum number of reply buffers allocated per HBA instance (default 128). mpt_chain_alloc_percent: Chain buffer allocation percentage (default 100). Above options are specified with the kernel.org preferred methodology. Example: mptbase mpt_can_queue=256 mpt_sg_tablesize=128 These options can be used to modify the amount of memory allocated for each HBA instance, and to enhance performance by allowing more concurrent IO’s and/or more Scatter/Gather entries per IO. • Added linked list for HBA instances. Eliminated hard coded limit of 18 HBA instances. • Added SAS Clear Task Set ioctl capability. Defect fixes • Standardized utilization of HBA instance types: SCSI, FC, SAS. • Eliminated unused code. • Fixed Big Endian/Little Endian conversion of Facts Blocksize. • Allow up to 5 minutes for Raid Capable HBA instances to initialize. • Changed mptscsih command line options to use kernel.org preferred methodology: mpt_dv: Perform SCSI Extended Domain Validation (default 1). mpt_width: Allow all SCSI devices to operate in 16 bit mode if capable (default 1). mpt_factor: Allow all SCSI devices to operate with this Sync Factor if capable (default 08: Ultra 320). mpt_saf_te: All SCSI enclosures are to be regarded as SAF-TE capable (default 0). mpt_pt_clear: Clear all Persistance tables (default 0). Above options are specified with the kernel.org preferred methodology. Example: mptscsih mpt_dv=1 mpt_width=0 • Removed check for zero length data transfer in a DATA_UNDERRUN case and return an error code if true. • Set resid field for all IO commands that don’t complete successfully, based upon the amount of data that was transferred. Major Changes For Version 02.06.08 Driver General Changes Functionality • Added /dev/mptctl ioctl node file generation in the Red Hat rpm’s. Requested by the LSI test team. Defect fixes • Added code to allow only one downloadboot to onboard dual function MPT chips when the mpt driver is removed. • Removed code to turn on Information Unit (IU) during Ultra 160 negotiations. The 1030 SCSI chip doesn’t properly support IU at Ultra 160 speeds. • Fixed code to properly do Big Endian/Little Endian conversions of req_idx in the get and put Message Frames routines. This prevents panics on Big Endian machines. Major Changes For Version 02.06.07 Driver General Changes Functionality • Added downloadboot capability via an application ioctl. • Added CSMI Raid Support ioctl’s. • If a SAS event of SAS_DEVICE_CHANGE with indicator of SAS_DEVICE_RC_ADDED (device added) is received, the device’s memory and pointer are generated. This allows applications to detect the added device immediately. • If a SAS event of SAS_DEVICE_CHANGE with indicator of SAS_DEVICE_RC_NOT_RESPONDING (device removed) is received, the device’s memory and pointer are removed. This allows applications to detect the removed device immediately. Defect fixes • Removed unused code. • Added “static” to some routines. • Reset Host Diagnostic Buffer indicators during a Diagnostic Reset sequence. • Added debug print statements. • Simplified HBA list parsing. Major Changes For Version 02.06.06 Driver General Changes Functionality • Removed device structure and pointer if IOCStatus of DEVICE_NOT_THERE reply is received. This allows applications to obtain an accurate list of active devices after a device is removed from the system. Defect fixes • Corrected the ClearFlashBadSignature bit setting in the 1030 Downloadboot sequence. Major Changes For Version 02.06.05 Driver General Changes Functionality • None. Defect fixes • Routine mptctl_reply was modified to process ioctl completions without any Reply buffer. Examples of this are SCSI IO’s issued by ioctl routines that complete successfully (Turbo reply). Major Changes For Version 02.06.04 Driver General Changes Functionality • None. Defect fixes • More routines were declared Static per a Redhat request. • MPI_FUNCTION_DIAG_BUFFER_POST processing was added in routine mptctl_reply. In that processing, if the IOCStatus is MPI_IOCSTATUS_DIAGNOSTIC_RELEASED, RELEASED is added to the buffer type’s status, eliminating the need to manually release the buffer. In addition, if MsgLength is long enough to include TranferLength, that length is saved and returned in Query requests. Both of the above checks are also include if an asynchronous MPI_FUNCTION_DIAG_BUFFER_POST reply is received; this may occur if the proper ProductSpecific value is set in the request. • For stp passthru, bug in checking stp drives, would fall past a failure condition check, even though it failed. Also, SATA drives are not enabling the STP_TARGET bit in the device config page, therefore a check was added to insure we could issue STP passthru to SATA devices. • Requests sent by mptlan do not include the NB bits. Major Changes For Version 02.06.03 Driver General Changes Functionality • None. Defect fixes • Some routines were declared Static per a Redhat request. • Host Diagnostic ioctl code was expanded to handle the UniqueId word, and to check for application compatibility. • Host Diagnostic ioctl code now sets the Flags field in buffers being returned to applications. • Fixed driver to correctly honor the command-line request dv:n. The driver will now only do the Basic portion of Domain Validation if this request is received. • SCSI non-packetized devices (devices running at Ultra 160 or slower) are now limited to 64 luns. This prevents “phantom” luns being generated if a full lun scan is done. Major Changes For Version 02.06.02 Driver General Changes Functionality • Support for the SAS 1064 chip has been added. Defect fixes (1) SAS Fixes: * CC_CSMI_SAS_GET_PHY_INFO - CSMI Ioctl was not returning proper sas address for attached devices. * CC_CSMI_SAS_FIRMWARE_DOWNLOAD - CSMI Ioctl minor bug fix, was not successfully downloading image, due to flag not set in msg frame. * CC_CSMI_SAS_GET_SCSI_ADDRESS - CSMI Ioctl minor bug fix, was failing to find sas address properly in device link list. * CC_CSMI_SAS_TASK_MANAGEMENT - CSMI Ioctl new implementation. * Added support for Generic STP and SMP msg frame passthroughs. * Added Host Page Buffer support for releasing memory to the fw, implemented thru doorbell handshake * CSMI Ioctl application updates from CSMI vendor, and updated to v79 headers. (2) Kernel.org Updates: * remove sources for sense data, as this is already supported by kernel : isense.[c,h], ascq_tbl,[c,sh] IMPORTANT NOTE: Full sense data reporting can be enabled in kernel by: sysctl -w dev.scsi.logging_level=0x1000 * Additions to loginfo debug info. * Added IOC debug error code info * Added Dump FCP ResponseInfo * Added element "segmentID" in get_iocinfo IOCTL. * Request from Jeff Garzik: Replace wrappers for CHIPREG_XXX with defines. * Removed __init from mptscsih_setup, Removed __init from get_setup_token. * Change naming of MPTSCSIH_DISABLE_DOMAIN_VALIDATION to MPTSCSIH_ENABLE_VALIDATION. * fix from Christoph Hellwig in mptscsih_AddSGE "fusion casts the dma handle for non-sg requests to a void *, making it horribly fail on systems with dma addresses bigger than the pointer size (e.g. x86 withPAE)" Major Changes For Version 02.05.23 Driver General Changes Functionality • None. Defect fixes • Task Management (TM) completion processing has been revised. The field determining a TM completion’s status has been changed from the Reserved2[0] field to the IOCStatus field. In addition, if the TM fails, the command’s Lookup table entry is set to NULL indicating the command has completed and a DID_SOFT_ERROR status is returned to the scsi_layer for this command. The possible use of a NULL pointer has been eliminated. Major Changes For Version 02.05.22 Driver General Changes Functionality • None. Defect fixes • The MPI_FLAGS_SGE_END_OF_BUFFER flag was added to the Data In Scatter/Gather entry for Ioctl commands that have both a Data In and a Data Out operation. This allows certain MyStorage commands to complete properly. Major Changes For Version 02.05.21 Driver General Changes Functionality • None. Defect fixes • One of the changes to driver version 2.05.20 caused all IO request to Fibre Channel devices to be sent with a Control field indicating UNTAGGED. The UNTAGGED Control field setting caused some devices to not respond to some commands and indicate a Check Condition with Overlapped Commands with other commands. This has been changed to send all IO commands with a Control field of Simple-Q to Fibre Channel devices. Those device now operate properly. Major Changes For Version 02.05.20 Driver General Changes Functionality • None. Defect fixes • The Firmware Upload code was simplified and enhanced to upload firmware from both channels of onboard 1030 chips. This increases performance significantly since the firmware can now use that memory space for its internal buffers. In addition, only one memory allocation is used for both uploads, reducing memory requirements. Lastly, when fusion_exit is executed, only one Firmware Download is performed to the onboard 1030 chip, speeding driver termination. • A few changes to the scsi negotiation code was made to ensure the negotiations and QAS settings were implemented as specified via NvRam settings (Configuration Utility settings). • RESIDUAL_MISMATCH processing was changed to examine the Reply TransferCount field. If TransferCount is greater than or equal to the command’s minimum data transfer count, the command is returned with good status. If TransferCount is zero, the command is retried (this occurs when a CRC error is encountered). Otherwise, an error status is returned. • The code to release ReqToChain, RequestNB and ChainToChain memory was moved from file mptscsih to file mptbase in routine mptbase_disable_adapter. This prevents those memory allocations from being released prematurely, which caused a kernel panic when insmod mptscsih, rmmod mptscsih and insmod mptscsih were executed in succession. This change is a direct result of Reply, Request and Chain buffers being allocated in one memory chunk rather than separately. • An error status of DID_SOFT_ERROR is returned when an IOCStatus of SCSI_PROTOCOL_ERROR is encountered. • Checking for SAF-TE processors is now done during Domain Validation of Inquiry data. This allows SAF-TE processors to be detected and IOCPage4 writes to be done if not done on the first Inquiry command from the scsi layer. SuSE systems issue only Inquiries with 36 bytes of data requested, not sufficient for the SAF-TE check. The Domain Validation Inquiry requests 96 bytes of data, more than enough for the SAF-TE processor checks. • Some changes were need to ensure that device negotiations were done correctly, after the SAF-TE change above. • The code to send Reply buffer addresses to the IOC’s was moved to after the Reply, Request and Chain buffer allocation. This allows those Reply Buffers to be available to the IOC after a Diagnostic Reset is performed (the memory for Reply, Request and Chain buffers is not re-allocated during this time). • The check for IOC status after a Diagnostic Reset was changed to include MPI_IOC_STATE_OPERATIONAL (in addition to MPI_IOC_STATE_READY). This allows a Diagnostic Reset to complete properly when it is done to an onboard 1030, since this also includes a Firmware Downloadboot that results in an OPERATIONAL state. Major Changes For Version 02.05.19 Driver General Changes Functionality • None. Defect fixes • Code was added to calculate the amount of system memory that is needed for Reply, Request and Chain Buffers for each IOC. This amount of DMA memory is allocated during initialization, replacing separate memory allocations for those buffers. The memory is divided amongst those buffer types and ensures that these buffers will be contained within the same 4 GB of memory space. This brings the mpt driver into compliance with the MPI Spec. • Several performance enhancements have been implemented. In particular, utilizing the “NB” bits of requests in the Request FIFO writes to limit the amount of data being transmitted across the PCI bus. Cosmetic coding changes were also made to reduce the amount of CPU utilization. Major Changes For Version 02.05.18 Driver General Changes Functionality • None. Defect fixes • Queue_depth is set to 31 for “Dummy Lun 0” devices instead of 1. If a “scsi single-device-add” is done and an actual device is now assigned to that device, it’s queue_depth will now be 31 instead of 1. This allows LSI Raid controllers to operate properly. • Negotiation of narrow, async will be done on the first command to a device. This setting will be maintained until Domain Validation is scheduled and performed. This prevents an infinite loop when a wide device is physically placed behind a narrow device on a SCSI bus. Major Changes For Version 02.05.17 Driver General Changes Functionality • None. Defect fixes • A check for PCI Function Number was added in the mpt_toolbox routine. If the Function Number is odd, the ISTWI Address to be read is set to 0xB2. If even, the Address to be read is set to 0xB0. This allows the correct UPIC data to be read on an I2C bus. • Valid SCSI LUNS are limited to 0-63 for devices running at speeds slower that Ultra 160, since the LUN field in the Identify byte is limited to 6 bits. This prevents multiple occurrences of the same device at LUNS greater than 63. • Checks for QAS capability is now also done after the Inquiry data compares in Domain Validation. In addition, the Inquiry data length is increased to MPT_MAX_INQUIRY_SIZE (96 bytes) so that sufficient data is available for the QAS check. This eliminates the problem of insufficient Inquiry data being requested on SuSE systems. • After a successful Firmware downloadboot, the driver performs an IocInit operation, placing the IOC into Operational state. This allows volume resyncing to continue while the driver is not running. • Changed code slightly to eliminate SuSE compile warning messages. Miscellaneous changes to satisfy: (1) Andi Kleen[ak@suse.de] put warning "Device (0:0:0) reported QUEUE_FULL!" into debug messages (2) Alexander Stohr[Alexander.Stohr@gmx.de] fix warnings from mptscsih_setup and get_setup_token, when driver isn't compiled as module (3) Randy.Dunlap[rddunlap@osdl.org] Remove unnecessary min/max macros and change calls to use kernel.h macros instead. Major Changes For Version 02.05.16 Driver General Changes Functionality • None. Defect fixes • SDTR/WDTR Disallow bits were not being set in Device Configuration Page 1 for SEP devices. • Increase the timeout in RAID Action Request from 2 to 10 seconds. Under stress conditions, the QUIESCE_PHYS_IO action request was taking longer than 2 seconds timeout to complete, thus resulting in the driver going into a host bus reset. • Replace sys_ioctl with our own defined function compat_mptctl_ioctl. This removes the warning messages. Major Changes For Version 02.05.15 Driver General Changes Functionality • None. Defect fixes • Processing of an IOCStatus of MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH was changed to allow the OS SCSI layer to retry the command. • Firmware upload and downloadboot was simplified to match the algorithms in the MPI 1.2 spec. Major Changes For Version 02.05.14 Driver General Changes Functionality • None. Defect fixes • Search IOCPage3 for Id being a physical drive of a volume. If so, don’t include its information in Ioctl TargetInfo data. • Default to QAS before checking for QAS capable in inquiry data. This allows Ultra320 drives to operate with QAS in SuSE systems. Major Changes For Version 02.05.13 Driver General Changes Functionality • None. Defect fixes • Read IOCPage2 and IOCPage3 on each Ioctl TargetInfo request. Prevents stale data from being used if volume is changed while the driver is operational (via Ioctl interface). • Extend time to at least 5 seconds for Doorbell Interrupt and Ack checks. • Allow Check Conditions to take precedence over data length checks in DATA_UNDERRUN error processing. Major Changes For Version 02.05.12 Driver General Changes Functionality • The driver now supports the FC929XL. • The driver now supports I2C requirements. Toolbox message generation and processing has been added to IOCTL processing. • Rpm and DUD files are now available for Redhat 3.0 on ia64 machines. Defect fixes • Added code to check for QAS enabled or disabled in SCSI Port Page 0. Ultra 320 negotiations will reflect the QAS setting in SCSI Port Page 0. • Added code to obtain IOC Page 2 data in order to provide Volume data in Target Info Data returned by an IOCTL request. • Fixed Target Info code to prevent overrunning the data buffer length provided by the application. Also fixed that code to include checking for the last id on the IOC. • Added code in the data underrun response processing to return an error code if no data was transferred. • Added code to properly set each device’s queue_depth for Fibre Channel devices. • Fixed code to allow Ioctl operation on ia64 machines. Minor Changes • Version bump. • Performance enhancements were made. Major Changes For Version 02.05.11 Driver General Changes Functionality • The driver now supports up 256 Luns per device Id. Defect fixes • The Maximum Outstanding Split Transactions (MOST) is set to 1 for the 919X and 929X chips. This prevents a possible data corruption situation when using those chips. • The ReqToChain fields are now properly set via a loop using a defined value rather than a memset function call during adapter structure initialization. This prevents a panic situation seen on an Opteron x86_64 system. • If a data underrun condition exists and the amount of data transferred is less than the command’s underflow amount, an error status is returned rather than a good status. This prevents a false good status from being returned and allows the upper SCSI layer to retry the command if needed. • A “for” loop replaces a “while” loop during adapter detection. This prevents a possible infinite loop during initialization. • A generic compatible ioctl interface replaces a sparc specific interface, to allow a fuller range of systems to work with the ioctl interface. The sys_ioctl linkage is now used. The ioctl interface is now properly unregistered if a failure occurs during ioctl initialization. This prevents a possible panic situation. Minor Changes • Version bump. • Performance enhancements were made. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes For Version 02.05.10 (9/29/2003) Driver General Changes Functionality • The driver now checks NVRAM data and performs Level 1 Domain Validation only, if requested. This limitation can be set on a per-device basis via the LSI Configuration Utility. Defect fixes • The IOC Page 4 read is now done after the SCSI Port Settings and the SCSI Device Page Headers are obtained. • The return code from pci_map_sg is checked and a FAILED status is returned if the return code indicates that a failure occurred, as Scatter/Gather entries are being obtained. • If IOCStatus of MPI_IOCSTATUS_STATUS_RESIDUAL_MISMATCH is received, an error status is returned to the SCSI layer. This status is received when the Fibre Channel firmware detects a CRC error during a data transfer. • If the SCSI layer request an abort or bus reset for an IO that is not currently running, an error status is returned and the scsi_done call is not performed. This prevents problems when the IO has completed before the abort or bus reset is received. • In a mixed device configuration (Ultra 320 and Non-Ultra 320 devices are present on an HBA channel), code was fixed to prevent negotiating for QAS on all Ultra 320 devices on that channel. This keeps the Ultra 320 devices from dominating the SCSI bus, preventing Non-Ultra 320 IO’s from executing. • The SenseBufferLength field is properly set when an IOCTL IO is processed. This allows sense data to be obtained and returned to the application if a Check Condition occurs on the IO. Minor Changes • Version bump. • Performance enhancements were made. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.05.07 (6/30/2003) Driver General Changes Functionality • Added the following sequence to allow the ID of a SAF-TE device to be stored in IOC Page 4. Step 1): Gather full INQ data; 2) If 56 bytes are available, and the INQ data indicates SCSI Processor, check for SAF-TE device; 3) If #2 indicates SAF-TE device, add this ID to IOC Page 4; 4) If #2 has insufficient INQ data, check for SCSI Processor, if true make this the SAF-TE device ID stored in IOC Page 4; 5) #4 is only true if command line option SAF-TE:1 is in effect. • In conjunction with the above, if kernel 2.5 or 2.6 is in effect, the first INQ will always be 36 bytes. If the kernel determines it’s okay, then the driver may ask for additional INQ up to 256 bytes and do so immediately after the initial INQ. This data may be parsed to determine if the device at that ID is a SAF-TE device that should have its ID stored in IOC Page 4. Defect fixes • None. Minor Changes • Version bump. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.05.06 (6/16/2003) Driver General Changes Functionality • Check SCSI Port Page 2 DV bits to either disable DV or limit DV to Inquiry only checks. This is per OEM request and is in the Rev D MPI Addendum. This is a modification to section 4.10.2.5, “SCSI-SPI Port Pages”. Additional bits are defined for the PortFlags field of the SCSI-SPI Port Page 2 configuration page. Bits 5 and 6 of the PortFlags field were previously reserved, but now control domain validation. Bit 6 Bit 5 Domain Validation (DV) Control 0 0 Host driver will perform Basic and Enhanced DV to devices on this port. 0 1 Host driver will only perform Basic DV to devices on this port. 1 0 Reserved 1 1 Host driver will not perform DV to devices on this port. Speed negotiations to a device should be based upon the stored values in the corresponding DeviceSettings field. Defect fixes • None. Minor Changes • Version bump. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.05.05 (5/12/2003) Driver General Changes Functionality • None. Defect fixes • Zero out unused CDB field on SCSI IO commands. Minor Changes • Version bump. • Changed mailto addresses. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.05.03 (4/14/2003) Driver General Changes Functionality • Old EH enabled for all 2.4 and 2.2 kernels. • Changes to the error handling functions (TMHandler, intra-driver callback functions). These changes were implemented for stability with the New EH but the code will be executed regardless of the OS error handling scheme. Defect fixes • Altered DV routine to honor NVRAM settings. AMD64 (x86_64) support required a tweak. The change resulted in a few cases where the driver would negotiate faster than what was specified by the NVRAM. (Minor). • The setting and clearing of use flags in the mptctl driver was altered to close a small hole that would leave the driver in a state that future IOCTL requests that required an interrupt would be rejected. Unloading/reloading the driver would clear the condition. (Minor). Minor Changes • Version bump. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.05.00 (3/17/2003) Driver General Changes Functionality • Added x86_64 support. • Controller Q depth increased to 127. • Base driver: Increased timeouts on waits for FW to ACK a handshake request. On IA64 platforms during driver unload, driver resets channel A, performs a downloadboot, then resets channel B. Channel B did not respond in allowed time window resulting in printing of a warning message (harmless). • Base driver: Reworked the initialization code to handle a greater set of cases where one channel of a dual-channel part fails to initialize. Leaves controller inactive if initialization fails. • SCSI driver: Reworked the initialization routine to handle multiple ports. Changes should be transparent in the single-port case. • 2.5 Kernel Changes (Affects 2.5 SCSI, lan drivers only): Added new OS entry points and removed obsolete code. Defect fixes • Fixed backwards compatibility on IOCINFO that failed due to an unexpected pad with IA64 platforms. • Base driver: downloadboot int returns mapped to u32, resulted in suppression of a warning message on failure. (MINOR) Minor Changes • Added code to dump the device Queue depth. • Added “rev0” definitions to IOCTL structures that have changed. • 2.5 Kernel Changes: Affected code layout – SCSI driver and LAN header files are Kernel-Tree specific. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.04.00 (1/15/2003) Driver General Changes Functionality • None. Defect fixes • A performance related issue was discovered based on the HW configuration. Particular configurations could result in a queue depth of 7, instead of the desired 31. Minor Changes • Version bump. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.03.01 (12/18/2002) Driver General Changes Functionality • None. Defect fixes • None. Minor Changes • Version bump. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.03.00 (11/18/2002) Driver General Changes Functionality • Driver will reload IOC Page 3 if a diagnostic reset occurs or if a physical disk is not listed in the cached page. • Registration, driver load and unload changes (requested by kernel.org). • Proc file system handled changed (requested) • Performance changes: queue depth; inlining some functions; New Error Handling Code is enabled for the 2.4.18 and later kernels (previously only enabled for 2.5 kernels); will read IOC Page 1 and reset the Coalescing Timeout to 0x10 if necessary. • 1030_1035 Support. • Rev C 1030 support (MOST). Defect fixes • None. Minor Changes • Removed obsolete IOCTLs. • Minor changes for 2.5 as requested by kernel.org. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.02.03 (11/01/2002) Driver General Changes Functionality • None. Defect fixes • None. Minor Changes • Version bump from 2.02.03 to 2.03.00. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.02.02 (10/18/2002) Driver General Changes Functionality Defect fixes • Disable interrupts prior to deleting IOC from linked list • Register vendor specific IOCTLs with sparc midlayer interface. Minor Changes • Release no longer calls kickstart • Add write of 0xFF prior to entering diagnostic mode • Added check in SCSIIO IOCTL for validity of Target ID • Return NULL if Serial Number 0 • Set defaults to –1 instead of 0 • Return –ENODEV if user supplies incorrect SCSI host number (instead of returning 0). Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.02.01.06 (10/03/2002) Driver General Changes Functionality • mptscsih.c: • Added defines for MAX_SECTORS and (user configurable) MAX_SGE • Reworked allocation of Chain buffers to be based on can_queue value and max number sge / command. • Stopped caching sense data in MPT_SCSI_HOST structure. • 2.5 Kernel compatibility changes • Enable highmem_io for 2.5 kernel tree and for 2.4 kernels where CONFIG_HIGHIO is defined (skip bound buffers) • IOCTL counter additions (reset counters) • mptctl.c: Custom IOCTL work. • mptlan.[ch]: 2.5 kernel compatibility changes • mptbase.h: • Added counters for soft resets, hard resets and timeouts. • Added max_sge and num_chain to MPT_SCSI_HOST structure. • mptbase.c • Will reload_fw if detect a loginfo of 0x1101. • Added SCSI log info fields. • Added Msg Unit Reset prior to Diagnostic Reset for SCSI parts. • linux_compat.h: • Added 2.5 Kernel compatibility changes. • Defined MPT_INIT_WORK to INIT_WORK or to internal macro. • Defined mpt_work_struct to work_struct or to tq_struct. • lsi/ updated to the 1.02.09.00 header set • Config.in: Added capability set the max number of sge / sgl in the config utility. Default is 40. Config.help (separate) Defect fixes • mptbase.c: • Fixed comments on MOST fix for 929X • mptscsih.c: • Allow QAS if RAID OR if disk capable of QAS • Check bits 0 and 1 of Byte56 for IU and QAS support • Disk FW Workaround: Issue untagged Request Sense if DV and wide and init det error occurs. (WNW) • If Diag Reset occurs, neg async/narrow to devices where DV has not completed. • QAS check skips current ID • mptctl.c: Altered debug statements. Minor Changes • mptscsih.c: • Added debug statements Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Major Changes From Version 02.02.01 (9/06/2002) Driver General Changes Functionality • lsi/ updated to the 1.02.09.00 header set • Config.in: Added capability set the max number of sge / sgl in the config utility. Default is 40. • mptbase.c: • Will reload_fw if SCSI and detect a loginfo of 0x1101. Added SCSI log info fields. • Added write of 0xFF during diag reset • Will check cached ptr value instead of relying on facts data for downloadboot algorithm. • mptbase.h: • Added max_sge and num_chain to MPT_SCSI_HOST structure • Added define for Inq with data length > 56 • MPT_MAX_ADAPTERS increased to 18 from 16. • mptscsih.c: • Stopped caching sense data in MPT_SCSI_HOST structure. • Reworked allocation of Chain buffers to be based on can_queue value and max number sge / command • Setting the scsi host field unique_id to the iocnumber • Modified the SCSI Error Report. Shortened. Writes message only if an error occurred on a read or a write • Added capability to write max_sectors for 2.4.7 and later kernels (performance). • DV routine will issue an untagged Request Sense if first full speed Inquiry is tagged, wide bus, IOCStatus of GOOD, but SCSI State of AUTOSENSE_FAILED. (Disk FW workaround). • doDv returns an int instead of a void • Removes tracker for untagged devices. If device untagged and FW is too old, DV will not be executed. Otherwise, relies on the FW returning a status of BUSY. Will try again later. • bios_param changed prototype in 2.5.28 kernel. • mptscsih.h: Add define for MAX_SECTORS and MAX_SGE • linux_compat.h: Modified mptscsih_save(restore)_flags. These functions are called by the _detect routine. For 2.5, invoke the driver lock instead of save_flags/cli() etc Defect fixes • mptctl.c: Fixed define for vendor specific IOCTLs • mptbase.c: Added MOST fix for 919X and 929X (HW) • mptbase.c: Added a MessageUnitReset if MakeIocReady is called for any parallel SCSI adapter (FW) Minor Changes • Altered logging. SCSI Error report generated only if failure occurs on a read or write command. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. Build Procedure Changes Functionality • Added Red Hat 8.0 driver disk support • This release contains no Red Hat 7.1 or 7.0 support OR any 64-bit support. • RPMs have been modified to reduce most of the information messages displayed to the user. • Red Hat i686 RPM includes Red Hat 8.0 support. Major Changes From Version 02.02.00 (8/23/2002) Driver General Changes Functionality • None. Defect fixes • Bug Fix: memory leak in mptctl.c • Bug Fix: Incorrect mask in ANSI Version of inquiry data (2 bits instead of 3 bits) Minor Changes • Altered logging. Flash Utility General Changes Functionality • None. Defect fixes • None. Minor Changes • None. 1. Known issues None. Disclaimer: LSI Logic Corporation and/or its respective suppliers make no representations about the suitability of the information contained in these documents and related graphics. All such documents and related graphics are provided “AS IS” without warranty of any kind. LSI Logic Corporation and/or its respective suppliers hereby disclaim all warranties and conditions with regard to this information, including all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement. In no event shall LSI Logic Corporation and/or its respective suppliers be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortuous action, arising out of or in connection with the use or performance of information contained in these documents and related graphics. Some states do not allow the exclusion or limitation of liability for consequential damages so the foregoing limitation may not apply.