Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fix from Ingo Molnar: "An NTP related lockup fix" * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: timekeeping: Fix HRTICK related deadlock from ntp lock changes
This commit is contained in:
commit
9d2cd7048b
|
@ -141,6 +141,7 @@ extern int do_adjtimex(struct timex *);
|
||||||
extern void hardpps(const struct timespec *, const struct timespec *);
|
extern void hardpps(const struct timespec *, const struct timespec *);
|
||||||
|
|
||||||
int read_current_timer(unsigned long *timer_val);
|
int read_current_timer(unsigned long *timer_val);
|
||||||
|
void ntp_notify_cmos_timer(void);
|
||||||
|
|
||||||
/* The clock frequency of the i8253/i8254 PIT */
|
/* The clock frequency of the i8253/i8254 PIT */
|
||||||
#define PIT_TICK_RATE 1193182ul
|
#define PIT_TICK_RATE 1193182ul
|
||||||
|
|
|
@ -516,13 +516,13 @@ static void sync_cmos_clock(struct work_struct *work)
|
||||||
schedule_delayed_work(&sync_cmos_work, timespec_to_jiffies(&next));
|
schedule_delayed_work(&sync_cmos_work, timespec_to_jiffies(&next));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void notify_cmos_timer(void)
|
void ntp_notify_cmos_timer(void)
|
||||||
{
|
{
|
||||||
schedule_delayed_work(&sync_cmos_work, 0);
|
schedule_delayed_work(&sync_cmos_work, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline void notify_cmos_timer(void) { }
|
void ntp_notify_cmos_timer(void) { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -687,8 +687,6 @@ int __do_adjtimex(struct timex *txc, struct timespec *ts, s32 *time_tai)
|
||||||
if (!(time_status & STA_NANO))
|
if (!(time_status & STA_NANO))
|
||||||
txc->time.tv_usec /= NSEC_PER_USEC;
|
txc->time.tv_usec /= NSEC_PER_USEC;
|
||||||
|
|
||||||
notify_cmos_timer();
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1703,6 +1703,8 @@ int do_adjtimex(struct timex *txc)
|
||||||
write_seqcount_end(&timekeeper_seq);
|
write_seqcount_end(&timekeeper_seq);
|
||||||
raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
|
raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
|
||||||
|
|
||||||
|
ntp_notify_cmos_timer();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue