diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2024-12-13 11:53:27 -0300 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2024-12-13 11:53:27 -0300 |
| commit | aec95d7ce1c8fe5ee9940b861b53e31509ce9428 (patch) | |
| tree | 95d52689401dc3b3547134b2f2c04f03e1a5b933 /kernel/time/clocksource.c | |
| parent | 1d18ebcfd302a2005b83ae5f13df223894d19902 (diff) | |
| parent | f932fb9b40749d1c9a539d89bb3e288c077aafe5 (diff) | |
| download | linux-next-aec95d7ce1c8fe5ee9940b861b53e31509ce9428.tar.gz linux-next-aec95d7ce1c8fe5ee9940b861b53e31509ce9428.zip | |
Merge remote-tracking branch 'torvalds/master' into perf-tools-next
To get the fixes that went thru perf-tools for v6.13.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'kernel/time/clocksource.c')
| -rw-r--r-- | kernel/time/clocksource.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c index aab6472853fa..7304d7cf47f2 100644 --- a/kernel/time/clocksource.c +++ b/kernel/time/clocksource.c @@ -24,7 +24,7 @@ static void clocksource_enqueue(struct clocksource *cs); static noinline u64 cycles_to_nsec_safe(struct clocksource *cs, u64 start, u64 end) { - u64 delta = clocksource_delta(end, start, cs->mask); + u64 delta = clocksource_delta(end, start, cs->mask, cs->max_raw_delta); if (likely(delta < cs->max_cycles)) return clocksource_cyc2ns(delta, cs->mult, cs->shift); @@ -993,6 +993,15 @@ static inline void clocksource_update_max_deferment(struct clocksource *cs) cs->max_idle_ns = clocks_calc_max_nsecs(cs->mult, cs->shift, cs->maxadj, cs->mask, &cs->max_cycles); + + /* + * Threshold for detecting negative motion in clocksource_delta(). + * + * Allow for 0.875 of the counter width so that overly long idle + * sleeps, which go slightly over mask/2, do not trigger the + * negative motion detection. + */ + cs->max_raw_delta = (cs->mask >> 1) + (cs->mask >> 2) + (cs->mask >> 3); } static struct clocksource *clocksource_find_best(bool oneshot, bool skipcur) |
