um: time-travel: avoid multiple identical propagations
authorJohannes Berg <johannes.berg@intel.com>
Fri, 4 Dec 2020 11:34:34 +0000 (12:34 +0100)
committerRichard Weinberger <richard@nod.at>
Sun, 13 Dec 2020 21:38:06 +0000 (22:38 +0100)
If there is some kind of interrupt negotation or such then
it may happen that we send an update message multiple times,
avoid that in the interest of efficiency by storing the last
transmitted value and only sending a new update if it's not
the same as the last update.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/kernel/time.c

index 80d33735cfd27cd366287aefab928c3ab2fdb0e1..204ddb141b010e472fdacc91529aff21f03afdc8 100644 (file)
@@ -190,7 +190,13 @@ static void time_travel_ext_update_request(unsigned long long time)
 
 void __time_travel_propagate_time(void)
 {
+       static unsigned long long last_propagated;
+
+       if (last_propagated == time_travel_time)
+               return;
+
        time_travel_ext_req(UM_TIMETRAVEL_UPDATE, time_travel_time);
+       last_propagated = time_travel_time;
 }
 EXPORT_SYMBOL_GPL(__time_travel_propagate_time);