)]}'
{
  "commit": "30e5210a706ca6b52cbefa8b71e40ae614ffd6e5",
  "tree": "b5714afa10c11c42b4d190711f39468ff66e5ee1",
  "parents": [
    "f7f152458e953690f1c8025f507a26d554f6ee4d"
  ],
  "author": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Fri Jun 27 16:31:07 2014 +0200"
  },
  "committer": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Wed Jul 09 18:17:08 2014 +0200"
  },
  "message": "watchdog: fix deadlock with -watchdog-action pause\n\nqemu_clock_enable says:\n\n/* Disabling the clock will wait for related timerlists to stop\n * executing qemu_run_timers.  Thus, this functions should not\n * be used from the callback of a timer that is based on @clock.\n * Doing so would cause a deadlock.\n */\n\nand it indeed does: vm_stop uses qemu_clock_enable on QEMU_CLOCK_VIRTUAL\nand watchdogs are based on QEMU_CLOCK_VIRTUAL, and we get a deadlock.\n\nUse qemu_system_vmstop_request_prepare()/qemu_system_vmstop_request()\ninstead; yet another alternative could be a BH.\n\nI checked other occurrences of vm_stop and they should not have this\nproblem.  RUN_STATE_IO_ERROR could in principle (it depends on the\ncode in the drivers) but it has been fixed by commit 2bd3bce, \"block:\nasynchronously stop the VM on I/O errors\", 2014-06-05.\n\nTested-by: Luiz Capitulino \u003clcapitulino@redhat.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9f607d42bbea5cbf324ed43181be0644b5b0a031",
      "old_mode": 33188,
      "old_path": "hw/watchdog/watchdog.c",
      "new_id": "c307f9b57e31b725f7f49b77fc2286305c47ff57",
      "new_mode": 33188,
      "new_path": "hw/watchdog/watchdog.c"
    }
  ]
}
