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: gre...@linuxfoundation.org; r...@sisk.pl; a...@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....@intel.com>
> Signed-off-by: Li Fei <fei...@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
> 
> 
> 
> 

Reply via email to