Re: [RFC PATCH] Introduce timekeeper latch synchronization

From: Mathieu Desnoyers
Date: Fri Sep 13 2013 - 11:30:28 EST


* Mathieu Desnoyers (mathieu.desnoyers@xxxxxxxxxxxx) wrote:
[...]
> @@ -1362,29 +1398,31 @@ static inline void old_vsyscall_fixup(struct timekeeper *tk)
> static void update_wall_time(void)
> {
[...]
> - /*
> - * Update the real timekeeper.
> - *
> - * We could avoid this memcpy by switching pointers, but that
> - * requires changes to all other timekeeper usage sites as
> - * well, i.e. move the timekeeper pointer getter into the
> - * spinlocked/seqcount protected sections. And we trade this
> - * memcpy under the timekeeper_seq against one before we start
> - * updating.
> - */
> - memcpy(real_tk, tk, sizeof(*tk));
> - timekeeping_update(real_tk, action);

This line above appears to be important ;-) Let's see if my screensaver
stops misbehaving if I put it back. I will of course send a v2 after
some more testing.

By the way, if there are some standard test-bench for timekeeping, I'd
be very interested to hear about them.

Thanks!

Mathieu

> - write_seqcount_end(&timekeeper_seq);
> out:
> + timekeeper_write_end(&latch_timekeeper);
> raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
> }

--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/