1. 09 2月, 2019 4 次提交
  2. 29 1月, 2019 11 次提交
  3. 09 1月, 2019 8 次提交
  4. 13 12月, 2018 3 次提交
  5. 16 11月, 2018 2 次提交
  6. 20 10月, 2018 1 次提交
  7. 16 10月, 2018 4 次提交
  8. 26 9月, 2018 1 次提交
  9. 20 7月, 2018 4 次提交
  10. 20 6月, 2018 2 次提交
    • J
      scsi: hisi_sas: Add missing PHY spinlock init · ce70c2e6
      John Garry 提交于
      The init is missed for hisi_sas_phy spinlock, so add it.
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      ce70c2e6
    • X
      scsi: hisi_sas: Pre-allocate slot DMA buffers · 2ba5afb6
      Xiang Chen 提交于
      Currently the driver spends much time allocating and freeing the slot DMA
      buffer for command delivery/completion. To boost the performance,
      pre-allocate the buffers for all IPTT. The downside of this approach is
      that we are reallocating all buffer memory upfront, so hog memory which we
      may not need.
      
      However, the current method - DMA buffer pool - also caches all buffers and
      does not free them until the pool is destroyed, so is not exactly efficient
      either.
      
      On top of this, since the slot DMA buffer is slightly bigger than a 4K
      page, we need to allocate 2x4K pages per buffer (for 4K page kernel), which
      is quite wasteful. For 64K page size this is not such an issue.
      
      So, for the 4K page case, in order to make memory usage more efficient,
      pre-allocating larger blocks of DMA memory for the buffers can be more
      efficient.
      
      To make DMA memory usage most efficient, we would choose a single
      contiguous DMA memory block, but this could use up all the DMA memory in
      the system (when CMA enabled and no IOMMU), or we may just not be able to
      allocate a DMA buffer large enough when no CMA or IOMMU.
      
      To decide the block size we use the LCM (least common multiple) of the
      buffer size and the page size. We roundup(64) to ensure the LCM is not too
      large, even though a little memory may be wasted per block.
      
      So, with this, the total memory requirement is about is about 17MB for 4096
      max IPTT.
      
      Previously (for 4K pages case), it would be 32MB (for all slots
      allocated).
      
      With this change, the relative increase of IOPS for bs=4K read when
      PAGE_SIZE=4K and PAGE_SIZE=64K is as follows:
          IODEPTH     4K PAGE_SIZE      64K PAGE_SIZE
          32          56%               47%
          64          53%               44%
          128         64%               43%
          256         67%               45%
      Signed-off-by: NXiang Chen <chenxiang66@hisilicon.com>
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      2ba5afb6