RE: SET_BLOCK_COUNT-bounded multiblock transfers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>-----Original Message-----
>From: linux-mmc-owner@xxxxxxxxxxxxxxx
>[mailto:linux-mmc-owner@xxxxxxxxxxxxxxx] On Behalf Of Andrei Warkentin
>Sent: Thursday, April 14, 2011 8:04 AM
>To: linux-mmc@xxxxxxxxxxxxxxx
>Cc: arnd@xxxxxxxx; cjb@xxxxxxxxxx; Gao, Yunpeng
>Subject: Re: SET_BLOCK_COUNT-bounded multiblock transfers
>
>On Wed, Apr 13, 2011 at 7:38 PM, Andrei Warkentin
><andreiw@xxxxxxxxxxxx> wrote:
>> This is a request for comments for a patch set that enables
>> predefined multiblock transfers if these are supported.
>>
>> Before this patch set, all multiblock transfers look like (for example)
>>
>> CMD25 -> [block] [block] [block] [block] -> CMD12 (stop)
>>
>> ...or for controllers with Auto-CMD12
>>
>> CMD25 -> [block] [block] [block] [block] (host sends CMD12 itself).
>>
>> We want to enable -
>>
>> CMD23(4 blocks) CMD25 [data] [data] [data] [data]
>>
>> ...and for controllers with Auto-CMD23 -
>>
>> (Host sends CMD23(4 blocks)) CMD25 [data] [data] [data] [data]
>>
>> The interrupt overhead is the same, but for cards that optimize for
>predefined transfers
>> we can see better transfer rates. I've tested this on a Sandisk eMMC where I
>saw as good as
>> a 50% improvement on writes, and on a Toshiba eMMC where I saw no
>improvement at all. Also,
>> reliable writes use CMD23, so this cleans up that code path as well. Note,
>that if a transfer
>> fails, CMD12 must still be sent, so it is not sufficient to just not fill the
>mrq->stop field
>> while doing a CMD23-enabled transfer. Due to this error handling and
>off-loads of Auto-CMD23
>> (and interaction with Auto-CMD12) handling of SET_BLOCK_COUNT, just like
>STOP, is left to the host driver.
>> Host driver now exposes MMC_CAP_CMD23 if it has been changed to
>handle the new "sbc" field in struct mmc_request.
>> If a host doesn't expose this capability, open-ended transfers are used, and
>all functionality
>> relying on CMD23 (such as reliable writes) is disabled.
>>
>> The third patch has been only tested on SD cards that don't expose CMD23.
>Still need to get an SDXC
>> card and test it out, but I wanted to get eyes on this patch set anyway :-).
>>
>> I had a fourth patch enabling Auto-CMD23 for SDHCI, but I'll hold off until I
>can verify it.
>>
>> Thoughts?
>>
>> Table of Contents:
>> [RFC 1/3] MMC: use CMD23 for multiblock transfers when we can.
>> [RFC 2/3] MMC: Implement MMC_CAP_CMD23 for SDHCI.
>> [RFC 3/3] MMC: Block CMD23 support for UHS104/SDXC cards.
>>
>> A
>>
>
>+ Yunpeng

Thanks for add me in the loop. I'm fine with the 3 patches.

And just think that maybe it's not necessary to enable the Auto-CMD23 for SDHCI,
because I have an impression that some Silicon bugs related to Auto-CMD12/Auto-CMD23
existed in some vendor's SDHCI host controller IP, and I'm not sure they have been fixed or not by now.

Regards,
Yunpeng

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux