Hi Chuanxiao,

I have a question from the review of your SW CMDQ driver code.

>From the eMMC5.1 spec, the  "ready for execution" for each task should be 
>cleared by the device only when the last data block has been fully transferred 
>over the eMMC bus. 

However, from the code, I can recognize the following suspected case:

1. Host sends CMD44/45 commands for TID#0
2. Host sends CMD13 (QSR)  -> returned TID#0 ready for execution
3. Host sends CMD46 for TID#0
4. During the data transfer, host may send CMD13 (QSR)  -> returned TID#0 ready 
for execution (which is true since data is still in transfer)
5. Host sends CMD46 for TID#0 (same as sent in bullet#3) - which is a problem.

Please advise if my assumption above is correct.

Thanks,
Alex


> -----Original Message-----
> From: linux-mmc-ow...@vger.kernel.org [mailto:linux-mmc-
> ow...@vger.kernel.org] On Behalf Of Chuanxiao Dong
> Sent: Friday, December 19, 2014 10:05 AM
> To: linux-mmc@vger.kernel.org
> Subject: [RFC PATCH 0/5]mmc: Soft Command queue implementation for
> eMMC5.1 device
> 
> Hello,
> 
> Seems community already have some implementation for the eMMC5.1 device
> command queue feature, but that require the eMMC host controller to support
> CMDQ. In my platform, I don't have this kind of eMMC host controller but I
> have a Samsung eMMC5.1 device which can support the Command queue.
> 
> With this limitation, I have to let eMMC host controller to manually send the
> CMD44/45/13/46/47. So in this way, more commands are needed for an I/O
> request, more interrupts/schedule are needed in driver.
> 
> Even this way have some more software overhead, but it can still use the
> eMMC5.1 device Command queue feature. After test with the iozone
> command:
> "iozone -zec -t 4 -i0 -i2 -F iozonefile1 iozonefile2 iozonefile3 iozonefile4 
> -+n -I -r
> 4k -s 500m -O -R -+r -+D" to test random performance, I saw a performance
> improvment for random read on my eMMC5.1 device:
> 
>               Random read
> SW CMDQ:      5544.6
> Normal Read:  3993.05
> 
> So I want to send this serial patches as RFC patch for reviewing
> 
> 
> Chuanxiao Dong (5):
>   mmc: replace sbc to precmd and add postcmd
>   mmc: host: add runtime PM for host class dev
>   mmc: queue: change mqrq_cur and mqrq_pre to mq qdepth
>   mmc: core: add support for CMDQ feature in MMC Core stack
>   mmc: sdhci: add SW CMDQ support for CHT SDHCI host
> 
>  drivers/mmc/card/block.c      |  538
> ++++++++++++++++++++++++++++++++++++++---
>  drivers/mmc/card/queue.c      |  213 ++++++++--------
>  drivers/mmc/card/queue.h      |   14 +-
>  drivers/mmc/core/core.c       |   78 +++++-
>  drivers/mmc/core/host.c       |   14 ++
>  drivers/mmc/core/mmc.c        |   43 +++-
>  drivers/mmc/host/dw_mmc.c     |    8 +-
>  drivers/mmc/host/mmci.c       |   14 +-
>  drivers/mmc/host/omap_hsmmc.c |   18 +-
>  drivers/mmc/host/sdhci-acpi.c |    1 -
>  drivers/mmc/host/sdhci-pci.c  |    1 -
>  drivers/mmc/host/sdhci.c      |  137 +++++++++--
>  include/linux/mmc/card.h      |    3 +
>  include/linux/mmc/core.h      |    5 +-
>  include/linux/mmc/host.h      |    5 +
>  include/linux/mmc/mmc.h       |   21 ++
>  include/linux/mmc/pm.h        |    1 +
>  include/linux/mmc/sdhci.h     |    1 +
>  18 files changed, 909 insertions(+), 206 deletions(-)
> 
> --
> 1.7.10.4
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the 
> body
> of a message to majord...@vger.kernel.org More majordomo info at
> http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to