On 2015/8/27 21:05, Ulf Hansson wrote:
> On 3 August 2015 at 14:39, Fu, Zhonghui <zhonghui...@linux.intel.com> wrote:
>> Enable mmc host device to suspend/resume asynchronously.
>> This can improve system suspend/resume speed.
> Can or will?
>
> It would be nice to see some statistics of this to justify the change.
> Can you share that?
>
> Moreover we already have the runtime PM support, which enables the
> reinitialization sequence of the mmc/sd card to be postponed from the
> system PM resume path. Instead that's done when the next
> pm_runtime_get_sync() for the card's device gets called. You my tried
> that feature by enabling MMC_CAP_RUNTIME_RESUME for the mmc hosts.
This "will" improve system suspend/resume speed. I have resent this patch with 
updated commit message - "[PATCH v2] mmc: enable mmc host device to 
suspend/resume asynchronously".

The original suspend time is 1645ms and resume time is 940ms on ASUS T100TA 
machine. After enabling "wiphy device", "SDIO device", "mmc host" and 
"sdhci-acpi device" to suspend/resume asynchronously, the suspend time is 
1096ms and resume time is 908ms. The test environment is listed as follows:

OS: Ubuntu 14.04
Kernel: mainline v4.1
Machine: ASUS T100TA(Baytrail-T platform)
Tool: analyze_suspend
“analyze_suspend.py –f –m freeze” to suspend system
Press power button to resume system

System PM is independent from runtime PM. Now, PM core supports asynchronous 
suspend/resume mode for devices during system suspend/resume, and the power 
state transition of one
device may be completed in separate kernel thread. PM core ensures all power 
state transition timing dependency between devices. This patch enables mmc host 
device to suspend/resume asynchronously. This will take advantage of multicore 
and improve system suspend/resume speed.


Thanks,
Zhonghui
> Kind regards
> Uffe
>
>> Signed-off-by: Zhonghui Fu <zhonghui...@linux.intel.com>
>> ---
>>  drivers/mmc/core/host.c |    1 +
>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
>> index 99a9c90..85f2bbb 100644
>> --- a/drivers/mmc/core/host.c
>> +++ b/drivers/mmc/core/host.c
>> @@ -577,6 +577,7 @@ struct mmc_host *mmc_alloc_host(int extra, struct device 
>> *dev)
>>         host->class_dev.parent = dev;
>>         host->class_dev.class = &mmc_host_class;
>>         device_initialize(&host->class_dev);
>> +       device_enable_async_suspend(&host->class_dev);
>>
>>         if (mmc_gpio_alloc(host)) {
>>                 put_device(&host->class_dev);
>> -- 1.7.1
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to