Commit 9d2cd704 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 7e28b271 7bd36014
...@@ -141,6 +141,7 @@ extern int do_adjtimex(struct timex *); ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment