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