)]}'
{
  "commit": "087462c7739869e9b888c06c06c8f1bbfd99779c",
  "tree": "eee94363d9e17b331c8ea1e09d18e0fd9e1f80c7",
  "parents": [
    "fd0a10cd20a1c5ae829be32f3364dae88f435c4e"
  ],
  "author": {
    "name": "Laurent Vivier",
    "email": "lvivier@redhat.com",
    "time": "Wed Jan 06 20:45:25 2016 +0100"
  },
  "committer": {
    "name": "Gerd Hoffmann",
    "email": "kraxel@redhat.com",
    "time": "Fri Jan 08 09:29:24 2016 +0100"
  },
  "message": "ohci: clear pending SOF on suspend\n\nOn overcommitted CPU, kernel can be so slow that an interrupt can\nbe triggered by the device whereas the driver is not ready to receive\nit. This drives us into an infinite loop.\n\nOn suspend, if a SOF interrupt is raised between the stop of the\ndevice processing and the change of the device internal state to\nOHCI_USB_SUSPEND (QEMU stops SOF timer on this state change), this\ninterrupt is never acknowledged.\n\nThis patch clears pending SOF interrupt on OHCI_USB_SUSPEND setting.\n\nSome details:\n\n- ohci_irq(): the OHCI interrupt handler, acknowledges the SOF IRQ\n  only if the state of the driver (rh_state) is OHCI_STATE_RUNNING.\n  So if this interrupt happens and the driver is not in this state,\n  the function is called again and again, moving the system to a\n  CPU starvation.\n\n- ohci_rh_suspend(): the function stop the operation and acknowledge\n  pending interrupts (but doesn\u0027t disable it). Later in the function,\n  the device is moved to OHCI_SUSPEND_STATE, and the driver to\n  OHCI_RH_SUSPENDED. If between the moment when the interrupt is\n  acknowledged and the moment when the device is suspended a new\n  interrupt is raised, it will be never acknowledged because the\n  driver is now not in OHCI_RH_RUNNING state.\n\nSigned-off-by: Laurent Vivier \u003clvivier@redhat.com\u003e\nReviewed-by: Thomas Huth \u003cthuth@redhat.com\u003e\nMessage-id: 1452109525-32150-3-git-send-email-lvivier@redhat.com\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ff5658e25efc24057bfcf2063208cb6e7106bc9e",
      "old_mode": 33188,
      "old_path": "hw/usb/hcd-ohci.c",
      "new_id": "efeaf7371f45363bbe3f6cdda490704265fc644d",
      "new_mode": 33188,
      "new_path": "hw/usb/hcd-ohci.c"
    }
  ]
}
