)]}'
{
  "commit": "304529b1b6f8612ccbb4582e997051b48b94f4a4",
  "tree": "025b53989f39b463621e9a9eb8e903dc54dd87e1",
  "parents": [
    "4175242c0dc1d92e821d2b45bc8fe06d4650a7b5"
  ],
  "author": {
    "name": "John Stultz",
    "email": "john.stultz@linaro.org",
    "time": "Fri Apr 01 14:32:09 2011 -0700"
  },
  "committer": {
    "name": "John Stultz",
    "email": "john.stultz@linaro.org",
    "time": "Tue Apr 26 14:01:41 2011 -0700"
  },
  "message": "time: Add timekeeping_inject_sleeptime\n\nSome platforms cannot implement read_persistent_clock, as\ntheir RTC devices are only accessible when interrupts are enabled.\nThis keeps them from being used by the timekeeping code on resume\nto measure the time in suspend.\n\nThe RTC layer tries to work around this, by calling do_settimeofday\non resume after irqs are reenabled to set the time properly. However,\nthis only corrects CLOCK_REALTIME, and does not properly adjust\nthe sleep time value. This causes btime in /proc/stat to be incorrect\nas well as making the new CLOCK_BOTTTIME inaccurate.\n\nThis patch resolves the issue by introducing a new timekeeping hook\nto allow the RTC layer to inject the sleep time on resume.\n\nThe code also checks to make sure that read_persistent_clock is\nnonfunctional before setting the sleep time, so that should the RTC\u0027s\nHCTOSYS option be configured in on a system that does support\nread_persistent_clock we will not increase the total_sleep_time twice.\n\nCC: Arve Hjønnevåg \u003carve@android.com\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "39013867cbd6cf0deeffcd59cb4c43280cac4618",
      "old_mode": 33188,
      "old_path": "drivers/rtc/class.c",
      "new_id": "4194e59e14cd70398095224aefa059083f9b1a49",
      "new_mode": 33188,
      "new_path": "drivers/rtc/class.c"
    },
    {
      "type": "modify",
      "old_id": "454a262057878235c98e25db1de03bd94ab4c45a",
      "old_mode": 33188,
      "old_path": "include/linux/time.h",
      "new_id": "4ea5a75fcacd1d4b0e86f13ec88c21aab18b28b0",
      "new_mode": 33188,
      "new_path": "include/linux/time.h"
    },
    {
      "type": "modify",
      "old_id": "8ad5d576755ea82021749dc0dcfc686720c57d59",
      "old_mode": 33188,
      "old_path": "kernel/time/timekeeping.c",
      "new_id": "8e6a05a5915a27f3f340d7ff53b44b368dab1131",
      "new_mode": 33188,
      "new_path": "kernel/time/timekeeping.c"
    }
  ]
}
