]> git.baikalelectronics.ru Git - kernel.git/commit
Revert: Unify CLOCK_MONOTONIC and CLOCK_BOOTTIME
authorThomas Gleixner <tglx@linutronix.de>
Wed, 25 Apr 2018 13:33:38 +0000 (15:33 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 26 Apr 2018 12:53:32 +0000 (14:53 +0200)
commit7689fa2475c5743dbed0456bd4724452f5e4b65d
tree1bdf479028163df953d98db29ae4ebbba73a2fd7
parentc9c59d99df9625f549db8e5610cf5c6427127b6d
Revert: Unify CLOCK_MONOTONIC and CLOCK_BOOTTIME

Revert commits

3ab1e05262f2 ("tracing: Unify the "boot" and "mono" tracing clocks")
a065ee6c8597 ("hrtimer: Unify MONOTONIC and BOOTTIME clock behavior")
7025752b1d4a ("posix-timers: Unify MONOTONIC and BOOTTIME clock behavior")
cb45fac1ede5 ("timekeeping: Remove boot time specific code")
5e63e0a8573d ("Input: Evdev - unify MONOTONIC and BOOTTIME clock behavior")
b718c2af089b ("timekeeping: Make the MONOTONIC clock behave like the BOOTTIME clock")
bf56cffd6832 ("timekeeping: Add the new CLOCK_MONOTONIC_ACTIVE clock")

As stated in the pull request for the unification of CLOCK_MONOTONIC and
CLOCK_BOOTTIME, it was clear that we might have to revert the change.

As reported by several folks systemd and other applications rely on the
documented behaviour of CLOCK_MONOTONIC on Linux and break with the above
changes. After resume daemons time out and other timeout related issues are
observed. Rafael compiled this list:

* systemd kills daemons on resume, after >WatchdogSec seconds
  of suspending (Genki Sky).  [Verified that that's because systemd uses
  CLOCK_MONOTONIC and expects it to not include the suspend time.]

* systemd-journald misbehaves after resume:
  systemd-journald[7266]: File /var/log/journal/016627c3c4784cd4812d4b7e96a34226/system.journal
corrupted or uncleanly shut down, renaming and replacing.
  (Mike Galbraith).

* NetworkManager reports "networking disabled" and networking is broken
  after resume 50% of the time (Pavel).  [May be because of systemd.]

* MATE desktop dims the display and starts the screensaver right after
  system resume (Pavel).

* Full system hang during resume (me).  [May be due to systemd or NM or both.]

That happens on debian and open suse systems.

It's sad, that these problems were neither catched in -next nor by those
folks who expressed interest in this change.

Reported-by: Rafael J. Wysocki <rjw@rjwysocki.net>
Reported-by: Genki Sky <sky@genki.is>,
Reported-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Kevin Easton <kevin@guarana.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mark Salyzyn <salyzyn@android.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
15 files changed:
Documentation/trace/ftrace.rst
drivers/input/evdev.c
include/linux/hrtimer.h
include/linux/timekeeper_internal.h
include/linux/timekeeping.h
include/uapi/linux/time.h
kernel/time/hrtimer.c
kernel/time/posix-stubs.c
kernel/time/posix-timers.c
kernel/time/tick-common.c
kernel/time/tick-internal.h
kernel/time/tick-sched.c
kernel/time/timekeeping.c
kernel/time/timekeeping.h
kernel/trace/trace.c