128 lines
3.4 KiB
Diff
128 lines
3.4 KiB
Diff
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-3.4/kernel/time/ntp.c
|
|
===================================================================
|
|
--- linux-3.4.orig/kernel/time/ntp.c
|
|
+++ linux-3.4/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
|
|
@@ -476,7 +476,7 @@ int second_overflow(unsigned long secs)
|
|
|
|
|
|
out:
|
|
- spin_unlock_irqrestore(&ntp_lock, flags);
|
|
+ raw_spin_unlock_irqrestore(&ntp_lock, flags);
|
|
|
|
return leap;
|
|
}
|
|
@@ -658,7 +658,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;
|
|
@@ -700,7 +700,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;
|
|
@@ -898,7 +898,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);
|
|
@@ -911,7 +911,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;
|
|
}
|
|
|
|
@@ -926,7 +926,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;
|
|
}
|
|
@@ -943,7 +943,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);
|
|
|