Skip to contentSkip to conversation

printk: Add boottime and real timestamps

PATCH Superseded Prarit Bhargava 5 participants 8 messages Aug 1, 2017

Subsystems (32)

v2 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 printk: Add boottime and real timestamps

printk.time=1/CONFIG_PRINTK_TIME=1 adds a unmodified local hardware clock timestamp to printk messages. The local hardware clock loses time each day making it difficult to determine exactly when an issue has occurred in the kernel log, and making it difficult to determine how kernel and hardware issues relate to each other in real time.

Make printk output different timestampes by adding options for no timestamp, the local hardware clock, the monotonic clock, and the real clock. Allow a user to pick one of the clocks by using the printk.time kernel parameter. Output the type of clock in /sys/module/printk/parameters/time so userspace programs can interpret the timestamp.

Real clock & 32-bit systems: Selecting the real clock printk timestamp may lead to unlikely situations where a timestamp is wrong because the real time offset is read without the protection of a sequence lock in the call to ktime_get_log_ts() in printk_get_ts().

v2: Use peterz's suggested Kconfig options. Merge patchset together. Fix i386 !CONFIG_PRINTK builds.

Cc Mark Salyzyn <[email protected]>
Cc Jonathan Corbet <[email protected]>
Cc Petr Mladek <[email protected]>
Cc Sergey Senozhatsky <[email protected]>
Cc Steven Rostedt <[email protected]>
Cc John Stultz <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Stephen Boyd <[email protected]>
Cc Andrew Morton <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
Cc "Paul E. McKenney" <[email protected]>
Cc Christoffer Dall <[email protected]>
Cc Deepa Dinamani <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Joel Fernandes <[email protected]>
Cc Prarit Bhargava <[email protected]>
Cc Kees Cook <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Geert Uytterhoeven <[email protected]>
Cc "Luis R. Rodriguez" <[email protected]>
Cc Nicholas Piggin <[email protected]>
Cc "Jason A. Donenfeld" <[email protected]>
Cc Olof Johansson <[email protected]>
Cc Josh Poimboeuf <[email protected]>
---
 Documentation/admin-guide/kernel-parameters.txt    |  6 +-
 arch/arm/configs/aspeed_g4_defconfig               |  4 +-
 arch/arm/configs/aspeed_g5_defconfig               |  4 +-
 arch/arm/configs/axm55xx_defconfig                 |  4 +-
 arch/arm/configs/bcm2835_defconfig                 |  4 +-
 arch/arm/configs/colibri_pxa270_defconfig          |  4 +-
 arch/arm/configs/colibri_pxa300_defconfig          |  4 +-
 arch/arm/configs/dove_defconfig                    |  4 +-
 arch/arm/configs/efm32_defconfig                   |  4 +-
 arch/arm/configs/exynos_defconfig                  |  4 +-
 arch/arm/configs/ezx_defconfig                     |  4 +-
 arch/arm/configs/h5000_defconfig                   |  4 +-
 arch/arm/configs/hisi_defconfig                    |  4 +-
 arch/arm/configs/imote2_defconfig                  |  4 +-
 arch/arm/configs/imx_v6_v7_defconfig               |  4 +-
 arch/arm/configs/keystone_defconfig                |  4 +-
 arch/arm/configs/lpc18xx_defconfig                 |  4 +-
 arch/arm/configs/magician_defconfig                |  4 +-
 arch/arm/configs/mmp2_defconfig                    |  4 +-
 arch/arm/configs/moxart_defconfig                  |  4 +-
 arch/arm/configs/mps2_defconfig                    |  4 +-
 arch/arm/configs/multi_v7_defconfig                |  4 +-
 arch/arm/configs/mvebu_v7_defconfig                |  4 +-
 arch/arm/configs/mxs_defconfig                     |  4 +-
 arch/arm/configs/omap2plus_defconfig               |  4 +-
 arch/arm/configs/pxa168_defconfig                  |  4 +-
 arch/arm/configs/pxa3xx_defconfig                  |  4 +-
 arch/arm/configs/pxa910_defconfig                  |  4 +-
 arch/arm/configs/pxa_defconfig                     |  4 +-
 arch/arm/configs/qcom_defconfig                    |  4 +-
 arch/arm/configs/raumfeld_defconfig                |  4 +-
 arch/arm/configs/shmobile_defconfig                |  4 +-
 arch/arm/configs/socfpga_defconfig                 |  4 +-
 arch/arm/configs/stm32_defconfig                   |  4 +-
 arch/arm/configs/sunxi_defconfig                   |  4 +-
 arch/arm/configs/tango4_defconfig                  |  4 +-
 arch/arm/configs/tegra_defconfig                   |  4 +-
 arch/arm/configs/u300_defconfig                    |  4 +-
 arch/arm/configs/u8500_defconfig                   |  4 +-
 arch/arm/configs/vt8500_v6_v7_defconfig            |  4 +-
 arch/arm/configs/xcep_defconfig                    |  4 +-
 arch/arm/configs/zx_defconfig                      |  4 +-
 arch/arm64/configs/defconfig                       |  4 +-
 arch/m68k/configs/amcore_defconfig                 |  4 +-
 arch/mips/configs/ath25_defconfig                  |  4 +-
 arch/mips/configs/bcm47xx_defconfig                |  4 +-
 arch/mips/configs/bmips_be_defconfig               |  4 +-
 arch/mips/configs/bmips_stb_defconfig              |  4 +-
 arch/mips/configs/ci20_defconfig                   |  4 +-
 arch/mips/configs/generic_defconfig                |  4 +-
 arch/mips/configs/lemote2f_defconfig               |  4 +-
 arch/mips/configs/loongson3_defconfig              |  4 +-
 arch/mips/configs/nlm_xlp_defconfig                |  4 +-
 arch/mips/configs/nlm_xlr_defconfig                |  4 +-
 arch/mips/configs/pistachio_defconfig              |  4 +-
 arch/mips/configs/qi_lb60_defconfig                |  4 +-
 arch/mips/configs/rt305x_defconfig                 |  4 +-
 arch/mips/configs/xway_defconfig                   |  4 +-
 arch/parisc/configs/generic-64bit_defconfig        |  4 +-
 arch/powerpc/configs/40x/virtex_defconfig          |  4 +-
 arch/powerpc/configs/44x/fsp2_defconfig            |  4 +-
 arch/powerpc/configs/44x/virtex5_defconfig         |  4 +-
 arch/powerpc/configs/44x/warp_defconfig            |  4 +-
 arch/powerpc/configs/52xx/cm5200_defconfig         |  4 +-
 arch/powerpc/configs/52xx/lite5200b_defconfig      |  4 +-
 arch/powerpc/configs/52xx/motionpro_defconfig      |  4 +-
 arch/powerpc/configs/52xx/tqm5200_defconfig        |  4 +-
 arch/powerpc/configs/gamecube_defconfig            |  4 +-
 arch/powerpc/configs/mpc5200_defconfig             |  4 +-
 arch/powerpc/configs/pasemi_defconfig              |  4 +-
 arch/powerpc/configs/wii_defconfig                 |  4 +-
 arch/s390/configs/default_defconfig                |  4 +-
 arch/s390/configs/gcov_defconfig                   |  4 +-
 arch/s390/configs/performance_defconfig            |  4 +-
 arch/s390/configs/zfcpdump_defconfig               |  4 +-
 arch/sh/configs/edosk7760_defconfig                |  4 +-
 arch/sh/configs/sdk7786_defconfig                  |  4 +-
 arch/sh/configs/se7722_defconfig                   |  4 +-
 arch/sh/configs/sh7785lcr_32bit_defconfig          |  4 +-
 arch/sh/configs/urquell_defconfig                  |  4 +-
 arch/sparc/configs/sparc64_defconfig               |  4 +-
 arch/x86/configs/i386_defconfig                    |  4 +-
 arch/x86/configs/x86_64_defconfig                  |  8 +-
 arch/xtensa/configs/audio_kc705_defconfig          |  4 +-
 arch/xtensa/configs/cadence_csp_defconfig          |  4 +-
 arch/xtensa/configs/generic_kc705_defconfig        |  4 +-
 arch/xtensa/configs/nommu_kc705_defconfig          |  4 +-
 arch/xtensa/configs/smp_lx200_defconfig            |  4 +-
 include/linux/timekeeping.h                        |  1 +
 kernel/printk/printk.c                             | 97 +++++++++++++++++++++-
 kernel/time/timekeeping.c                          | 14 ++++
 lib/Kconfig.debug                                  | 36 +++++++-
 .../selftests/rcutorture/configs/lock/CFcommon     |  4 +-
 .../selftests/rcutorture/configs/rcu/CFcommon      |  4 +-
 .../selftests/rcutorture/configs/rcuperf/CFcommon  |  4 +-
 95 files changed, 420 insertions(+), 98 deletions(-)
Documentation/admin-guide/kernel-parameters.txt +4 -2
index d9c171ce4190..c03240d057b1 100644
@@ -3188,8 +3188,10 @@
 			ratelimit - ratelimit the logging
 			Default: ratelimit
 
-	printk.time=	Show timing data prefixed to each printk message line
-			Format: <bool>  (1/Y/y=enable, 0/N/n=disable)
+	printk.time=	Show timestamp prefixed to each printk message line
+			Format: <string>
+				(0/N/n = disable, 1/Y/y = local/unadjusted HW,
+				 2 = monotonic, 3 = real)
 
 	processor.max_cstate=	[HW,ACPI]
 			Limit processor to maximum C-state
arch/arm/configs/aspeed_g4_defconfig +3 -1
index cfc2465e8b77..6c73c305ad17 100644
@@ -162,7 +162,9 @@ CONFIG_JFFS2_FS_XATTR=y
 CONFIG_UBIFS_FS=y
 CONFIG_SQUASHFS=y
 CONFIG_SQUASHFS_XZ=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_FS=y
arch/arm/configs/aspeed_g5_defconfig +3 -1
index 3c20d93de389..6a5cf12eaa91 100644
@@ -165,7 +165,9 @@ CONFIG_JFFS2_FS_XATTR=y
 CONFIG_UBIFS_FS=y
 CONFIG_SQUASHFS=y
 CONFIG_SQUASHFS_XZ=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_FS=y
arch/arm/configs/axm55xx_defconfig +3 -1
index 8e17e7ed1f02..483e181d6be5 100644
@@ -231,7 +231,9 @@ CONFIG_NFS_FSCACHE=y
 CONFIG_SUNRPC_DEBUG=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
arch/arm/configs/bcm2835_defconfig +3 -1
index 3ee9d78c412a..098a58384e07 100644
@@ -141,7 +141,9 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_BOOT_PRINTK_DELAY=y
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
arch/arm/configs/colibri_pxa270_defconfig +3 -1
index 8995695fc118..a610d4183eec 100644
@@ -144,7 +144,9 @@ CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_FS=y
 CONFIG_DEBUG_KERNEL=y
arch/arm/configs/colibri_pxa300_defconfig +3 -1
index d282e8b0bf33..cf56177e674a 100644
@@ -51,7 +51,9 @@ CONFIG_EXT3_FS=y
 CONFIG_NFS_FS=y
 CONFIG_NFS_V3=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_USER=y
arch/arm/configs/dove_defconfig +3 -1
index a93cc2fcf791..ad26d0656723 100644
@@ -118,7 +118,9 @@ CONFIG_NLS_CODEPAGE_850=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_ISO8859_2=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_FS=y
 # CONFIG_SCHED_DEBUG is not set
arch/arm/configs/efm32_defconfig +3 -1
index 860d27138e6f..e230db5d83bf 100644
@@ -92,7 +92,9 @@ CONFIG_EXT2_FS=y
 CONFIG_ROMFS_FS=y
 CONFIG_ROMFS_BACKED_BY_MTD=y
 # CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
arch/arm/configs/exynos_defconfig +3 -1
index 25325ed9319e..96e420b15983 100644
@@ -253,7 +253,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
arch/arm/configs/ezx_defconfig +3 -1
index 23660f3d0f7f..23a97d604ada 100644
@@ -363,7 +363,9 @@ CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_KOI8_R=m
 CONFIG_NLS_KOI8_U=m
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_SCHED_DEBUG is not set
arch/arm/configs/h5000_defconfig +3 -1
index e90d1dfeb188..7e8850a052b9 100644
@@ -61,7 +61,9 @@ CONFIG_TMPFS=y
 CONFIG_JFFS2_FS=y
 CONFIG_JFFS2_COMPRESSION_OPTIONS=y
 # CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_SCHED_DEBUG is not set
 # CONFIG_DEBUG_BUGVERBOSE is not set
arch/arm/configs/hisi_defconfig +3 -1
index b2e340b272ee..905fe5a92f35 100644
@@ -82,7 +82,9 @@ CONFIG_NFS_FS=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
arch/arm/configs/imote2_defconfig +3 -1
index f204017c26b9..726911c0c101 100644
@@ -336,7 +336,9 @@ CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_KOI8_R=m
 CONFIG_NLS_KOI8_U=m
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_SCHED_DEBUG is not set
arch/arm/configs/imx_v6_v7_defconfig +3 -1
index e74de69caeab..1d8692459ab2 100644
@@ -382,7 +382,9 @@ CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 # CONFIG_SCHED_DEBUG is not set
arch/arm/configs/keystone_defconfig +3 -1
index 1331f6dc456a..c463ca1067cd 100644
@@ -200,7 +200,9 @@ CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_SHIRQ=y
 CONFIG_DEBUG_USER=y
arch/arm/configs/lpc18xx_defconfig +3 -1
index 23df2518203d..bfa9df6e2568 100644
@@ -160,7 +160,9 @@ CONFIG_EXT2_FS=y
 # CONFIG_INOTIFY_USER is not set
 CONFIG_JFFS2_FS=y
 # CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
arch/arm/configs/magician_defconfig +3 -1
index ec5674c229a3..069ac29b31d7 100644
@@ -154,7 +154,9 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_CODEPAGE_1251=m
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_SCHED_DEBUG is not set
 CONFIG_TIMER_STATS=y
arch/arm/configs/mmp2_defconfig +3 -1
index 1eeee7f11d91..f40d89275751 100644
@@ -74,7 +74,9 @@ CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_FS=y
 CONFIG_DEBUG_KERNEL=y
arch/arm/configs/moxart_defconfig +3 -1
index 2da0d9ee2107..b0fb2893740e 100644
@@ -123,7 +123,9 @@ CONFIG_EXT3_FS=y
 CONFIG_TMPFS=y
 CONFIG_CONFIGFS_FS=y
 CONFIG_JFFS2_FS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
arch/arm/configs/mps2_defconfig +3 -1
index 0bcdec7cc169..954be952e5bd 100644
@@ -98,7 +98,9 @@ CONFIG_NFS_V4_1=y
 CONFIG_NFS_V4_2=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
arch/arm/configs/multi_v7_defconfig +3 -1
index 4d19c1b4b8e7..5161bc074fb1 100644
@@ -929,7 +929,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_LOCKUP_DETECTOR=y
arch/arm/configs/mvebu_v7_defconfig +3 -1
index 69553704f2dc..952eb28e825b 100644
@@ -152,7 +152,9 @@ CONFIG_NLS_CODEPAGE_850=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_ISO8859_2=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
arch/arm/configs/mxs_defconfig +3 -1
index e5822ab01b7d..87599567caf6 100644
@@ -167,7 +167,9 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_CODEPAGE_850=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_ISO8859_15=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_FRAME_WARN=2048
 CONFIG_UNUSED_SYMBOLS=y
arch/arm/configs/omap2plus_defconfig +3 -1
index a120ae816260..7009dd462a30 100644
@@ -493,7 +493,9 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_INFO_SPLIT=y
 CONFIG_DEBUG_INFO_DWARF4=y
arch/arm/configs/pxa168_defconfig +3 -1
index e7c7b91b6de2..3531ce135b4f 100644
@@ -50,7 +50,9 @@ CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_DEBUG_PREEMPT is not set
arch/arm/configs/pxa3xx_defconfig +3 -1
index bfea6874b0a1..4d66f114574c 100644
@@ -109,7 +109,9 @@ CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_SHIRQ=y
arch/arm/configs/pxa910_defconfig +3 -1
index 3aff71e6dae5..6164a1d5a6e6 100644
@@ -58,7 +58,9 @@ CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_DEBUG_PREEMPT is not set
arch/arm/configs/pxa_defconfig +3 -1
index 64e3a2a8cede..24115ea1f7ce 100644
@@ -727,7 +727,9 @@ CONFIG_NLS_ASCII=m
 CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_FRAME_WARN=0
arch/arm/configs/qcom_defconfig +3 -1
index b02039c712c3..c60d96395bb9 100644
@@ -231,7 +231,9 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
arch/arm/configs/raumfeld_defconfig +3 -1
index e3dc80ead465..d804cf59eb97 100644
@@ -187,7 +187,9 @@ CONFIG_NLS_ISO8859_15=y
 CONFIG_NLS_KOI8_R=y
 CONFIG_NLS_KOI8_U=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_USER=y
arch/arm/configs/shmobile_defconfig +3 -1
index 3c66a422fb4d..2b511a0f3ca7 100644
@@ -218,7 +218,9 @@ CONFIG_NFS_V4_1=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 # CONFIG_ARM_UNWIND is not set
arch/arm/configs/socfpga_defconfig +3 -1
index 2620ce790db0..00deb0b81b05 100644
@@ -155,7 +155,9 @@ CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DETECT_HUNG_TASK=y
arch/arm/configs/stm32_defconfig +3 -1
index 90e5c46913a5..1a29cc2cc8d3 100644
@@ -74,7 +74,9 @@ CONFIG_STM32_ADC=y
 # CONFIG_DNOTIFY is not set
 # CONFIG_INOTIFY_USER is not set
 CONFIG_NLS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
arch/arm/configs/sunxi_defconfig +3 -1
index 0ec1d1ec130f..a06321567d38 100644
@@ -151,6 +151,8 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_CRYPTO_DEV_SUN4I_SS=y
arch/arm/configs/tango4_defconfig +3 -1
index 68725d4eae45..ebe215c3ef6c 100644
@@ -90,5 +90,7 @@ CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=m
 CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_CRYPTO_ECHAINIV is not set
arch/arm/configs/tegra_defconfig +3 -1
index f0efc854b5a2..3d4f51823b5f 100644
@@ -286,7 +286,9 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
arch/arm/configs/u300_defconfig +3 -1
index 36d77406e31b..5d2387ee3a3e 100644
@@ -62,7 +62,9 @@ CONFIG_VFAT_FS=y
 CONFIG_TMPFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
 # CONFIG_SCHED_DEBUG is not set
arch/arm/configs/u8500_defconfig +3 -1
index e2151a7aaf49..ba9445bee454 100644
@@ -127,7 +127,9 @@ CONFIG_NFS_FS=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
arch/arm/configs/vt8500_v6_v7_defconfig +3 -1
index 1bfaa7bfc392..964f695895f4 100644
@@ -84,6 +84,8 @@ CONFIG_NFS_FS=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_KERNEL=y
 CONFIG_LOCKUP_DETECTOR=y
arch/arm/configs/xcep_defconfig +3 -1
index 2eda24635e65..41fd393c4af4 100644
@@ -79,7 +79,9 @@ CONFIG_NFS_V3=y
 CONFIG_NLS=m
 CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_SCHED_DEBUG is not set
arch/arm/configs/zx_defconfig +3 -1
index dfc061d87d2f..d10d4c3caa7a 100644
@@ -95,7 +95,9 @@ CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_NLS_CODEPAGE_936=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_INFO=y
arch/arm64/configs/defconfig +3 -1
index 6c7d147eed54..57212266a8d5 100644
@@ -548,7 +548,9 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
arch/m68k/configs/amcore_defconfig +3 -1
index 131b4101ae5d..6b843376d3e5 100644
@@ -107,7 +107,9 @@ CONFIG_JFFS2_FS=y
 CONFIG_ROMFS_FS=y
 CONFIG_ROMFS_BACKED_BY_BOTH=y
 # CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
arch/mips/configs/ath25_defconfig +3 -1
index 2c829950be17..3df7c116ebba 100644
@@ -105,7 +105,9 @@ CONFIG_SQUASHFS_FILE_DIRECT=y
 CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 # CONFIG_SQUASHFS_ZLIB is not set
 CONFIG_SQUASHFS_XZ=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_FS=y
arch/mips/configs/bcm47xx_defconfig +3 -1
index fad8e964f14c..418d9b77e8e3 100644
@@ -74,7 +74,9 @@ CONFIG_USB_HCD_BCMA=y
 CONFIG_USB_HCD_SSB=y
 CONFIG_LEDS_TRIGGER_TIMER=y
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_INFO_REDUCED=y
 CONFIG_STRIP_ASM_SYMS=y
arch/mips/configs/bmips_be_defconfig +3 -1
index a7072a14d396..d2adf4048dc2 100644
@@ -32,7 +32,9 @@ CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
 # CONFIG_STANDALONE is not set
 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_BRCMSTB_GISB_ARB=y
 CONFIG_MTD=y
 CONFIG_MTD_BCM63XX_PARTS=y
arch/mips/configs/bmips_stb_defconfig +3 -1
index 3cefa6bc01dd..2a0828cd03d6 100644
@@ -85,7 +85,9 @@ CONFIG_CIFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_CMDLINE_BOOL=y
arch/mips/configs/ci20_defconfig +3 -1
index b42cfa7865f9..7c0a9d04f846 100644
@@ -147,7 +147,9 @@ CONFIG_NLS_ISO8859_15=y
 CONFIG_NLS_KOI8_R=y
 CONFIG_NLS_KOI8_U=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_FS=y
arch/mips/configs/generic_defconfig +3 -1
index 91aacf2ef26d..c2363fa3355f 100644
@@ -83,7 +83,9 @@ CONFIG_NFS_V4=y
 CONFIG_NFS_V4_1=y
 CONFIG_NFS_V4_2=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_INFO_REDUCED=y
 CONFIG_DEBUG_FS=y
arch/mips/configs/lemote2f_defconfig +3 -1
index 1ec8ed8d05d1..ffe330ee3676 100644
@@ -394,7 +394,9 @@ CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_KOI8_R=m
 CONFIG_NLS_KOI8_U=m
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_FRAME_WARN=1024
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_FS=y
arch/mips/configs/loongson3_defconfig +3 -1
index 324dfee23dfb..2a55d5f8fd94 100644
@@ -327,7 +327,9 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_CODEPAGE_936=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_FRAME_WARN=1024
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_MAGIC_SYSRQ=y
arch/mips/configs/nlm_xlp_defconfig +3 -1
index 5720ce23e9aa..6e53a5895903 100644
@@ -549,7 +549,9 @@ CONFIG_NLS_ISO8859_14=m
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_KOI8_R=m
 CONFIG_NLS_KOI8_U=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_FRAME_WARN=1024
arch/mips/configs/nlm_xlr_defconfig +3 -1
index fea56c535d92..071876d8b708 100644
@@ -506,7 +506,9 @@ CONFIG_NLS_ISO8859_14=m
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_KOI8_R=m
 CONFIG_NLS_KOI8_U=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_UNUSED_SYMBOLS=y
arch/mips/configs/pistachio_defconfig +3 -1
index 7d32fbbca962..2747bee69d88 100644
@@ -297,7 +297,9 @@ CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=m
 CONFIG_NLS_ASCII=m
 CONFIG_NLS_ISO8859_1=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0
arch/mips/configs/qi_lb60_defconfig +3 -1
index 3f1333517405..b9a330412986 100644
@@ -170,7 +170,9 @@ CONFIG_NLS_ISO8859_15=y
 CONFIG_NLS_KOI8_R=y
 CONFIG_NLS_KOI8_U=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_READABLE_ASM=y
arch/mips/configs/rt305x_defconfig +3 -1
index c695b7b1c4ae..fa230e7a444a 100644
@@ -143,7 +143,9 @@ CONFIG_JFFS2_COMPRESSION_OPTIONS=y
 CONFIG_SQUASHFS=y
 # CONFIG_SQUASHFS_ZLIB is not set
 CONFIG_SQUASHFS_XZ=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_STRIP_ASM_SYMS=y
arch/mips/configs/xway_defconfig +3 -1
index 4365108bef77..3b101b57edaa 100644
@@ -151,7 +151,9 @@ CONFIG_JFFS2_COMPRESSION_OPTIONS=y
 CONFIG_SQUASHFS=y
 # CONFIG_SQUASHFS_ZLIB is not set
 CONFIG_SQUASHFS_XZ=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_FS=y
arch/parisc/configs/generic-64bit_defconfig +3 -1
index d39e7f821aba..1d464bb1e22a 100644
@@ -272,7 +272,9 @@ CONFIG_NLS_ASCII=m
 CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_2=m
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_UNUSED_SYMBOLS=y
 CONFIG_DEBUG_FS=y
arch/powerpc/configs/40x/virtex_defconfig +3 -1
index 65dc084a154c..892b029009b7 100644
@@ -71,7 +71,9 @@ CONFIG_CRC_CCITT=y
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_CRYPTO_ANSI_CPRNG is not set
arch/powerpc/configs/44x/fsp2_defconfig +3 -1
index e8e6a6999852..724b41148de3 100644
@@ -111,7 +111,9 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_DEFAULT="n"
 CONFIG_XZ_DEC=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=3
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
arch/powerpc/configs/44x/virtex5_defconfig +3 -1
index ce052064bcbb..f6d2ba963dcb 100644
@@ -70,7 +70,9 @@ CONFIG_CRC_CCITT=y
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_CRYPTO_ANSI_CPRNG is not set
arch/powerpc/configs/44x/warp_defconfig +3 -1
index ab932488e68b..769664584301 100644
@@ -90,7 +90,9 @@ CONFIG_NLS_ISO8859_15=y
 CONFIG_NLS_UTF8=y
 CONFIG_CRC_CCITT=y
 CONFIG_CRC_T10DIF=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
arch/powerpc/configs/52xx/cm5200_defconfig +3 -1
index c1faac800806..7e553b75bd9b 100644
@@ -72,7 +72,9 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DETECT_HUNG_TASK=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
 CONFIG_CRYPTO_ECB=y
arch/powerpc/configs/52xx/lite5200b_defconfig +3 -1
index 9493b02ac660..dc8d8f2e191f 100644
@@ -58,7 +58,9 @@ CONFIG_TMPFS=y
 CONFIG_NFS_FS=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DETECT_HUNG_TASK=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
arch/powerpc/configs/52xx/motionpro_defconfig +3 -1
index fe8126bc1655..43865e4016ba 100644
@@ -84,7 +84,9 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DETECT_HUNG_TASK=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
arch/powerpc/configs/52xx/tqm5200_defconfig +3 -1
index b8b316b884aa..918a50993449 100644
@@ -86,7 +86,9 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DETECT_HUNG_TASK=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
arch/powerpc/configs/gamecube_defconfig +3 -1
index c0eec4a5df4e..e874f079759d 100644
@@ -89,7 +89,9 @@ CONFIG_CIFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_CRC_CCITT=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_SPINLOCK=y
 CONFIG_DEBUG_MUTEXES=y
 CONFIG_LATENCYTOP=y
arch/powerpc/configs/mpc5200_defconfig +3 -1
index 88336d0df0d6..6725bc235cd6 100644
@@ -126,7 +126,9 @@ CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DETECT_HUNG_TASK=y
arch/powerpc/configs/pasemi_defconfig +3 -1
index fe43ff47bd2f..adc69c5c30c7 100644
@@ -166,7 +166,9 @@ CONFIG_NFSD_V4=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_CRC_CCITT=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
arch/powerpc/configs/wii_defconfig +3 -1
index dcdd51b57783..95809458d517 100644
@@ -110,7 +110,9 @@ CONFIG_CIFS=m
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_CRC_CCITT=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_SPINLOCK=y
 CONFIG_DEBUG_MUTEXES=y
arch/s390/configs/default_defconfig +3 -1
index 282072206df7..c37b3a9261db 100644
@@ -564,7 +564,9 @@ CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_INFO_DWARF4=y
arch/s390/configs/gcov_defconfig +3 -1
index 3c6b78189fbc..e7270eaee6a3 100644
@@ -558,7 +558,9 @@ CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_INFO_DWARF4=y
 CONFIG_GDB_SCRIPTS=y
arch/s390/configs/performance_defconfig +3 -1
index 653d72bcc007..ae8abb09d986 100644
@@ -556,7 +556,9 @@ CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_INFO_DWARF4=y
 CONFIG_GDB_SCRIPTS=y
arch/s390/configs/zfcpdump_defconfig +3 -1
index afa46a7406ea..dc9a000615ef 100644
@@ -57,7 +57,9 @@ CONFIG_RAW_DRIVER=y
 CONFIG_CONFIGFS_FS=y
 # CONFIG_MISC_FILESYSTEMS is not set
 # CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_PANIC_ON_OOPS=y
arch/sh/configs/edosk7760_defconfig +3 -1
index e1077a041ac3..7fbd23e0e8f7 100644
@@ -109,7 +109,9 @@ CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_ISO8859_15=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_UNUSED_SYMBOLS=y
arch/sh/configs/sdk7786_defconfig +3 -1
index 36642ec2cb97..bb426b7db508 100644
@@ -215,7 +215,9 @@ CONFIG_NLS_ASCII=m
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_ISO8859_15=m
 CONFIG_NLS_UTF8=m
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_MAGIC_SYSRQ=y
arch/sh/configs/se7722_defconfig +3 -1
index ae998c7e2ee0..160d3dc4c30b 100644
@@ -53,7 +53,9 @@ CONFIG_EXT3_FS=y
 CONFIG_PROC_KCORE=y
 CONFIG_TMPFS=y
 CONFIG_HUGETLBFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_FS=y
arch/sh/configs/sh7785lcr_32bit_defconfig +3 -1
index 2fce54d9c388..1f0b5d43c617 100644
@@ -144,7 +144,9 @@ CONFIG_NFSD_V3=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_CODEPAGE_932=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
arch/sh/configs/urquell_defconfig +3 -1
index 01c9a91ee896..e1425510beac 100644
@@ -142,7 +142,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_CODEPAGE_932=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_DEBUG_FS=y
arch/sparc/configs/sparc64_defconfig +3 -1
index b2e650d1764f..a5a7bb2938df 100644
@@ -202,7 +202,9 @@ CONFIG_EXT3_FS_SECURITY=y
 CONFIG_PROC_KCORE=y
 CONFIG_TMPFS=y
 CONFIG_HUGETLBFS=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
arch/x86/configs/i386_defconfig +3 -1
index 0eb9f92f3717..ddb8a9f3aeee 100644
@@ -284,7 +284,9 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_FRAME_WARN=1024
 CONFIG_MAGIC_SYSRQ=y
arch/x86/configs/x86_64_defconfig +7 -1
index 4a4b16e56d35..23da8e5297a1 100644
@@ -283,7 +283,13 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_MAGIC_SYSRQ=y
 # CONFIG_UNUSED_SYMBOLS is not set
arch/xtensa/configs/audio_kc705_defconfig +3 -1
index 8d16925765cb..c94f628cd1f1 100644
@@ -123,7 +123,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_SUNRPC_DEBUG=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
arch/xtensa/configs/cadence_csp_defconfig +3 -1
index f2d3094aa1d1..74c5dd05016d 100644
@@ -102,7 +102,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_SUNRPC_DEBUG=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
arch/xtensa/configs/generic_kc705_defconfig +3 -1
index 744adeaf2945..6c8c1e06f0a0 100644
@@ -110,7 +110,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_SUNRPC_DEBUG=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
arch/xtensa/configs/nommu_kc705_defconfig +3 -1
index 78c2529d0459..a92b602422e5 100644
@@ -107,7 +107,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_SUNRPC_DEBUG=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 # CONFIG_FRAME_POINTER is not set
arch/xtensa/configs/smp_lx200_defconfig +3 -1
index 14e3ca353ac8..94838e6d5487 100644
@@ -114,7 +114,9 @@ CONFIG_ROOT_NFS=y
 CONFIG_SUNRPC_DEBUG=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 CONFIG_DYNAMIC_DEBUG=y
 CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
include/linux/timekeeping.h +1 -0
index ddc229ff6d1e..adb84af42deb 100644
@@ -239,6 +239,7 @@ static inline u64 ktime_get_raw_ns(void)
 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_log_ts(u64 *offset_real);
 
 /*
  * Timespec interfaces utilizing the ktime based ones
kernel/printk/printk.c +93 -4

133 lines not on this page · raw message

kernel/time/timekeeping.c +14 -0
index cedafa008de5..96f06a16c51f 100644
@@ -25,6 +25,7 @@
 #include <linux/stop_machine.h>
 #include <linux/pvclock_gtod.h>
 #include <linux/compiler.h>
+#include <linux/sched/clock.h>
 
 #include "tick-internal.h"
 #include "ntp_internal.h"
@@ -45,6 +46,7 @@
 
 static DEFINE_RAW_SPINLOCK(timekeeper_lock);
 static struct timekeeper shadow_timekeeper;
+static int timekeeping_active;
 
 /**
  * struct tk_fast - NMI safe timekeeper
@@ -477,6 +479,16 @@ u64 notrace ktime_get_boot_fast_ns(void)
 }
 EXPORT_SYMBOL_GPL(ktime_get_boot_fast_ns);
 
+u64 ktime_get_log_ts(u64 *offset_real)
+{
+	*offset_real = ktime_to_ns(tk_core.timekeeper.offs_real);
+
+	if (timekeeping_active)
+		return ktime_get_mono_fast_ns();
+	else
+		return local_clock();
+}
+
 /* Suspend-time cycles value for halted fast timekeeper. */
 static u64 cycles_at_suspend;
 
@@ -1530,6 +1542,8 @@ void __init timekeeping_init(void)
 
 	write_seqcount_end(&tk_core.seq);
 	raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
+
+	timekeeping_active = 1;
 }
 
 /* time in seconds when suspend began for persistent clock */
lib/Kconfig.debug +34 -2
index 98fe715522e8..7a8870b4ddbb 100644
@@ -1,8 +1,39 @@
 menu "printk and dmesg options"
 
+choice
+	prompt "printk default clock"
+	config PRINTK_TIME_DISABLE
+	bool "Disabled"
+	help
+	 Selecting this option disables the time stamps of printk().
+
+	config PRINTK_TIME_LOCAL
+	bool "Local Clock"
+	help
+	  Selecting this option causes the time stamps of printk() to be
+	  stamped with the unadjusted hardware clock.
+
+	config PRINTK_TIME_MONO
+	bool "CLOCK_MONOTONIC"
+	help
+	  Selecting this option causes the time stamps of printk() to be
+	  stamped with the adjusted monotonic clock.
+
+	config PRINTK_TIME_REAL
+	bool "CLOCK_REALTIME"
+	help
+	  Selecting this option causes the time stamps of printk() to be
+	  stamped with the adjusted realtime clock.
+
+endchoice
+
 config PRINTK_TIME
-	bool "Show timing information on printks"
+	int "Show time stamp information on printks"
 	depends on PRINTK
+	default 0 if PRINTK_TIME_DISABLE
+	default 1 if PRINTK_TIME_LOCAL
+	default 2 if PRINTK_TIME_MONO
+	default 3 if PRINTK_TIME_REAL
 	help
 	  Selecting this option causes time stamps of the printk()
 	  messages to be added to the output of the syslog() system
@@ -13,7 +44,8 @@ config PRINTK_TIME
 	  be included, not that the timestamp is recorded.
 
 	  The behavior is also controlled by the kernel command line
-	  parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst
+	  parameter printk.time=[0-3]. See
+	  Documentation/admin-guide/kernel-parameters.rst
 
 config CONSOLE_LOGLEVEL_DEFAULT
 	int "Default console loglevel (1-15)"
tools/testing/selftests/rcutorture/configs/lock/CFcommon +3 -1
index e372dc269254..c22c792fe2a8 100644
@@ -1,2 +1,4 @@
 CONFIG_LOCK_TORTURE_TEST=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
tools/testing/selftests/rcutorture/configs/rcu/CFcommon +3 -1
index d2d2a86139db..a95316743651 100644
@@ -1,2 +1,4 @@
 CONFIG_RCU_TORTURE_TEST=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
tools/testing/selftests/rcutorture/configs/rcuperf/CFcommon +3 -1
index a09816b8c0f3..713de81b2975 100644
@@ -1,2 +1,4 @@
 CONFIG_RCU_PERF_TEST=y
-CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
Signature · 1 line
1.8.5.5
#1 lore raw
Quoted 9 lines · Prarit Bhargava
arch/x86/configs/x86_64_defconfig +0 -1
index 4a4b16e56d35..23da8e5297a1 100644
@@ -283,7 +283,13 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-CONFIG_PRINTK_TIME=y

arch/x86/configs/x86_64_defconfig CONFIG_NLS_CODEPAGE_437=y · line 295

Quoted 10 lines
arch/x86/configs/x86_64_defconfig +7 -0
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+# CONFIG_PRINTK_TIME_DISABLE is not set
+CONFIG_PRINTK_TIME_LOCAL=Y
+CONFIG_PRINTK_TIME=1
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_MAGIC_SYSRQ=y
 # CONFIG_UNUSED_SYMBOLS is not set

You've gone trigger paste happy here.

Quoted 23 lines
kernel/printk/printk.c +3 -1
index fc47863f629c..672a649b90d8 100644
@@ -576,6 +576,8 @@ static u32 truncate_msg(u16 *text_len, u16 *trunc_msg_len,
 	return msg_used_size(*text_len + *trunc_msg_len, 0, pad_len);
 }
 
+static u64 printk_get_ts(void);
+
 /* insert record into the buffer, discard old ones, update heads */
 static int log_store(int facility, int level,
 		     enum log_flags flags, u64 ts_nsec,
@@ -624,7 +626,7 @@ static int log_store(int facility, int level,
 	if (ts_nsec > 0)
 		msg->ts_nsec = ts_nsec;
 	else
-		msg->ts_nsec = local_clock();
+		msg->ts_nsec = printk_get_ts();
 	memset(log_dict(msg) + dict_len, 0, pad_len);
 	msg->len = size;
 

kernel/printk/printk.c static inline void boot_delay_msec(int level) · line 1208

Quoted 7 lines
kernel/printk/printk.c +2 -2
@@ -1202,8 +1204,89 @@ static inline void boot_delay_msec(int level)
 }
 #endif
 
-static bool printk_time = IS_ENABLED(CONFIG_PRINTK_TIME);
-module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
+static int printk_time = CONFIG_PRINTK_TIME;
+static int printk_time_setting; /* initial setting */

If you use an enum for printk_time_setting you can then kdoc'ify each setting and also match the values names on kconfig. With this you can move the big comment below onto the kdoc for the enum. You can then nicely expand on the documentation to explain what compromises were made for providing time if timekeeping_init() was not called yet.

/**
* enum printk_time_setting - description
* @PRINTK_TIME_DISABLE: description
* @PRINTK_TIME_LOCAL: description
* @PRINTK_TIME_MONO: description
* @PRINTK_TIME_REAL: description - you can go into the 32-bit issue here */
enum printk_time_setting {
PRINTK_TIME_DISABLE = 0,
PRINTK_TIME_LOCAL = 1,
PRINTK_TIME_MONO = 2,
PRINTK_TIME_REAL = 3,
};

And since you are kdoc'ifying consider later adding proper rst format docs for printk and then pegging this kdoc entry into it. Unfortunately I only see Documentation/printk-formats.txt and Documentation/x86/earlyprintk.txt, is that all we have on printk docs?

Quoted 43 lines
kernel/printk/printk.c +43 -0
+
+/*
+ * Real clock & 32-bit systems:  Selecting the real clock printk timestamp may
+ * lead to unlikely situations where a timestamp is wrong because the real time
+ * offset is read without the protection of a sequence lock in the call to
+ * ktime_get_log_ts() in printk_get_ts() below.
+ */
+static int printk_time_set(const char *val, const struct kernel_param *kp)
+{
+	char *param = strstrip((char *)val);
+	int _printk_time;
+
+	if (strlen(param) != 1)
+		return -EINVAL;
+
+	switch (param[0]) {
+	case '0':
+	case 'n':
+	case 'N':
+		_printk_time = 0; /* none/disabled */
+		break;
+	case '1':
+	case 'y':
+	case 'Y':
+		_printk_time = 1; /* local unadjusted HW clock */
+		break;
+	case '2':
+		_printk_time = 2; /* monotonic */
+		break;
+	case '3':
+		_printk_time = 3; /* realtime */
+		break;
+	default:
+		pr_warn("printk: invalid timestamp value\n");
+		return -EINVAL;
+	}
+
+	/*
+	 * Only allow enabling and disabling of the current printk_time
+	 * setting.  Changing it from one setting to another confuses
+	 * userspace.
+	 */
+	if (printk_time_setting == 0) {

kernel/printk/printk.c static inline void boot_delay_msec(int level) · line 1261

Quoted 10 lines
kernel/printk/printk.c +10 -0
+		printk_time_setting = _printk_time;
+	} else if ((printk_time_setting != _printk_time) &&
+		   (_printk_time != 0)) {
+		pr_warn("printk: timestamp can only be set to 0 or %d ",
+			printk_time_setting);
+		return -EINVAL;
+	}
+
+	printk_time = _printk_time;
+	pr_info("printk: timestamp set to %d.", printk_time);

Then here you can also add a respective conversion for describing what the enum was, "%s (%d)", printk_time_desc(printk_time), printk_time) which will make it easier to understand what was done at init in the log.

Luis

#2 lore raw

On 08/01/2017 12:29 PM, Luis R. Rodriguez wrote:

<snip>

Thanks for the previous comments re: enum & kdoc'ifying. I will apply them to v3.

Quoted 5 lines

And since you are kdoc'ifying consider later adding proper rst format docs for printk and then pegging this kdoc entry into it. Unfortunately I only see Documentation/printk-formats.txt and Documentation/x86/earlyprintk.txt, is that all we have on printk docs?

Yes, that's it AFAICT.

P.

#3 lore raw
In reply to Prarit Bhargava
Quoted 22 lines · Prarit Bhargava

printk.time=1/CONFIG_PRINTK_TIME=1 adds a unmodified local hardware clock timestamp to printk messages. The local hardware clock loses time each day making it difficult to determine exactly when an issue has occurred in the kernel log, and making it difficult to determine how kernel and hardware issues relate to each other in real time.

Make printk output different timestampes by adding options for no timestamp, the local hardware clock, the monotonic clock, and the real clock. Allow a user to pick one of the clocks by using the printk.time kernel parameter. Output the type of clock in /sys/module/printk/parameters/time so userspace programs can interpret the timestamp.

Real clock & 32-bit systems: Selecting the real clock printk timestamp may lead to unlikely situations where a timestamp is wrong because the real time offset is read without the protection of a sequence lock in the call to ktime_get_log_ts() in printk_get_ts().

v2: Use peterz's suggested Kconfig options. Merge patchset together. Fix i386 !CONFIG_PRINTK builds.

...

Quoted 21 lines
lib/Kconfig.debug +14 -0
index 98fe715522e8..7a8870b4ddbb 100644
@@ -1,8 +1,39 @@
 menu "printk and dmesg options"
 
+choice
+       prompt "printk default clock"
+       config PRINTK_TIME_DISABLE
+       bool "Disabled"
+       help
+        Selecting this option disables the time stamps of printk().
+
+       config PRINTK_TIME_LOCAL
+       bool "Local Clock"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the unadjusted hardware clock.
+
+       config PRINTK_TIME_MONO

lib/Kconfig.debug line 26

Quoted 10 lines
lib/Kconfig.debug +10 -0
+       bool "CLOCK_MONOTONIC"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the adjusted monotonic clock.
+
+       config PRINTK_TIME_REAL
+       bool "CLOCK_REALTIME"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the adjusted realtime clock.

Its been asked already, but I've not yet seen an answer.
Is there a reason your not also adding PRINTK_TIME_BOOT here (which to me would be more generally useful then REAL or MONO)?

thanks
-john

#4 lore raw
Quoted 49 lines · John Stultz
Quoted 22 lines · Prarit Bhargava

printk.time=1/CONFIG_PRINTK_TIME=1 adds a unmodified local hardware clock timestamp to printk messages. The local hardware clock loses time each day making it difficult to determine exactly when an issue has occurred in the kernel log, and making it difficult to determine how kernel and hardware issues relate to each other in real time.

Make printk output different timestampes by adding options for no timestamp, the local hardware clock, the monotonic clock, and the real clock. Allow a user to pick one of the clocks by using the printk.time kernel parameter. Output the type of clock in /sys/module/printk/parameters/time so userspace programs can interpret the timestamp.

Real clock & 32-bit systems: Selecting the real clock printk timestamp may lead to unlikely situations where a timestamp is wrong because the real time offset is read without the protection of a sequence lock in the call to ktime_get_log_ts() in printk_get_ts().

v2: Use peterz's suggested Kconfig options. Merge patchset together. Fix i386 !CONFIG_PRINTK builds.

...

Quoted 25 lines
lib/Kconfig.debug +18 -0
index 98fe715522e8..7a8870b4ddbb 100644
@@ -1,8 +1,39 @@
 menu "printk and dmesg options"
 
+choice
+       prompt "printk default clock"
+       config PRINTK_TIME_DISABLE
+       bool "Disabled"
+       help
+        Selecting this option disables the time stamps of printk().
+
+       config PRINTK_TIME_LOCAL
+       bool "Local Clock"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the unadjusted hardware clock.
+
+       config PRINTK_TIME_MONO
+       bool "CLOCK_MONOTONIC"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the adjusted monotonic clock.
Quoted 8 lines

lib/Kconfig.debug line 26

Quoted 6 lines
lib/Kconfig.debug +6 -0
+
+       config PRINTK_TIME_REAL
+       bool "CLOCK_REALTIME"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the adjusted realtime clock.

Its been asked already, but I've not yet seen an answer.

Sorry for missing this.

Quoted 2 lines

Is there a reason your not also adding PRINTK_TIME_BOOT here (which to me would be more generally useful then REAL or MONO)?

REAL has been useful to me in debug cases where events on the system were timed to the wall clock (ex cron job running at 3AM). I hadn't really thought much about using BOOT TBH because MONO seemed to work just fine.

Mark Salyzyn, did you want BOOT or MONO?

P.

#5 lore raw
Quoted 11 lines · Prarit Bhargava
Quoted 2 lines · John Stultz

Is there a reason your not also adding PRINTK_TIME_BOOT here (which to me would be more generally useful then REAL or MONO)?

REAL has been useful to me in debug cases where events on the system were timed to the wall clock (ex cron job running at 3AM). I hadn't really thought much about using BOOT TBH because MONO seemed to work just fine.

Mark Salyzyn, did you want BOOT or MONO?

I know Mark has specific formatting needs, so I'm not going to speak for him, but BOOT is actually a nice improvement over MONO, since it includes suspend time, and avoids inconsistencies due to userspace tweaking the time, which REALTIME has. So for debugging suspend related issues and being able to understand how much time a system has spent in suspend vs not it would be quite useful.

thanks
-john

#6 lore raw
In reply to Prarit Bhargava
Quoted 5 lines · Prarit Bhargava
Quoted 1 line · John Stultz

Its been asked already, but I've not yet seen an answer.

Sorry for missing this.

Quoted 8 lines
Quoted 2 lines

Is there a reason your not also adding PRINTK_TIME_BOOT here (which to me would be more generally useful then REAL or MONO)?

REAL has been useful to me in debug cases where events on the system were timed to the wall clock (ex cron job running at 3AM). I hadn't really thought much about using BOOT TBH because MONO seemed to work just fine.

Mark Salyzyn, did you want BOOT or MONO?

We really want both.

Thanks,

tglx

#7 lore raw
In reply to Prarit Bhargava
Quoted 62 lines · Prarit Bhargava
Quoted 48 lines · John Stultz
Quoted 22 lines · Prarit Bhargava

printk.time=1/CONFIG_PRINTK_TIME=1 adds a unmodified local hardware clock timestamp to printk messages. The local hardware clock loses time each day making it difficult to determine exactly when an issue has occurred in the kernel log, and making it difficult to determine how kernel and hardware issues relate to each other in real time.

Make printk output different timestampes by adding options for no timestamp, the local hardware clock, the monotonic clock, and the real clock. Allow a user to pick one of the clocks by using the printk.time kernel parameter. Output the type of clock in /sys/module/printk/parameters/time so userspace programs can interpret the timestamp.

Real clock & 32-bit systems: Selecting the real clock printk timestamp may lead to unlikely situations where a timestamp is wrong because the real time offset is read without the protection of a sequence lock in the call to ktime_get_log_ts() in printk_get_ts().

v2: Use peterz's suggested Kconfig options. Merge patchset together. Fix i386 !CONFIG_PRINTK builds.

...

Quoted 24 lines
lib/Kconfig.debug +17 -0
index 98fe715522e8..7a8870b4ddbb 100644
@@ -1,8 +1,39 @@
  menu "printk and dmesg options"
 
+choice
+       prompt "printk default clock"
+       config PRINTK_TIME_DISABLE
+       bool "Disabled"
+       help
+        Selecting this option disables the time stamps of printk().
+
+       config PRINTK_TIME_LOCAL
+       bool "Local Clock"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the unadjusted hardware clock.
+
+       config PRINTK_TIME_MONO
+       bool "CLOCK_MONOTONIC"
+       help
+         Selecting this option causes the time stamps of printk() to be
Quoted 8 lines

lib/Kconfig.debug line 26

Quoted 7 lines
lib/Kconfig.debug +7 -0
+         stamped with the adjusted monotonic clock.
+
+       config PRINTK_TIME_REAL
+       bool "CLOCK_REALTIME"
+       help
+         Selecting this option causes the time stamps of printk() to be
+         stamped with the adjusted realtime clock.

Its been asked already, but I've not yet seen an answer.

Sorry for missing this.

Quoted 2 lines

Is there a reason your not also adding PRINTK_TIME_BOOT here (which to me would be more generally useful then REAL or MONO)?

Quoted 7 lines

REAL has been useful to me in debug cases where events on the system were timed to the wall clock (ex cron job running at 3AM). I hadn't really thought much about using BOOT TBH because MONO seemed to work just fine.

Mark Salyzyn, did you want BOOT or MONO?

P.

You must IMHO include MONO (default when on?), BOOT and REAL if you are offering the ability for the kernel to switch time base.

[TL;DR]

I had a partner request for Boottime (for kernel and userspace) for those that are providing products that focus more on sensors. We said no, case closed. This option in your patch would reopen that possibility.

We have too many use cases, too many partners all pulling in different directions. We have met with resistance moving userspace to monotonic to match kernel on phones, preference remains realtime for user space, and monotonic for kernel. Yet watch partners preferred moving all to monotonic time, but they required realtime (or could do with boottime) dual-print to monitor battery and power. We only wanted to print realtime (or monotonic depending on case) during time disruptions (suspend/resume mainly). With your proposal we may have less resistance to realtime for kernel and userspace, but we will have partners that insist on using monotonic none-the-less because we do not have control, so we _must_ provide the dual-time option for them.

The dual-time in disruptive cases depends a _lot_ on what happens with this patch. I am expecting mine to be very sensitive to the config settings (ie: if both select realtime, then no dual-time is printed), so my proposal is on hiatus until this is resolved.

-- Mark