)]}'
{
  "commit": "0132b4b6595423c92f54d7e0b172b5d73aaa8375",
  "tree": "fe8b47682db22a2829fccd10f9b408689beaeb39",
  "parents": [
    "da9fbe76a0639c529f9678aabcc052dfe4cd9cc4"
  ],
  "author": {
    "name": "Hans de Goede",
    "email": "hdegoede@redhat.com",
    "time": "Fri Aug 17 15:24:49 2012 +0200"
  },
  "committer": {
    "name": "Gerd Hoffmann",
    "email": "kraxel@redhat.com",
    "time": "Fri Aug 31 11:55:17 2012 +0200"
  },
  "message": "usb: Halt ep queue en cancel pending packets on a packet error\n\nFor controllers which queue up more then 1 packet at a time, we must halt the\nep queue, and inside the controller code cancel all pending packets on an\nerror.\n\nThere are multiple reasons for this:\n1) Guests expect the controllers to halt ep queues on error, so that they\nget the opportunity to cancel transfers which the scheduled after the failing\none, before processing continues\n\n2) Not cancelling queued up packets after a failed transfer also messes up\nthe controller state machine, in the case of EHCI causing the following\nassert to trigger: \"assert(p-\u003eqtdaddr \u003d\u003d q-\u003eqtdaddr)\" at hcd-ehci.c:2075\n\n3) For bulk endpoints with pipelining enabled (redirection to a real USB\ndevice), we must cancel all the transfers after this a failed one so that:\na) If they\u0027ve completed already, they are not processed further causing more\n   stalls to be reported, originating from the same failed transfer\nb) If still in flight, they are cancelled before the guest does\n   a clear stall, otherwise the guest and device can loose sync!\n\nNote this patch only touches the ehci and uhci controller changes, since AFAIK\nno other controllers actually queue up multiple transfer. If I\u0027m wrong on this\nother controllers need to be updated too!\n\nAlso note that this patch was heavily tested with the ehci code, where I had\na reproducer for a device causing a transfer to fail. The uhci code is not\ntested with actually failing transfers and could do with a thorough review!\n\nSigned-off-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "432ccae57f4f7caa4a28d11cc6dea6719411f5b3",
      "old_mode": 33188,
      "old_path": "hw/usb.h",
      "new_id": "e5744773bd6c6938d0caa820c11abf36bef4286e",
      "new_mode": 33188,
      "new_path": "hw/usb.h"
    },
    {
      "type": "modify",
      "old_id": "c7e5bc047f7972e01585caf73db32d5723eef925",
      "old_mode": 33188,
      "old_path": "hw/usb/core.c",
      "new_id": "28b840e52d3939f02d33440ea810a4f411f9f006",
      "new_mode": 33188,
      "new_path": "hw/usb/core.c"
    },
    {
      "type": "modify",
      "old_id": "8b94b177235f97df836963c54f7f192e6285f45b",
      "old_mode": 33188,
      "old_path": "hw/usb/hcd-ehci.c",
      "new_id": "8504a6a6b081e5e9c2717c5142de581171810266",
      "new_mode": 33188,
      "new_path": "hw/usb/hcd-ehci.c"
    },
    {
      "type": "modify",
      "old_id": "1ace2a41da679705ba8fc949e606267e74cc677f",
      "old_mode": 33188,
      "old_path": "hw/usb/hcd-uhci.c",
      "new_id": "898773414ecc7133befc36c5cab6322fee2e4bed",
      "new_mode": 33188,
      "new_path": "hw/usb/hcd-uhci.c"
    }
  ]
}
