[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <27240C0AC20F114CBF8149A2696CBE4A254DD3@SHSMSX101.ccr.corp.intel.com>
Date: Mon, 11 Mar 2013 01:41:28 +0000
From: "Liu, Chuansheng" <chuansheng.liu@...el.com>
To: "Li, Fei" <fei.li@...el.com>,
"gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
"rjw@...k.pl" <rjw@...k.pl>,
"akpm@...ux-foundation.org" <akpm@...ux-foundation.org>
CC: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"ldewangan@...dia.com" <ldewangan@...dia.com>
Subject: RE: [PATCH] pm: print the name of failed suspend function for
platform device
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@...uxfoundation.org; rjw@...k.pl; akpm@...ux-foundation.org
> Cc: linux-kernel@...r.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@...el.com>
> Signed-off-by: Li Fei <fei.li@...el.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
>
>
>
>
Powered by blists - more mailing lists