Hi Wolfram-san, > From: Wolfram Sang, Sent: Friday, June 12, 2020 5:33 AM > > Hi, > > On Thu, May 21, 2020 at 04:01:04PM +0900, Yoshihiro Shimoda wrote: <snip> > > diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h > > index b4cf101..0a4f365 100644 > > --- a/drivers/mmc/host/tmio_mmc.h > > +++ b/drivers/mmc/host/tmio_mmc.h > > @@ -118,6 +118,9 @@ struct tmio_mmc_dma_ops { > > void (*release)(struct tmio_mmc_host *host); > > void (*abort)(struct tmio_mmc_host *host); > > void (*dataend)(struct tmio_mmc_host *host); > > + > > + /* optional */ > > + void (*end)(struct tmio_mmc_host *host); /* held host->lock */ > > Okay, the good news is that I can reproduce the error case. I also get a > growing list in /sys/kernel/debug/dma-api/dump. Good news! > However, here, the list does not grow at the same rate as the fake > timeouts are injected. So, it doesn't look like the unmapping is missed > every time but only occasionally, so this seems like a race somewhere? > > And if that is true, I wonder if we couldn't fix the current error paths > instead of adding another callback? > > Or do you get a missed unmap for every timeout, Shimoda-san? No, I got. So, I investigate why, and then it found the injected timeout happened on CMD13 didn't cause a missed unmap because the command didn't map any buffer (host->dma_on == false). JFYI, my debug patch and log messages are pasted below: --- diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c index 15e21894bd44..8c306597a105 100644 --- a/drivers/mmc/host/renesas_sdhi_core.c +++ b/drivers/mmc/host/renesas_sdhi_core.c @@ -664,6 +664,12 @@ static int renesas_sdhi_wait_idle(struct tmio_mmc_host *host, u32 bit) if (!timeout) { dev_warn(&host->pdev->dev, "timeout waiting for SD bus idle\n"); + dev_warn(&host->pdev->dev, + "debug=%d timeout=%d no_dma=%d real=%d both=%d map=%d unmap=%d\n", + host->debug, host->debug_timeout, + host->debug_timeout_no_dma, + host->debug_real_timeout, host->debug_both_timeout, + host->debug_map, host->debug_unmap); return -EBUSY; } diff --git a/drivers/mmc/host/renesas_sdhi_internal_dmac.c b/drivers/mmc/host/renesas_sdhi_internal_dmac.c index 47ac53e91241..af16ff3b0868 100644 --- a/drivers/mmc/host/renesas_sdhi_internal_dmac.c +++ b/drivers/mmc/host/renesas_sdhi_internal_dmac.c @@ -208,6 +208,7 @@ renesas_sdhi_internal_dmac_start_dma(struct tmio_mmc_host *host, sg_dma_address(sg)); host->dma_on = true; + host->debug_map++; return; @@ -246,6 +247,7 @@ static void renesas_sdhi_internal_dmac_complete_tasklet_fn(unsigned long arg) renesas_sdhi_internal_dmac_enable_dma(host, false); dma_unmap_sg(&host->pdev->dev, host->sg_ptr, host->sg_len, dir); + host->debug_unmap++; if (dir == DMA_FROM_DEVICE) clear_bit(SDHI_INTERNAL_DMAC_RX_IN_USE, &global_flags); diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h index b4cf10109162..ee950e453a26 100644 --- a/drivers/mmc/host/tmio_mmc.h +++ b/drivers/mmc/host/tmio_mmc.h @@ -189,6 +189,13 @@ struct tmio_mmc_host { void (*hs400_complete)(struct tmio_mmc_host *host); const struct tmio_mmc_dma_ops *dma_ops; + int debug; + int debug_timeout; + int debug_real_timeout; + int debug_both_timeout; + int debug_timeout_no_dma; + int debug_map; + int debug_unmap; }; struct tmio_mmc_host *tmio_mmc_host_alloc(struct platform_device *pdev, diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c index d7fde57c78c1..e5aebd44b0c7 100644 --- a/drivers/mmc/host/tmio_mmc_core.c +++ b/drivers/mmc/host/tmio_mmc_core.c @@ -546,8 +546,19 @@ static void tmio_mmc_cmd_irq(struct tmio_mmc_host *host, unsigned int stat) cmd->resp[0] = cmd->resp[3]; } - if (stat & TMIO_STAT_CMDTIMEOUT) + host->debug++; + if (stat & TMIO_STAT_CMDTIMEOUT || !(host->debug & 0xff)) { cmd->error = -ETIMEDOUT; + if (stat & TMIO_STAT_CMDTIMEOUT) + host->debug_real_timeout++; + if (!(host->debug & 0xff)) { + host->debug_timeout++; + if (!host->dma_on) + host->debug_timeout_no_dma++; + } + if (stat & TMIO_STAT_CMDTIMEOUT && !(host->debug & 0xff)) + host->debug_both_timeout++; + } else if ((stat & TMIO_STAT_CRCFAIL && cmd->flags & MMC_RSP_CRC) || stat & TMIO_STAT_STOPBIT_ERR || stat & TMIO_STAT_CMD_IDX_ERR) @@ -797,6 +808,8 @@ static void tmio_mmc_finish_request(struct tmio_mmc_host *host) spin_lock_irqsave(&host->lock, flags); + host->dma_on = false; + mrq = host->mrq; if (IS_ERR_OR_NULL(mrq)) { spin_unlock_irqrestore(&host->lock, flags); -- 2.17.1 --- ~ # dmesg | grep mmc [ 3.674229] renesas_sdhi_internal_dmac ee100000.sd: mmc0 base at 0x00000000ee100000, max clock rate 200 MHz [ 3.742939] renesas_sdhi_internal_dmac ee140000.sd: mmc1 base at 0x00000000ee140000, max clock rate 200 MHz [ 3.822470] renesas_sdhi_internal_dmac ee160000.sd: mmc2 base at 0x00000000ee160000, max clock rate 200 MHz [ 3.922265] mmc1: new HS400 MMC card at address 0001 [ 3.927919] mmcblk1: mmc1:0001 BGSD3R 29.1 GiB [ 3.932705] mmcblk1boot0: mmc1:0001 BGSD3R partition 1 16.0 MiB [ 3.946713] mmcblk1boot1: mmc1:0001 BGSD3R partition 2 16.0 MiB [ 3.961567] mmcblk1rpmb: mmc1:0001 BGSD3R partition 3 4.00 MiB, chardev (243:0) [ 3.984810] mmcblk1: p1 [ 4.007834] mmc0: new ultra high speed SDR104 SDHC card at address aaaa [ 4.015030] mmcblk0: mmc0:aaaa SL32G 29.7 GiB [ 4.051127] mmcblk0: p1 ~ # ~ # cat /sys/kernel/debug/dma-api/dump | grep sd ~ # ~ # dd if=/dev/mmcblk0 of=/dev/null bs=8k count=1k & ~ # [ 86.183589] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 86.191318] renesas_sdhi_internal_dmac ee100000.sd: debug=256 timeout=1 no_dma=0 real=6 both=0 map=111 unmap=110 [ 86.202819] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 86.210483] renesas_sdhi_internal_dmac ee100000.sd: debug=256 timeout=1 no_dma=0 real=6 both=0 map=111 unmap=110 [ 86.221984] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 86.229650] renesas_sdhi_internal_dmac ee100000.sd: debug=256 timeout=1 no_dma=0 real=6 both=0 map=111 unmap=110 [ 86.241237] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 86.248999] renesas_sdhi_internal_dmac ee100000.sd: debug=256 timeout=1 no_dma=0 real=6 both=0 map=111 unmap=110 [ 86.260589] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 86.268274] renesas_sdhi_internal_dmac ee100000.sd: debug=256 timeout=1 no_dma=0 real=6 both=0 map=111 unmap=110 [ 91.356599] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 91.482031] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 91.489717] renesas_sdhi_internal_dmac ee100000.sd: debug=768 timeout=3 no_dma=1 real=6 both=0 map=365 unmap=363 [ 91.501336] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 91.509055] renesas_sdhi_internal_dmac ee100000.sd: debug=768 timeout=3 no_dma=1 real=6 both=0 map=365 unmap=363 [ 91.520577] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 91.528313] renesas_sdhi_internal_dmac ee100000.sd: debug=768 timeout=3 no_dma=1 real=6 both=0 map=365 unmap=363 [ 91.539817] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 91.547483] renesas_sdhi_internal_dmac ee100000.sd: debug=768 timeout=3 no_dma=1 real=6 both=0 map=365 unmap=363 [ 91.559009] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 91.566686] renesas_sdhi_internal_dmac ee100000.sd: debug=768 timeout=3 no_dma=1 real=6 both=0 map=365 unmap=363 [ 96.732560] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 96.803665] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 96.811419] renesas_sdhi_internal_dmac ee100000.sd: debug=1024 timeout=4 no_dma=1 real=12 both=0 map=489 unmap=486 [ 96.823096] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 96.830760] renesas_sdhi_internal_dmac ee100000.sd: debug=1024 timeout=4 no_dma=1 real=12 both=0 map=489 unmap=486 [ 96.842434] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 96.850097] renesas_sdhi_internal_dmac ee100000.sd: debug=1024 timeout=4 no_dma=1 real=12 both=0 map=489 unmap=486 [ 96.861787] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 96.869488] renesas_sdhi_internal_dmac ee100000.sd: debug=1024 timeout=4 no_dma=1 real=12 both=0 map=489 unmap=486 [ 96.881278] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 96.888971] renesas_sdhi_internal_dmac ee100000.sd: debug=1024 timeout=4 no_dma=1 real=12 both=0 map=489 unmap=486 [ 102.108592] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 102.207529] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 102.215309] renesas_sdhi_internal_dmac ee100000.sd: debug=1536 timeout=6 no_dma=2 real=12 both=0 map=744 unmap=740 [ 102.226986] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 102.234652] renesas_sdhi_internal_dmac ee100000.sd: debug=1536 timeout=6 no_dma=2 real=12 both=0 map=744 unmap=740 [ 102.246325] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 102.254052] renesas_sdhi_internal_dmac ee100000.sd: debug=1536 timeout=6 no_dma=2 real=12 both=0 map=744 unmap=740 [ 102.265841] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 102.273508] renesas_sdhi_internal_dmac ee100000.sd: debug=1536 timeout=6 no_dma=2 real=12 both=0 map=744 unmap=740 [ 102.285259] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 102.292944] renesas_sdhi_internal_dmac ee100000.sd: debug=1536 timeout=6 no_dma=2 real=12 both=0 map=744 unmap=740 --> This means: - injected timeout happened 6 times -- in this case, dma_on = false was observed 2 times. ---> So, leaking unmap happened 4 times. - The numbers of "map" and "unmap" also indicated that leaking unmap happened 4 times. [ 107.484619] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) 1024+0 records in 1024+0 records out 8388608 bytes (8.0MB) copied, 21.460091 seconds, 381.7KB/s [1]+ Done dd if=/dev/mmcblk0 of=/dev/null bs=8k count=1k ~ # ~ # ~ # cat /sys/kernel/debug/dma-api/dump | grep sd | wc 4 64 612 --> DMA_API_DEBUG debugfs also had "4" ~ # ~ # ~ # ~ # dd if=/dev/mmcblk0 of=/dev/null bs=8k count=1k & ~ # [ 120.528606] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 120.536283] renesas_sdhi_internal_dmac ee100000.sd: debug=2048 timeout=8 no_dma=3 real=12 both=0 map=999 unmap=994 [ 120.547958] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 120.555621] renesas_sdhi_internal_dmac ee100000.sd: debug=2048 timeout=8 no_dma=3 real=12 both=0 map=999 unmap=994 [ 120.567294] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 120.574957] renesas_sdhi_internal_dmac ee100000.sd: debug=2048 timeout=8 no_dma=3 real=12 both=0 map=999 unmap=994 [ 120.586702] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 120.594375] renesas_sdhi_internal_dmac ee100000.sd: debug=2048 timeout=8 no_dma=3 real=12 both=0 map=999 unmap=994 [ 120.606101] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 120.613774] renesas_sdhi_internal_dmac ee100000.sd: debug=2048 timeout=8 no_dma=3 real=12 both=0 map=999 unmap=994 [ 125.660558] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 125.743798] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 125.751549] renesas_sdhi_internal_dmac ee100000.sd: debug=2304 timeout=9 no_dma=3 real=18 both=0 map=1123 unmap=1117 [ 125.763400] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 125.771067] renesas_sdhi_internal_dmac ee100000.sd: debug=2304 timeout=9 no_dma=3 real=18 both=0 map=1123 unmap=1117 [ 125.782985] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 125.790658] renesas_sdhi_internal_dmac ee100000.sd: debug=2304 timeout=9 no_dma=3 real=18 both=0 map=1123 unmap=1117 [ 125.802610] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 125.810278] renesas_sdhi_internal_dmac ee100000.sd: debug=2304 timeout=9 no_dma=3 real=18 both=0 map=1123 unmap=1117 [ 125.822148] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 125.829825] renesas_sdhi_internal_dmac ee100000.sd: debug=2304 timeout=9 no_dma=3 real=18 both=0 map=1123 unmap=1117 [ 131.036560] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 131.176918] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 131.184601] renesas_sdhi_internal_dmac ee100000.sd: debug=2816 timeout=11 no_dma=4 real=18 both=0 map=1377 unmap=1370 [ 131.196557] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 131.204385] renesas_sdhi_internal_dmac ee100000.sd: debug=2816 timeout=11 no_dma=4 real=18 both=0 map=1377 unmap=1370 [ 131.216491] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 131.224161] renesas_sdhi_internal_dmac ee100000.sd: debug=2816 timeout=11 no_dma=4 real=18 both=0 map=1377 unmap=1370 [ 131.236096] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 131.243763] renesas_sdhi_internal_dmac ee100000.sd: debug=2816 timeout=11 no_dma=4 real=18 both=0 map=1377 unmap=1370 [ 131.255738] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 131.263446] renesas_sdhi_internal_dmac ee100000.sd: debug=2816 timeout=11 no_dma=4 real=18 both=0 map=1377 unmap=1370 --> 7 times [ 136.412594] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) 1024+0 records in 1024+0 records out 8388608 bytes (8.0MB) copied, 15.988695 seconds, 512.4KB/s [1]+ Done dd if=/dev/mmcblk0 of=/dev/null bs=8k count=1k ~ # ~ # ~ # cat /sys/kernel/debug/dma-api/dump | grep sd | wc [K 7 112 1072 --> 7 times ~ # dd if=/dev/mmcblk0 of=/dev/null bs=8k count=1k & ~ # [ 153.454690] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 153.462430] renesas_sdhi_internal_dmac ee100000.sd: debug=3328 timeout=13 no_dma=5 real=18 both=0 map=1632 unmap=1624 [ 153.474369] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 153.482037] renesas_sdhi_internal_dmac ee100000.sd: debug=3328 timeout=13 no_dma=5 real=18 both=0 map=1632 unmap=1624 [ 153.493970] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 153.501635] renesas_sdhi_internal_dmac ee100000.sd: debug=3328 timeout=13 no_dma=5 real=18 both=0 map=1632 unmap=1624 [ 153.513586] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 153.521403] renesas_sdhi_internal_dmac ee100000.sd: debug=3328 timeout=13 no_dma=5 real=18 both=0 map=1632 unmap=1624 [ 153.533388] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 153.541056] renesas_sdhi_internal_dmac ee100000.sd: debug=3328 timeout=13 no_dma=5 real=18 both=0 map=1632 unmap=1624 [ 158.684563] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 158.773970] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 158.781827] renesas_sdhi_internal_dmac ee100000.sd: debug=3584 timeout=14 no_dma=5 real=24 both=0 map=1756 unmap=1747 [ 158.793798] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 158.801524] renesas_sdhi_internal_dmac ee100000.sd: debug=3584 timeout=14 no_dma=5 real=24 both=0 map=1756 unmap=1747 [ 158.813478] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 158.821146] renesas_sdhi_internal_dmac ee100000.sd: debug=3584 timeout=14 no_dma=5 real=24 both=0 map=1756 unmap=1747 [ 158.833090] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 158.840824] renesas_sdhi_internal_dmac ee100000.sd: debug=3584 timeout=14 no_dma=5 real=24 both=0 map=1756 unmap=1747 [ 158.852816] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 158.860488] renesas_sdhi_internal_dmac ee100000.sd: debug=3584 timeout=14 no_dma=5 real=24 both=0 map=1756 unmap=1747 [ 164.060563] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 164.154898] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 164.162672] renesas_sdhi_internal_dmac ee100000.sd: debug=4096 timeout=16 no_dma=6 real=24 both=0 map=2010 unmap=2000 [ 164.174607] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 164.182272] renesas_sdhi_internal_dmac ee100000.sd: debug=4096 timeout=16 no_dma=6 real=24 both=0 map=2010 unmap=2000 [ 164.194273] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 164.201950] renesas_sdhi_internal_dmac ee100000.sd: debug=4096 timeout=16 no_dma=6 real=24 both=0 map=2010 unmap=2000 [ 164.213979] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 164.221648] renesas_sdhi_internal_dmac ee100000.sd: debug=4096 timeout=16 no_dma=6 real=24 both=0 map=2010 unmap=2000 [ 164.233625] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 164.241295] renesas_sdhi_internal_dmac ee100000.sd: debug=4096 timeout=16 no_dma=6 real=24 both=0 map=2010 unmap=2000 [ 169.436561] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) [ 169.502256] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 169.510040] renesas_sdhi_internal_dmac ee100000.sd: debug=4352 timeout=17 no_dma=6 real=30 both=0 map=2134 unmap=2123 [ 169.521978] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 169.529645] renesas_sdhi_internal_dmac ee100000.sd: debug=4352 timeout=17 no_dma=6 real=30 both=0 map=2134 unmap=2123 [ 169.541597] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 169.549352] renesas_sdhi_internal_dmac ee100000.sd: debug=4352 timeout=17 no_dma=6 real=30 both=0 map=2134 unmap=2123 [ 169.561374] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 169.569137] renesas_sdhi_internal_dmac ee100000.sd: debug=4352 timeout=17 no_dma=6 real=30 both=0 map=2134 unmap=2123 [ 169.581142] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for SD bus idle [ 169.588833] renesas_sdhi_internal_dmac ee100000.sd: debug=4352 timeout=17 no_dma=6 real=30 both=0 map=2134 unmap=2123 --> 11 times [ 174.812597] renesas_sdhi_internal_dmac ee100000.sd: timeout waiting for hardware interrupt (CMD13) 1024+0 records in 1024+0 records out 8388608 bytes (8.0MB) copied, 21.521918 seconds, 380.6KB/s [1]+ Done dd if=/dev/mmcblk0 of=/dev/null bs=8k count=1k ~ # ~ # cat /sys/kernel/debug/dma-api/dump | grep sd | wc 11 176 1688 --> 11 times Best regards, Yoshihiro Shimoda