Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca4523cd authored by Thomas Gleixner's avatar Thomas Gleixner Committed by John Stultz
Browse files

timekeeping: Shorten seq_count region



Shorten the seqcount write hold region to the actual update of the
timekeeper and the related data (e.g vsyscall).

On a contemporary x86 system this reduces the maximum latencies on
Preempt-RT from 8us to 4us on the non-timekeeping cores.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
parent 48cdc135
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -1341,7 +1341,6 @@ static void update_wall_time(void)
	unsigned long flags;

	raw_spin_lock_irqsave(&timekeeper_lock, flags);
	write_seqcount_begin(&timekeeper_seq);

	/* Make sure we're fully resumed: */
	if (unlikely(timekeeping_suspended))
@@ -1393,6 +1392,7 @@ static void update_wall_time(void)
	 */
	accumulate_nsecs_to_secs(tk);

	write_seqcount_begin(&timekeeper_seq);
	/* Update clock->cycle_last with the new value */
	clock->cycle_last = tk->cycle_last;
	/*
@@ -1407,9 +1407,8 @@ static void update_wall_time(void)
	 */
	memcpy(real_tk, tk, sizeof(*tk));
	timekeeping_update(real_tk, false, false);

out:
	write_seqcount_end(&timekeeper_seq);
out:
	raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
}