Messages in this thread | | | From | "Liu, Chuansheng" <> | Subject | RE: [PATCH] pm: print the name of failed suspend function for platform device | Date | Mon, 11 Mar 2013 01:41:28 +0000 |
| |
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 > > > >
| |