diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-06-08 15:51:21 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-06-08 15:51:21 -0700 | 
| commit | 81db4dbf592b486ac2bc7cabfb328ee2a6c4725d (patch) | |
| tree | bb42fbbee400f55b13f49f30b392367798602652 | |
| parent | c3e58a7945c8f1e4ec09ef93832a3839c5a70be2 (diff) | |
| parent | 67dd331c5d811b2e50c935a24c82f31b61c6dcd3 (diff) | |
| download | olio-linux-3.10-81db4dbf592b486ac2bc7cabfb328ee2a6c4725d.tar.xz olio-linux-3.10-81db4dbf592b486ac2bc7cabfb328ee2a6c4725d.zip  | |
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fixes from Thomas Gleixner:
 - Trivial: unused variable removal
 - Posix-timers: Add the clock ID to the new proc interface to make it
   useful.  The interface is new and should be functional when we reach
   the final 3.10 release.
 - Cure a false positive warning in the tick code introduced by the
   overhaul in 3.10
 - Fix for a persistent clock detection regression introduced in this
   cycle
* 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  timekeeping: Correct run-time detection of persistent_clock.
  ntp: Remove unused variable flags in __hardpps
  posix-timers: Show clock ID in proc file
  tick: Cure broadcast false positive pending bit warning
| -rw-r--r-- | fs/proc/base.c | 1 | ||||
| -rw-r--r-- | kernel/time/ntp.c | 1 | ||||
| -rw-r--r-- | kernel/time/tick-broadcast.c | 8 | ||||
| -rw-r--r-- | kernel/time/timekeeping.c | 8 | 
4 files changed, 16 insertions, 2 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index dd51e50001f..c3834dad09b 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -2118,6 +2118,7 @@ static int show_timer(struct seq_file *m, void *v)  		nstr[notify & ~SIGEV_THREAD_ID],  		(notify & SIGEV_THREAD_ID) ? "tid" : "pid",  		pid_nr_ns(timer->it_pid, tp->ns)); +	seq_printf(m, "ClockID: %d\n", timer->it_clock);  	return 0;  } diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index 12ff13a838c..8f5b3b98577 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c @@ -874,7 +874,6 @@ static void hardpps_update_phase(long error)  void __hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)  {  	struct pps_normtime pts_norm, freq_norm; -	unsigned long flags;  	pts_norm = pps_normalize_ts(*phase_ts); diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index 24938d57766..0c739423b0f 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -511,6 +511,12 @@ again:  		}  	} +	/* +	 * Remove the current cpu from the pending mask. The event is +	 * delivered immediately in tick_do_broadcast() ! +	 */ +	cpumask_clear_cpu(smp_processor_id(), tick_broadcast_pending_mask); +  	/* Take care of enforced broadcast requests */  	cpumask_or(tmpmask, tmpmask, tick_broadcast_force_mask);  	cpumask_clear(tick_broadcast_force_mask); @@ -575,8 +581,8 @@ void tick_broadcast_oneshot_control(unsigned long reason)  	raw_spin_lock_irqsave(&tick_broadcast_lock, flags);  	if (reason == CLOCK_EVT_NOTIFY_BROADCAST_ENTER) { -		WARN_ON_ONCE(cpumask_test_cpu(cpu, tick_broadcast_pending_mask));  		if (!cpumask_test_and_set_cpu(cpu, tick_broadcast_oneshot_mask)) { +			WARN_ON_ONCE(cpumask_test_cpu(cpu, tick_broadcast_pending_mask));  			clockevents_set_mode(dev, CLOCK_EVT_MODE_SHUTDOWN);  			/*  			 * We only reprogram the broadcast timer if we diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 98cd470bbe4..baeeb5c87cf 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -975,6 +975,14 @@ static int timekeeping_suspend(void)  	read_persistent_clock(&timekeeping_suspend_time); +	/* +	 * On some systems the persistent_clock can not be detected at +	 * timekeeping_init by its return value, so if we see a valid +	 * value returned, update the persistent_clock_exists flag. +	 */ +	if (timekeeping_suspend_time.tv_sec || timekeeping_suspend_time.tv_nsec) +		persistent_clock_exist = true; +  	raw_spin_lock_irqsave(&timekeeper_lock, flags);  	write_seqcount_begin(&timekeeper_seq);  	timekeeping_forward_now(tk);  |