)]}'
{
  "commit": "1eede070a59e1cc73da51e1aaa00d9ab86572cfc",
  "tree": "eafccca4f2a1ae2e8ebb06d2dff9528d5a289da4",
  "parents": [
    "bb71ad880204b79d60331d3384103976e086cb9f"
  ],
  "author": {
    "name": "Rafael J. Wysocki",
    "email": "rjw@sisk.pl",
    "time": "Tue May 20 23:00:01 2008 +0200"
  },
  "committer": {
    "name": "Jesse Barnes",
    "email": "jbarnes@virtuousgeek.org",
    "time": "Tue Jun 10 10:59:50 2008 -0700"
  },
  "message": "Introduce new top level suspend and hibernation callbacks\n\nIntroduce \u0027struct pm_ops\u0027 and \u0027struct pm_ext_ops\u0027 (\u0027ext\u0027 meaning\n\u0027extended\u0027) representing suspend and hibernation operations for bus\ntypes, device classes, device types and device drivers.\n\nModify the PM core to use \u0027struct pm_ops\u0027 and \u0027struct pm_ext_ops\u0027\nobjects, if defined, instead of the -\u003esuspend(), -\u003eresume(),\n-\u003esuspend_late(), and -\u003eresume_early() callbacks (the old callbacks\nwill be considered as legacy and gradually phased out).\n\nThe main purpose of doing this is to separate suspend (aka S2RAM and\nstandby) callbacks from hibernation callbacks in such a way that the\nnew callbacks won\u0027t take arguments and the semantics of each of them\nwill be clearly specified.  This has been requested for multiple\ntimes by many people, including Linus himself, and the reason is that\nwithin the current scheme if -\u003eresume() is called, for example, it\u0027s\ndifficult to say why it\u0027s been called (ie. is it a resume from RAM or\nfrom hibernation or a suspend/hibernation failure etc.?).\n\nThe second purpose is to make the suspend/hibernation callbacks more\nflexible so that device drivers can handle more than they can within\nthe current scheme.  For example, some drivers may need to prevent\nnew children of the device from being registered before their\n-\u003esuspend() callbacks are executed or they may want to carry out some\noperations requiring the availability of some other devices, not\ndirectly bound via the parent-child relationship, in order to prepare\nfor the execution of -\u003esuspend(), etc.\n\nUltimately, we\u0027d like to stop using the freezing of tasks for suspend\nand therefore the drivers\u0027 suspend/hibernation code will have to take\ncare of the handling of the user space during suspend/hibernation.\nThat, in turn, would be difficult within the current scheme, without\nthe new -\u003eprepare() and -\u003ecomplete() callbacks.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bf9290e290136a36d6006d032c1ca4fe392f84bd",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/apm_32.c",
      "new_id": "c1735f61a2c00e08a1cb865db361bc24023ec458",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/apm_32.c"
    },
    {
      "type": "modify",
      "old_id": "45cc3d9eacb874db52f663fe4cc3dea83b41d92c",
      "old_mode": 33188,
      "old_path": "drivers/base/power/main.c",
      "new_id": "d571204aaff788aa28c0a4275aa6a6fe0514a6e2",
      "new_mode": 33188,
      "new_path": "drivers/base/power/main.c"
    },
    {
      "type": "modify",
      "old_id": "a6894f2a4b9960d1a19094fa8b4b7890b9bd0e6d",
      "old_mode": 33188,
      "old_path": "drivers/base/power/power.h",
      "new_id": "a3252c0e28878fde258ebac8c10ad7c10cafbb86",
      "new_mode": 33188,
      "new_path": "drivers/base/power/power.h"
    },
    {
      "type": "modify",
      "old_id": "2b4b392dcbc1761339db874b4f9a02a5b49305c0",
      "old_mode": 33188,
      "old_path": "drivers/base/power/trace.c",
      "new_id": "8c1e656b5f8bd39330f4d33576334799bfec45c4",
      "new_mode": 33188,
      "new_path": "drivers/base/power/trace.c"
    },
    {
      "type": "modify",
      "old_id": "6a2d04c011bc1850e4f8191cc3749699952e2b7c",
      "old_mode": 33188,
      "old_path": "include/linux/device.h",
      "new_id": "f71a78d123aef9d7b3b03276921d10286e1eceed",
      "new_mode": 33188,
      "new_path": "include/linux/device.h"
    },
    {
      "type": "modify",
      "old_id": "39a7ee859b671cfc57f5fcd9e063fc3031e96f84",
      "old_mode": 33188,
      "old_path": "include/linux/pm.h",
      "new_id": "4ad9de94449a67d598ea51bbb9a322fdfbce8b11",
      "new_mode": 33188,
      "new_path": "include/linux/pm.h"
    },
    {
      "type": "modify",
      "old_id": "14a656cdc6523bf64d9c5b64c3a628529b56bab5",
      "old_mode": 33188,
      "old_path": "kernel/power/disk.c",
      "new_id": "d416be0efa8a37e9f5f3b5c7dd32110cb06c0f7a",
      "new_mode": 33188,
      "new_path": "kernel/power/disk.c"
    },
    {
      "type": "modify",
      "old_id": "6a6d5eb3524e7d2f219aeaa894e70981b3a706fb",
      "old_mode": 33188,
      "old_path": "kernel/power/main.c",
      "new_id": "d023b6b584e58bf8e8e1d14a83a6f85a13640a8f",
      "new_mode": 33188,
      "new_path": "kernel/power/main.c"
    }
  ]
}
