diff mbox

mmc/sdhci-acpi: enable sdhci-acpi device to suspend/resume asynchronously

Message ID 55BF6843.4050502@linux.intel.com
State New
Headers show

Commit Message

Fu, Zhonghui Aug. 3, 2015, 1:10 p.m. UTC
Enable sdhci-acpi device to suspend/resume asynchronously.
This can improve system suspend/resume speed.

Signed-off-by: Zhonghui Fu <zhonghui.fu@linux.intel.com>
---
 drivers/mmc/host/sdhci-acpi.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

-- 1.7.1

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

Comments

Fu, Zhonghui Aug. 17, 2015, 3:38 a.m. UTC | #1
Hi,

Any comments are welcome.


Thanks,
Zhonghui

On 2015/8/3 21:10, Fu, Zhonghui wrote:
> Enable sdhci-acpi device to suspend/resume asynchronously.
> This can improve system suspend/resume speed.
>
> Signed-off-by: Zhonghui Fu <zhonghui.fu@linux.intel.com>
> ---
>  drivers/mmc/host/sdhci-acpi.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
> index 22d929f..67e6263 100644
> --- a/drivers/mmc/host/sdhci-acpi.c
> +++ b/drivers/mmc/host/sdhci-acpi.c
> @@ -379,6 +379,8 @@ static int sdhci_acpi_probe(struct platform_device *pdev)
>  		pm_runtime_enable(dev);
>  	}
>  
> +	device_enable_async_suspend(dev);
> +
>  	return 0;
>  
>  err_free:
> -- 1.7.1
>

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Adrian Hunter Aug. 17, 2015, 6:51 a.m. UTC | #2
On 17/08/15 06:38, Fu, Zhonghui wrote:
> 
> Hi,
> 
> Any comments are welcome.

Same comments as here:

	http://marc.info/?l=linux-kernel&m=143979428424353&w=2

> 
> 
> Thanks,
> Zhonghui
> 
> On 2015/8/3 21:10, Fu, Zhonghui wrote:
>> Enable sdhci-acpi device to suspend/resume asynchronously.
>> This can improve system suspend/resume speed.
>>
>> Signed-off-by: Zhonghui Fu <zhonghui.fu@linux.intel.com>
>> ---
>>  drivers/mmc/host/sdhci-acpi.c |    2 ++
>>  1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
>> index 22d929f..67e6263 100644
>> --- a/drivers/mmc/host/sdhci-acpi.c
>> +++ b/drivers/mmc/host/sdhci-acpi.c
>> @@ -379,6 +379,8 @@ static int sdhci_acpi_probe(struct platform_device *pdev)
>>  		pm_runtime_enable(dev);
>>  	}
>>  
>> +	device_enable_async_suspend(dev);
>> +
>>  	return 0;
>>  
>>  err_free:
>> -- 1.7.1
>>
> 
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Fu, Zhonghui Aug. 24, 2015, 3:14 p.m. UTC | #3
On 2015/8/17 14:51, Adrian Hunter wrote:
> On 17/08/15 06:38, Fu, Zhonghui wrote:
>> Hi,
>>
>> Any comments are welcome.
> Same comments as here:
>
> 	http://marc.info/?l=linux-kernel&m=143979428424353&w=2

Now, PM core support asynchronous device suspend/resume mode. If one device has been set to support asynchronous PM mode, it's suspend/resume operation can be performed in a separate kernel thread and take advantage of multicore feature to improve overall system suspend/resume speed. The worst case is that all device suspend/resume threads will be scheduled to the same CPU, it hardly occur.

PM core ensure all the suspend/resume dependency related to one device. Actually, async suspend/resume mode is one feature of PM core, every device subsystem may use it or not use it. Once one device subsystem choose to use this feature, its safety is up to PM core as long as device subsystem has initialized fully this device.


Thanks,
Zhonghui


>
>>
>> Thanks,
>> Zhonghui
>>
>> On 2015/8/3 21:10, Fu, Zhonghui wrote:
>>> Enable sdhci-acpi device to suspend/resume asynchronously.
>>> This can improve system suspend/resume speed.
>>>
>>> Signed-off-by: Zhonghui Fu <zhonghui.fu@linux.intel.com>
>>> ---
>>>  drivers/mmc/host/sdhci-acpi.c |    2 ++
>>>  1 files changed, 2 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
>>> index 22d929f..67e6263 100644
>>> --- a/drivers/mmc/host/sdhci-acpi.c
>>> +++ b/drivers/mmc/host/sdhci-acpi.c
>>> @@ -379,6 +379,8 @@ static int sdhci_acpi_probe(struct platform_device *pdev)
>>>  		pm_runtime_enable(dev);
>>>  	}
>>>  
>>> +	device_enable_async_suspend(dev);
>>> +
>>>  	return 0;
>>>  
>>>  err_free:
>>> -- 1.7.1
>>>
>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@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-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Fu, Zhonghui Sept. 21, 2015, 6:53 a.m. UTC | #4
On 2015/8/24 23:14, Fu, Zhonghui wrote:
>
> On 2015/8/17 14:51, Adrian Hunter wrote:
>> On 17/08/15 06:38, Fu, Zhonghui wrote:
>>> Hi,
>>>
>>> Any comments are welcome.
>> Same comments as here:
>>
>> 	http://marc.info/?l=linux-kernel&m=143979428424353&w=2
> Now, PM core support asynchronous device suspend/resume mode. If one device has been set to support asynchronous PM mode, it's suspend/resume operation can be performed in a separate kernel thread and take advantage of multicore feature to improve overall system suspend/resume speed. The worst case is that all device suspend/resume threads will be scheduled to the same CPU, it hardly occur.
>
> PM core ensure all the suspend/resume dependency related to one device. Actually, async suspend/resume mode is one feature of PM core, every device subsystem may use it or not use it. Once one device subsystem choose to use this feature, its safety is up to PM core as long as device subsystem has initialized fully this device.

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

I have resent this patch with updated commit message - "[PATCH v2] mmc/sdhci-acpi: enable sdhci-acpi device to suspend/resume asynchronously".


Thanks,
Zhonghui


>
>
> Thanks,
> Zhonghui
>
>
>>> Thanks,
>>> Zhonghui
>>>
>>> On 2015/8/3 21:10, Fu, Zhonghui wrote:
>>>> Enable sdhci-acpi device to suspend/resume asynchronously.
>>>> This can improve system suspend/resume speed.
>>>>
>>>> Signed-off-by: Zhonghui Fu <zhonghui.fu@linux.intel.com>
>>>> ---
>>>>  drivers/mmc/host/sdhci-acpi.c |    2 ++
>>>>  1 files changed, 2 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
>>>> index 22d929f..67e6263 100644
>>>> --- a/drivers/mmc/host/sdhci-acpi.c
>>>> +++ b/drivers/mmc/host/sdhci-acpi.c
>>>> @@ -379,6 +379,8 @@ static int sdhci_acpi_probe(struct platform_device *pdev)
>>>>  		pm_runtime_enable(dev);
>>>>  	}
>>>>  
>>>> +	device_enable_async_suspend(dev);
>>>> +
>>>>  	return 0;
>>>>  
>>>>  err_free:
>>>> -- 1.7.1
>>>>
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo@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-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
index 22d929f..67e6263 100644
--- a/drivers/mmc/host/sdhci-acpi.c
+++ b/drivers/mmc/host/sdhci-acpi.c
@@ -379,6 +379,8 @@  static int sdhci_acpi_probe(struct platform_device *pdev)
 		pm_runtime_enable(dev);
 	}
 
+	device_enable_async_suspend(dev);
+
 	return 0;
 
 err_free: