X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=kernel%2Fhrtimer.c;h=5ae51f1bc7c80347d091bd4da0df2e8840c0bae4;hb=0b1fc9b86f49e1e73e473e06a16556ca0dce53ae;hp=2b6e1757aeddf118f43c31111f46224b00f5d25e;hpb=b2faf597d93bdf5e2d12d93ea0815935a73f749e;p=profile%2Fivi%2Fkernel-adaptation-intel-automotive.git diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 2b6e175..5ae51f1 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c @@ -418,8 +418,19 @@ hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode) /* Switch the timer base, if necessary: */ new_base = switch_hrtimer_base(timer, base); - if (mode == HRTIMER_REL) + if (mode == HRTIMER_REL) { tim = ktime_add(tim, new_base->get_time()); + /* + * CONFIG_TIME_LOW_RES is a temporary way for architectures + * to signal that they simply return xtime in + * do_gettimeoffset(). In this case we want to round up by + * resolution when starting a relative timer, to avoid short + * timeouts. This will go away with the GTOD framework. + */ +#ifdef CONFIG_TIME_LOW_RES + tim = ktime_add(tim, base->resolution); +#endif + } timer->expires = tim; enqueue_hrtimer(timer, new_base);