From patchwork Fri Jun 21 15:37:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jason A. Donenfeld" X-Patchwork-Id: 167397 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp897046ilk; Fri, 21 Jun 2019 08:37:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqxAZVTdhOnAMaanQUR5Y20Z924pQKp3+bAEUWtxk5ZT/keMIMCfeZLa6+oIK6UBItpFZLti X-Received: by 2002:a17:90a:aa0a:: with SMTP id k10mr7607899pjq.43.1561131474922; Fri, 21 Jun 2019 08:37:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561131474; cv=none; d=google.com; s=arc-20160816; b=htABv7R8Zq61mWxOhdRcS1w/WhLLeaE924bZq4v1fnKiRK9dm3ARdn1w8f9xKRHjUH fl0Yh1wVtu40uesuFGVjO/C9T485IEAC8ZuPhyeA6UyCzcUD3Vf9gkBR/vGKyGpJ2rvz ZrEFBvIJtQvCFa40CLhj81V8ZFiZU78OJYlgyJGPzz1f2L1ugjvI2TOiRDVfgyvRZ/d9 88TtGLpuWBAHGg829DS/0hruaQcbKHbUDlB15QLR+iE4IcrRT5MYnY5A4LwAJT1kzil3 ZWDQCV/nWbXgL56+OaFbdu7BHURJjloxdfwehhM1sTT/3fuMuphNSlalN0MzaAD1TMAt CPeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=XaZ2vtA1x0vo0S4BqVqI8VMwBipnEgnxveBtLQZxeKM=; b=LNUHcslZnz/GrnE5W8dHd2bVIOr84o211Ava3AV1bl0NVgP0QZoPN/1jTcEvI24LvJ K0JHgBo3Ol1icSHk9St8N0iSzJWMVAXfB/V4NR3FntZMh4mNdviDf3MLljvmx7pxYLRu 1NhtiF9TK9lW4bFGIYL3EQScb+vJPjfwhko5amcDwU3PyFB9gF+asb2cGNdzNAiYqrSF FkZilg3bjyGe9Udge4SDMeeGDF7Fi7tQgvJLvv4xK8zR8Jtoto6NhLKub1n6g026bzMq 6p5rI8/lcwzeWKJIHm0YkXf9fijITsgBkUk4Tf3PYPfWtO2GmADW/N1apXyC7eZBCFW+ 93dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zx2c4.com header.s=mail header.b=kZZ9z+Sy; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 72si2995564plb.177.2019.06.21.08.37.54; Fri, 21 Jun 2019 08:37:54 -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=@zx2c4.com header.s=mail header.b=kZZ9z+Sy; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726148AbfFUPhx (ORCPT + 30 others); Fri, 21 Jun 2019 11:37:53 -0400 Received: from frisell.zx2c4.com ([192.95.5.64]:55159 "EHLO frisell.zx2c4.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726010AbfFUPhw (ORCPT ); Fri, 21 Jun 2019 11:37:52 -0400 Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTP id e7e3aca9; Fri, 21 Jun 2019 15:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=zx2c4.com; h=from:to:cc :subject:date:message-id:mime-version:content-transfer-encoding; s=mail; bh=f+1ZpDMIWGAfcOagOZkUXYhHHpM=; b=kZZ9z+SyoD07ZJHEyX6H KPfHA369D2mvdHlyM8O1e+/ObJSx9HJ3WwtovDJGNtMH6jcejU92lobePsLPOciE 1aO2K40i4yCa1Y5ZIMRUMqSgCsT00yVUuRsJxSoGgErq16zDiDYXLoDpS2q/ajLb mRL1LDG8OzeOTvY3h/M8j4VPpwsQ5ztAAevBX+iRPFUxqh5iVgE3+6l+yWVHyzB7 pQn5EpAswe+HKC4w2WqtJaRsp8DcFBFkkYL2JIq0IJ9bfX7zn/IDgtCgNTX0C2vu Mb0HWNoDtphYw4Ox3YTA+I0qfaIvUxKIo8UgbDypns23o0JncfIKdsywJgKzCK8r dA== Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id c323c7cb (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); Fri, 21 Jun 2019 15:04:25 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org Cc: "Jason A. Donenfeld" , Arnd Bergmann , Thomas Gleixner Subject: [PATCH v4 1/4] timekeeping: add missing non-_ns functions for fast accessors Date: Fri, 21 Jun 2019 17:37:38 +0200 Message-Id: <20190621153741.20159-1-Jason@zx2c4.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Previously there was no analogue to get proper ktime_t versions of the fast variety of ktime invocations. This commit makes the interface uniform with the other accessors. Signed-off-by: Jason A. Donenfeld Cc: Arnd Bergmann Cc: Thomas Gleixner --- Documentation/core-api/timekeeping.rst | 7 +++- include/linux/timekeeping.h | 28 ++++++++++++-- kernel/time/timekeeping.c | 52 +++++++++++++------------- 3 files changed, 55 insertions(+), 32 deletions(-) -- 2.21.0 diff --git a/Documentation/core-api/timekeeping.rst b/Documentation/core-api/timekeeping.rst index 93cbeb9daec0..47b41e948459 100644 --- a/Documentation/core-api/timekeeping.rst +++ b/Documentation/core-api/timekeeping.rst @@ -94,7 +94,7 @@ different format depending on what is required by the user: down the seconds to the full seconds of the last timer tick using the respective reference. -Coarse and fast_ns access +Coarse and fast access ------------------------- Some additional variants exist for more specialized cases: @@ -125,6 +125,11 @@ Some additional variants exist for more specialized cases: up to several microseconds on older hardware with an external clocksource. +.. c:function:: ktime_t ktime_get_mono_fast( void ) + ktime_t ktime_get_raw_fast( void ) + ktime_t ktime_get_boottime_fast( void ) + ktime_t ktime_get_real_fast( void ) + .. c:function:: u64 ktime_get_mono_fast_ns( void ) u64 ktime_get_raw_fast_ns( void ) u64 ktime_get_boot_fast_ns( void ) diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h index a8ab0f143ac4..c5d360779fab 100644 --- a/include/linux/timekeeping.h +++ b/include/linux/timekeeping.h @@ -146,10 +146,30 @@ static inline u64 ktime_get_raw_ns(void) return ktime_to_ns(ktime_get_raw()); } -extern u64 ktime_get_mono_fast_ns(void); -extern u64 ktime_get_raw_fast_ns(void); -extern u64 ktime_get_boot_fast_ns(void); -extern u64 ktime_get_real_fast_ns(void); +extern ktime_t ktime_get_mono_fast(void); +extern ktime_t ktime_get_raw_fast(void); +extern ktime_t ktime_get_boottime_fast(void); +extern ktime_t ktime_get_real_fast(void); + +static inline u64 ktime_get_mono_fast_ns(void) +{ + return ktime_to_ns(ktime_get_mono_fast()); +} + +static inline u64 ktime_get_raw_fast_ns(void) +{ + return ktime_to_ns(ktime_get_raw_fast()); +} + +static inline u64 ktime_get_boot_fast_ns(void) +{ + return ktime_to_ns(ktime_get_boottime_fast()); +} + +static inline u64 ktime_get_real_fast_ns(void) +{ + return ktime_to_ns(ktime_get_real_fast()); +} /* * timespec64/time64_t interfaces utilizing the ktime based ones diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 44b726bab4bd..4c97c9c8c217 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -443,41 +443,40 @@ static void update_fast_timekeeper(const struct tk_read_base *tkr, * of the following timestamps. Callers need to be aware of that and * deal with it. */ -static __always_inline u64 __ktime_get_fast_ns(struct tk_fast *tkf) +static __always_inline ktime_t __ktime_get_fast(struct tk_fast *tkf) { struct tk_read_base *tkr; unsigned int seq; - u64 now; + ktime_t now; do { seq = raw_read_seqcount_latch(&tkf->seq); tkr = tkf->base + (seq & 0x01); - now = ktime_to_ns(tkr->base); - - now += timekeeping_delta_to_ns(tkr, + now = ktime_add_ns(tkr->base, + timekeeping_delta_to_ns(tkr, clocksource_delta( tk_clock_read(tkr), tkr->cycle_last, - tkr->mask)); + tkr->mask))); } while (read_seqcount_retry(&tkf->seq, seq)); return now; } -u64 ktime_get_mono_fast_ns(void) +ktime_t ktime_get_mono_fast(void) { - return __ktime_get_fast_ns(&tk_fast_mono); + return __ktime_get_fast(&tk_fast_mono); } -EXPORT_SYMBOL_GPL(ktime_get_mono_fast_ns); +EXPORT_SYMBOL_GPL(ktime_get_mono_fast); -u64 ktime_get_raw_fast_ns(void) +ktime_t ktime_get_raw_fast(void) { - return __ktime_get_fast_ns(&tk_fast_raw); + return __ktime_get_fast(&tk_fast_raw); } -EXPORT_SYMBOL_GPL(ktime_get_raw_fast_ns); +EXPORT_SYMBOL_GPL(ktime_get_raw_fast); /** - * ktime_get_boot_fast_ns - NMI safe and fast access to boot clock. + * ktime_get_boottime_fast - NMI safe and fast access to boot clock. * * To keep it NMI safe since we're accessing from tracing, we're not using a * separate timekeeper with updates to monotonic clock and boot offset @@ -497,47 +496,46 @@ EXPORT_SYMBOL_GPL(ktime_get_raw_fast_ns); * partially updated. Since the tk->offs_boot update is a rare event, this * should be a rare occurrence which postprocessing should be able to handle. */ -u64 notrace ktime_get_boot_fast_ns(void) +ktime_t notrace ktime_get_boottime_fast(void) { struct timekeeper *tk = &tk_core.timekeeper; - return (ktime_get_mono_fast_ns() + ktime_to_ns(tk->offs_boot)); + return ktime_add(ktime_get_mono_fast(), tk->offs_boot); } -EXPORT_SYMBOL_GPL(ktime_get_boot_fast_ns); +EXPORT_SYMBOL_GPL(ktime_get_boottime_fast); /* - * See comment for __ktime_get_fast_ns() vs. timestamp ordering + * See comment for __ktime_get_fast() vs. timestamp ordering */ -static __always_inline u64 __ktime_get_real_fast_ns(struct tk_fast *tkf) +static __always_inline ktime_t __ktime_get_real_fast(struct tk_fast *tkf) { struct tk_read_base *tkr; unsigned int seq; - u64 now; + ktime_t now; do { seq = raw_read_seqcount_latch(&tkf->seq); tkr = tkf->base + (seq & 0x01); - now = ktime_to_ns(tkr->base_real); - - now += timekeeping_delta_to_ns(tkr, + now = ktime_add_ns(tkr->base_real, + timekeeping_delta_to_ns(tkr, clocksource_delta( tk_clock_read(tkr), tkr->cycle_last, - tkr->mask)); + tkr->mask))); } while (read_seqcount_retry(&tkf->seq, seq)); return now; } /** - * ktime_get_real_fast_ns: - NMI safe and fast access to clock realtime. + * ktime_get_real_fast: - NMI safe and fast access to clock realtime. */ -u64 ktime_get_real_fast_ns(void) +ktime_t ktime_get_real_fast(void) { - return __ktime_get_real_fast_ns(&tk_fast_mono); + return __ktime_get_real_fast(&tk_fast_mono); } -EXPORT_SYMBOL_GPL(ktime_get_real_fast_ns); +EXPORT_SYMBOL_GPL(ktime_get_real_fast); /** * halt_fast_timekeeper - Prevent fast timekeeper from accessing clocksource. From patchwork Fri Jun 21 15:37:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jason A. Donenfeld" X-Patchwork-Id: 167399 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp897278ilk; Fri, 21 Jun 2019 08:38:05 -0700 (PDT) X-Google-Smtp-Source: APXvYqx6F6xojBHyRehD/gANY2ah9GzTrUbv0eqi6omsQ5nKfRRnlelLGQaFSDLCyurlfgMAAkWI X-Received: by 2002:a17:90a:2385:: with SMTP id g5mr7675136pje.12.1561131485107; Fri, 21 Jun 2019 08:38:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561131485; cv=none; d=google.com; s=arc-20160816; b=to+FYPD9+iJcXGqn9K/ohqMUdnTSQd5JkHx+ltcXFGOQtCXPa0fizHPnkNZpF7ssH8 IyaBv7nQAjZ/8VN66u+2vpaQMHZM7ADMKo8cWHkee131otAyhNRMMa1ARRbGExcU3Cxm vUw1Fo/xOKg1t7w3JCLKlWsPjCKK7Np/yHPdr0jYfkLdc/G3yWY30BJsITTyy4qvxpg6 MZltWXoAZx7EX1RmfLUMPWpCypwHVm8ZWJ6B7+gGyJitNoEw23uB8pF2TP7zw3s7LOVU 3hIzXqUM+FJtGFXIHXvfQR7eKXxjiml8QoxMjFmNSGNJ9VKSTHlXm9+UGY5/5A6lO23y z0Cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=qu+wBuge9Y16gpnbLxar+BTxAA4mEcW4vlJqeeHQu50=; b=alO/j/SdrODatisL2Hz84lIKhpun4SK2lUdVhEzDZHnddO5AXdfJUIGIUJeWfo7GYF Zb4TaBQXBhMJlGB5KdIXJRpngUgEolbQHTzs1uStnFnr+8bUUc9HIaBPqLpuWd1ghhlq J+FRA3amwxd5g2g7AdmZBo9RWTSt68O9foNpku1Qm2TERc47NGwWmp6xfqvqahqswMGp jigG4+vVMyTBSYl0o+mO7LEE4Q2v3ynbVGF+V/DTh9bdmsiKKuYaxHcVQaLyO7nscx1P 0svaMGAAM8sCrWQ1RYHnNnUMLdBwjmAiJNU6/7THxbRMfCtqVBrjk2L6dXVWLQwF8/9P K+oQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zx2c4.com header.s=mail header.b=scFEGd1n; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m39si2907999plg.155.2019.06.21.08.38.04; Fri, 21 Jun 2019 08:38:05 -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=@zx2c4.com header.s=mail header.b=scFEGd1n; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726441AbfFUPiD (ORCPT + 30 others); Fri, 21 Jun 2019 11:38:03 -0400 Received: from frisell.zx2c4.com ([192.95.5.64]:55159 "EHLO frisell.zx2c4.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726200AbfFUPhz (ORCPT ); Fri, 21 Jun 2019 11:37:55 -0400 Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 0bec5a0f; Fri, 21 Jun 2019 15:04:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=zx2c4.com; h=from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; s=mail; bh=BCgOtPxwBhFl9ERxKMkR8S0mK lU=; b=scFEGd1ncq6oir8sEIde021C2HPhWfwq7473ZlhPnucCEzV7ylcKoG4J2 XE9+gwK1qVAWrrlz/9Q0xnkXhq2KJid2412C2qKdL3mnmQwrBG7i4QKUq1cme9z6 1z0lcPkkO12WxDs1jD1+OcCbbnBELzc8YvvzhpLdo2Hkce5b4LhffG5awobUUPYk S9JwTfNTsTQWMEDlTEjsi19IzMYIo0K6XobnNoE4gQ2fMfG2iSWt5LqrivOkRCWt 0GilGlC9DYPqjD5rfxnLFbvTjz3f3ccoGy8graOt1EL9GsQy+2wgWDGqn7FUOAlB sxrYP4S3pcnEfFq4i8oYHlk/3Nvfw== Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 5c4f79f2 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); Fri, 21 Jun 2019 15:04:28 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org Cc: "Jason A. Donenfeld" , Arnd Bergmann , Thomas Gleixner Subject: [PATCH v4 2/4] timekeeping: use proper ktime_add when adding nsecs in coarse offset Date: Fri, 21 Jun 2019 17:37:39 +0200 Message-Id: <20190621153741.20159-2-Jason@zx2c4.com> In-Reply-To: <20190621153741.20159-1-Jason@zx2c4.com> References: <20190621153741.20159-1-Jason@zx2c4.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While this doesn't actually amount to a real difference, since the macro evaluates to the same thing, every place else operates on ktime_t using these functions, so let's not break the pattern. Fixes: e3ff9c3678b4 ("timekeeping: Repair ktime_get_coarse*() granularity") Signed-off-by: Jason A. Donenfeld Cc: Arnd Bergmann Cc: Thomas Gleixner Acked-by: Arnd Bergmann --- kernel/time/timekeeping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.21.0 diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 4c97c9c8c217..db0081a14b90 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -817,7 +817,7 @@ ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs) } while (read_seqcount_retry(&tk_core.seq, seq)); - return base + nsecs; + return ktime_add_ns(base, nsecs); } EXPORT_SYMBOL_GPL(ktime_get_coarse_with_offset); From patchwork Fri Jun 21 15:37:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jason A. Donenfeld" X-Patchwork-Id: 167398 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp897210ilk; Fri, 21 Jun 2019 08:38:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqxjYlLajPEj5kB2EMTLVIgHMkm2PfgNiz12K7RllbhXfKInPF0yBFXAKPS2E9FxE7NNrPuo X-Received: by 2002:a17:902:8a87:: with SMTP id p7mr114756484plo.124.1561131482364; Fri, 21 Jun 2019 08:38:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561131482; cv=none; d=google.com; s=arc-20160816; b=K/BLpCyeTnQLGJWN/fmvyVDKxS0HnryhMDWKPQNRlcSEW+MxWqeAfJxv7w7dQ3xSyQ RoiOFwxz6CmqVayzg6aY/ZzBZEt/qDUtJia46yx5TIm63C6nMJHFRNpjE5yABt4NaNra 3cGscvU7VJp6wKJCYp+OiivaO02d4mNv7MQv0jU1m0HJYhyKIjL47oBHslfsZxeiburA ENI5lW/LTdJJN9h3VbSrdaa/pH3rkcpVqOLbDeFrKq+SjPjQ6g+GpV5+iqgflPS2UaK+ DHhGAavTe3HVqsr7X8ACjbtIsmnZokhP5dJeQXjCGmu+jVC8U8JtGqKFbN1nnoSc0Of8 rhgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=IR+m6MJP1VSpE1GIf5m/GTbhO+09Zr2eGp7rJzk4oR8=; b=JDiUUGFAOSwtA9KkADOhFXm9W9lPoJXGzI1cRQtsDuZRDDquehz4SMaJOx0HReeh25 RuewPbmngKIG2x97Ft4cTrGgdnB8PfXDe7LHscaVXXb1R55PmQAo7wwib5mmKla9zulG KID622jGO2dtd9/noTFS5dBZxSvyKbTg9wH0zt5uYWKO/Z/GnKlbgUssCMiAqu+nuyfw Ojp6X9NOrHOPQeULM/onUE48lRe+SMl8a7SF7ZWj7N6sbh+wm0CcO5pN7ektr0TXKGXr tUYUlBHBLkhdz5nBQmY4PUhDnC37QLl7blFsEx60xKNKqFoey6xW+3keNB9U78+ImgzP jDiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zx2c4.com header.s=mail header.b=FPR95SYV; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m39si2907999plg.155.2019.06.21.08.38.02; Fri, 21 Jun 2019 08:38:02 -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=@zx2c4.com header.s=mail header.b=FPR95SYV; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726365AbfFUPiA (ORCPT + 30 others); Fri, 21 Jun 2019 11:38:00 -0400 Received: from frisell.zx2c4.com ([192.95.5.64]:55159 "EHLO frisell.zx2c4.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726010AbfFUPh7 (ORCPT ); Fri, 21 Jun 2019 11:37:59 -0400 Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 186fb95b; Fri, 21 Jun 2019 15:04:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=zx2c4.com; h=from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; s=mail; bh=wgxcqaEpc5Cj5n/ndmwgTvDT9 vE=; b=FPR95SYV5j0sCTLYLENuVUx1wxRXZl+0NRtqlQ62zSnhCLOQTm4c9KGbf pgZkraocerh7TU9S81zWhYc43zm7DsbX84GNqwQyvUeLMVY26Us0w1apwwG48Ts4 GDHze0+3B/4GLVHuF0JSvXHvqHPeIdtKgLf/Y3Ncb4eRh9NgnQYCtuPRcbuA6t5O zvit5w/EmEUJPpK8St3snTUprZ5dMShmBDDx/ULepCvfqtX2N2wB1DfQPc4qFi94 kWnYlMLr3OcaiodmplZJAw8x+j3p4wiGN+rs5SuLg87ZxNSUbLTDFhbmdHAZGjve 5UFtm9D1sVVcm4xoNmaYBR1yXfa8A== Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id d8cda116 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); Fri, 21 Jun 2019 15:04:31 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org Cc: "Jason A. Donenfeld" , Arnd Bergmann , Thomas Gleixner Subject: [PATCH v4 3/4] timekeeping: add missing _ns functions for coarse accessors Date: Fri, 21 Jun 2019 17:37:40 +0200 Message-Id: <20190621153741.20159-3-Jason@zx2c4.com> In-Reply-To: <20190621153741.20159-1-Jason@zx2c4.com> References: <20190621153741.20159-1-Jason@zx2c4.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This further unifies the accessors for the fast and coarse functions, so that the same types of functions are available for each. There was also a bit of confusion with the documentation, which prior advertised a function that has never existed. Finally, the vanilla ktime_get_coarse() was omitted from the API originally, so this fills this oversight. Signed-off-by: Jason A. Donenfeld Cc: Arnd Bergmann Cc: Thomas Gleixner --- Documentation/core-api/timekeeping.rst | 10 +++++++--- include/linux/timekeeping.h | 27 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) -- 2.21.0 diff --git a/Documentation/core-api/timekeeping.rst b/Documentation/core-api/timekeeping.rst index 47b41e948459..0d4019fcaa87 100644 --- a/Documentation/core-api/timekeeping.rst +++ b/Documentation/core-api/timekeeping.rst @@ -99,16 +99,20 @@ Coarse and fast access Some additional variants exist for more specialized cases: -.. c:function:: ktime_t ktime_get_coarse_boottime( void ) +.. c:function:: ktime_t ktime_get_coarse( void ) + ktime_t ktime_get_coarse_boottime( void ) ktime_t ktime_get_coarse_real( void ) ktime_t ktime_get_coarse_clocktai( void ) - ktime_t ktime_get_coarse_raw( void ) + +.. c:function:: u64 ktime_get_coarse_ns( void ) + u64 ktime_get_boot_coarse_ns( void ) + u64 ktime_get_real_coarse_ns( void ) + u64 ktime_get_tai_coarse_ns( void ) .. c:function:: void ktime_get_coarse_ts64( struct timespec64 * ) void ktime_get_coarse_boottime_ts64( struct timespec64 * ) void ktime_get_coarse_real_ts64( struct timespec64 * ) void ktime_get_coarse_clocktai_ts64( struct timespec64 * ) - void ktime_get_coarse_raw_ts64( struct timespec64 * ) These are quicker than the non-coarse versions, but less accurate, corresponding to CLOCK_MONONOTNIC_COARSE and CLOCK_REALTIME_COARSE diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h index c5d360779fab..3df8e63c704b 100644 --- a/include/linux/timekeeping.h +++ b/include/linux/timekeeping.h @@ -113,6 +113,33 @@ static inline ktime_t ktime_get_coarse_clocktai(void) return ktime_get_coarse_with_offset(TK_OFFS_TAI); } +static inline ktime_t ktime_get_coarse(void) +{ + struct timespec64 ts; + ktime_get_coarse_ts64(&ts); + return timespec64_to_ktime(ts); +} + +static inline u64 ktime_get_coarse_ns(void) +{ + return ktime_to_ns(ktime_get_coarse()); +} + +static inline u64 ktime_get_real_coarse_ns(void) +{ + return ktime_to_ns(ktime_get_coarse_real()); +} + +static inline u64 ktime_get_boot_coarse_ns(void) +{ + return ktime_to_ns(ktime_get_coarse_boottime()); +} + +static inline u64 ktime_get_tai_coarse_ns(void) +{ + return ktime_to_ns(ktime_get_coarse_clocktai()); +} + /** * ktime_mono_to_real - Convert monotonic time to clock realtime */ From patchwork Fri Jun 21 15:37:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jason A. Donenfeld" X-Patchwork-Id: 167400 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp897358ilk; Fri, 21 Jun 2019 08:38:08 -0700 (PDT) X-Google-Smtp-Source: APXvYqyHQcCv5KIfTfWi4bJbkpf5aviHBwehWzF+guOO7zGuQmJSuVB9lpZazOvZRCktAQUsu+uo X-Received: by 2002:a17:90a:8a0b:: with SMTP id w11mr7388716pjn.125.1561131488447; Fri, 21 Jun 2019 08:38:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561131488; cv=none; d=google.com; s=arc-20160816; b=OmobzuALJIkDLxoynajsDjT/gd3cjr/JyZl4urKAKIih75ZkyUAToldyHFLLZ41lEs 249mRM+Ygg/w78lxHvtZA9XuyFdCZK122k+hsAV1R7ckOGj9Wr+zW/WAJb97uZy9jN7f 07pFEVtiTN0kd1DGn1/AarvGRY46B8VGFz2ZxmBFzqpZRqwZWv4pONoZlqJejjleVHLk GNkQI/LNarbOw/qdReaLJ8NJTbJnkXhLe+L36IphqNlvT/dHSPn7XcaQpezj90wMd46z lKPYpKyy0D8Ezn5o/sLiLJbIozfxH3Jrg6M/dz8BPG444yMZG35oCt8B3Yo6kTDYxeLi w4qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=iPH6/RV4ByObtT3GsAFXxAf3Hz9VPmnFnkRfYG8fe8c=; b=GxcW69yrolqXdPtTKLLcXm6N6DT2uHyoQZfaX27ghx90K+7cEwIwZnLYx9oKwKwEzm Gq+7KZpRoMOGs36JRWrhOh0FwjNZh7GDVL5rTxryzGK8+MR3tr9j+aDvN2jlioEHpYem sdmYfbrXdgARxQ9dTuCbkN0Opls4mMB7G4qAgE9OMrsiwa+8Ew8pR1cCEBCUj9EdaVLa gLX7SacqV2a6YRTB12hYhJZSmVUO3dmAMGWlb9cewyR+5YFGda3RrT0ayg2BzLEyNkn6 OeMUPrf/o8RQL4ceexmkWLmaUmDJebS8c39nik7hyNZuyZoq+/NHK5jBcIcUIqP3Dpxj WkkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zx2c4.com header.s=mail header.b=vG1CA7T6; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g35si3162826pje.73.2019.06.21.08.38.08; Fri, 21 Jun 2019 08:38:08 -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=@zx2c4.com header.s=mail header.b=vG1CA7T6; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726480AbfFUPiG (ORCPT + 30 others); Fri, 21 Jun 2019 11:38:06 -0400 Received: from frisell.zx2c4.com ([192.95.5.64]:55159 "EHLO frisell.zx2c4.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726381AbfFUPiD (ORCPT ); Fri, 21 Jun 2019 11:38:03 -0400 Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 219b0f79; Fri, 21 Jun 2019 15:04:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=zx2c4.com; h=from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; s=mail; bh=O0xfdsauM7A+BIC+n3oWh4wn7 AU=; b=vG1CA7T6JQIKbBDRbPE1mcVOPmbfnef+OTI6yut/lCEvxvWj7VnNl+kGl /VfP9bUGBUKhd0NQFgn6Tnf1LTHROrJfn13XnQLuxlotzZRog7XN1gTWx5CJpzN+ rWF7hUBH8bHK51af9lrwDb+lhvIbxEYEB5LeZc61YAPRUJWH45hhVktLZuTUe4fB Wxykahu1wBA6YWMMHzufpfLLwMRYWZnnL8sWSxnn65+7cAaWpzq+tLCF9cUzVQMR znJr4LNX8ejglfwxXLv9XXcDvls0Fw69VUKxitG7wkAP/NKzataQHASTddOjJEpE cdndblOc6LQdvfPDqBl2Ia41UGF1g== Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 228653c4 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); Fri, 21 Jun 2019 15:04:34 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org Cc: "Jason A. Donenfeld" , Arnd Bergmann , Thomas Gleixner Subject: [PATCH v4 4/4] timekeeping: rename getter functions to be consistent and intuitive Date: Fri, 21 Jun 2019 17:37:41 +0200 Message-Id: <20190621153741.20159-4-Jason@zx2c4.com> In-Reply-To: <20190621153741.20159-1-Jason@zx2c4.com> References: <20190621153741.20159-1-Jason@zx2c4.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Several functions have been added, which all tried to conform to the function signature of their nearest neighbor, but those neighbors were also inconsistent with still others. This commit unifies things globally and adopts a more intuitive adjective ordering. The set of transformations are: s/ktime_get_boot_coarse_ns/ktime_get_boottime_coarse_ns/g s/ktime_get_boot_fast_ns/ktime_get_boottime_fast_ns/g s/ktime_get_boot_ns/ktime_get_boottime_ns/g s/ktime_get_tai_coarse_ns/ktime_get_clocktai_coarse_ns/g s/ktime_get_tai_fast_ns/ktime_get_clocktai_fast_ns/g s/ktime_get_tai_ns/ktime_get_clocktai_ns/g s/ktime_get_\([^_]\+\)_coarse/ktime_get_coarse_\1/g This does not, however, apply: s/ktime_get_\([^_]\+\)_fast/ktime_get_fast_\1/g Signed-off-by: Jason A. Donenfeld Reported-by: Arnd Bergmann Cc: Arnd Bergmann Cc: Thomas Gleixner --- Documentation/core-api/timekeeping.rst | 10 +++++----- Documentation/trace/ftrace.rst | 2 +- arch/x86/kvm/pmu.c | 4 ++-- arch/x86/kvm/x86.c | 12 ++++++------ drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 +- drivers/iio/humidity/dht11.c | 8 ++++---- drivers/iio/industrialio-core.c | 4 ++-- drivers/infiniband/hw/mlx4/alias_GUID.c | 6 +++--- drivers/leds/trigger/ledtrig-activity.c | 2 +- .../net/wireless/intel/iwlwifi/mvm/ftm-initiator.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/rx.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/utils.c | 2 +- drivers/net/wireless/mac80211_hwsim.c | 2 +- drivers/net/wireless/ti/wlcore/main.c | 2 +- drivers/net/wireless/ti/wlcore/rx.c | 2 +- drivers/net/wireless/ti/wlcore/tx.c | 2 +- drivers/net/wireless/virt_wifi.c | 2 +- include/linux/timekeeping.h | 12 ++++++------ include/net/cfg80211.h | 2 +- kernel/bpf/syscall.c | 2 +- kernel/events/core.c | 4 ++-- kernel/fork.c | 2 +- kernel/trace/trace.c | 2 +- 24 files changed, 46 insertions(+), 46 deletions(-) -- 2.21.0 diff --git a/Documentation/core-api/timekeeping.rst b/Documentation/core-api/timekeeping.rst index 0d4019fcaa87..86d9ea0e09e2 100644 --- a/Documentation/core-api/timekeeping.rst +++ b/Documentation/core-api/timekeeping.rst @@ -65,7 +65,7 @@ different format depending on what is required by the user: .. c:function:: u64 ktime_get_ns( void ) u64 ktime_get_boottime_ns( void ) u64 ktime_get_real_ns( void ) - u64 ktime_get_tai_ns( void ) + u64 ktime_get_clocktai_ns( void ) u64 ktime_get_raw_ns( void ) Same as the plain ktime_get functions, but returning a u64 number @@ -105,9 +105,9 @@ Some additional variants exist for more specialized cases: ktime_t ktime_get_coarse_clocktai( void ) .. c:function:: u64 ktime_get_coarse_ns( void ) - u64 ktime_get_boot_coarse_ns( void ) - u64 ktime_get_real_coarse_ns( void ) - u64 ktime_get_tai_coarse_ns( void ) + u64 ktime_get_coarse_boottime_ns( void ) + u64 ktime_get_coarse_real_ns( void ) + u64 ktime_get_coarse_clocktai_ns( void ) .. c:function:: void ktime_get_coarse_ts64( struct timespec64 * ) void ktime_get_coarse_boottime_ts64( struct timespec64 * ) @@ -136,7 +136,7 @@ Some additional variants exist for more specialized cases: .. c:function:: u64 ktime_get_mono_fast_ns( void ) u64 ktime_get_raw_fast_ns( void ) - u64 ktime_get_boot_fast_ns( void ) + u64 ktime_get_boottime_fast_ns( void ) u64 ktime_get_real_fast_ns( void ) These variants are safe to call from any context, including from diff --git a/Documentation/trace/ftrace.rst b/Documentation/trace/ftrace.rst index f60079259669..407e9c8682ec 100644 --- a/Documentation/trace/ftrace.rst +++ b/Documentation/trace/ftrace.rst @@ -482,7 +482,7 @@ of ftrace. Here is a list of some of the key files: Also on 32-bit systems, it's possible that the 64-bit boot offset sees a partial update. These effects are rare and post processing should be able to handle them. See comments in the - ktime_get_boot_fast_ns() function for more information. + ktime_get_boottime_fast_ns() function for more information. To set a clock, simply echo the clock name into this file:: diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c index dd745b58ffd8..1aea628ef6b8 100644 --- a/arch/x86/kvm/pmu.c +++ b/arch/x86/kvm/pmu.c @@ -264,10 +264,10 @@ static int kvm_pmu_rdpmc_vmware(struct kvm_vcpu *vcpu, unsigned idx, u64 *data) ctr_val = rdtsc(); break; case VMWARE_BACKDOOR_PMC_REAL_TIME: - ctr_val = ktime_get_boot_ns(); + ctr_val = ktime_get_boottime_ns(); break; case VMWARE_BACKDOOR_PMC_APPARENT_TIME: - ctr_val = ktime_get_boot_ns() + + ctr_val = ktime_get_boottime_ns() + vcpu->kvm->arch.kvmclock_offset; break; default: diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 83aefd759846..81a0914a1ec1 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1731,7 +1731,7 @@ void kvm_write_tsc(struct kvm_vcpu *vcpu, struct msr_data *msr) raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags); offset = kvm_compute_tsc_offset(vcpu, data); - ns = ktime_get_boot_ns(); + ns = ktime_get_boottime_ns(); elapsed = ns - kvm->arch.last_tsc_nsec; if (vcpu->arch.virtual_tsc_khz) { @@ -2073,7 +2073,7 @@ u64 get_kvmclock_ns(struct kvm *kvm) spin_lock(&ka->pvclock_gtod_sync_lock); if (!ka->use_master_clock) { spin_unlock(&ka->pvclock_gtod_sync_lock); - return ktime_get_boot_ns() + ka->kvmclock_offset; + return ktime_get_boottime_ns() + ka->kvmclock_offset; } hv_clock.tsc_timestamp = ka->master_cycle_now; @@ -2089,7 +2089,7 @@ u64 get_kvmclock_ns(struct kvm *kvm) &hv_clock.tsc_to_system_mul); ret = __pvclock_read_cycles(&hv_clock, rdtsc()); } else - ret = ktime_get_boot_ns() + ka->kvmclock_offset; + ret = ktime_get_boottime_ns() + ka->kvmclock_offset; put_cpu(); @@ -2188,7 +2188,7 @@ static int kvm_guest_time_update(struct kvm_vcpu *v) } if (!use_master_clock) { host_tsc = rdtsc(); - kernel_ns = ktime_get_boot_ns(); + kernel_ns = ktime_get_boottime_ns(); } tsc_timestamp = kvm_read_l1_tsc(v, host_tsc); @@ -9018,7 +9018,7 @@ int kvm_arch_hardware_enable(void) * before any KVM threads can be running. Unfortunately, we can't * bring the TSCs fully up to date with real time, as we aren't yet far * enough into CPU bringup that we know how much real time has actually - * elapsed; our helper function, ktime_get_boot_ns() will be using boot + * elapsed; our helper function, ktime_get_boottime_ns() will be using boot * variables that haven't been updated yet. * * So we simply find the maximum observed TSC above, then record the @@ -9246,7 +9246,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) mutex_init(&kvm->arch.apic_map_lock); spin_lock_init(&kvm->arch.pvclock_gtod_sync_lock); - kvm->arch.kvmclock_offset = -ktime_get_boot_ns(); + kvm->arch.kvmclock_offset = -ktime_get_boottime_ns(); pvclock_update_vm_gtod_copy(kvm); kvm->arch.guest_can_read_msr_platform_info = true; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 083bd8114db1..dd6b4b0b5f30 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -837,7 +837,7 @@ static int kfd_ioctl_get_clock_counters(struct file *filep, /* No access to rdtsc. Using raw monotonic time */ args->cpu_clock_counter = ktime_get_raw_ns(); - args->system_clock_counter = ktime_get_boot_ns(); + args->system_clock_counter = ktime_get_boottime_ns(); /* Since the counter is in nano-seconds we use 1GHz frequency */ args->system_clock_freq = 1000000000; diff --git a/drivers/iio/humidity/dht11.c b/drivers/iio/humidity/dht11.c index c8159205c77d..4e22b3c3e488 100644 --- a/drivers/iio/humidity/dht11.c +++ b/drivers/iio/humidity/dht11.c @@ -149,7 +149,7 @@ static int dht11_decode(struct dht11 *dht11, int offset) return -EIO; } - dht11->timestamp = ktime_get_boot_ns(); + dht11->timestamp = ktime_get_boottime_ns(); if (hum_int < 4) { /* DHT22: 100000 = (3*256+232)*100 */ dht11->temperature = (((temp_int & 0x7f) << 8) + temp_dec) * ((temp_int & 0x80) ? -100 : 100); @@ -177,7 +177,7 @@ static irqreturn_t dht11_handle_irq(int irq, void *data) /* TODO: Consider making the handler safe for IRQ sharing */ if (dht11->num_edges < DHT11_EDGES_PER_READ && dht11->num_edges >= 0) { - dht11->edges[dht11->num_edges].ts = ktime_get_boot_ns(); + dht11->edges[dht11->num_edges].ts = ktime_get_boottime_ns(); dht11->edges[dht11->num_edges++].value = gpio_get_value(dht11->gpio); @@ -196,7 +196,7 @@ static int dht11_read_raw(struct iio_dev *iio_dev, int ret, timeres, offset; mutex_lock(&dht11->lock); - if (dht11->timestamp + DHT11_DATA_VALID_TIME < ktime_get_boot_ns()) { + if (dht11->timestamp + DHT11_DATA_VALID_TIME < ktime_get_boottime_ns()) { timeres = ktime_get_resolution_ns(); dev_dbg(dht11->dev, "current timeresolution: %dns\n", timeres); if (timeres > DHT11_MIN_TIMERES) { @@ -322,7 +322,7 @@ static int dht11_probe(struct platform_device *pdev) return -EINVAL; } - dht11->timestamp = ktime_get_boot_ns() - DHT11_DATA_VALID_TIME - 1; + dht11->timestamp = ktime_get_boottime_ns() - DHT11_DATA_VALID_TIME - 1; dht11->num_edges = -1; platform_set_drvdata(pdev, iio); diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index f5a4581302f4..16008f862d19 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -231,9 +231,9 @@ s64 iio_get_time_ns(const struct iio_dev *indio_dev) ktime_get_coarse_ts64(&tp); return timespec64_to_ns(&tp); case CLOCK_BOOTTIME: - return ktime_get_boot_ns(); + return ktime_get_boottime_ns(); case CLOCK_TAI: - return ktime_get_tai_ns(); + return ktime_get_clocktai_ns(); default: BUG(); } diff --git a/drivers/infiniband/hw/mlx4/alias_GUID.c b/drivers/infiniband/hw/mlx4/alias_GUID.c index 2a0b59a4b6eb..cca414ecfcd5 100644 --- a/drivers/infiniband/hw/mlx4/alias_GUID.c +++ b/drivers/infiniband/hw/mlx4/alias_GUID.c @@ -310,7 +310,7 @@ static void aliasguid_query_handler(int status, if (status) { pr_debug("(port: %d) failed: status = %d\n", cb_ctx->port, status); - rec->time_to_run = ktime_get_boot_ns() + 1 * NSEC_PER_SEC; + rec->time_to_run = ktime_get_boottime_ns() + 1 * NSEC_PER_SEC; goto out; } @@ -416,7 +416,7 @@ static void aliasguid_query_handler(int status, be64_to_cpu((__force __be64)rec->guid_indexes), be64_to_cpu((__force __be64)applied_guid_indexes), be64_to_cpu((__force __be64)declined_guid_indexes)); - rec->time_to_run = ktime_get_boot_ns() + + rec->time_to_run = ktime_get_boottime_ns() + resched_delay_sec * NSEC_PER_SEC; } else { rec->status = MLX4_GUID_INFO_STATUS_SET; @@ -709,7 +709,7 @@ static int get_low_record_time_index(struct mlx4_ib_dev *dev, u8 port, } } if (resched_delay_sec) { - u64 curr_time = ktime_get_boot_ns(); + u64 curr_time = ktime_get_boottime_ns(); *resched_delay_sec = (low_record_time < curr_time) ? 0 : div_u64((low_record_time - curr_time), NSEC_PER_SEC); diff --git a/drivers/leds/trigger/ledtrig-activity.c b/drivers/leds/trigger/ledtrig-activity.c index bcbf41c90c30..0f130dd998b3 100644 --- a/drivers/leds/trigger/ledtrig-activity.c +++ b/drivers/leds/trigger/ledtrig-activity.c @@ -73,7 +73,7 @@ static void led_activity_function(struct timer_list *t) * down to 16us, ensuring we won't overflow 32-bit computations below * even up to 3k CPUs, while keeping divides cheap on smaller systems. */ - curr_boot = ktime_get_boot_ns() * cpus; + curr_boot = ktime_get_boottime_ns() * cpus; diff_boot = (curr_boot - activity_data->last_boot) >> 16; diff_used = (curr_used - activity_data->last_used) >> 16; activity_data->last_boot = curr_boot; diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c b/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c index fec38a47696e..9f4b117db9d7 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c @@ -93,7 +93,7 @@ void iwl_mvm_ftm_restart(struct iwl_mvm *mvm) struct cfg80211_pmsr_result result = { .status = NL80211_PMSR_STATUS_FAILURE, .final = 1, - .host_time = ktime_get_boot_ns(), + .host_time = ktime_get_boottime_ns(), .type = NL80211_PMSR_TYPE_FTM, }; int i; diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c index fbd3014e8b82..160b0db27103 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c @@ -555,7 +555,7 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi, if (unlikely(ieee80211_is_beacon(hdr->frame_control) || ieee80211_is_probe_resp(hdr->frame_control))) - rx_status->boottime_ns = ktime_get_boot_ns(); + rx_status->boottime_ns = ktime_get_boottime_ns(); /* Take a reference briefly to kick off a d0i3 entry delay so * we can handle bursts of RX packets without toggling the diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c index 1824566d08fc..64f950501287 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c @@ -1684,7 +1684,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi, if (unlikely(ieee80211_is_beacon(hdr->frame_control) || ieee80211_is_probe_resp(hdr->frame_control))) - rx_status->boottime_ns = ktime_get_boot_ns(); + rx_status->boottime_ns = ktime_get_boottime_ns(); } if (iwl_mvm_create_skb(mvm, skb, hdr, len, crypt_len, rxb)) { diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c index cc56ab88fb43..72cd5b3f2d8d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c @@ -1445,7 +1445,7 @@ void iwl_mvm_get_sync_time(struct iwl_mvm *mvm, u32 *gp2, u64 *boottime) } *gp2 = iwl_mvm_get_systime(mvm); - *boottime = ktime_get_boot_ns(); + *boottime = ktime_get_boottime_ns(); if (!ps_disabled) { mvm->ps_disabled = ps_disabled; diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index b5274d1f30fa..3233f5dd6797 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -1274,7 +1274,7 @@ static bool mac80211_hwsim_tx_frame_no_nl(struct ieee80211_hw *hw, */ if (ieee80211_is_beacon(hdr->frame_control) || ieee80211_is_probe_resp(hdr->frame_control)) { - rx_status.boottime_ns = ktime_get_boot_ns(); + rx_status.boottime_ns = ktime_get_boottime_ns(); now = data->abs_bcn_ts; } else { now = mac80211_hwsim_get_tsf_raw(); diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index c9a485ecee7b..b74dc8bc9755 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c @@ -483,7 +483,7 @@ static int wlcore_fw_status(struct wl1271 *wl, struct wl_fw_status *status) } /* update the host-chipset time offset */ - wl->time_offset = (ktime_get_boot_ns() >> 10) - + wl->time_offset = (ktime_get_boottime_ns() >> 10) - (s64)(status->fw_localtime); wl->fw_fast_lnk_map = status->link_fast_bitmap; diff --git a/drivers/net/wireless/ti/wlcore/rx.c b/drivers/net/wireless/ti/wlcore/rx.c index d96bb602fae6..307fab21050b 100644 --- a/drivers/net/wireless/ti/wlcore/rx.c +++ b/drivers/net/wireless/ti/wlcore/rx.c @@ -93,7 +93,7 @@ static void wl1271_rx_status(struct wl1271 *wl, } if (beacon || probe_rsp) - status->boottime_ns = ktime_get_boot_ns(); + status->boottime_ns = ktime_get_boottime_ns(); if (beacon) wlcore_set_pending_regdomain_ch(wl, (u16)desc->channel, diff --git a/drivers/net/wireless/ti/wlcore/tx.c b/drivers/net/wireless/ti/wlcore/tx.c index 057c6be330e7..90e56d4c3df3 100644 --- a/drivers/net/wireless/ti/wlcore/tx.c +++ b/drivers/net/wireless/ti/wlcore/tx.c @@ -273,7 +273,7 @@ static void wl1271_tx_fill_hdr(struct wl1271 *wl, struct wl12xx_vif *wlvif, } /* configure packet life time */ - hosttime = (ktime_get_boot_ns() >> 10); + hosttime = (ktime_get_boottime_ns() >> 10); desc->start_time = cpu_to_le32(hosttime - wl->time_offset); is_dummy = wl12xx_is_dummy_packet(wl, skb); diff --git a/drivers/net/wireless/virt_wifi.c b/drivers/net/wireless/virt_wifi.c index 606999f102eb..be92e1220284 100644 --- a/drivers/net/wireless/virt_wifi.c +++ b/drivers/net/wireless/virt_wifi.c @@ -172,7 +172,7 @@ static void virt_wifi_scan_result(struct work_struct *work) informed_bss = cfg80211_inform_bss(wiphy, &channel_5ghz, CFG80211_BSS_FTYPE_PRESP, fake_router_bssid, - ktime_get_boot_ns(), + ktime_get_boottime_ns(), WLAN_CAPABILITY_ESS, 0, (void *)&ssid, sizeof(ssid), DBM_TO_MBM(-50), GFP_KERNEL); diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h index 3df8e63c704b..817b4621927a 100644 --- a/include/linux/timekeeping.h +++ b/include/linux/timekeeping.h @@ -125,17 +125,17 @@ static inline u64 ktime_get_coarse_ns(void) return ktime_to_ns(ktime_get_coarse()); } -static inline u64 ktime_get_real_coarse_ns(void) +static inline u64 ktime_get_coarse_real_ns(void) { return ktime_to_ns(ktime_get_coarse_real()); } -static inline u64 ktime_get_boot_coarse_ns(void) +static inline u64 ktime_get_coarse_boottime_ns(void) { return ktime_to_ns(ktime_get_coarse_boottime()); } -static inline u64 ktime_get_tai_coarse_ns(void) +static inline u64 ktime_get_coarse_clocktai_ns(void) { return ktime_to_ns(ktime_get_coarse_clocktai()); } @@ -158,12 +158,12 @@ static inline u64 ktime_get_real_ns(void) return ktime_to_ns(ktime_get_real()); } -static inline u64 ktime_get_boot_ns(void) +static inline u64 ktime_get_boottime_ns(void) { return ktime_to_ns(ktime_get_boottime()); } -static inline u64 ktime_get_tai_ns(void) +static inline u64 ktime_get_clocktai_ns(void) { return ktime_to_ns(ktime_get_clocktai()); } @@ -188,7 +188,7 @@ static inline u64 ktime_get_raw_fast_ns(void) return ktime_to_ns(ktime_get_raw_fast()); } -static inline u64 ktime_get_boot_fast_ns(void) +static inline u64 ktime_get_boottime_fast_ns(void) { return ktime_to_ns(ktime_get_boottime_fast()); } diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 948139690a58..9d225e56777d 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -2010,7 +2010,7 @@ enum cfg80211_signal_type { * received by the device (not just by the host, in case it was * buffered on the device) and be accurate to about 10ms. * If the frame isn't buffered, just passing the return value of - * ktime_get_boot_ns() is likely appropriate. + * ktime_get_boottime_ns() is likely appropriate. * @parent_tsf: the time at the start of reception of the first octet of the * timestamp field of the frame. The time is the TSF of the BSS specified * by %parent_bssid. diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 42d17f730780..5b30f8baaf02 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -1668,7 +1668,7 @@ static int bpf_prog_load(union bpf_attr *attr, union bpf_attr __user *uattr) if (err < 0) goto free_prog; - prog->aux->load_time = ktime_get_boot_ns(); + prog->aux->load_time = ktime_get_boottime_ns(); err = bpf_obj_name_cpy(prog->aux->name, attr->prog_name); if (err) goto free_prog; diff --git a/kernel/events/core.c b/kernel/events/core.c index abbd4b3b96c2..e2d014395fc6 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -10680,11 +10680,11 @@ static int perf_event_set_clock(struct perf_event *event, clockid_t clk_id) break; case CLOCK_BOOTTIME: - event->clock = &ktime_get_boot_ns; + event->clock = &ktime_get_boottime_ns; break; case CLOCK_TAI: - event->clock = &ktime_get_tai_ns; + event->clock = &ktime_get_clocktai_ns; break; default: diff --git a/kernel/fork.c b/kernel/fork.c index 75675b9bf6df..4722f1a320bf 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2139,7 +2139,7 @@ static __latent_entropy struct task_struct *copy_process( */ p->start_time = ktime_get_ns(); - p->real_start_time = ktime_get_boot_ns(); + p->real_start_time = ktime_get_boottime_ns(); /* * Make it visible to the rest of the system, but dont wake it up yet. diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 83e08b78dbee..9097a467595c 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -1338,7 +1338,7 @@ static struct { { trace_clock, "perf", 1 }, { ktime_get_mono_fast_ns, "mono", 1 }, { ktime_get_raw_fast_ns, "mono_raw", 1 }, - { ktime_get_boot_fast_ns, "boot", 1 }, + { ktime_get_boottime_fast_ns, "boot", 1 }, ARCH_TRACE_CLOCKS };