On 08/20/2012 01:04 PM, Andreas Schwab wrote:
John Stultz <john.stu...@linaro.org> writes:
Huh. Yea, that looks fine. And without the
__timekeeping_inject_sleeptime() call, the system resumed ok?
Yes, it does.
So I'm mostly still stumped on this. But I did find one possible related
bugfix that maybe you can try?
Let me know if the patch below dodges the problem, and if not, please
send me the JDB printk output.
(if the resume hangs without any output, add a "return;" before the
tk_xtime_add() call between the JDB printks).
thanks
-john
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index e16af19..1a9b9c5 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -115,6 +115,7 @@ static void tk_xtime_add(struct timekeeper *tk, const
struct timespec *ts)
{
tk->xtime_sec += ts->tv_sec;
tk->xtime_nsec += (u64)ts->tv_nsec << tk->shift;
+ tk_normalize_xtime(tk);
}
static void tk_set_wall_to_mono(struct timekeeper *tk, struct timespec wtm)
@@ -695,9 +696,22 @@ static void __timekeeping_inject_sleeptime(struct
timekeeper *tk,
"sleep delta value!\n");
return;
}
+
+ printk("JDB: pre xt %ld:%ld wtm: %ld:%ld st: %ld:%ld\n",
+ tk_xtime(tk).tv_sec, tk_xtime(tk).tv_nsec,
+ tk->wall_to_monotonic.tv_sec,tk->wall_to_monotonic.tv_nsec,
+ tk->total_sleep_time.tv_sec, tk->total_sleep_time.tv_nsec);
+ printk("JDB: Adding %ld:%ld\n", delta->tv_sec, delta->tv_nsec);
+
tk_xtime_add(tk, delta);
tk_set_wall_to_mono(tk, timespec_sub(tk->wall_to_monotonic, *delta));
tk_set_sleep_time(tk, timespec_add(tk->total_sleep_time, *delta));
+
+ printk("JDB: post xt %ld:%ld wtm: %ld:%ld st: %ld:%ld\n",
+ tk_xtime(tk).tv_sec, tk_xtime(tk).tv_nsec,
+ tk->wall_to_monotonic.tv_sec,tk->wall_to_monotonic.tv_nsec,
+ tk->total_sleep_time.tv_sec, tk->total_sleep_time.tv_nsec);
+
}
/**
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/