lkml.org 
[lkml]   [2013]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [PATCH] pm: print the name of failed suspend function for platform device
Date
Hi Greg,

I just noticed some other cases need the more log also.
https://lkml.org/lkml/2013/3/8/71

Could you consider the below patch, thanks?

Best Regards
Liu chuansheng

> -----Original Message-----
> From: Li, Fei
> Sent: Tuesday, February 05, 2013 1:13 PM
> To: gregkh@linuxfoundation.org; rjw@sisk.pl; akpm@linux-foundation.org
> Cc: linux-kernel@vger.kernel.org; Liu, Chuansheng; Li, Fei
> Subject: [PATCH] pm: print the name of failed suspend function for platform
> device
>
>
> Print more info when platform device suspend function failed.
> Without this patch, we can not get the real platform device suspend
> API info.
>
> Example without this patch:
> pm_op(): platform_pm_suspend+0x0/0x50 returns -11
> PM: Device power.0 failed to suspend: error -11
>
> And with this patch:
> platform_pm_suspend(): power_suspend+0x0/0x30 returns -11
> pm_op(): platform_pm_suspend+0x0/0x80 returns -11
> PM: Device power.0 failed to suspend: error -11
>
> Signed-off-by: liu chuansheng <chuansheng.liu@intel.com>
> Signed-off-by: Li Fei <fei.li@intel.com>
> ---
> drivers/base/platform.c | 19 +++++++++++++++----
> 1 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/base/platform.c b/drivers/base/platform.c
> index c0b8df3..96a452a 100644
> --- a/drivers/base/platform.c
> +++ b/drivers/base/platform.c
> @@ -747,8 +747,10 @@ static int platform_legacy_suspend(struct device
> *dev, pm_message_t mesg)
> struct platform_device *pdev = to_platform_device(dev);
> int ret = 0;
>
> - if (dev->driver && pdrv->suspend)
> + if (dev->driver && pdrv->suspend) {
> ret = pdrv->suspend(pdev, mesg);
> + suspend_report_result(pdrv->suspend, ret);
> + }
>
> return ret;
> }
> @@ -778,10 +780,13 @@ int platform_pm_suspend(struct device *dev)
> return 0;
>
> if (drv->pm) {
> - if (drv->pm->suspend)
> + if (drv->pm->suspend) {
> ret = drv->pm->suspend(dev);
> + suspend_report_result(drv->pm->suspend, ret);
> + }
> } else {
> ret = platform_legacy_suspend(dev, PMSG_SUSPEND);
> + suspend_report_result(platform_legacy_suspend, ret);
> }
>
> return ret;
> @@ -818,10 +823,13 @@ int platform_pm_freeze(struct device *dev)
> return 0;
>
> if (drv->pm) {
> - if (drv->pm->freeze)
> + if (drv->pm->freeze) {
> ret = drv->pm->freeze(dev);
> + suspend_report_result(drv->pm->freeze, ret);
> + }
> } else {
> ret = platform_legacy_suspend(dev, PMSG_FREEZE);
> + suspend_report_result(platform_legacy_suspend, ret);
> }
>
> return ret;
> @@ -854,10 +862,13 @@ int platform_pm_poweroff(struct device *dev)
> return 0;
>
> if (drv->pm) {
> - if (drv->pm->poweroff)
> + if (drv->pm->poweroff) {
> ret = drv->pm->poweroff(dev);
> + suspend_report_result(drv->pm->poweroff, ret);
> + }
> } else {
> ret = platform_legacy_suspend(dev, PMSG_HIBERNATE);
> + suspend_report_result(platform_legacy_suspend, ret);
> }
>
> return ret;
> --
> 1.7.4.1
>
>
>
>

\
 
 \ /
  Last update: 2013-03-11 03:21    [W:1.738 / U:0.800 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site