| Subject: ntp: Make ntp_lock raw. |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Tue, 10 Apr 2012 11:14:55 +0200 |
| |
| This needs to be revisited. Not sure whether we can avoid to make this |
| lock raw, but it'd really like to. |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| --- |
| kernel/time/ntp.c | 26 +++++++++++++------------- |
| 1 file changed, 13 insertions(+), 13 deletions(-) |
| |
| Index: linux-stable/kernel/time/ntp.c |
| =================================================================== |
| --- linux-stable.orig/kernel/time/ntp.c |
| +++ linux-stable/kernel/time/ntp.c |
| @@ -22,7 +22,7 @@ |
| * NTP timekeeping variables: |
| */ |
| |
| -DEFINE_SPINLOCK(ntp_lock); |
| +DEFINE_RAW_SPINLOCK(ntp_lock); |
| |
| |
| /* USER_HZ period (usecs): */ |
| @@ -347,7 +347,7 @@ void ntp_clear(void) |
| { |
| unsigned long flags; |
| |
| - spin_lock_irqsave(&ntp_lock, flags); |
| + raw_spin_lock_irqsave(&ntp_lock, flags); |
| |
| time_adjust = 0; /* stop active adjtime() */ |
| time_status |= STA_UNSYNC; |
| @@ -361,7 +361,7 @@ void ntp_clear(void) |
| |
| /* Clear PPS state variables */ |
| pps_clear(); |
| - spin_unlock_irqrestore(&ntp_lock, flags); |
| + raw_spin_unlock_irqrestore(&ntp_lock, flags); |
| |
| } |
| |
| @@ -371,9 +371,9 @@ u64 ntp_tick_length(void) |
| unsigned long flags; |
| s64 ret; |
| |
| - spin_lock_irqsave(&ntp_lock, flags); |
| + raw_spin_lock_irqsave(&ntp_lock, flags); |
| ret = tick_length; |
| - spin_unlock_irqrestore(&ntp_lock, flags); |
| + raw_spin_unlock_irqrestore(&ntp_lock, flags); |
| return ret; |
| } |
| |
| @@ -394,7 +394,7 @@ int second_overflow(unsigned long secs) |
| int leap = 0; |
| unsigned long flags; |
| |
| - spin_lock_irqsave(&ntp_lock, flags); |
| + raw_spin_lock_irqsave(&ntp_lock, flags); |
| |
| /* |
| * Leap second processing. If in leap-insert state at the end of the |
| @@ -478,7 +478,7 @@ int second_overflow(unsigned long secs) |
| time_adjust = 0; |
| |
| out: |
| - spin_unlock_irqrestore(&ntp_lock, flags); |
| + raw_spin_unlock_irqrestore(&ntp_lock, flags); |
| |
| return leap; |
| } |
| @@ -660,7 +660,7 @@ int do_adjtimex(struct timex *txc) |
| |
| getnstimeofday(&ts); |
| |
| - spin_lock_irq(&ntp_lock); |
| + raw_spin_lock_irq(&ntp_lock); |
| |
| if (txc->modes & ADJ_ADJTIME) { |
| long save_adjust = time_adjust; |
| @@ -702,7 +702,7 @@ int do_adjtimex(struct timex *txc) |
| /* fill PPS status fields */ |
| pps_fill_timex(txc); |
| |
| - spin_unlock_irq(&ntp_lock); |
| + raw_spin_unlock_irq(&ntp_lock); |
| |
| txc->time.tv_sec = ts.tv_sec; |
| txc->time.tv_usec = ts.tv_nsec; |
| @@ -900,7 +900,7 @@ void hardpps(const struct timespec *phas |
| |
| pts_norm = pps_normalize_ts(*phase_ts); |
| |
| - spin_lock_irqsave(&ntp_lock, flags); |
| + raw_spin_lock_irqsave(&ntp_lock, flags); |
| |
| /* clear the error bits, they will be set again if needed */ |
| time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR); |
| @@ -913,7 +913,7 @@ void hardpps(const struct timespec *phas |
| * just start the frequency interval */ |
| if (unlikely(pps_fbase.tv_sec == 0)) { |
| pps_fbase = *raw_ts; |
| - spin_unlock_irqrestore(&ntp_lock, flags); |
| + raw_spin_unlock_irqrestore(&ntp_lock, flags); |
| return; |
| } |
| |
| @@ -928,7 +928,7 @@ void hardpps(const struct timespec *phas |
| time_status |= STA_PPSJITTER; |
| /* restart the frequency calibration interval */ |
| pps_fbase = *raw_ts; |
| - spin_unlock_irqrestore(&ntp_lock, flags); |
| + raw_spin_unlock_irqrestore(&ntp_lock, flags); |
| pr_err("hardpps: PPSJITTER: bad pulse\n"); |
| return; |
| } |
| @@ -945,7 +945,7 @@ void hardpps(const struct timespec *phas |
| |
| hardpps_update_phase(pts_norm.nsec); |
| |
| - spin_unlock_irqrestore(&ntp_lock, flags); |
| + raw_spin_unlock_irqrestore(&ntp_lock, flags); |
| } |
| EXPORT_SYMBOL(hardpps); |
| |