]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00219601-01: mmc: queue: enlarge the size of bounce buffer for SDMA.
authorRyan QIAN <b32804@freescale.com>
Thu, 2 Aug 2012 01:46:53 +0000 (09:46 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:17 +0000 (08:35 +0200)
- set bounce buffer to 512KB from 64K, which is hw max seg size for
fsl sd host controller
- by enlarging the size of bounce buffer, it will reduce the number
of irq on writing by merging small requests into a large one, which
will improve writing throughput.
- the side effect is that the reading throughput of 512KB bounce buffer
is lower than the one of 64KB bounce buffer, when cpu freq is at 200Mhz.

Test Env:
1. MX6DL SabreSD board
2. On board eMMC (Sandisk: SDIN5C2-8G) running at 8-bit DDR @ 52Mhz
3. Test commands:
  3.1 Writing test command:
  # dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=100 conv=fsync
  3.2 Reading test command:
  # echo 1 > /proc/sys/vm/drop_caches
  # echo 1 > /proc/sys/vm/drop_caches
  # sleep 1
  # dd if=/dev/mmcblk0 of=/dev/null bs=1M count=100

Performance result:
-------------------------------------------------------
| CPU freq | SDMA (512KB) | SDMA (64KB) |    ADMA     |
|----------+--------------+-------------+-------------|
|   1Ghz   |  ~10MB/s (w) | ~5MB/s (w)  | ~10MB/s (w) |
|          |  ~22MB/s (r) | ~23MB/s (r) | ~22MB/s (r) |
|----------+--------------+-------------+-------------|
|  200Mhz  |  ~8MB/s (w)  | ~4MB/s (w)  | ~8MB/s (w)  |
|          |  ~13MB/s (r) | ~16MB/s (r) | ~11MB/s (r) |
-------------------------------------------------------

Signed-off-by: Ryan QIAN <b32804@freescale.com>
drivers/mmc/card/queue.c

index 45fb362e3f013460fc951909dc72d13847530a1e..de1aaf9804437819ea1a75e505339823346ca4a7 100644 (file)
@@ -20,7 +20,7 @@
 #include <linux/mmc/host.h>
 #include "queue.h"
 
-#define MMC_QUEUE_BOUNCESZ     65536
+#define MMC_QUEUE_BOUNCESZ     (512 * 1024)
 
 #define MMC_QUEUE_SUSPENDED    (1 << 0)