[PATCH] clocksource: Improve cs_watchdog_read()

From: Heiner Kallweit
Date: Tue Nov 09 2021 - 15:55:20 EST


If max_cswd_read_retries is set to 0 or 1 then the current warning
behavior doesn't seem to make too much sense to me.
If set to 0, then we'd warn with each watchdog run.
If set to 1, then we'd warn at the first retry, even though the commit
description of db3a34e17433 states that one retry is expected behavior.
If printing a message at all in this case, then it should be debug
level.

Whilst being at it, move declaration of wd_end and wd_delta into the
loop and remove not needed braces.

Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx>
---
kernel/time/clocksource.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index f29d1a524..8c0be9c02 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -208,10 +208,11 @@ module_param(verify_n_cpus, int, 0644);
static bool cs_watchdog_read(struct clocksource *cs, u64 *csnow, u64 *wdnow)
{
unsigned int nretries;
- u64 wd_end, wd_delta;
int64_t wd_delay;

for (nretries = 0; nretries <= max_cswd_read_retries; nretries++) {
+ u64 wd_end, wd_delta;
+
local_irq_disable();
*wdnow = watchdog->read(watchdog);
*csnow = cs->read(cs);
@@ -222,10 +223,9 @@ static bool cs_watchdog_read(struct clocksource *cs, u64 *csnow, u64 *wdnow)
wd_delay = clocksource_cyc2ns(wd_delta, watchdog->mult,
watchdog->shift);
if (wd_delay <= WATCHDOG_MAX_SKEW) {
- if (nretries > 1 || nretries >= max_cswd_read_retries) {
+ if (nretries > 1)
pr_warn("timekeeping watchdog on CPU%d: %s retried %d times before success\n",
smp_processor_id(), watchdog->name, nretries);
- }
return true;
}
}
--
2.33.1