Re: [PATCH v3] mmc: sdhci-msm: Add pm_runtime and system PM support
From: Pramod Gurav
Date: Thu Sep 15 2016 - 03:59:19 EST
On 9 September 2016 at 15:48, Georgi Djakov <georgi.djakov@xxxxxxxxxx> wrote:
> On 09/08/2016 11:02 AM, Adrian Hunter wrote:
>>
>> On 01/09/16 17:23, Pramod Gurav wrote:
>>>
>>> Provides runtime PM callbacks to enable and disable clock resources
>>> when idle. Also support system PM callbacks to be called during system
>>> suspend and resume.
>>>
>>> Signed-off-by: Pramod Gurav <pramod.gurav@xxxxxxxxxx>
>>
>>
>> Can we get some Tested/Reviewed/Acked-by from people using this driver?
>>
>
> Hi Pramod,
> Thanks for the patch. Unfortunately, my db410c board fails to
> boot when i apply it.
>
Thanks Georgi for testing the patch. Its my wrong I did not update my
kernel and continued fixing comments on old kernel.
After spending some time I came to know that below change is causing the issue:
Author: Dong Aisheng <aisheng.dong@xxxxxxx>
Date: Tue Jul 12 15:46:17 2016 +0800
mmc: sdhci: add standard hw auto retuning support
If HW supports SDHCI_TUNING_MODE_3 which is auto retuning, we won't
retune during runtime suspend and resume, instead we use Re-tuning
Request signaled via SDHCI_INT_RETUNE interrupt to do retuning and
hw auto retuning during data transfer to guarantee the signal sample
window correction.
This can avoid a mass of repeatedly retuning during small file system
data access and improve the performance.
Specially these lines that was added to suspend path:
+ if (host->tuning_mode != SDHCI_TUNING_MODE_3)
+ mmc_retune_needed(host->mmc);
During sdhci setup in msm driver, the host returns the values to set
sdhci auto tuning as supported.
Hence host->tuning_mode is set to SDHCI_TUNING_MODE_3 during setup.
But some how the auto tuning is not happening.
Just to verify my case, I removed the 'if' part in above code and got
the FS mounted.
Is there anything else needed in msm sdhci driver so that the auto
tuning is taken care of?
> [ 1.778433] mmc0: new HS200 MMC card at address 0001
> [ 1.783115] mmcblk0: mmc0:0001 DS2008 7.28 GiB
> [ 1.783337] mmcblk0boot0: mmc0:0001 DS2008 partition 1 4.00 MiB
> [ 1.787025] mmcblk0boot1: mmc0:0001 DS2008 partition 2 4.00 MiB
> [ 1.792893] mmcblk0rpmb: mmc0:0001 DS2008 partition 3 4.00 MiB
> [ 1.802603] mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10
> [ 2.693631] blk_update_request: I/O error, dev mmcblk0, sector 462880
> [ 2.710381] blk_update_request: I/O error, dev mmcblk0, sector 462880
> [ 2.710443] Buffer I/O error on dev mmcblk0p10, logical block 0, async
> page read
> [ 2.724827] blk_update_request: I/O error, dev mmcblk0, sector 462881
> [ 2.724853] Buffer I/O error on dev mmcblk0p10, logical block 1, async
> page read
> ...
>
> More I/O errors are following and it is unable to mount the rootfs from
> the eMMC. When i retried booting, got also the following:
>
> [ 2.877149] mmcblk0: error -110 sending status command, retrying
> [ 2.879408] mmcblk0: error -110 sending status command, retrying
> [ 2.884436] mmcblk0: error -110 sending status command, aborting
> [ 2.896826] mmc0: cache flush error -110
>
> BR,
> Georgi