)]}'
{
  "commit": "5f3e31012e334f3410e04abae7f88565df17c91a",
  "tree": "75930e80e1a4fa885717c3528054d15cbda51704",
  "parents": [
    "cd5be5829c1ce87aa6b3a7806524fac07ac9a757"
  ],
  "author": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Mon Oct 28 17:32:18 2013 +0100"
  },
  "committer": {
    "name": "Anthony Liguori",
    "email": "aliguori@amazon.com",
    "time": "Wed Nov 06 21:47:05 2013 -0800"
  },
  "message": "timers: fix stop/cont with -icount\n\nStop/cont commands are broken with -icount due to a deadlock.  The\nreal problem is that the computation of timers_state.cpu_ticks_offset\nmakes no sense with -icount enabled: we set it to an icount clock value\nin cpu_disable_ticks, and subtract a TSC (or similar, whatever\ncpu_get_real_ticks happens to return) value in cpu_enable_ticks.\n\nThe fix is simple.  timers_state.cpu_ticks_offset is only used\ntogether with cpu_get_real_ticks, so we can use cpu_get_real_ticks\nin cpu_disable_ticks.  There is no need to update cpu_ticks_prev\nat the time cpu_disable_ticks is called; instead, we can do it\nthe next time cpu_get_ticks is called.\n\nThe change to cpu_disable_ticks is the important part of the patch.\nThe rest modifies the code to always check timers_state.cpu_ticks_prev,\neven when the ticks are not advancing (i.e. the VM is stopped).  It also\nmakes a similar change to cpu_get_clock_locked, so that the code remains\nsimilar for cpu_get_ticks and cpu_get_clock_locked.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nMessage-id: 1382977938-13844-1-git-send-email-pbonzini@redhat.com\nSigned-off-by: Anthony Liguori \u003caliguori@amazon.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "912938cd1bae5d550ed88372c3fa349e82b1d7cb",
      "old_mode": 33188,
      "old_path": "cpus.c",
      "new_id": "01d128d7aff71d98b6acf195a7ada6b69d2d5a35",
      "new_mode": 33188,
      "new_path": "cpus.c"
    }
  ]
}
