1. 05 9月, 2012 1 次提交
  2. 11 7月, 2012 1 次提交
    • S
      mmc: block: replace __blk_end_request() with blk_end_request() · ecf8b5d0
      Subhash Jadavani 提交于
      For completing any block request, MMC block driver is calling:
      	spin_lock_irq(queue)
      	__blk_end_request()
      	spin_unlock_irq(queue)
      
      But if we analyze the sources of latency in kernel using ftrace,
      __blk_end_request() function at times may take up to 6.5ms with
      spinlock held and irq disabled.
      
      __blk_end_request() calls couple of functions and ftrace output
      shows that blk_update_bidi_request() function is almost taking 6ms.
      There are 2 function to end the current request: ___blk_end_request()
      and blk_end_request(). Both these functions do same thing except
      that blk_end_request() function doesn't take up the spinlock
      while calling the blk_update_bidi_request().
      
      This patch replaces all __blk_end_request() calls with
      blk_end_request() and __blk_end_request_all() calls with
      blk_end_request_all().
      
      Testing done: 20 process concurrent read/write on sd card
      and eMMC. Ran this test for almost a day on multicore system
      and no errors observed.
      
      This change is not meant for improving MMC throughput; it's basically
      about becoming fair to other threads/interrupts in the system. By
      holding spin lock and interrupts disabled for longer duration, we
      won't allow other threads/interrupts to run at all.  Actually slight
      performance degradation at file system level can be expected as we
      are not holding the spin lock during blk_update_bidi_request() which
      means our mmcqd thread may get preempted for other high priority
      thread or any interrupt in the system.
      
      These are performance numbers (100MB file write) with eMMC running
      in DDR mode:
      
      Without this patch:
      	Name of the Test   Value   Unit
      	LMDD Read Test     53.79   MBPS
      	LMDD Write Test    18.86   MBPS
      	IOZONE  Read Test  51.65   MBPS
      	IOZONE  Write Test 24.36   MBPS
      
      With this patch:
      	Name of the Test    Value  Unit
      	LMDD Read Test      52.94  MBPS
      	LMDD Write Test     16.70  MBPS
      	IOZONE  Read Test   52.08  MBPS
      	IOZONE  Write Test  23.29  MBPS
      
      Read numbers are fine. Write numbers are bit down (especially LMDD
      write), may be because write requests normally have large transfer
      size and which means there are chances that while mmcq is executing
      blk_update_bidi_request(), it may get interrupted by interrupts or
      other high priority thread.
      Signed-off-by: NSubhash Jadavani <subhashj@codeaurora.org>
      Reviewed-by: NNamjae Jeon <linkinjeon@gmail.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      ecf8b5d0
  3. 27 6月, 2012 1 次提交
    • S
      mmc: block: fix the data timeout issue with ACMD22 · d380443c
      Subhash Jadavani 提交于
      If multi block write operation fails for SD card, during
      error handling we send the SD_APP_SEND_NUM_WR_BLKS (ACMD22)
      to know how many blocks were already programmed by card.
      
      But mmc_sd_num_wr_blocks() function which sends the ACMD22
      calculates the data timeout value from csd.tacc_ns and
      csd.tacc_clks parameters which will be 0 for block addressed
      (>2GB cards) SD card. This would result in timeout_ns and
      timeout_clks being 0 in the mmc_request passed to host driver.
      This means host controller would program its data timeout timer
      value with 0 which could result in DATA TIMEOUT errors from
      controller.
      
      To fix this issue, mmc_sd_num_wr_blocks() should instead
      just call the mmc_set_data_timeout() to calculate the
      data timeout value. mmc_set_data_timeout() function
      ensures that non zero timeout value is set even for
      block addressed SD cards.
      Signed-off-by: NSubhash Jadavani <subhashj@codeaurora.org>
      Reviewed-by: NVenkatraman S <svenkatr@ti.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      d380443c
  4. 17 5月, 2012 1 次提交
  5. 10 5月, 2012 1 次提交
  6. 21 4月, 2012 2 次提交
  7. 06 4月, 2012 1 次提交
  8. 29 3月, 2012 1 次提交
  9. 26 3月, 2012 1 次提交
  10. 21 3月, 2012 1 次提交
  11. 14 2月, 2012 1 次提交
  12. 12 1月, 2012 4 次提交
  13. 11 12月, 2011 1 次提交
  14. 27 10月, 2011 10 次提交
  15. 23 8月, 2011 1 次提交
  16. 21 7月, 2011 8 次提交
  17. 26 6月, 2011 2 次提交
  18. 26 5月, 2011 2 次提交