aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pps/generators/pps_gen_parport.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pps/generators/pps_gen_parport.c')
-rw-r--r--drivers/pps/generators/pps_gen_parport.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/pps/generators/pps_gen_parport.c b/drivers/pps/generators/pps_gen_parport.c
index a15fe25efd55..5c32f8dacf56 100644
--- a/drivers/pps/generators/pps_gen_parport.c
+++ b/drivers/pps/generators/pps_gen_parport.c
@@ -76,8 +76,15 @@ static enum hrtimer_restart hrtimer_event(struct hrtimer *timer)
long lim, delta;
unsigned long flags;
- /* NB: approx time with blocked interrupts =
- send_delay + 3 * SAFETY_INTERVAL */
+ /* We have to disable interrupts here. The idea is to prevent
+ * other interrupts on the same processor to introduce random
+ * lags while polling the clock. getnstimeofday() takes <1us on
+ * most machines while other interrupt handlers can take much
+ * more potentially.
+ *
+ * NB: approx time with blocked interrupts =
+ * send_delay + 3 * SAFETY_INTERVAL
+ */
local_irq_save(flags);
/* first of all we get the time stamp... */