Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp2126239pxb; Fri, 8 Oct 2021 01:06:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/e5nG9ykSlCgM/DjoQ25MApSNxZeY4a62KJ3lmsluBJe0BUHTkSVm+yl1nKPzROkz2fC6 X-Received: by 2002:a17:90a:de16:: with SMTP id m22mr10775937pjv.38.1633680382231; Fri, 08 Oct 2021 01:06:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633680382; cv=none; d=google.com; s=arc-20160816; b=zYUEtnlkvoTUFci8ovxNKhYiIh1azRjmrV4+Rg0p9yDvggvCdBmyNap59RvGNBjYmY wvdhDm4KzlWkxaolBHgCOGdJMGsjOrEK5ko7TuCDZywG0BDKWDOuF/Gxus/avcfgW4JG 9rLaUZax2FtH14glKP6QAVAdf+FhdppTpIRsZ/rKHUYVAchL6OzFS5Gu8La+YVzNE4yE /l0P7QyIqmCU1+1BcNaonlHEIsAKtZCj8Rc2sOuamsA8mrwNdJxx25YuNyR08V2GyFJa 6KVR3FmlCAQUoIs1mbNGgQLSRg1U1FuzZzivHyj/ZH3qW4fsJbhpqtr0AKPN6z3bAY/A exfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=ztTPcW2dYiBj1oh0nTuQyiZpD0J35YYcOERqU/sBllc=; b=eIA6+SxGhuGxIqq3FNBsFh/AQljZwrcvA4kSTJvnNA6MQ8mxOAoqhBvWypSgXkp4Ql RJFTHlsipdke34PeIZJpNQErdKUxLdQTfM5O3R+ysCZbn4sbc5M0oVTqQ1BUj/+qmSnN eRZrr+YmTtyreKYpVApXFvyqHZZrVgbO4Xxs3Yqt0GGKdemwPtSneihNG3xQR2Wx4lDv yjv1K9YERo+xXvmAqMJ90a+f27BiEz9NV2HbAIyxEOPJbamC5ru0qHjycl1KuhYiKx5l CDm9loI95Ynyhlz49R8dy65K2+TpB1ACsTAbi+PmMDsVu14l0Fk8Ud4jpACx9kNngJDO k4kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=Gb5yoPQr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r5si12419095pjm.44.2021.10.08.01.06.09; Fri, 08 Oct 2021 01:06:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=Gb5yoPQr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233715AbhJHIFm (ORCPT + 99 others); Fri, 8 Oct 2021 04:05:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233982AbhJHIFI (ORCPT ); Fri, 8 Oct 2021 04:05:08 -0400 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B243CC061755 for ; Fri, 8 Oct 2021 01:03:13 -0700 (PDT) Received: by mail-pj1-x1029.google.com with SMTP id ls18-20020a17090b351200b001a00250584aso8385902pjb.4 for ; Fri, 08 Oct 2021 01:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ztTPcW2dYiBj1oh0nTuQyiZpD0J35YYcOERqU/sBllc=; b=Gb5yoPQr1I/VRE7eotn2sgZrIydkFo4uJcdjFnIgq//J/P5ZJdQggXU+bAWS+6dijS evRJUV5a0vB3Mqaqfi1hjqKLNoh1FHEA+HhUCUcnxygtGRcFtlZ3A0IucfsxLmKXxE4I yKoqozXNq8D1oW63gPo1YMTZoIjFvlgThw3zF500b6i/jiULVRKM2Zf1h/zjwk3jbESt junLR0mM9hrwARjhmrw311i0r0HLzAGcV7axiVclsDV6hE6ocA6R2ABnehL6lc0oCDF+ dAEDUDN1G5fcK7REwtXZOYoVQxWuu/+ZW2QTNiduXIyVUUv6xvQSA/V1ftCB2txRCSVT CR/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ztTPcW2dYiBj1oh0nTuQyiZpD0J35YYcOERqU/sBllc=; b=WYNNqVPMuU+AsdRXDINj4vsH4wiZBk+Ah56f8mvK2pTCSLnJAj3BMYgn41f4y324fq +bT7YJBO9XAnBagMH9aOvenhKRi5LGhqMkXIekah+viOpf4b5LSdJbv6pSDpScHwsgLj j+S33vifIg4XchpWHLO/tkl9bYv5jWBRb7F+Ahm3eEPYPfkMj/S3KGm/FokG1F9CuLmY iekx9Tv1Mtb/szherTrZHx+0uVLLTmocj74QdF5zmRx/pCXqf8V7v9AA4FEsLN27EJGh NVICtaD5O3zWBzZrw6xINfbdFla/bum+5RVLXQblbHG4XcbAOS4XsFieOFJ3ZN/TNH+U AB+Q== X-Gm-Message-State: AOAM531SiXrw+2sdIkgVh5ls02KsGDwLwgaASXwyfpZDypIGGnZ8mFcb ddAY2CFymVx9oKQlNBxPEbRJ+w== X-Received: by 2002:a17:902:8bc1:b0:13d:e884:125a with SMTP id r1-20020a1709028bc100b0013de884125amr8152201plo.38.1633680193153; Fri, 08 Oct 2021 01:03:13 -0700 (PDT) Received: from FVFC60ZAL416.bytedance.net ([61.120.150.74]) by smtp.gmail.com with ESMTPSA id d137sm1706953pfd.72.2021.10.08.01.03.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Oct 2021 01:03:12 -0700 (PDT) From: yanghui To: John.stultz@linaro.org Cc: tglx@linutronix.de, sboyd@kernel.org, linux-kernel@vger.kernel.org, yanghui Subject: [PATCH] Clocksource: Avoid misjudgment of clocksource Date: Fri, 8 Oct 2021 16:03:05 +0800 Message-Id: <20211008080305.13401-1-yanghui.def@bytedance.com> X-Mailer: git-send-email 2.30.1 (Apple Git-130) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org clocksource_watchdog is executed every WATCHDOG_INTERVAL(0.5s) by Timer. But sometimes system is very busy and the Timer cannot be executed in 0.5sec. For example,if clocksource_watchdog be executed after 10sec, the calculated value of abs(cs_nsec - wd_nsec) will be enlarged. Then the current clocksource will be misjudged as unstable. So we add conditions to prevent the clocksource from being misjudged. Signed-off-by: yanghui --- kernel/time/clocksource.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c index b8a14d2fb5ba..d535beadcbc8 100644 --- a/kernel/time/clocksource.c +++ b/kernel/time/clocksource.c @@ -136,8 +136,10 @@ static void __clocksource_change_rating(struct clocksource *cs, int rating); /* * Interval: 0.5sec. + * MaxInterval: 1s. */ #define WATCHDOG_INTERVAL (HZ >> 1) +#define WATCHDOG_MAX_INTERVAL_NS (NSEC_PER_SEC) static void clocksource_watchdog_work(struct work_struct *work) { @@ -404,7 +406,9 @@ static void clocksource_watchdog(struct timer_list *unused) /* Check the deviation from the watchdog clocksource. */ md = cs->uncertainty_margin + watchdog->uncertainty_margin; - if (abs(cs_nsec - wd_nsec) > md) { + if ((abs(cs_nsec - wd_nsec) > md) && + cs_nsec < WATCHDOG_MAX_INTERVAL_NS && + wd_nsec < WATCHDOG_MAX_INTERVAL_NS) { pr_warn("timekeeping watchdog on CPU%d: Marking clocksource '%s' as unstable because the skew is too large:\n", smp_processor_id(), cs->name); pr_warn(" '%s' wd_nsec: %lld wd_now: %llx wd_last: %llx mask: %llx\n", -- 2.20.1