)]}'
{
  "log": [
    {
      "commit": "6a669ee8a790487b7ec1edda762d39615a78264b",
      "tree": "487270be1b035d75622f0f9b1e34f1c6b2cfbeae",
      "parents": [
        "3be9095063885d482b87d3875ea7f28e635882d0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@chaos.(none)",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "message": "timekeeping: Prevent time going backwards on resume\n\nTimekeeping resume adjusts xtime by adding the slept time in seconds and\nresets the reference value of the clock source (clock-\u003ecycle_last).\nclock-\u003ecycle last is used to calculate the delta between the last xtime\nupdate and the readout of the clock source in __get_nsec_offset(). xtime\nplus the offset is the current time. The resume code ignores the delta\nwhich had already elapsed between the last xtime update and the actual\ntime of suspend. If the suspend time is short, then we can see time\ngoing backwards on resume.\n\nSuspend:\noffs_s \u003d clock-\u003eread() - clock-\u003ecycle_last;\nnow \u003d xtime + offs_s;\ntimekeeping_suspend_time \u003d read_rtc();\n\nResume:\nsleep_time \u003d read_rtc() - timekeeping_suspend_time;\nxtime.tv_sec +\u003d sleep_time;\nclock-\u003ecycle_last \u003d clock-\u003eread();\noffs_r \u003d clock-\u003eread() - clock-\u003ecycle_last;\nnow \u003d xtime + offs_r;\n\nif sleep_time_seconds \u003d\u003d 0 and offs_r \u003c offs_s, then time goes\nbackwards.\n\nFix this by storing the offset from the last xtime update and add it to\nxtime during resume, when we reset clock-\u003ecycle_last:\n\nsleep_time \u003d read_rtc() - timekeeping_suspend_time;\nxtime.tv_sec +\u003d sleep_time;\nxtime +\u003d offs_s;\t/* Fixup xtime offset at suspend time */\nclock-\u003ecycle_last \u003d clock-\u003eread();\noffs_r \u003d clock-\u003eread() - clock-\u003ecycle_last;\nnow \u003d xtime + offs_r;\n\nThanks to Marcelo for tracking this down on the OLPC and providing the\nnecessary details to analyze the root cause.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Tosatti \u003cmarcelo@kvack.org\u003e\n\n"
    },
    {
      "commit": "3be9095063885d482b87d3875ea7f28e635882d0",
      "tree": "c29f9a90a244032515c4f830e1d73d4dd2a3f1ac",
      "parents": [
        "d0174640eedc1cd756754f03afe2dbb3d56de74e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@chaos.(none)",
        "time": "Sun Sep 16 15:36:43 2007 +0200"
      },
      "message": "timekeeping: access rtc outside of xtime lock\n\nLockdep complains about the access of rtc in timekeeping_suspend\ninside the interrupt disabled region of the write locked xtime lock.\nMove the access outside.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\n\n"
    },
    {
      "commit": "17c38b7490b3f0300c7812aefdae2ddda7ab4112",
      "tree": "0f7a9ee0c691aef3497030e38c3ba8e3c13a985c",
      "parents": [
        "2c6b47de17c75d553de3e2fb426d8298d2074585"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue Jul 24 18:38:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 25 10:17:44 2007 -0700"
      },
      "message": "Cache xtime every call to update_wall_time\n\nThis avoids xtime lag seen with dynticks, because while \u0027xtime\u0027 itself\nis still not updated often, we keep a \u0027xtime_cache\u0027 variable around that\ncontains the approximate real-time that _is_ updated each time we do a\n\u0027update_wall_time()\u0027, and is thus never off by more than one tick.\n\nIOW, this restores the original semantics for \u0027xtime\u0027 users, as long as\nyou use the proper abstraction functions (ie \u0027current_kernel_time()\u0027 or\n\u0027get_seconds()\u0027 depending on whether you want a timespec or just the\nseconds field).\n\n[ Updated Patch.  As penance for my sins I\u0027ve also yanked another #ifdef\n  that was added to avoid the xtime lag w/ hrtimers.  ]\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c6b47de17c75d553de3e2fb426d8298d2074585",
      "tree": "c8edc3d727d85cb3e1c043583c350a04a133e1a3",
      "parents": [
        "0de085bb474f64e4fdb2f1ff3268590792648c7b"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue Jul 24 17:47:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jul 25 10:09:20 2007 -0700"
      },
      "message": "Cleanup non-arch xtime uses, use get_seconds() or current_kernel_time().\n\nThis avoids use of the kernel-internal \"xtime\" variable directly outside\nof the actual time-related functions.  Instead, use the helper functions\nthat we already have available to us.\n\nThis doesn\u0027t actually change any behaviour, but this will allow us to\nfix the fact that \"xtime\" isn\u0027t updated very often with CONFIG_NO_HZ\n(because much of the realtime information is maintained as separate\noffsets to \u0027xtime\u0027), which has caused interfaces that use xtime directly\nto get a time that is out of sync with the real-time clock by up to a\nthird of a second or so.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c36c282b88963d0957368a443168588e62301fda",
      "tree": "6343887ae42a65635a61b4ad99fd7f3e8dd24758",
      "parents": [
        "f4fbfb0dda5577075a049eec7fb7ad38abca1912",
        "1f564ad6d4182859612cbae452122e5eb2d62a76"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 20 11:26:47 2007 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 20 11:26:47 2007 -0700"
      },
      "message": "Pull ia64-clocksource into release branch\n"
    },
    {
      "commit": "1f564ad6d4182859612cbae452122e5eb2d62a76",
      "tree": "ef98ce12ed64853437c35a81e29f0d1c09a4393b",
      "parents": [
        "0aa366f351d044703e25c8425e508170e80d83b1"
      ],
      "author": {
        "name": "Bob Picco",
        "email": "bob.picco@hp.com",
        "time": "Wed Jul 18 15:51:28 2007 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 20 11:23:02 2007 -0700"
      },
      "message": "[IA64] remove time interpolator\n\nRemove time_interpolator code (This is generic code, but\nonly user was ia64.  It has been superseded by the\nCONFIG_GENERIC_TIME code).\n\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Peter Keilty \u003cpeter.keilty@hp.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "71120f183bff04ba4f7ba3cc554202061912d548",
      "tree": "3b8281d6d3c6034aab4c3fa1c15dfd95faf2c17f",
      "parents": [
        "10146801e8b960d7473e350b60458d9d5a2be1cf"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jul 19 01:49:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "timekeeping: fixup shadow variable argument\n\nclocksource_adjust() has a clock argument, which shadows the file global clock\nvariable.  Fix this up.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c3f1a573237b90ef331267260358a0ec4ac9079",
      "tree": "f308047c4f40022d4b8f7226fba73b067dcd2d70",
      "parents": [
        "35ef63f635aa0e414ad6cdb2a4092e1caf99272c"
      ],
      "author": {
        "name": "Tomas Janousek",
        "email": "tjanouse@redhat.com",
        "time": "Sun Jul 15 23:39:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:41 2007 -0700"
      },
      "message": "Introduce boot based time\n\nThe commits\n\n  411187fb05cd11676b0979d9fbf3291db69dbce2 (GTOD: persistent clock support)\n  c1d370e167d66b10bca3b602d3740405469383de (i386: use GTOD persistent clock\n    support)\n\nchanged the monotonic time so that it no longer jumps after resume, but it\u0027s\nnot possible to use it for boot time and process start time calculations then.\n Also, the uptime no longer increases during suspend.\n\nI add a variable to track the wall_to_monotonic changes, a function to get the\nreal boot time and a function to get the boot based time from the monotonic\none.\n\n[akpm@linux-foundation.org: remove exports, add comment]\nSigned-off-by: Tomas Janousek \u003ctjanouse@redhat.com\u003e\nCc: Tomas Smetana \u003ctsmetana@redhat.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d10ff3fb62bd38415c0f7be3d75d107e1f67e59a",
      "tree": "402df109059cb64f88fb26c0cf5eb86b8c9fdae3",
      "parents": [
        "705962ccc9d21a08b74b6b6e1d3cf10f98968a67"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 14 11:10:02 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 14 12:13:11 2007 -0700"
      },
      "message": "timekeeping fix patch got mis-applied\n\nThe time keeping code move to kernel/time/timekeeping.c broke the\nclocksource resume logic patch, which got applied to the old file by a\nfuzzy application.  Fix it up and move the clocksource_resume() call to\nthe appropriate place.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n[ tssk, tssk, everybody should use --fuzz\u003d0 ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8524070b7982d76258942275908b7434cfcab4b4",
      "tree": "6e63c45c3b9ff6a86ad32b1de7adf48889eb0bfc",
      "parents": [
        "329c8d84ca1946c037d9859dc251b56d8b1b4630"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Tue May 08 00:27:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:06 2007 -0700"
      },
      "message": "Move timekeeping code to timekeeping.c\n\nMove the timekeeping code out of kernel/timer.c and into\nkernel/time/timekeeping.c.  I made no cleanups or other changes in transit.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
