11c57e86dSErich Chen************************************************************************** 21c57e86dSErich Chen** History 31c57e86dSErich Chen** 41c57e86dSErich Chen** REV# DATE NAME DESCRIPTION 51c57e86dSErich Chen** 1.00.00.00 3/31/2004 Erich Chen First release 61c57e86dSErich Chen** 1.10.00.04 7/28/2004 Erich Chen modify for ioctl 71c57e86dSErich Chen** 1.10.00.06 8/28/2004 Erich Chen modify for 2.6.x 81c57e86dSErich Chen** 1.10.00.08 9/28/2004 Erich Chen modify for x86_64 91c57e86dSErich Chen** 1.10.00.10 10/10/2004 Erich Chen bug fix for SMP & ioctl 101c57e86dSErich Chen** 1.20.00.00 11/29/2004 Erich Chen bug fix with arcmsr_bus_reset when PHY error 111c57e86dSErich Chen** 1.20.00.02 12/09/2004 Erich Chen bug fix with over 2T bytes RAID Volume 121c57e86dSErich Chen** 1.20.00.04 1/09/2005 Erich Chen fits for Debian linux kernel version 2.2.xx 131c57e86dSErich Chen** 1.20.00.05 2/20/2005 Erich Chen cleanly as look like a Linux driver at 2.6.x 141c57e86dSErich Chen** thanks for peoples kindness comment 151c57e86dSErich Chen** Kornel Wieliczek 161c57e86dSErich Chen** Christoph Hellwig 171c57e86dSErich Chen** Adrian Bunk 181c57e86dSErich Chen** Andrew Morton 191c57e86dSErich Chen** Christoph Hellwig 201c57e86dSErich Chen** James Bottomley 211c57e86dSErich Chen** Arjan van de Ven 221c57e86dSErich Chen** 1.20.00.06 3/12/2005 Erich Chen fix with arcmsr_pci_unmap_dma "unsigned long" cast, 231c57e86dSErich Chen** modify PCCB POOL allocated by "dma_alloc_coherent" 241c57e86dSErich Chen** (Kornel Wieliczek's comment) 251c57e86dSErich Chen** 1.20.00.07 3/23/2005 Erich Chen bug fix with arcmsr_scsi_host_template_init 261c57e86dSErich Chen** occur segmentation fault, 271c57e86dSErich Chen** if RAID adapter does not on PCI slot 281c57e86dSErich Chen** and modprobe/rmmod this driver twice. 291c57e86dSErich Chen** bug fix enormous stack usage (Adrian Bunk's comment) 301c57e86dSErich Chen** 1.20.00.08 6/23/2005 Erich Chen bug fix with abort command, 311c57e86dSErich Chen** in case of heavy loading when sata cable 321c57e86dSErich Chen** working on low quality connection 331c57e86dSErich Chen** 1.20.00.09 9/12/2005 Erich Chen bug fix with abort command handling, firmware version check 341c57e86dSErich Chen** and firmware update notify for hardware bug fix 351c57e86dSErich Chen** 1.20.00.10 9/23/2005 Erich Chen enhance sysfs function for change driver's max tag Q number. 361c57e86dSErich Chen** add DMA_64BIT_MASK for backward compatible with all 2.6.x 371c57e86dSErich Chen** add some useful message for abort command 381c57e86dSErich Chen** add ioctl code 'ARCMSR_IOCTL_FLUSH_ADAPTER_CACHE' 391c57e86dSErich Chen** customer can send this command for sync raid volume data 401c57e86dSErich Chen** 1.20.00.11 9/29/2005 Erich Chen by comment of Arjan van de Ven fix incorrect msleep redefine 411c57e86dSErich Chen** cast off sizeof(dma_addr_t) condition for 64bit pci_set_dma_mask 421c57e86dSErich Chen** 1.20.00.12 9/30/2005 Erich Chen bug fix with 64bit platform's ccbs using if over 4G system memory 431c57e86dSErich Chen** change 64bit pci_set_consistent_dma_mask into 32bit 441c57e86dSErich Chen** increcct adapter count if adapter initialize fail. 451c57e86dSErich Chen** miss edit at arcmsr_build_ccb.... 461c57e86dSErich Chen** psge += sizeof(struct _SG64ENTRY *) => 471c57e86dSErich Chen** psge += sizeof(struct _SG64ENTRY) 481c57e86dSErich Chen** 64 bits sg entry would be incorrectly calculated 491c57e86dSErich Chen** thanks Kornel Wieliczek give me kindly notify 501c57e86dSErich Chen** and detail description 511c57e86dSErich Chen** 1.20.00.13 11/15/2005 Erich Chen scheduling pending ccb with FIFO 521c57e86dSErich Chen** change the architecture of arcmsr command queue list 531c57e86dSErich Chen** for linux standard list 541c57e86dSErich Chen** enable usage of pci message signal interrupt 551c57e86dSErich Chen** follow Randy.Danlup kindness suggestion cleanup this code 561a4f550aSNick Cheng** 1.20.00.14 05/02/2007 Erich Chen & Nick Cheng 571a4f550aSNick Cheng** 1.implement PCI-Express error recovery function and AER capability 581a4f550aSNick Cheng** 2.implement the selection of ARCMSR_MAX_XFER_SECTORS_B=4096 591a4f550aSNick Cheng** if firmware version is newer than 1.42 601a4f550aSNick Cheng** 3.modify arcmsr_iop_reset to improve the ability 611a4f550aSNick Cheng** 4.modify the ISR, arcmsr_interrupt routine,to prevent the 621a4f550aSNick Cheng** inconsistency with sg_mod driver if application directly calls 631a4f550aSNick Cheng** the arcmsr driver w/o passing through scsi mid layer 641a4f550aSNick Cheng** specially thanks to Yanmin Zhang's openhanded help about AER 651a4f550aSNick Cheng** 1.20.00.15 08/30/2007 Erich Chen & Nick Cheng 661a4f550aSNick Cheng** 1. support ARC1200/1201/1202 SATA RAID adapter, which is named 671a4f550aSNick Cheng** ACB_ADAPTER_TYPE_B 681a4f550aSNick Cheng** 2. modify the arcmsr_pci_slot_reset function 691a4f550aSNick Cheng** 3. modify the arcmsr_pci_ers_disconnect_forepart function 701a4f550aSNick Cheng** 4. modify the arcmsr_pci_ers_need_reset_forepart function 7176d78300SNick Cheng** 1.20.00.15 09/27/2007 Erich Chen & Nick Cheng 7276d78300SNick Cheng** 1. add arcmsr_enable_eoi_mode() on adapter Type B 7376d78300SNick Cheng** 2. add readl(reg->iop2drv_doorbell_reg) in arcmsr_handle_hbb_isr() 7476d78300SNick Cheng** in case of the doorbell interrupt clearance is cached 7576d78300SNick Cheng** 1.20.00.15 10/01/2007 Erich Chen & Nick Cheng 7676d78300SNick Cheng** 1. modify acb->devstate[i][j] 7776d78300SNick Cheng** as ARECA_RAID_GOOD instead of 7876d78300SNick Cheng** ARECA_RAID_GONE in arcmsr_alloc_ccb_pool 7976d78300SNick Cheng** 1.20.00.15 11/06/2007 Erich Chen & Nick Cheng 8076d78300SNick Cheng** 1. add conditional declaration for 8176d78300SNick Cheng** arcmsr_pci_error_detected() and 8276d78300SNick Cheng** arcmsr_pci_slot_reset 8376d78300SNick Cheng** 1.20.00.15 11/23/2007 Erich Chen & Nick Cheng 8476d78300SNick Cheng** 1.check if the sg list member number 8576d78300SNick Cheng** exceeds arcmsr default limit in arcmsr_build_ccb() 8676d78300SNick Cheng** 2.change the returned value type of arcmsr_build_ccb() 8776d78300SNick Cheng** from "void" to "int" 8876d78300SNick Cheng** 3.add the conditional check if arcmsr_build_ccb() 8976d78300SNick Cheng** returns FAILED 9076d78300SNick Cheng** 1.20.00.15 12/04/2007 Erich Chen & Nick Cheng 9176d78300SNick Cheng** 1. modify arcmsr_drain_donequeue() to ignore unknown 9276d78300SNick Cheng** command and let kernel process command timeout. 9376d78300SNick Cheng** This could handle IO request violating max. segments 9476d78300SNick Cheng** while Linux XFS over DM-CRYPT. 9576d78300SNick Cheng** Thanks to Milan Broz's comments <mbroz@redhat.com> 9676d78300SNick Cheng** 1.20.00.15 12/24/2007 Erich Chen & Nick Cheng 9776d78300SNick Cheng** 1.fix the portability problems 9876d78300SNick Cheng** 2.fix type B where we should _not_ iounmap() acb->pmu; 9976d78300SNick Cheng** it's not ioremapped. 10076d78300SNick Cheng** 3.add return -ENOMEM if ioremap() fails 10176d78300SNick Cheng** 4.transfer IS_SG64_ADDR w/ cpu_to_le32() 10276d78300SNick Cheng** in arcmsr_build_ccb 10376d78300SNick Cheng** 5. modify acb->devstate[i][j] as ARECA_RAID_GONE instead of 10476d78300SNick Cheng** ARECA_RAID_GOOD in arcmsr_alloc_ccb_pool() 10576d78300SNick Cheng** 6.fix arcmsr_cdb->Context as (unsigned long)arcmsr_cdb 10676d78300SNick Cheng** 7.add the checking state of 10776d78300SNick Cheng** (outbound_intstatus & ARCMSR_MU_OUTBOUND_HANDLE_INT) == 0 10876d78300SNick Cheng** in arcmsr_handle_hba_isr 10976d78300SNick Cheng** 8.replace pci_alloc_consistent()/pci_free_consistent() with kmalloc()/kfree() in arcmsr_iop_message_xfer() 11076d78300SNick Cheng** 9. fix the release of dma memory for type B in arcmsr_free_ccb_pool() 11176d78300SNick Cheng** 10.fix the arcmsr_polling_hbb_ccbdone() 112*ba1cb461SNick Cheng** 1.20.00.15 02/27/2008 Erich Chen & Nick Cheng 113*ba1cb461SNick Cheng** 1.arcmsr_iop_message_xfer() is called from atomic context under the 114*ba1cb461SNick Cheng** queuecommand scsi_host_template handler. James Bottomley pointed out 115*ba1cb461SNick Cheng** that the current GFP_KERNEL|GFP_DMA flags are wrong: firstly we are in 116*ba1cb461SNick Cheng** atomic context, secondly this memory is not used for DMA. 117*ba1cb461SNick Cheng** Also removed some unneeded casts. Thanks to Daniel Drake <dsd@gentoo.org> 1181c57e86dSErich Chen************************************************************************** 119