On Wed, 11 Mar 2020 at 01:19, Sowjanya Komatineni skomatineni@nvidia.com wrote:
On 3/10/20 4:10 PM, Sowjanya Komatineni wrote:
On 3/10/20 2:59 PM, Sowjanya Komatineni wrote:
On 3/10/20 10:27 AM, Sowjanya Komatineni wrote:
On 3/10/20 10:09 AM, Ulf Hansson wrote:
External email: Use caution opening links or attachments
[...]
>>> I would like to get the regression fixed asap, but I also would >>> like >>> to avoid reverting patches, unless really necessary. May I >>> propose the >>> following two options. >>> >>> 1. Find out why polling with ->card_busy() or CMD13, for a CMD6 >>> with >>> an R1 response doesn't work - and then fix that behaviour. >>> >>> 2. Set the mmc->max_busy_timeout to zero for sdhci-tegra, which >>> makes >>> the core to always use R1B for CMD6 (and erase). This also >>> means that >>> when the cmd->busy_timeout becomes longer than 11s, sdhci-tegra >>> must >>> disable the HW busy timeout and just wait "forever". >>> >>> If you decide for 2, you can add the software timeout support >>> on top, >>> but make that can be considered as a next step of an improvement, >>> rather than needed as fix. Note that, I believe there are some >>> support >>> for software timeout already in the sdhci core, maybe you need to >>> tweak it a bit for your case, I don't know. >>> >>> Kind regards >>> Uffe >> Hi Uffe >> >> Will go with 2nd option and will send patches out when ready. > Okay, good. > >> BTW, Tegra host also supports >> SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK for >> data timeout based on host clock when using finite mode (HW busy >> detection based on DATA TIMEOUT count value when cmd operation >> timeout >> is < 11s for tegra host). >> >> So, looks like we cant set host max_busy_timeout to 0 for Tegra >> host to >> force R1B during SWITCH and SLEEP_AWAKE. >> >> So, was thinking to introduce host capability >> MMC_CAP2_LONG_WAIT_HW_BUSY >> which can be used for hosts supporting long or infinite HW busy >> wait >> detection and will update mmc and mmc_ops drivers to not allow >> convert >> R1B to R1B for hosts with this capability during SLEEP_AWAKE and >> SWITCH. > That seems reasonable, it becomes probably both easier and > clearer by > adding a new host cap. > > In any case, let me help out and cook a patch for this for the core > part (I leave the sdhci change to you). It may be a bit tricky, > especially since I have currently queued a bunch of new changes for > v5.7, that enables more users of mmc_poll_for_busy() in the core. > Maybe I need to temporarily drop them, so we can fix these problems > first. I will check. > > Probably, I would also name the cap MMC_CAP_HW_NEED_RSP_BUSY, as > that > seems to be describing the common problem we have for sdhci > omap/tegra. > > Finally, it seems like MMC_CAP_WAIT_WHILE_BUSY should be set for > sdhci- tegra, so while at it, perhaps you can cook a patch for > that as > well. > > Kind regards > Uffe OK, I sent v1 yesterday. Please ignore them then.
Oh, I haven't seen them. In any case, I am ignoring them.
Will send out patches only for HW busy wait modes program based on cmd timeout and WAIT_WHILE_BUSY enabled.
Great, thanks!
Please help test the series I just posted as well, if you have the time ofcourse.
Kind regards Uffe
Sure,
Thanks
Sowjanya
mmc_sleep() also needs update to force R1B when host sets capability MMC_CAP_NEED_RSP_BUSY
Yes, I am on it! Thanks!
Tested patches and they work good.
Great, I am adding your tested-by tag then.
Sent sdhci-tegra v2 patches
includes busy wait mode programming based on cmd busy_timeout
enables MMC_CAP_WAIT_WHILE_BUSY
Sounds great, but I don't see the patches on the mailing list, nor did they reach the mmc patchtracker.
Seems like you probably need to check your email settings when sending patches.
Kind regards Uffe