Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp4382768imm; Wed, 30 May 2018 04:46:22 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIIojqRCnwn3XHR+nZknRn7exsrrE8n4uKzkhQkd3KI4tfxS2sCXY0GSD8HSaZaF3Q5uINt X-Received: by 2002:a63:a74c:: with SMTP id w12-v6mr1998037pgo.374.1527680782804; Wed, 30 May 2018 04:46:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527680782; cv=none; d=google.com; s=arc-20160816; b=VeSSNi7x+NVU7F+7HWxtlu7QgYvvMQUUjWDBT2Q/lK3k04GhFWroOCzbKZUdq4/6Wh wBtxrHo2aVwiMDCO+WxR2Pme9gWK03Y53t87VKcvPAQlvHiIEj4P5n8T3Y1NyxEt5+7T dg6R+vOWN7/OMDG21X9MP+ihpsWafm7SJLHedGFKLiZLcDRZXmRDEpWCPmN/E1rxTwpF tqwf4I4RURa3O7kX69XnY05nJGwwmLJvBlyb62wwzyIs/POeS9DYB6ZgfWLg4tvT+WOl vP2KOaFyh2JHccePnVDCpSkmprRmjG5jzTTHeUCVSFQFH6w0INMNDIK21TyQiwg1yDuv TotQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dmarc-filter:dkim-signature:dkim-signature :arc-authentication-results; bh=FiyyYMT8mfONPioKKG8w1zMpQKGfasHaZEB7Xd9yx3M=; b=CZSGGS4jirAKxJjesZlqweU4cTe7VCcfR7fy51tXzZWSk1rX5e5f35un5lIuHEG/QB 8eVjvL6MDckJnStmQvF/IlVAWBUtRmAju1dx9ZOHAPkaQS/VoOQksPInWWPCUuzheUkx iyP5SQga6UJqXeMxf7x34nKK0dE3frH0Zd9rEL2jXHm1QYA89e4RVLQpMdOw0q6TgQK5 sGwJGiv5tWbzeJu7cU4rvNWSgEk2M4pui0y8eudaLlMJ2MmweGAT1lWHAmFhbdcjPcVV k4vG3tzx2IAsDCn8yP8vPeqMn3X2aMtJuP9dBy04ialHNloAix5CA98XJW4XI+pNc5OT axTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=LCQWW34O; dkim=pass header.i=@codeaurora.org header.s=default header.b=LCQWW34O; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p16-v6si26362085pgc.427.2018.05.30.04.46.08; Wed, 30 May 2018 04:46:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=LCQWW34O; dkim=pass header.i=@codeaurora.org header.s=default header.b=LCQWW34O; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753517AbeE3LpX (ORCPT + 99 others); Wed, 30 May 2018 07:45:23 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:35390 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753153AbeE3LpU (ORCPT ); Wed, 30 May 2018 07:45:20 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id B182B6063F; Wed, 30 May 2018 11:45:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1527680719; bh=kOi9g0j1u5J+In0T6D8wUVM5XnQKFCQkFaZnX8efdks=; h=From:To:Cc:Subject:Date:From; b=LCQWW34OizLvwWutWpn51NG9V0H/fnVJR7dm2ZIa7nHQVr0y19OQxl8jfSLnOPs+M 4D0sdhwy5Sx3Rp2m5Q4Rt0CGDSXj5ldjBuW1HR5iWcg9f/aAnl/LkPHdtH8CKwxziN UuceLx61OQ3redi4/0vljuTW3L6RWjfUNcVNhT+Y= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from mojha-linux.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mojha@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 659586060A; Wed, 30 May 2018 11:45:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1527680719; bh=kOi9g0j1u5J+In0T6D8wUVM5XnQKFCQkFaZnX8efdks=; h=From:To:Cc:Subject:Date:From; b=LCQWW34OizLvwWutWpn51NG9V0H/fnVJR7dm2ZIa7nHQVr0y19OQxl8jfSLnOPs+M 4D0sdhwy5Sx3Rp2m5Q4Rt0CGDSXj5ldjBuW1HR5iWcg9f/aAnl/LkPHdtH8CKwxziN UuceLx61OQ3redi4/0vljuTW3L6RWjfUNcVNhT+Y= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 659586060A Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=mojha@codeaurora.org From: Mukesh Ojha To: john.stultz@linaro.org, tglx@linutronix.de, linux-kernel@vger.kernel.org Cc: neeraju@codeaurora.org, gkohli@codeaurora.org, cpandya@codeaurora.org, Mukesh Ojha Subject: [PATCH v2] time: Fix sleeptime injection for non-stop clocksource & persistent clock Date: Wed, 30 May 2018 17:14:59 +0530 Message-Id: <1527680699-16068-1-git-send-email-mojha@codeaurora.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, for both non-stop clocksource and persistent clock there is a corner case, when a driver failed to go suspend mode. rtc_resume() injects the sleeptime as timekeeping_rtc_skipresume() returned 'false'(sleeptime_injected=false) due to which we can see mismatch in timestamps between system clock and other timers. Fix this by updating sleeptime_injected=true for both non-stop clocksource and persistent clock. Success case: ------------ {sleeptime_injected=true} rtc_suspend() => timekeeping_suspend() => timekeeping_resume() => rtc_resume() Failure case: ------------ {failure in sleep path} {sleeptime_injected=false} rtc_suspend() => rtc_resume() Signed-off-by: Mukesh Ojha --- Changes in v2: * Updated the commit text. * Removed extra variable and used the earlier static variable 'sleeptime_injected'. kernel/time/timekeeping.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 49cbcee..2754c1b 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -1610,6 +1610,17 @@ static void __timekeeping_inject_sleeptime(struct timekeeper *tk, */ bool timekeeping_rtc_skipresume(void) { + struct timekeeper *tk = &tk_core.timekeeper; + /* + * This is to ensure that we don't end up injecting + * the sleeptime via rtc_resume() for non-stop clocksource + * when we fail to sleep. + */ + if (!sleeptime_injected) + sleeptime_injected = ((tk->tkr_mono.clock->flags & + CLOCK_SOURCE_SUSPEND_NONSTOP) || + (persistent_clock_exists)) ? true : false; + return sleeptime_injected; } -- Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project