|  | ************************************************************************** | 
|  | ** History | 
|  | ** | 
|  | **   REV#         DATE             NAME         DESCRIPTION | 
|  | ** 1.00.00.00    3/31/2004       Erich Chen     First release | 
|  | ** 1.10.00.04    7/28/2004       Erich Chen     modify for ioctl | 
|  | ** 1.10.00.06    8/28/2004       Erich Chen     modify for 2.6.x | 
|  | ** 1.10.00.08    9/28/2004       Erich Chen     modify for x86_64 | 
|  | ** 1.10.00.10   10/10/2004       Erich Chen     bug fix for SMP & ioctl | 
|  | ** 1.20.00.00   11/29/2004       Erich Chen     bug fix with arcmsr_bus_reset when PHY error | 
|  | ** 1.20.00.02   12/09/2004       Erich Chen     bug fix with over 2T bytes RAID Volume | 
|  | ** 1.20.00.04    1/09/2005       Erich Chen     fits for Debian linux kernel version 2.2.xx | 
|  | ** 1.20.00.05    2/20/2005       Erich Chen     cleanly as look like a Linux driver at 2.6.x | 
|  | **                                              thanks for peoples kindness comment | 
|  | **						Kornel Wieliczek | 
|  | **						Christoph Hellwig | 
|  | **						Adrian Bunk | 
|  | **						Andrew Morton | 
|  | **						Christoph Hellwig | 
|  | **						James Bottomley | 
|  | **						Arjan van de Ven | 
|  | ** 1.20.00.06    3/12/2005       Erich Chen     fix with arcmsr_pci_unmap_dma "unsigned long" cast, | 
|  | **						modify PCCB POOL allocated by "dma_alloc_coherent" | 
|  | **						(Kornel Wieliczek's comment) | 
|  | ** 1.20.00.07    3/23/2005       Erich Chen     bug fix with arcmsr_scsi_host_template_init | 
|  | **						occur segmentation fault, | 
|  | **						if RAID adapter does not on PCI slot | 
|  | **						and modprobe/rmmod this driver twice. | 
|  | **						bug fix enormous stack usage (Adrian Bunk's comment) | 
|  | ** 1.20.00.08    6/23/2005       Erich Chen     bug fix with abort command, | 
|  | **						in case of heavy loading when sata cable | 
|  | **						working on low quality connection | 
|  | ** 1.20.00.09    9/12/2005       Erich Chen     bug fix with abort command handling, firmware version check | 
|  | **						and firmware update notify for hardware bug fix | 
|  | ** 1.20.00.10    9/23/2005       Erich Chen     enhance sysfs function for change driver's max tag Q number. | 
|  | **						add DMA_64BIT_MASK for backward compatible with all 2.6.x | 
|  | **						add some useful message for abort command | 
|  | **						add ioctl code 'ARCMSR_IOCTL_FLUSH_ADAPTER_CACHE' | 
|  | **						customer can send this command for sync raid volume data | 
|  | ** 1.20.00.11    9/29/2005       Erich Chen     by comment of Arjan van de Ven fix incorrect msleep redefine | 
|  | **						cast off sizeof(dma_addr_t) condition for 64bit pci_set_dma_mask | 
|  | ** 1.20.00.12    9/30/2005       Erich Chen     bug fix with 64bit platform's ccbs using if over 4G system memory | 
|  | **						change 64bit pci_set_consistent_dma_mask into 32bit | 
|  | **						increcct adapter count if adapter initialize fail. | 
|  | **						miss edit at arcmsr_build_ccb.... | 
|  | **						psge += sizeof(struct _SG64ENTRY *) => | 
|  | **						psge += sizeof(struct _SG64ENTRY) | 
|  | **						64 bits sg entry would be incorrectly calculated | 
|  | **						thanks Kornel Wieliczek give me kindly notify | 
|  | **						and detail description | 
|  | ** 1.20.00.13   11/15/2005       Erich Chen     scheduling pending ccb with FIFO | 
|  | **						change the architecture of arcmsr command queue list | 
|  | **						for linux standard list | 
|  | **						enable usage of pci message signal interrupt | 
|  | **						follow Randy.Danlup kindness suggestion cleanup this code | 
|  | ** 1.20.00.14   05/02/2007	 Erich Chen & Nick Cheng | 
|  | **						1.implement PCI-Express error recovery function and AER capability | 
|  | **						2.implement the selection of ARCMSR_MAX_XFER_SECTORS_B=4096 | 
|  | **				 		if firmware version is newer than 1.42 | 
|  | **						3.modify arcmsr_iop_reset to improve the ability | 
|  | **						4.modify the ISR, arcmsr_interrupt routine,to prevent the | 
|  | **						inconsistency with sg_mod driver if application	directly calls | 
|  | **						the arcmsr driver w/o passing through scsi mid layer | 
|  | **						specially thanks to Yanmin Zhang's openhanded help about AER | 
|  | ** 1.20.00.15   08/30/2007	 Erich Chen & Nick Cheng | 
|  | **						1. support ARC1200/1201/1202 SATA RAID adapter, which is named | 
|  | **						ACB_ADAPTER_TYPE_B | 
|  | **						2. modify the arcmsr_pci_slot_reset function | 
|  | **						3. modify the arcmsr_pci_ers_disconnect_forepart function | 
|  | **						4. modify the arcmsr_pci_ers_need_reset_forepart function | 
|  | ** 1.20.00.15   09/27/2007	 Erich Chen & Nick Cheng | 
|  | **						1. add arcmsr_enable_eoi_mode() on adapter Type B | 
|  | ** 						2. add readl(reg->iop2drv_doorbell_reg) in arcmsr_handle_hbb_isr() | 
|  | **						in case of the doorbell interrupt clearance is cached | 
|  | ** 1.20.00.15   10/01/2007	 Erich Chen & Nick Cheng | 
|  | **						1. modify acb->devstate[i][j] | 
|  | **						as ARECA_RAID_GOOD instead of | 
|  | **						ARECA_RAID_GONE in arcmsr_alloc_ccb_pool | 
|  | ** 1.20.00.15   11/06/2007       Erich Chen & Nick Cheng | 
|  | **						1. add conditional declaration for | 
|  | ** 						arcmsr_pci_error_detected() and | 
|  | **						arcmsr_pci_slot_reset | 
|  | ** 1.20.00.15	11/23/2007       Erich Chen & Nick Cheng | 
|  | **						1.check if the sg list member number | 
|  | **						exceeds arcmsr default limit in arcmsr_build_ccb() | 
|  | **						2.change the returned value type of arcmsr_build_ccb() | 
|  | **						from "void" to "int" | 
|  | **						3.add the conditional check if arcmsr_build_ccb() | 
|  | **						returns FAILED | 
|  | ** 1.20.00.15	12/04/2007	 Erich Chen & Nick Cheng | 
|  | **						1. modify arcmsr_drain_donequeue() to ignore unknown | 
|  | **						command and let kernel process command timeout. | 
|  | **						This could handle IO request violating max. segments | 
|  | **						while Linux XFS over DM-CRYPT. | 
|  | **						Thanks to Milan Broz's comments <mbroz@redhat.com> | 
|  | ** 1.20.00.15	12/24/2007	 Erich Chen & Nick Cheng | 
|  | **						1.fix the portability problems | 
|  | **						2.fix type B where we should _not_ iounmap() acb->pmu; | 
|  | **						it's not ioremapped. | 
|  | **						3.add return -ENOMEM if ioremap() fails | 
|  | **						4.transfer IS_SG64_ADDR w/ cpu_to_le32() | 
|  | **						in arcmsr_build_ccb | 
|  | **						5. modify acb->devstate[i][j] as ARECA_RAID_GONE instead of | 
|  | **						ARECA_RAID_GOOD in arcmsr_alloc_ccb_pool() | 
|  | **						6.fix arcmsr_cdb->Context as (unsigned long)arcmsr_cdb | 
|  | **						7.add the checking state of | 
|  | **						(outbound_intstatus & ARCMSR_MU_OUTBOUND_HANDLE_INT) == 0 | 
|  | **						in arcmsr_handle_hba_isr | 
|  | **						8.replace pci_alloc_consistent()/pci_free_consistent() with kmalloc()/kfree() in arcmsr_iop_message_xfer() | 
|  | **						9. fix the release of dma memory for type B in arcmsr_free_ccb_pool() | 
|  | **						10.fix the arcmsr_polling_hbb_ccbdone() | 
|  | ** 1.20.00.15	02/27/2008	Erich Chen & Nick Cheng | 
|  | **						1.arcmsr_iop_message_xfer() is called from atomic context under the | 
|  | **						queuecommand scsi_host_template handler. James Bottomley pointed out | 
|  | **						that the current GFP_KERNEL|GFP_DMA flags are wrong: firstly we are in | 
|  | **						atomic context, secondly this memory is not used for DMA. | 
|  | **						Also removed some unneeded casts. Thanks to Daniel Drake <dsd@gentoo.org> | 
|  | ************************************************************************** |