compat: backport ktime_get_monotonic_offset()
authorLuis R. Rodriguez <mcgrof@do-not-panic.com>
Thu, 28 Mar 2013 02:16:56 +0000 (19:16 -0700)
committerLuis R. Rodriguez <mcgrof@do-not-panic.com>
Thu, 28 Mar 2013 07:06:48 +0000 (00:06 -0700)
commit9bf65ad978d3619b7bab6dab361dd84cbabf5594
tree1dda57cda5be88e595e92a12f69c6eb28c696ec5
parentde70a4b8e4e8a92b744ecc17e66617ce4bc46230
compat: backport ktime_get_monotonic_offset()

The commit a80b83b7 exported ktime_get_monotonic_offset()
but note that this was already in place on the header
files declared as extern, it was just never exported.
To work around the double possible declaration issue
with older kernels fortunately the LINUX_BACKPORT()
macro comes to the rescue by encofring our version
to be declared and used in backport code. Note that
this was added due to commit c61eef72 added as of
v3.8 for DRM drivers that need access to timestamps that
do no do not jump, unfortunately for older kernels we
can't port that since it requires access to a static
variable on the kernel, so just use the timestamps that
jump.

mcgrof@frijol ~/linux-stable (git::master)$ git describe --contains a80b83b7
v3.5-rc6~10^2~15^2~30

mcgrof@frijol ~/linux-stable (git::master)$ git describe --contains c61eef72
v3.8-rc1~42^2~170

commit a80b83b7b8456e9b475346c2e01d7e210883208c
Author: John Stultz <john.stultz@linaro.org>
Date:   Fri Feb 3 00:19:07 2012 -0800

    Input: add infrastructure for selecting clockid for event time stamps

    As noted by Arve and others, since wall time can jump backwards, it is
    difficult to use for input because one cannot determine if one event
    occurred before another or for how long a key was pressed.

    However, the timestamp field is part of the kernel ABI, and cannot be
    changed without possibly breaking existing users.

    This patch adds a new IOCTL that allows a clockid to be set in the
    evdev_client struct that will specify which time base to use for event
    timestamps (ie: CLOCK_MONOTONIC instead of CLOCK_REALTIME).

    For now we only support CLOCK_MONOTONIC and CLOCK_REALTIME, but
    in the future we could support other clockids if appropriate.

    The default remains CLOCK_REALTIME, so we don't change the ABI.

Signed-off-by: John Stultz <john.stultz@linaro.org>
Reviewed-by: Daniel Kurtz <djkurtz@google.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
commit c61eef726a78ae77b6ce223d01ea2130f465fe5c
Author: Imre Deak <imre.deak@intel.com>
Date:   Tue Oct 23 18:53:26 2012 +0000

    drm: add support for monotonic vblank timestamps

    Jumps in the vblank and page flip event timestamps cause trouble for
    clients, so we should avoid them. The timestamp we get currently with
    gettimeofday can jump, so use instead monotonic timestamps.

    For backward compatibility use a module flag to revert back to using
    gettimeofday timestamps. Add also a DRM_CAP_TIMESTAMP_MONOTONIC flag
    that is simply a read only version of the module flag, so that clients
    can query this without depending on sysfs.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
compat/compat-3.5.c
include/linux/compat-3.5.h