[GIT pull] timers/urgent for v6.11-rc2

Thomas Gleixner posted 1 patch 1 year, 4 months ago
kernel/time/clocksource.c    | 2 +-
kernel/time/tick-broadcast.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
[GIT pull] timers/urgent for v6.11-rc2
Posted by Thomas Gleixner 1 year, 4 months ago
Linus,

please pull the latest timers/urgent branch from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers-urgent-2024-08-04

up to:  f2655ac2c06a: clocksource: Fix brown-bag boolean thinko in cs_watchdog_read()


Two fixes for the timer/clocksource code:

    - The recent fix for making the take over of the broadcast timer more
      reliable retrieves a per CPU pointer in preemptible context.
      This went unnoticed in testing as some compilers hoist the access into
      the non-preemotible section where the pointer is actually used, but
      obviously compilers can rightfully invoke it where the code put it.

      Move it into the non-preemptible section right to the actual usage
      side to cure it.

    - The clocksource watchdog is supposed to emit a warning when the retry
      count is greater than one and the number of retries reaches the
      limit. The condition is backwards and warns always when the count is
      greater than one. Fixup the condition to prevent spamming dmesg.



Thanks,

	tglx

------------------>
Paul E. McKenney (1):
      clocksource: Fix brown-bag boolean thinko in cs_watchdog_read()

Thomas Gleixner (1):
      tick/broadcast: Move per CPU pointer access into the atomic section


 kernel/time/clocksource.c    | 2 +-
 kernel/time/tick-broadcast.c | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index d25ba49e313c..d0538a75f4c6 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -246,7 +246,7 @@ static enum wd_read_status cs_watchdog_read(struct clocksource *cs, u64 *csnow,
 
 		wd_delay = cycles_to_nsec_safe(watchdog, *wdnow, wd_end);
 		if (wd_delay <= WATCHDOG_MAX_SKEW) {
-			if (nretries > 1 || nretries >= max_retries) {
+			if (nretries > 1 && nretries >= max_retries) {
 				pr_warn("timekeeping watchdog on CPU%d: %s retried %d times before success\n",
 					smp_processor_id(), watchdog->name, nretries);
 			}
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index b4843099a8da..ed58eebb4e8f 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -1141,7 +1141,6 @@ void tick_broadcast_switch_to_oneshot(void)
 #ifdef CONFIG_HOTPLUG_CPU
 void hotplug_cpu__broadcast_tick_pull(int deadcpu)
 {
-	struct tick_device *td = this_cpu_ptr(&tick_cpu_device);
 	struct clock_event_device *bc;
 	unsigned long flags;
 
@@ -1167,6 +1166,8 @@ void hotplug_cpu__broadcast_tick_pull(int deadcpu)
 		 * device to avoid the starvation.
 		 */
 		if (tick_check_broadcast_expired()) {
+			struct tick_device *td = this_cpu_ptr(&tick_cpu_device);
+
 			cpumask_clear_cpu(smp_processor_id(), tick_broadcast_force_mask);
 			tick_program_event(td->evtdev->next_event, 1);
 		}
Re: [GIT pull] timers/urgent for v6.11-rc2
Posted by pr-tracker-bot@kernel.org 1 year, 4 months ago
The pull request you sent on Sun,  4 Aug 2024 15:02:58 +0200 (CEST):

> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers-urgent-2024-08-04

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/61ca6c78295e242d4b681003112bfcdc54597489

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html