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