From: kernel test robot <lkp@intel.com>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>,
linux-cxl@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev,
Alison Schofield <alison.schofield@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>,
Ira Weiny <ira.weiny@intel.com>,
Dan Williams <dan.j.williams@intel.com>,
linuxarm@huawei.com
Subject: Re: [PATCH] cxl/pci: Set the device timestamp
Date: Sat, 28 Jan 2023 19:21:56 +0800 [thread overview]
Message-ID: <202301281954.CS360mGh-lkp@intel.com> (raw)
In-Reply-To: <20230126180458.5145-1-Jonathan.Cameron@huawei.com>
Hi Jonathan,
I love your patch! Yet something to improve:
[auto build test ERROR on 172738bbccdb4ef76bdd72fc72a315c741c39161]
url: https://github.com/intel-lab-lkp/linux/commits/Jonathan-Cameron/cxl-pci-Set-the-device-timestamp/20230128-152300
base: 172738bbccdb4ef76bdd72fc72a315c741c39161
patch link: https://lore.kernel.org/r/20230126180458.5145-1-Jonathan.Cameron%40huawei.com
patch subject: [PATCH] cxl/pci: Set the device timestamp
config: mips-allmodconfig (https://download.01.org/0day-ci/archive/20230128/202301281954.CS360mGh-lkp@intel.com/config)
compiler: mips-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/f36cca050cf662048001b7b7686040270e4a8c00
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jonathan-Cameron/cxl-pci-Set-the-device-timestamp/20230128-152300
git checkout f36cca050cf662048001b7b7686040270e4a8c00
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from drivers/cxl/pci.c:5:
>> include/linux/timekeeping.h:19:43: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
19 | extern int do_settimeofday64(const struct timespec64 *ts);
| ^~~~~~~~~~
>> include/linux/timekeeping.h:21:47: warning: 'struct timezone' declared inside parameter list will not be visible outside of this definition or declaration
21 | const struct timezone *tz);
| ^~~~~~~~
include/linux/timekeeping.h:20:47: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
20 | extern int do_sys_settimeofday64(const struct timespec64 *tv,
| ^~~~~~~~~~
include/linux/timekeeping.h:41:39: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
41 | extern void ktime_get_raw_ts64(struct timespec64 *ts);
| ^~~~~~~~~~
include/linux/timekeeping.h:42:35: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
42 | extern void ktime_get_ts64(struct timespec64 *ts);
| ^~~~~~~~~~
include/linux/timekeeping.h:43:40: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
43 | extern void ktime_get_real_ts64(struct timespec64 *tv);
| ^~~~~~~~~~
include/linux/timekeeping.h:44:42: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
44 | extern void ktime_get_coarse_ts64(struct timespec64 *ts);
| ^~~~~~~~~~
include/linux/timekeeping.h:45:47: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
45 | extern void ktime_get_coarse_real_ts64(struct timespec64 *ts);
| ^~~~~~~~~~
include/linux/timekeeping.h:47:27: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
47 | void getboottime64(struct timespec64 *ts);
| ^~~~~~~~~~
>> include/linux/timekeeping.h:52:8: error: unknown type name 'time64_t'
52 | extern time64_t ktime_get_seconds(void);
| ^~~~~~~~
include/linux/timekeeping.h:53:8: error: unknown type name 'time64_t'
53 | extern time64_t __ktime_get_real_seconds(void);
| ^~~~~~~~
include/linux/timekeeping.h:54:8: error: unknown type name 'time64_t'
54 | extern time64_t ktime_get_real_seconds(void);
| ^~~~~~~~
include/linux/timekeeping.h:67:8: error: unknown type name 'ktime_t'
67 | extern ktime_t ktime_get(void);
| ^~~~~~~
include/linux/timekeeping.h:68:8: error: unknown type name 'ktime_t'
68 | extern ktime_t ktime_get_with_offset(enum tk_offsets offs);
| ^~~~~~~
include/linux/timekeeping.h:69:8: error: unknown type name 'ktime_t'
69 | extern ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs);
| ^~~~~~~
include/linux/timekeeping.h:70:8: error: unknown type name 'ktime_t'
70 | extern ktime_t ktime_mono_to_any(ktime_t tmono, enum tk_offsets offs);
| ^~~~~~~
include/linux/timekeeping.h:70:34: error: unknown type name 'ktime_t'; did you mean 'timer_t'?
70 | extern ktime_t ktime_mono_to_any(ktime_t tmono, enum tk_offsets offs);
| ^~~~~~~
| timer_t
include/linux/timekeeping.h:71:8: error: unknown type name 'ktime_t'
71 | extern ktime_t ktime_get_raw(void);
| ^~~~~~~
include/linux/timekeeping.h:77:15: error: unknown type name 'ktime_t'
77 | static inline ktime_t ktime_get_real(void)
| ^~~~~~~
include/linux/timekeeping.h:82:15: error: unknown type name 'ktime_t'
82 | static inline ktime_t ktime_get_coarse_real(void)
| ^~~~~~~
include/linux/timekeeping.h:93:15: error: unknown type name 'ktime_t'
93 | static inline ktime_t ktime_get_boottime(void)
| ^~~~~~~
include/linux/timekeeping.h:98:15: error: unknown type name 'ktime_t'
98 | static inline ktime_t ktime_get_coarse_boottime(void)
| ^~~~~~~
include/linux/timekeeping.h:106:15: error: unknown type name 'ktime_t'
106 | static inline ktime_t ktime_get_clocktai(void)
| ^~~~~~~
include/linux/timekeeping.h:111:15: error: unknown type name 'ktime_t'
111 | static inline ktime_t ktime_get_coarse_clocktai(void)
| ^~~~~~~
include/linux/timekeeping.h:116:15: error: unknown type name 'ktime_t'
116 | static inline ktime_t ktime_get_coarse(void)
| ^~~~~~~
include/linux/timekeeping.h: In function 'ktime_get_coarse':
>> include/linux/timekeeping.h:118:27: error: storage size of 'ts' isn't known
118 | struct timespec64 ts;
| ^~
include/linux/timekeeping.h:121:16: error: implicit declaration of function 'timespec64_to_ktime' [-Werror=implicit-function-declaration]
121 | return timespec64_to_ktime(ts);
| ^~~~~~~~~~~~~~~~~~~
include/linux/timekeeping.h:118:27: warning: unused variable 'ts' [-Wunused-variable]
118 | struct timespec64 ts;
| ^~
include/linux/timekeeping.h: In function 'ktime_get_coarse_ns':
include/linux/timekeeping.h:126:16: error: implicit declaration of function 'ktime_to_ns' [-Werror=implicit-function-declaration]
126 | return ktime_to_ns(ktime_get_coarse());
| ^~~~~~~~~~~
include/linux/timekeeping.h: At top level:
include/linux/timekeeping.h:147:15: error: unknown type name 'ktime_t'
147 | static inline ktime_t ktime_mono_to_real(ktime_t mono)
| ^~~~~~~
include/linux/timekeeping.h:147:42: error: unknown type name 'ktime_t'; did you mean 'timer_t'?
147 | static inline ktime_t ktime_mono_to_real(ktime_t mono)
| ^~~~~~~
| timer_t
include/linux/timekeeping.h:188:51: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
188 | static inline void ktime_get_boottime_ts64(struct timespec64 *ts)
| ^~~~~~~~~~
include/linux/timekeeping.h: In function 'ktime_get_boottime_ts64':
include/linux/timekeeping.h:190:15: error: implicit declaration of function 'ktime_to_timespec64' [-Werror=implicit-function-declaration]
190 | *ts = ktime_to_timespec64(ktime_get_boottime());
| ^~~~~~~~~~~~~~~~~~~
>> include/linux/timekeeping.h:190:13: error: invalid use of undefined type 'struct timespec64'
190 | *ts = ktime_to_timespec64(ktime_get_boottime());
| ^
include/linux/timekeeping.h: At top level:
include/linux/timekeeping.h:193:58: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
193 | static inline void ktime_get_coarse_boottime_ts64(struct timespec64 *ts)
| ^~~~~~~~~~
include/linux/timekeeping.h: In function 'ktime_get_coarse_boottime_ts64':
include/linux/timekeeping.h:195:13: error: invalid use of undefined type 'struct timespec64'
195 | *ts = ktime_to_timespec64(ktime_get_coarse_boottime());
| ^
include/linux/timekeeping.h: At top level:
include/linux/timekeeping.h:198:15: error: unknown type name 'time64_t'
198 | static inline time64_t ktime_get_boottime_seconds(void)
| ^~~~~~~~
include/linux/timekeeping.h: In function 'ktime_get_boottime_seconds':
include/linux/timekeeping.h:200:16: error: implicit declaration of function 'ktime_divns'; did you mean 'ktime_get_ns'? [-Werror=implicit-function-declaration]
200 | return ktime_divns(ktime_get_coarse_boottime(), NSEC_PER_SEC);
| ^~~~~~~~~~~
| ktime_get_ns
>> include/linux/timekeeping.h:200:57: error: 'NSEC_PER_SEC' undeclared (first use in this function); did you mean 'CLOCKS_PER_SEC'?
200 | return ktime_divns(ktime_get_coarse_boottime(), NSEC_PER_SEC);
| ^~~~~~~~~~~~
| CLOCKS_PER_SEC
include/linux/timekeeping.h:200:57: note: each undeclared identifier is reported only once for each function it appears in
include/linux/timekeeping.h: At top level:
include/linux/timekeeping.h:203:51: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
203 | static inline void ktime_get_clocktai_ts64(struct timespec64 *ts)
| ^~~~~~~~~~
include/linux/timekeeping.h: In function 'ktime_get_clocktai_ts64':
include/linux/timekeeping.h:205:13: error: invalid use of undefined type 'struct timespec64'
205 | *ts = ktime_to_timespec64(ktime_get_clocktai());
| ^
include/linux/timekeeping.h: At top level:
include/linux/timekeeping.h:208:58: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
208 | static inline void ktime_get_coarse_clocktai_ts64(struct timespec64 *ts)
| ^~~~~~~~~~
include/linux/timekeeping.h: In function 'ktime_get_coarse_clocktai_ts64':
include/linux/timekeeping.h:210:13: error: invalid use of undefined type 'struct timespec64'
210 | *ts = ktime_to_timespec64(ktime_get_coarse_clocktai());
| ^
include/linux/timekeeping.h: At top level:
include/linux/timekeeping.h:213:15: error: unknown type name 'time64_t'
213 | static inline time64_t ktime_get_clocktai_seconds(void)
| ^~~~~~~~
include/linux/timekeeping.h: In function 'ktime_get_clocktai_seconds':
include/linux/timekeeping.h:215:57: error: 'NSEC_PER_SEC' undeclared (first use in this function); did you mean 'CLOCKS_PER_SEC'?
215 | return ktime_divns(ktime_get_coarse_clocktai(), NSEC_PER_SEC);
| ^~~~~~~~~~~~
| CLOCKS_PER_SEC
include/linux/timekeeping.h: At top level:
include/linux/timekeeping.h:224:57: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
224 | extern void timekeeping_inject_sleeptime64(const struct timespec64 *delta);
| ^~~~~~~~~~
include/linux/timekeeping.h:249:9: error: unknown type name 'ktime_t'
249 | ktime_t real;
| ^~~~~~~
include/linux/timekeeping.h:250:9: error: unknown type name 'ktime_t'
250 | ktime_t raw;
| ^~~~~~~
include/linux/timekeeping.h:264:9: error: unknown type name 'ktime_t'
264 | ktime_t device;
| ^~~~~~~
include/linux/timekeeping.h:265:9: error: unknown type name 'ktime_t'
265 | ktime_t sys_realtime;
| ^~~~~~~
include/linux/timekeeping.h:266:9: error: unknown type name 'ktime_t'
266 | ktime_t sys_monoraw;
| ^~~~~~~
include/linux/timekeeping.h:285:44: error: unknown type name 'ktime_t'; did you mean 'timer_t'?
285 | int (*get_time_fn)(ktime_t *device_time,
| ^~~~~~~
| timer_t
include/linux/timekeeping.h:288:25: error: expected ';', ',' or ')' before 'void'
288 | void *ctx,
| ^~~~
include/linux/timekeeping.h:305:44: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
305 | extern void read_persistent_clock64(struct timespec64 *ts);
| ^~~~~~~~~~
include/linux/timekeeping.h:306:50: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
306 | void read_persistent_wall_and_boot_offset(struct timespec64 *wall_clock,
| ^~~~~~~~~~
include/linux/timekeeping.h:309:45: warning: 'struct timespec64' declared inside parameter list will not be visible outside of this definition or declaration
309 | extern int update_persistent_clock64(struct timespec64 now);
| ^~~~~~~~~~
In file included from include/linux/timer.h:6,
from include/linux/workqueue.h:9,
from include/linux/srcu.h:21,
from include/linux/notifier.h:16,
from arch/mips/include/asm/uprobes.h:9,
from include/linux/uprobes.h:49,
from include/linux/mm_types.h:16,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from drivers/cxl/pci.c:6:
include/linux/ktime.h:71:23: error: conflicting types for 'timespec64_to_ktime'; have 'ktime_t(struct timespec64)' {aka 'long long int(struct timespec64)'}
71 | static inline ktime_t timespec64_to_ktime(struct timespec64 ts)
| ^~~~~~~~~~~~~~~~~~~
include/linux/timekeeping.h:121:16: note: previous implicit declaration of 'timespec64_to_ktime' with type 'int()'
121 | return timespec64_to_ktime(ts);
| ^~~~~~~~~~~~~~~~~~~
include/linux/ktime.h:80:19: error: conflicting types for 'ktime_to_ns'; have 's64(const ktime_t)' {aka 'long long int(const long long int)'}
80 | static inline s64 ktime_to_ns(const ktime_t kt)
| ^~~~~~~~~~~
include/linux/timekeeping.h:126:16: note: previous implicit declaration of 'ktime_to_ns' with type 'int()'
126 | return ktime_to_ns(ktime_get_coarse());
| ^~~~~~~~~~~
include/linux/ktime.h:130:19: error: conflicting types for 'ktime_divns'; have 's64(const ktime_t, s64)' {aka 'long long int(const long long int, long long int)'}
130 | static inline s64 ktime_divns(const ktime_t kt, s64 div)
| ^~~~~~~~~~~
include/linux/timekeeping.h:200:16: note: previous implicit declaration of 'ktime_divns' with type 'int()'
200 | return ktime_divns(ktime_get_coarse_boottime(), NSEC_PER_SEC);
| ^~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/time64_t +52 include/linux/timekeeping.h
93b5a9a7051e51 Ingo Molnar 2017-02-05 15
8b094cd03b4a37 Thomas Gleixner 2014-07-16 16 /*
8b094cd03b4a37 Thomas Gleixner 2014-07-16 17 * Get and set timeofday
8b094cd03b4a37 Thomas Gleixner 2014-07-16 18 */
21f7eca555ad14 pang.xunlei 2014-11-18 @19 extern int do_settimeofday64(const struct timespec64 *ts);
86d3473224b004 Baolin Wang 2016-04-08 20 extern int do_sys_settimeofday64(const struct timespec64 *tv,
8b094cd03b4a37 Thomas Gleixner 2014-07-16 @21 const struct timezone *tz);
8758a240e2d74c Baolin Wang 2015-07-29 22
0e3fd810c4f41d Arnd Bergmann 2018-07-10 23 /*
0e3fd810c4f41d Arnd Bergmann 2018-07-10 24 * ktime_get() family: read the current time in a multitude of ways,
0e3fd810c4f41d Arnd Bergmann 2018-07-10 25 *
0e3fd810c4f41d Arnd Bergmann 2018-07-10 26 * The default time reference is CLOCK_MONOTONIC, starting at
0e3fd810c4f41d Arnd Bergmann 2018-07-10 27 * boot time but not counting the time spent in suspend.
0e3fd810c4f41d Arnd Bergmann 2018-07-10 28 * For other references, use the functions with "real", "clocktai",
0e3fd810c4f41d Arnd Bergmann 2018-07-10 29 * "boottime" and "raw" suffixes.
0e3fd810c4f41d Arnd Bergmann 2018-07-10 30 *
0e3fd810c4f41d Arnd Bergmann 2018-07-10 31 * To get the time in a different format, use the ones wit
0e3fd810c4f41d Arnd Bergmann 2018-07-10 32 * "ns", "ts64" and "seconds" suffix.
0e3fd810c4f41d Arnd Bergmann 2018-07-10 33 *
0e3fd810c4f41d Arnd Bergmann 2018-07-10 34 * See Documentation/core-api/timekeeping.rst for more details.
0e3fd810c4f41d Arnd Bergmann 2018-07-10 35 */
0e3fd810c4f41d Arnd Bergmann 2018-07-10 36
0e3fd810c4f41d Arnd Bergmann 2018-07-10 37
8b094cd03b4a37 Thomas Gleixner 2014-07-16 38 /*
6546911ed369af Arnd Bergmann 2017-10-19 39 * timespec64 based interfaces
8b094cd03b4a37 Thomas Gleixner 2014-07-16 40 */
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 41 extern void ktime_get_raw_ts64(struct timespec64 *ts);
d6d29896c665df Thomas Gleixner 2014-07-16 42 extern void ktime_get_ts64(struct timespec64 *ts);
edca71fecb77e2 Arnd Bergmann 2018-04-27 43 extern void ktime_get_real_ts64(struct timespec64 *tv);
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 44 extern void ktime_get_coarse_ts64(struct timespec64 *ts);
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 45 extern void ktime_get_coarse_real_ts64(struct timespec64 *ts);
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 46
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 47 void getboottime64(struct timespec64 *ts);
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 48
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 49 /*
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 50 * time64_t base interfaces
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 51 */
9e3680b1750b9a Heena Sirwani 2014-10-29 @52 extern time64_t ktime_get_seconds(void);
6909e29fdefbb7 Arnd Bergmann 2017-10-12 53 extern time64_t __ktime_get_real_seconds(void);
dbe7aa622db96b Heena Sirwani 2014-10-29 54 extern time64_t ktime_get_real_seconds(void);
d6d29896c665df Thomas Gleixner 2014-07-16 55
8b094cd03b4a37 Thomas Gleixner 2014-07-16 56 /*
8b094cd03b4a37 Thomas Gleixner 2014-07-16 57 * ktime_t based interfaces
8b094cd03b4a37 Thomas Gleixner 2014-07-16 58 */
a3ed0e4393d688 Thomas Gleixner 2018-04-25 59
0077dc60f274b9 Thomas Gleixner 2014-07-16 60 enum tk_offsets {
0077dc60f274b9 Thomas Gleixner 2014-07-16 61 TK_OFFS_REAL,
a3ed0e4393d688 Thomas Gleixner 2018-04-25 62 TK_OFFS_BOOT,
0077dc60f274b9 Thomas Gleixner 2014-07-16 63 TK_OFFS_TAI,
0077dc60f274b9 Thomas Gleixner 2014-07-16 64 TK_OFFS_MAX,
0077dc60f274b9 Thomas Gleixner 2014-07-16 65 };
0077dc60f274b9 Thomas Gleixner 2014-07-16 66
8b094cd03b4a37 Thomas Gleixner 2014-07-16 67 extern ktime_t ktime_get(void);
0077dc60f274b9 Thomas Gleixner 2014-07-16 68 extern ktime_t ktime_get_with_offset(enum tk_offsets offs);
b9ff604cff1135 Arnd Bergmann 2018-04-27 69 extern ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs);
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 70 extern ktime_t ktime_mono_to_any(ktime_t tmono, enum tk_offsets offs);
f519b1a2e08c91 Thomas Gleixner 2014-07-16 71 extern ktime_t ktime_get_raw(void);
6374f9124efea5 Harald Geyer 2015-04-07 72 extern u32 ktime_get_resolution_ns(void);
8b094cd03b4a37 Thomas Gleixner 2014-07-16 73
f5264d5d5a0729 Thomas Gleixner 2014-07-16 74 /**
f5264d5d5a0729 Thomas Gleixner 2014-07-16 75 * ktime_get_real - get the real (wall-) time in ktime_t format
f5264d5d5a0729 Thomas Gleixner 2014-07-16 76 */
f5264d5d5a0729 Thomas Gleixner 2014-07-16 77 static inline ktime_t ktime_get_real(void)
f5264d5d5a0729 Thomas Gleixner 2014-07-16 78 {
f5264d5d5a0729 Thomas Gleixner 2014-07-16 79 return ktime_get_with_offset(TK_OFFS_REAL);
f5264d5d5a0729 Thomas Gleixner 2014-07-16 80 }
f5264d5d5a0729 Thomas Gleixner 2014-07-16 81
b9ff604cff1135 Arnd Bergmann 2018-04-27 82 static inline ktime_t ktime_get_coarse_real(void)
b9ff604cff1135 Arnd Bergmann 2018-04-27 83 {
b9ff604cff1135 Arnd Bergmann 2018-04-27 84 return ktime_get_coarse_with_offset(TK_OFFS_REAL);
b9ff604cff1135 Arnd Bergmann 2018-04-27 85 }
b9ff604cff1135 Arnd Bergmann 2018-04-27 86
a3ed0e4393d688 Thomas Gleixner 2018-04-25 87 /**
a3ed0e4393d688 Thomas Gleixner 2018-04-25 88 * ktime_get_boottime - Returns monotonic time since boot in ktime_t format
a3ed0e4393d688 Thomas Gleixner 2018-04-25 89 *
a3ed0e4393d688 Thomas Gleixner 2018-04-25 90 * This is similar to CLOCK_MONTONIC/ktime_get, but also includes the
a3ed0e4393d688 Thomas Gleixner 2018-04-25 91 * time spent in suspend.
a3ed0e4393d688 Thomas Gleixner 2018-04-25 92 */
a3ed0e4393d688 Thomas Gleixner 2018-04-25 93 static inline ktime_t ktime_get_boottime(void)
a3ed0e4393d688 Thomas Gleixner 2018-04-25 94 {
a3ed0e4393d688 Thomas Gleixner 2018-04-25 95 return ktime_get_with_offset(TK_OFFS_BOOT);
a3ed0e4393d688 Thomas Gleixner 2018-04-25 96 }
a3ed0e4393d688 Thomas Gleixner 2018-04-25 97
b9ff604cff1135 Arnd Bergmann 2018-04-27 98 static inline ktime_t ktime_get_coarse_boottime(void)
b9ff604cff1135 Arnd Bergmann 2018-04-27 99 {
b9ff604cff1135 Arnd Bergmann 2018-04-27 100 return ktime_get_coarse_with_offset(TK_OFFS_BOOT);
b9ff604cff1135 Arnd Bergmann 2018-04-27 101 }
b9ff604cff1135 Arnd Bergmann 2018-04-27 102
afab07c0e91ecf Thomas Gleixner 2014-07-16 103 /**
afab07c0e91ecf Thomas Gleixner 2014-07-16 104 * ktime_get_clocktai - Returns the TAI time of day in ktime_t format
afab07c0e91ecf Thomas Gleixner 2014-07-16 105 */
afab07c0e91ecf Thomas Gleixner 2014-07-16 106 static inline ktime_t ktime_get_clocktai(void)
afab07c0e91ecf Thomas Gleixner 2014-07-16 107 {
afab07c0e91ecf Thomas Gleixner 2014-07-16 108 return ktime_get_with_offset(TK_OFFS_TAI);
afab07c0e91ecf Thomas Gleixner 2014-07-16 109 }
afab07c0e91ecf Thomas Gleixner 2014-07-16 110
b9ff604cff1135 Arnd Bergmann 2018-04-27 111 static inline ktime_t ktime_get_coarse_clocktai(void)
b9ff604cff1135 Arnd Bergmann 2018-04-27 112 {
b9ff604cff1135 Arnd Bergmann 2018-04-27 113 return ktime_get_coarse_with_offset(TK_OFFS_TAI);
b9ff604cff1135 Arnd Bergmann 2018-04-27 114 }
b9ff604cff1135 Arnd Bergmann 2018-04-27 115
4c54294d01e605 Jason A. Donenfeld 2019-06-21 116 static inline ktime_t ktime_get_coarse(void)
4c54294d01e605 Jason A. Donenfeld 2019-06-21 117 {
4c54294d01e605 Jason A. Donenfeld 2019-06-21 @118 struct timespec64 ts;
4c54294d01e605 Jason A. Donenfeld 2019-06-21 119
4c54294d01e605 Jason A. Donenfeld 2019-06-21 120 ktime_get_coarse_ts64(&ts);
4c54294d01e605 Jason A. Donenfeld 2019-06-21 121 return timespec64_to_ktime(ts);
4c54294d01e605 Jason A. Donenfeld 2019-06-21 122 }
4c54294d01e605 Jason A. Donenfeld 2019-06-21 123
4c54294d01e605 Jason A. Donenfeld 2019-06-21 124 static inline u64 ktime_get_coarse_ns(void)
4c54294d01e605 Jason A. Donenfeld 2019-06-21 125 {
4c54294d01e605 Jason A. Donenfeld 2019-06-21 126 return ktime_to_ns(ktime_get_coarse());
4c54294d01e605 Jason A. Donenfeld 2019-06-21 127 }
4c54294d01e605 Jason A. Donenfeld 2019-06-21 128
4c54294d01e605 Jason A. Donenfeld 2019-06-21 129 static inline u64 ktime_get_coarse_real_ns(void)
4c54294d01e605 Jason A. Donenfeld 2019-06-21 130 {
4c54294d01e605 Jason A. Donenfeld 2019-06-21 131 return ktime_to_ns(ktime_get_coarse_real());
4c54294d01e605 Jason A. Donenfeld 2019-06-21 132 }
4c54294d01e605 Jason A. Donenfeld 2019-06-21 133
d48e0cd8fcaf31 Jason A. Donenfeld 2019-06-24 134 static inline u64 ktime_get_coarse_boottime_ns(void)
4c54294d01e605 Jason A. Donenfeld 2019-06-21 135 {
4c54294d01e605 Jason A. Donenfeld 2019-06-21 136 return ktime_to_ns(ktime_get_coarse_boottime());
4c54294d01e605 Jason A. Donenfeld 2019-06-21 137 }
4c54294d01e605 Jason A. Donenfeld 2019-06-21 138
4c54294d01e605 Jason A. Donenfeld 2019-06-21 139 static inline u64 ktime_get_coarse_clocktai_ns(void)
4c54294d01e605 Jason A. Donenfeld 2019-06-21 140 {
4c54294d01e605 Jason A. Donenfeld 2019-06-21 141 return ktime_to_ns(ktime_get_coarse_clocktai());
4c54294d01e605 Jason A. Donenfeld 2019-06-21 142 }
4c54294d01e605 Jason A. Donenfeld 2019-06-21 143
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 144 /**
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 145 * ktime_mono_to_real - Convert monotonic time to clock realtime
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 146 */
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 147 static inline ktime_t ktime_mono_to_real(ktime_t mono)
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 148 {
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 149 return ktime_mono_to_any(mono, TK_OFFS_REAL);
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 150 }
9a6b51976ea3a3 Thomas Gleixner 2014-07-16 151
897994e32b2b0a Thomas Gleixner 2014-07-16 152 static inline u64 ktime_get_ns(void)
897994e32b2b0a Thomas Gleixner 2014-07-16 153 {
897994e32b2b0a Thomas Gleixner 2014-07-16 154 return ktime_to_ns(ktime_get());
897994e32b2b0a Thomas Gleixner 2014-07-16 155 }
897994e32b2b0a Thomas Gleixner 2014-07-16 156
897994e32b2b0a Thomas Gleixner 2014-07-16 157 static inline u64 ktime_get_real_ns(void)
897994e32b2b0a Thomas Gleixner 2014-07-16 158 {
897994e32b2b0a Thomas Gleixner 2014-07-16 159 return ktime_to_ns(ktime_get_real());
897994e32b2b0a Thomas Gleixner 2014-07-16 160 }
897994e32b2b0a Thomas Gleixner 2014-07-16 161
9285ec4c8b61d4 Jason A. Donenfeld 2019-06-21 162 static inline u64 ktime_get_boottime_ns(void)
a3ed0e4393d688 Thomas Gleixner 2018-04-25 163 {
a3ed0e4393d688 Thomas Gleixner 2018-04-25 164 return ktime_to_ns(ktime_get_boottime());
a3ed0e4393d688 Thomas Gleixner 2018-04-25 165 }
a3ed0e4393d688 Thomas Gleixner 2018-04-25 166
9285ec4c8b61d4 Jason A. Donenfeld 2019-06-21 167 static inline u64 ktime_get_clocktai_ns(void)
fe5fba05b46c79 Peter Zijlstra 2015-03-17 168 {
fe5fba05b46c79 Peter Zijlstra 2015-03-17 169 return ktime_to_ns(ktime_get_clocktai());
fe5fba05b46c79 Peter Zijlstra 2015-03-17 170 }
fe5fba05b46c79 Peter Zijlstra 2015-03-17 171
f519b1a2e08c91 Thomas Gleixner 2014-07-16 172 static inline u64 ktime_get_raw_ns(void)
f519b1a2e08c91 Thomas Gleixner 2014-07-16 173 {
f519b1a2e08c91 Thomas Gleixner 2014-07-16 174 return ktime_to_ns(ktime_get_raw());
f519b1a2e08c91 Thomas Gleixner 2014-07-16 175 }
f519b1a2e08c91 Thomas Gleixner 2014-07-16 176
4396e058c52e16 Thomas Gleixner 2014-07-16 177 extern u64 ktime_get_mono_fast_ns(void);
f09cb9a1808e35 Peter Zijlstra 2015-03-19 178 extern u64 ktime_get_raw_fast_ns(void);
a3ed0e4393d688 Thomas Gleixner 2018-04-25 179 extern u64 ktime_get_boot_fast_ns(void);
3dc6ffae2da201 Kurt Kanzenbach 2022-04-14 180 extern u64 ktime_get_tai_fast_ns(void);
4c3711d7fb4763 Thomas Gleixner 2017-08-31 181 extern u64 ktime_get_real_fast_ns(void);
4396e058c52e16 Thomas Gleixner 2014-07-16 182
d6c7270e913db7 Thomas Gleixner 2018-03-01 183 /*
06aa376903b6e8 Arnd Bergmann 2018-04-27 184 * timespec64/time64_t interfaces utilizing the ktime based ones
06aa376903b6e8 Arnd Bergmann 2018-04-27 185 * for API completeness, these could be implemented more efficiently
06aa376903b6e8 Arnd Bergmann 2018-04-27 186 * if needed.
d6c7270e913db7 Thomas Gleixner 2018-03-01 187 */
fb7fcc96a86cfa Arnd Bergmann 2018-04-27 188 static inline void ktime_get_boottime_ts64(struct timespec64 *ts)
a3ed0e4393d688 Thomas Gleixner 2018-04-25 189 {
a3ed0e4393d688 Thomas Gleixner 2018-04-25 @190 *ts = ktime_to_timespec64(ktime_get_boottime());
a3ed0e4393d688 Thomas Gleixner 2018-04-25 191 }
a3ed0e4393d688 Thomas Gleixner 2018-04-25 192
06aa376903b6e8 Arnd Bergmann 2018-04-27 193 static inline void ktime_get_coarse_boottime_ts64(struct timespec64 *ts)
06aa376903b6e8 Arnd Bergmann 2018-04-27 194 {
06aa376903b6e8 Arnd Bergmann 2018-04-27 195 *ts = ktime_to_timespec64(ktime_get_coarse_boottime());
06aa376903b6e8 Arnd Bergmann 2018-04-27 196 }
06aa376903b6e8 Arnd Bergmann 2018-04-27 197
06aa376903b6e8 Arnd Bergmann 2018-04-27 198 static inline time64_t ktime_get_boottime_seconds(void)
06aa376903b6e8 Arnd Bergmann 2018-04-27 199 {
06aa376903b6e8 Arnd Bergmann 2018-04-27 @200 return ktime_divns(ktime_get_coarse_boottime(), NSEC_PER_SEC);
06aa376903b6e8 Arnd Bergmann 2018-04-27 201 }
06aa376903b6e8 Arnd Bergmann 2018-04-27 202
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
next prev parent reply other threads:[~2023-01-28 11:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-26 18:04 [PATCH] cxl/pci: Set the device timestamp Jonathan Cameron
2023-01-26 18:56 ` Davidlohr Bueso
2023-01-27 9:57 ` Jonathan Cameron
2023-01-27 12:08 ` Jonathan Cameron
2023-01-26 19:59 ` Alison Schofield
2023-01-27 9:59 ` Jonathan Cameron
2023-01-27 9:59 ` Jonathan Cameron
2023-01-26 20:22 ` Dan Williams
2023-01-27 10:04 ` Jonathan Cameron
2023-01-27 12:10 ` Jonathan Cameron
2023-01-27 19:07 ` Dan Williams
2023-01-27 23:50 ` Ira Weiny
2023-01-28 0:17 ` Dan Williams
2023-01-28 11:21 ` kernel test robot [this message]
2023-01-28 11:32 ` kernel test robot
2023-01-30 15:10 ` Jonathan Cameron
2023-01-28 16:01 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202301281954.CS360mGh-lkp@intel.com \
--to=lkp@intel.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=alison.schofield@intel.com \
--cc=dan.j.williams@intel.com \
--cc=ira.weiny@intel.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=vishal.l.verma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.