)]}'
{
  "commit": "f9677e0f83080bb4186865868c359e72e1fac1ea",
  "tree": "914a27f215d8c86f8ca60154c062a1281cffe677",
  "parents": [
    "2c756feb18d9ec258dbb3a3d11c47e28820690d7"
  ],
  "author": {
    "name": "Christopher S. Hall",
    "email": "christopher.s.hall@intel.com",
    "time": "Mon Feb 29 06:33:47 2016 -0800"
  },
  "committer": {
    "name": "John Stultz",
    "email": "john.stultz@linaro.org",
    "time": "Thu Mar 03 14:23:34 2016 -0800"
  },
  "message": "x86/tsc: Always Running Timer (ART) correlated clocksource\n\nOn modern Intel systems TSC is derived from the new Always Running Timer\n(ART). ART can be captured simultaneous to the capture of\naudio and network device clocks, allowing a correlation between timebases\nto be constructed. Upon capture, the driver converts the captured ART\nvalue to the appropriate system clock using the correlated clocksource\nmechanism.\n\nOn systems that support ART a new CPUID leaf (0x15) returns parameters\n“m” and “n” such that:\n\nTSC_value \u003d (ART_value * m) / n + k [n \u003e\u003d 1]\n\n[k is an offset that can adjusted by a privileged agent. The\nIA32_TSC_ADJUST MSR is an example of an interface to adjust k.\nSee 17.14.4 of the Intel SDM for more details]\n\nCc: Prarit Bhargava \u003cprarit@redhat.com\u003e\nCc: Richard Cochran \u003crichardcochran@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Andy Lutomirski \u003cluto@amacapital.net\u003e\nCc: kevin.b.stanton@intel.com\nCc: kevin.j.clarke@intel.com\nCc: hpa@zytor.com\nCc: jeffrey.t.kirsher@intel.com\nCc: netdev@vger.kernel.org\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Christopher S. Hall \u003cchristopher.s.hall@intel.com\u003e\n[jstultz: Tweaked to fix build issue, also reworked math for\n64bit division on 32bit systems, as well as !CONFIG_CPU_FREQ build\nfixes]\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7ad8c946429776b6dad30238e9d5e2d65a1a3c87",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/cpufeature.h",
      "new_id": "ff557b49ab771d63a7cff06dff4d8de681682a26",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/cpufeature.h"
    },
    {
      "type": "modify",
      "old_id": "6d7c5479bceae12cca3f306ef3067ce8d8067483",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/tsc.h",
      "new_id": "174c4212780afde12200fd23a1dbc17a08f40309",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/tsc.h"
    },
    {
      "type": "modify",
      "old_id": "3d743da828d38acff0013600ed582c8b14ef81b3",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/tsc.c",
      "new_id": "80d761e420c555cf408801d67a779118a84c626c",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/tsc.c"
    }
  ]
}
