)]}'
{
  "commit": "ab33fcda9f96b9195dfb3fcf5bd9bb5383caeaea",
  "tree": "97a1a32a03b69a15fb4f23f7a5eb5e880d036980",
  "parents": [
    "3b2319a30b5ae528787bf3769b1a28a863b53252"
  ],
  "author": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Wed Apr 13 10:03:44 2011 +0200"
  },
  "committer": {
    "name": "Edgar E. Iglesias",
    "email": "edgar.iglesias@gmail.com",
    "time": "Fri Apr 15 09:27:56 2011 +0200"
  },
  "message": "enable vm_clock to \"warp\" in the iothread+icount case\n\nThe previous patch however is not enough, because if the virtual CPU\ngoes to sleep waiting for a future timer interrupt to wake it up, qemu\ndeadlocks.  The timer interrupt never comes because time is driven by\nicount, but the vCPU doesn\u0027t run any insns.\n\nYou could say that VCPUs should never go to sleep in icount\nmode if there is a pending vm_clock timer; rather time should\njust warp to the next vm_clock event with no sleep ever taking place.\nEven better, you can sleep for some time related to the\ntime left until the next event, to avoid that the warps are too visible\nexternally; for example, you could be sending network packets continously\ninstead of every 100ms.\n\nThis is what this patch implements.  qemu_clock_warp is called: 1)\nwhenever a vm_clock timer is adjusted, to ensure the warp_timer is\nsynchronized; 2) at strategic points in the CPU thread, to make sure\nthe insn counter is synchronized before the CPU starts running.\nIn any case, the warp_timer is disabled while the CPU is running,\nbecause the insn counter will then be making progress on its own.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nTested-by: Edgar E. Iglesias \u003cedgar.iglesias@gmail.com\u003e\nSigned-off-by: Edgar E. Iglesias \u003cedgar.iglesias@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cbeac7a40e5b7bb4461799de954a594aabcc3f76",
      "old_mode": 33188,
      "old_path": "cpus.c",
      "new_id": "6a501990397788db046d751ed7553b05a7e973cd",
      "new_mode": 33188,
      "new_path": "cpus.c"
    },
    {
      "type": "modify",
      "old_id": "82e27c18d315217dfeac3db25a3e13f49591839f",
      "old_mode": 33188,
      "old_path": "qemu-common.h",
      "new_id": "4f6037bab94a7bd671f1e22c5fa06fc7f1bc5fa8",
      "new_mode": 33188,
      "new_path": "qemu-common.h"
    },
    {
      "type": "modify",
      "old_id": "50f1943afddafeb29c39259ab631c2dd5260ab71",
      "old_mode": 33188,
      "old_path": "qemu-timer.c",
      "new_id": "49596888955be9559f360dbf1587d83eeab1cdff",
      "new_mode": 33188,
      "new_path": "qemu-timer.c"
    },
    {
      "type": "modify",
      "old_id": "75d567578b3c397f6ab6fa9abd7023848ce5b228",
      "old_mode": 33188,
      "old_path": "qemu-timer.h",
      "new_id": "c01bcaba660c18b6bbda53aff6e884fe9c54f189",
      "new_mode": 33188,
      "new_path": "qemu-timer.h"
    }
  ]
}
