* [PATCH] alarmtimer: add error prints when suspend failed
@ 2013-03-07 19:27 Laxman Dewangan
2013-03-07 23:16 ` Greg KH
0 siblings, 1 reply; 5+ messages in thread
From: Laxman Dewangan @ 2013-03-07 19:27 UTC (permalink / raw)
To: john.stultz, toddpoynor, gregkh; +Cc: linux-kernel, Laxman Dewangan
The alramtimer suspend failed when nearest alarm wakeup time is
less than 2 sec or rtc timer can not start.
In suspend/resume stress testing, we found that sometimes alramtimer
failed to suspend and hence it cancel the suspend ops. Add error prints
in suspend failure to provide more info when failure occurs to help
debugging.
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
kernel/time/alarmtimer.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
index f11d83b..eed5646 100644
--- a/kernel/time/alarmtimer.c
+++ b/kernel/time/alarmtimer.c
@@ -249,6 +249,8 @@ static int alarmtimer_suspend(struct device *dev)
if (ktime_to_ns(min) < 2 * NSEC_PER_SEC) {
__pm_wakeup_event(ws, 2 * MSEC_PER_SEC);
+ dev_err(dev,
+ "Nearest alarm wakeup time < 2sec, avoiding suspend\n");
return -EBUSY;
}
@@ -260,8 +262,10 @@ static int alarmtimer_suspend(struct device *dev)
/* Set alarm, if in the past reject suspend briefly to handle */
ret = rtc_timer_start(rtc, &rtctimer, now, ktime_set(0, 0));
- if (ret < 0)
+ if (ret < 0) {
__pm_wakeup_event(ws, MSEC_PER_SEC);
+ dev_err(dev, "RTC timer start failed, %d\n", ret);
+ }
return ret;
}
#else
--
1.7.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] alarmtimer: add error prints when suspend failed
2013-03-07 19:27 [PATCH] alarmtimer: add error prints when suspend failed Laxman Dewangan
@ 2013-03-07 23:16 ` Greg KH
2013-03-08 7:24 ` Laxman Dewangan
0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2013-03-07 23:16 UTC (permalink / raw)
To: Laxman Dewangan; +Cc: john.stultz, toddpoynor, linux-kernel
On Fri, Mar 08, 2013 at 12:57:37AM +0530, Laxman Dewangan wrote:
> The alramtimer suspend failed when nearest alarm wakeup time is
> less than 2 sec or rtc timer can not start.
>
> In suspend/resume stress testing, we found that sometimes alramtimer
> failed to suspend and hence it cancel the suspend ops. Add error prints
> in suspend failure to provide more info when failure occurs to help
> debugging.
>
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> ---
> kernel/time/alarmtimer.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
> index f11d83b..eed5646 100644
> --- a/kernel/time/alarmtimer.c
> +++ b/kernel/time/alarmtimer.c
> @@ -249,6 +249,8 @@ static int alarmtimer_suspend(struct device *dev)
>
> if (ktime_to_ns(min) < 2 * NSEC_PER_SEC) {
> __pm_wakeup_event(ws, 2 * MSEC_PER_SEC);
> + dev_err(dev,
> + "Nearest alarm wakeup time < 2sec, avoiding suspend\n");
What can userspace now do with this information? How often is this now
going to spam the syslog and cause confusion?
> return -EBUSY;
> }
>
> @@ -260,8 +262,10 @@ static int alarmtimer_suspend(struct device *dev)
>
> /* Set alarm, if in the past reject suspend briefly to handle */
> ret = rtc_timer_start(rtc, &rtctimer, now, ktime_set(0, 0));
> - if (ret < 0)
> + if (ret < 0) {
> __pm_wakeup_event(ws, MSEC_PER_SEC);
> + dev_err(dev, "RTC timer start failed, %d\n", ret);
Same here, you aren't changing any code paths, just annoying people who
can't do anything about this.
As you want to do this for debugging, make them debugging level messages
please.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] alarmtimer: add error prints when suspend failed
2013-03-07 23:16 ` Greg KH
@ 2013-03-08 7:24 ` Laxman Dewangan
2013-03-11 23:51 ` John Stultz
0 siblings, 1 reply; 5+ messages in thread
From: Laxman Dewangan @ 2013-03-08 7:24 UTC (permalink / raw)
To: Greg KH
Cc: john.stultz@linaro.org, toddpoynor@google.com,
linux-kernel@vger.kernel.org
On Friday 08 March 2013 04:46 AM, Greg KH wrote:
> On Fri, Mar 08, 2013 at 12:57:37AM +0530, Laxman Dewangan wrote:
>> The alramtimer suspend failed when nearest alarm wakeup time is
>> less than 2 sec or rtc timer can not start.
>>
>> In suspend/resume stress testing, we found that sometimes alramtimer
>> failed to suspend and hence it cancel the suspend ops. Add error prints
>> in suspend failure to provide more info when failure occurs to help
>> debugging.
>>
>> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
>> ---
>> kernel/time/alarmtimer.c | 6 +++++-
>> 1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
>> index f11d83b..eed5646 100644
>> --- a/kernel/time/alarmtimer.c
>> +++ b/kernel/time/alarmtimer.c
>> @@ -249,6 +249,8 @@ static int alarmtimer_suspend(struct device *dev)
>>
>> if (ktime_to_ns(min) < 2 * NSEC_PER_SEC) {
>> __pm_wakeup_event(ws, 2 * MSEC_PER_SEC);
>> + dev_err(dev,
>> + "Nearest alarm wakeup time < 2sec, avoiding suspend\n");
> What can userspace now do with this information? How often is this now
> going to spam the syslog and cause confusion?
When we executed the stress on suspend/resume for system stability,
occasionally we get such error (3/4 times in 1000 cycle):
[ 235.508010] dpm_run_callback(): platform_pm_suspend+0x0/0x64 returns -16
[ 235.514999] PM: Device alarmtimer failed to suspend: error -16
[ 235.520958] PM: Some devices failed to suspend
After tracing back the failure case, we found that possible reason could
be above one.
In this case, if any function returns error then always better to print
the error so that it is easy to findout the cause of the error and analyse.
It should not generate spam as this does happen on some cases.
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] alarmtimer: add error prints when suspend failed
2013-03-08 7:24 ` Laxman Dewangan
@ 2013-03-11 23:51 ` John Stultz
2013-03-12 0:08 ` Rafael J. Wysocki
0 siblings, 1 reply; 5+ messages in thread
From: John Stultz @ 2013-03-11 23:51 UTC (permalink / raw)
To: Laxman Dewangan
Cc: Greg KH, toddpoynor@google.com, linux-kernel@vger.kernel.org,
Rafael J. Wysocki
On 03/07/2013 11:24 PM, Laxman Dewangan wrote:
> On Friday 08 March 2013 04:46 AM, Greg KH wrote:
>> On Fri, Mar 08, 2013 at 12:57:37AM +0530, Laxman Dewangan wrote:
>>> The alramtimer suspend failed when nearest alarm wakeup time is
>>> less than 2 sec or rtc timer can not start.
>>>
>>> In suspend/resume stress testing, we found that sometimes alramtimer
>>> failed to suspend and hence it cancel the suspend ops. Add error prints
>>> in suspend failure to provide more info when failure occurs to help
>>> debugging.
>>>
>>> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
>>> ---
>>> kernel/time/alarmtimer.c | 6 +++++-
>>> 1 files changed, 5 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
>>> index f11d83b..eed5646 100644
>>> --- a/kernel/time/alarmtimer.c
>>> +++ b/kernel/time/alarmtimer.c
>>> @@ -249,6 +249,8 @@ static int alarmtimer_suspend(struct device *dev)
>>> if (ktime_to_ns(min) < 2 * NSEC_PER_SEC) {
>>> __pm_wakeup_event(ws, 2 * MSEC_PER_SEC);
>>> + dev_err(dev,
>>> + "Nearest alarm wakeup time < 2sec, avoiding suspend\n");
>> What can userspace now do with this information? How often is this now
>> going to spam the syslog and cause confusion?
>
>
> When we executed the stress on suspend/resume for system stability,
> occasionally we get such error (3/4 times in 1000 cycle):
> [ 235.508010] dpm_run_callback(): platform_pm_suspend+0x0/0x64 returns
> -16
> [ 235.514999] PM: Device alarmtimer failed to suspend: error -16
> [ 235.520958] PM: Some devices failed to suspend
>
>
> After tracing back the failure case, we found that possible reason
> could be above one.
> In this case, if any function returns error then always better to
> print the error so that it is easy to findout the cause of the error
> and analyse.
>
> It should not generate spam as this does happen on some cases.
But if there is a recurring alarm timer that triggers every second, it
will print out every time.
Greg's concern is that the error message is unhelpful, since it just
will cause lots of log messages when the system is actually behaving as
designed. That said, the PM suspend messages are fairly noisy as well,
even when there are no errors.
Rafael: What are your thoughts here? If the alarmtimer subsystem blocks
a suspend attempt (returning EBUSY, as a pending alarm will fire soon),
how verbose should we be, since this isn't really an error case?
thanks
-john
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] alarmtimer: add error prints when suspend failed
2013-03-11 23:51 ` John Stultz
@ 2013-03-12 0:08 ` Rafael J. Wysocki
0 siblings, 0 replies; 5+ messages in thread
From: Rafael J. Wysocki @ 2013-03-12 0:08 UTC (permalink / raw)
To: John Stultz
Cc: Laxman Dewangan, Greg KH, toddpoynor@google.com,
linux-kernel@vger.kernel.org
On Monday, March 11, 2013 04:51:30 PM John Stultz wrote:
> On 03/07/2013 11:24 PM, Laxman Dewangan wrote:
> > On Friday 08 March 2013 04:46 AM, Greg KH wrote:
> >> On Fri, Mar 08, 2013 at 12:57:37AM +0530, Laxman Dewangan wrote:
> >>> The alramtimer suspend failed when nearest alarm wakeup time is
> >>> less than 2 sec or rtc timer can not start.
> >>>
> >>> In suspend/resume stress testing, we found that sometimes alramtimer
> >>> failed to suspend and hence it cancel the suspend ops. Add error prints
> >>> in suspend failure to provide more info when failure occurs to help
> >>> debugging.
> >>>
> >>> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> >>> ---
> >>> kernel/time/alarmtimer.c | 6 +++++-
> >>> 1 files changed, 5 insertions(+), 1 deletions(-)
> >>>
> >>> diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
> >>> index f11d83b..eed5646 100644
> >>> --- a/kernel/time/alarmtimer.c
> >>> +++ b/kernel/time/alarmtimer.c
> >>> @@ -249,6 +249,8 @@ static int alarmtimer_suspend(struct device *dev)
> >>> if (ktime_to_ns(min) < 2 * NSEC_PER_SEC) {
> >>> __pm_wakeup_event(ws, 2 * MSEC_PER_SEC);
> >>> + dev_err(dev,
> >>> + "Nearest alarm wakeup time < 2sec, avoiding suspend\n");
> >> What can userspace now do with this information? How often is this now
> >> going to spam the syslog and cause confusion?
> >
> >
> > When we executed the stress on suspend/resume for system stability,
> > occasionally we get such error (3/4 times in 1000 cycle):
> > [ 235.508010] dpm_run_callback(): platform_pm_suspend+0x0/0x64 returns
> > -16
> > [ 235.514999] PM: Device alarmtimer failed to suspend: error -16
> > [ 235.520958] PM: Some devices failed to suspend
> >
> >
> > After tracing back the failure case, we found that possible reason
> > could be above one.
> > In this case, if any function returns error then always better to
> > print the error so that it is easy to findout the cause of the error
> > and analyse.
> >
> > It should not generate spam as this does happen on some cases.
>
> But if there is a recurring alarm timer that triggers every second, it
> will print out every time.
>
> Greg's concern is that the error message is unhelpful, since it just
> will cause lots of log messages when the system is actually behaving as
> designed. That said, the PM suspend messages are fairly noisy as well,
> even when there are no errors.
>
> Rafael: What are your thoughts here? If the alarmtimer subsystem blocks
> a suspend attempt (returning EBUSY, as a pending alarm will fire soon),
> how verbose should we be, since this isn't really an error case?
I wouldn't be too verbose, but that also depends on whether or not autosleep
is used. I think our suspend messages are too verbose for autosleep anyway,
but for non-autosleep suspends it would be good to know why the system didn't
suspend.
Thanks,
Rafael
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-03-12 0:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-07 19:27 [PATCH] alarmtimer: add error prints when suspend failed Laxman Dewangan
2013-03-07 23:16 ` Greg KH
2013-03-08 7:24 ` Laxman Dewangan
2013-03-11 23:51 ` John Stultz
2013-03-12 0:08 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox