projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
console: more buf for index parsing
[firefly-linux-kernel-4.4.55.git]
/
kernel
/
timer.c
diff --git
a/kernel/timer.c
b/kernel/timer.c
index 59a28b1752f801355fccb68f5b94ca4758cf9958..1a69705c2fb95536dc67c82479fcff315c0e0e1e 100644
(file)
--- a/
kernel/timer.c
+++ b/
kernel/timer.c
@@
-92,24
+92,24
@@
static DEFINE_PER_CPU(tvec_base_t *, tvec_bases) = &boot_tvec_bases;
/* Functions below help us manage 'deferrable' flag */
static inline unsigned int tbase_get_deferrable(tvec_base_t *base)
{
/* Functions below help us manage 'deferrable' flag */
static inline unsigned int tbase_get_deferrable(tvec_base_t *base)
{
- return (
unsigned int)(
(unsigned long)base & TBASE_DEFERRABLE_FLAG);
+ return (
(unsigned int)
(unsigned long)base & TBASE_DEFERRABLE_FLAG);
}
static inline tvec_base_t *tbase_get_base(tvec_base_t *base)
{
}
static inline tvec_base_t *tbase_get_base(tvec_base_t *base)
{
- return (
tvec_base_t *)((unsigned long)base & ~TBASE_DEFERRABLE_FLAG
);
+ return (
(tvec_base_t *)((unsigned long)base & ~TBASE_DEFERRABLE_FLAG)
);
}
static inline void timer_set_deferrable(struct timer_list *timer)
{
}
static inline void timer_set_deferrable(struct timer_list *timer)
{
- timer->base = (
tvec_base_t *)((unsigned long)timer->base
|
- TBASE_DEFERRABLE_FLAG);
+ timer->base = (
(tvec_base_t *)((unsigned long)(timer->base)
|
+ TBASE_DEFERRABLE_FLAG)
)
;
}
static inline void
timer_set_base(struct timer_list *timer, tvec_base_t *new_base)
{
}
static inline void
timer_set_base(struct timer_list *timer, tvec_base_t *new_base)
{
- timer->base = (tvec_base_t *)((unsigned long)
new_base
|
+ timer->base = (tvec_base_t *)((unsigned long)
(new_base)
|
tbase_get_deferrable(timer->base));
}
tbase_get_deferrable(timer->base));
}
@@
-666,7
+666,7
@@
static inline void __run_timers(tvec_base_t *base)
static unsigned long __next_timer_interrupt(tvec_base_t *base)
{
unsigned long timer_jiffies = base->timer_jiffies;
static unsigned long __next_timer_interrupt(tvec_base_t *base)
{
unsigned long timer_jiffies = base->timer_jiffies;
- unsigned long expires = timer_jiffies +
(LONG_MAX >> 1)
;
+ unsigned long expires = timer_jiffies +
NEXT_TIMER_MAX_DELTA
;
int index, slot, array, found = 0;
struct timer_list *nte;
tvec_t *varray[4];
int index, slot, array, found = 0;
struct timer_list *nte;
tvec_t *varray[4];
@@
-752,6
+752,14
@@
static unsigned long cmp_next_hrtimer_event(unsigned long now,
tsdelta = ktime_to_timespec(hr_delta);
delta = timespec_to_jiffies(&tsdelta);
tsdelta = ktime_to_timespec(hr_delta);
delta = timespec_to_jiffies(&tsdelta);
+
+ /*
+ * Limit the delta to the max value, which is checked in
+ * tick_nohz_stop_sched_tick():
+ */
+ if (delta > NEXT_TIMER_MAX_DELTA)
+ delta = NEXT_TIMER_MAX_DELTA;
+
/*
* Take rounding errors in to account and make sure, that it
* expires in the next tick. Otherwise we go into an endless
/*
* Take rounding errors in to account and make sure, that it
* expires in the next tick. Otherwise we go into an endless
@@
-1499,8
+1507,6
@@
unregister_time_interpolator(struct time_interpolator *ti)
prev = &curr->next;
}
prev = &curr->next;
}
- clocksource_resume();
-
write_seqlock_irqsave(&xtime_lock, flags);
if (ti == time_interpolator) {
/* we lost the best time-interpolator: */
write_seqlock_irqsave(&xtime_lock, flags);
if (ti == time_interpolator) {
/* we lost the best time-interpolator: */