)]}'
{
  "commit": "6d19c009cc780c63de25a046509ebc9473809fd6",
  "tree": "d3a6186a5b3b2cd75a5778ba355ea9c3c7823a6c",
  "parents": [
    "a1e4d72cd3024999bfb6703092ea271438805c89"
  ],
  "author": {
    "name": "Alan Stern",
    "email": "stern@rowland.harvard.edu",
    "time": "Fri Feb 12 12:21:11 2010 +0100"
  },
  "committer": {
    "name": "Rafael J. Wysocki",
    "email": "rjw@sisk.pl",
    "time": "Fri Feb 26 20:39:12 2010 +0100"
  },
  "message": "USB: implement non-tree resume ordering constraints for PCI host controllers\n\nThis patch (as1331) adds non-tree ordering constraints needed for\nproper resume of PCI USB host controllers from hibernation.  The main\nissue is that non-high-speed devices must not be resumed before the\nhigh-speed root hub, because it is the ehci_bus_resume() routine which\ntakes care of handing the device connection over to the companion\ncontroller.  If the device resume is attempted before the handover\nthen the device won\u0027t be found and it will be treated as though it had\ndisconnected.\n\nThe patch adds a new field to the usb_bus structure; for each\nfull/low-speed bus this field will contain a pointer to the companion\nhigh-speed bus (if one exists).  It is used during normal device\nresume; if the hs_companion pointer isn\u0027t NULL then we wait for the\nroot-hub device on the hs_companion bus.\n\nA secondary issue is that an EHCI controlller shouldn\u0027t be resumed\nbefore any of its companions.  On some machines I have observed\nhandovers failing if the companion controller is reinitialized after\nthe handover.  Thus, the EHCI resume routine must wait for the\ncompanion controllers to be resumed.\n\nThe patch also fixes a small bug in usb_hcd_pci_probe(); an error path\njumps to the wrong label, causing a memory leak.\n\n[rjw: Fixed compilation for CONFIG_PM_SLEEP unset.]\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "60a45f1e3a67e13b41fd41770d51cbe83b39f730",
      "old_mode": 33188,
      "old_path": "drivers/usb/core/driver.c",
      "new_id": "f2f055eb6831d73dc006b7e3f54e1e954437c6f4",
      "new_mode": 33188,
      "new_path": "drivers/usb/core/driver.c"
    },
    {
      "type": "modify",
      "old_id": "2dcf906df569440d18a0cecb9b4801dec581e77f",
      "old_mode": 33188,
      "old_path": "drivers/usb/core/hcd-pci.c",
      "new_id": "15286533c15ac5c315712d30ed3a23c2e7bf3a73",
      "new_mode": 33188,
      "new_path": "drivers/usb/core/hcd-pci.c"
    },
    {
      "type": "modify",
      "old_id": "d7ace1b80f09d0936c1f2f23e8a62b82f1c5baa7",
      "old_mode": 33188,
      "old_path": "include/linux/usb.h",
      "new_id": "332eaea610217aab63378e27daf8afe3720b6a6c",
      "new_mode": 33188,
      "new_path": "include/linux/usb.h"
    }
  ]
}
