Erich Chen | 1c57e86 | 2006-07-12 08:59:32 -0700 | [diff] [blame] | 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 |
Nick Cheng | 1a4f550 | 2007-09-13 17:26:40 +0800 | [diff] [blame] | 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 |
Nick Cheng | 76d7830 | 2008-02-04 23:53:24 -0800 | [diff] [blame] | 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() |
Nick Cheng | ba1cb46 | 2008-02-27 16:22:03 +0800 | [diff] [blame] | 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> |
Nick Cheng | 1a4f550 | 2007-09-13 17:26:40 +0800 | [diff] [blame] | 118 | ************************************************************************** |