)]}'
{
  "log": [
    {
      "commit": "e59a8db8d9b7c02e0bbefbeb18a3836288a97b8a",
      "tree": "6d507257fb36ecccdaed806869934419ae890506",
      "parents": [
        "0f1d6986bae57b6d11e2c9ce5e66b6c6b0e3684d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jan 14 00:39:36 2012 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jan 14 00:39:36 2012 +0100"
      },
      "message": "PM / Domains: Skip governor functions for CONFIG_PM_RUNTIME unset\n\nThe governor functions in drivers/base/power/domain_governor.c\nare only used if CONFIG_PM_RUNTIME is set and they refer to data\nstructures that are only present in that case.  For this reason,\nthey shouldn\u0027t be compiled at all when CONFIG_PM_RUNTIME is not set.\n\nReported-by: Kukjin Kim \u003ckgene.kim@samsung.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "0f1d6986bae57b6d11e2c9ce5e66b6c6b0e3684d",
      "tree": "abf2a89b7c4c60e2165a347fcbf2dd892c12e8bb",
      "parents": [
        "dae5cbc2440b1d21a15715d0f1fb20f632dd38ee"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jan 14 00:39:25 2012 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jan 14 00:39:25 2012 +0100"
      },
      "message": "PM / Domains: Fix build for CONFIG_PM_SLEEP unset\n\nSome callback functions defined in drivers/base/power/domain.c are\nonly necessary if CONFIG_PM_SLEEP is set and they call some other\nfunctions that are only available in that case.  For this reason,\nthey should not be compiled at all when CONFIG_PM_SLEEP is not set.\n\nReported-by: Magnus Damm \u003cdamm@opensource.se\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "6d10463b2fa1b6b81091661c1917f26436b38c53",
      "tree": "1fb5be10a08a3178fb644c9eb5a2a31423985cfa",
      "parents": [
        "0015afaa1f818d38ea9f8e81a84a6aeeca5fdaf0",
        "a8cf27bee7adc40d91956cf1b9e44d7001f93aba"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 25 23:43:11 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 25 23:43:11 2011 +0100"
      },
      "message": "Merge branch \u0027pm-domains\u0027 into pm-for-linus\n\n* pm-domains:\n  PM / shmobile: Allow the A4R domain to be turned off at run time\n  PM / input / touchscreen: Make st1232 use device PM QoS constraints\n  PM / QoS: Introduce dev_pm_qos_add_ancestor_request()\n  PM / shmobile: Remove the stay_on flag from SH7372\u0027s PM domains\n  PM / shmobile: Don\u0027t include SH7372\u0027s INTCS in syscore suspend/resume\n  PM / shmobile: Add support for the sh7372 A4S power domain / sleep mode\n  ARM: S3C64XX: Implement basic power domain support\n  PM / shmobile: Use common always on power domain governor\n  PM / Domains: Provide an always on power domain governor\n  PM / Domains: Fix default system suspend/resume operations\n  PM / Domains: Make it possible to assign names to generic PM domains\n  PM / Domains: fix compilation failure for CONFIG_PM_GENERIC_DOMAINS unset\n  PM / Domains: Automatically update overoptimistic latency information\n  PM / Domains: Add default power off governor function (v4)\n  PM / Domains: Add device stop governor function (v4)\n  PM / Domains: Rework system suspend callback routines (v2)\n  PM / Domains: Introduce \"save/restore state\" device callbacks\n  PM / Domains: Make it possible to use per-device domain callbacks\n"
    },
    {
      "commit": "0015afaa1f818d38ea9f8e81a84a6aeeca5fdaf0",
      "tree": "8f8279cf0117d210230ef9fcacb05f960bf6f8f5",
      "parents": [
        "b7ba68c4a072c9aa8f04b8cf7838b6cd2f48d918",
        "00dc9ad18d707f36b2fb4af98fd2cf0548d2b258"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 25 23:43:05 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 25 23:43:05 2011 +0100"
      },
      "message": "Merge branch \u0027pm-runtime\u0027 into pm-for-linus\n\n* pm-runtime:\n  PM / Runtime: Use device PM QoS constraints (v2)\n"
    },
    {
      "commit": "40a5f8be2f482783de0f1f0fe856660e489734a8",
      "tree": "69c29c6d0fb16829fba230d800901611cbc7852a",
      "parents": [
        "767c0f3aed74be56f268709f5347e6c86d52b408"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Dec 23 01:23:52 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 25 23:39:41 2011 +0100"
      },
      "message": "PM / QoS: Introduce dev_pm_qos_add_ancestor_request()\n\nSome devices, like the I2C controller on SH7372, are not\nnecessary for providing power to their children or forwarding\nwakeup signals (and generally interrupts) from them.  They are\nonly needed by their children when there\u0027s some data to transfer,\nso they may be suspended for the majority of time and resumed\non demand, when the children have data to send or receive.  For this\npurpose, however, their power.ignore_children flags have to be set,\nor the PM core wouldn\u0027t allow them to be suspended while their\nchildren were active.\n\nUnfortunately, in some situations it may take too much time to\nresume such devices so that they can assist their children in\ntransferring data.  For example, if such a device belongs to a PM\ndomain which goes to the \"power off\" state when that device is\nsuspended, it may take too much time to restore power to the\ndomain in response to the request from one of the device\u0027s\nchildren.  In that case, if the parent\u0027s resume time is critical,\nthe domain should stay in the \"power on\" state, although it still may\nbe desirable to power manage the parent itself (e.g. by manipulating\nits clock).\n\nIn general, device PM QoS may be used to address this problem.\nNamely, if the device\u0027s children added PM QoS latency constraints\nfor it, they would be able to prevent it from being put into an\noverly deep low-power state.  However, in some cases the devices\nneeding to be serviced are not the immediate children of a\n\"children-ignoring\" device, but its grandchildren or even less\ndirect descendants.  In those cases, the entity wanting to add a\nPM QoS request for a given device\u0027s ancestor that ignores its\nchildren will have to find it in the first place, so introduce a new\nhelper function that may be used to achieve that.  This function,\ndev_pm_qos_add_ancestor_request(), will search for the first\nancestor of the given device whose power.ignore_children flag is\nset and will add a device PM QoS latency request for that ancestor\non behalf of the caller.  The request added this way may be removed\nwith the help of dev_pm_qos_remove_request() in the future, like\nany other device PM QoS latency request.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "90363ddf0a1a4dccfbb8d0c10b8f488bc7fa69f8",
      "tree": "d64b594caef2df2cd9e165089e277d09e2b089d6",
      "parents": [
        "8114ab763b2d297c8af49bf380a093d76e929692"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 18 00:34:42 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 21 22:03:32 2011 +0100"
      },
      "message": "PM: Drop generic_subsys_pm_ops\n\nSince the PM core is now going to execute driver callbacks directly\nif the corresponding subsystem callbacks are not present,\nforward-only subsystem callbacks (i.e. such that only execute the\ncorresponding driver callbacks) are not necessary any more.  Thus\nit is possible to remove generic_subsys_pm_ops, because the only\ncallback in there that is not forward-only, .runtime_idle, is not\nreally used by the only user of generic_subsys_pm_ops, which is\nvio_bus_type.\n\nHowever, the generic callback routines themselves cannot be removed\nfrom generic_ops.c, because they are used individually by a number\nof subsystems.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "35cd133c6130c1eb52806808abee9d62e6854a27",
      "tree": "2f06e7f0288b9d4a3785a202f6480928113d8d5c",
      "parents": [
        "9cf519d1c15fa05a538c2b3963c5f3903daf765a"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 18 00:34:13 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 21 22:01:05 2011 +0100"
      },
      "message": "PM: Run the driver callback directly if the subsystem one is not there\n\nMake the PM core execute driver PM callbacks directly if the\ncorresponding subsystem callbacks are not present.\n\nThere are three reasons for doing that.  First, it reflects the\nbehavior of drivers/base/dd.c:really_probe() that runs the driver\u0027s\n.probe() callback directly if the bus type\u0027s one is not defined, so\nthis change will remove one arbitrary difference between the PM core\nand the remaining parts of the driver core.  Second, it will allow\nsome subsystems, whose PM callbacks don\u0027t do anything except for\nexecuting driver callbacks, to be simplified quite a bit by removing\nthose \"forward-only\" callbacks.  Finally, it will allow us to remove\none level of indirection in the system suspend and resume code paths\nwhere it is not necessary, which is going to lead to less debug noise\nwith initcall_debug passed in the kernel command line (messages won\u0027t\nbe printed for driverless devices whose subsystems don\u0027t provide\nPM callbacks among other things).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "9cf519d1c15fa05a538c2b3963c5f3903daf765a",
      "tree": "44500e7eba98e682663ab253e4ba7edff7e9f875",
      "parents": [
        "b00f4dc5ff022cb9cbaffd376d9454d7fa1e496f"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 18 00:34:01 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 21 22:00:56 2011 +0100"
      },
      "message": "PM / Sleep: Make pm_op() and pm_noirq_op() return callback pointers\n\nMake the pm_op() and pm_noirq_op() functions return pointers to\nappropriate callbacks instead of executing those callbacks and\nreturning their results.\n\nThis change is required for a subsequent modification that will\nexecute the corresponding driver callback if the subsystem\ncallback returned by either pm_op(), or pm_noirq_op() is NULL.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "1eac8111e0763853266a171ce11214da3a347a0a",
      "tree": "9d4cdb27ac6cf063d14b585c84c1ba5c6558a61b",
      "parents": [
        "8ca6d9bcc8d33c592c0855b4b1481bc723ac7e85"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 15 20:59:30 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 18 00:27:43 2011 +0100"
      },
      "message": "PM / Sleep: Merge internal functions in generic_ops.c\n\nAfter the change that removed the code related to runtime PM\nfrom __pm_generic_call() and __pm_generic_resume() these two\nfunctions need not be separate any more, so merge them.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "8ca6d9bcc8d33c592c0855b4b1481bc723ac7e85",
      "tree": "2a80c117586c12bf475cd828ffdeeb67ba9e647f",
      "parents": [
        "cf007e3526a785a95a738d5a8fba44f1f4fe33e0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 15 20:59:23 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Dec 18 00:27:35 2011 +0100"
      },
      "message": "PM / Sleep: Simplify generic system suspend callbacks\n\nThe pm_runtime_suspended() check in __pm_generic_call() doesn\u0027t\nreally help and may cause problems to happen, because in some cases\nthe system suspend callbacks need to be called even if the given\ndevice has been suspended by runtime PM.  For example, if the device\ngenerally supports remote wakeup and is not enabled to wake up\nthe system from sleep, it should be prevented from generating wakeup\nsignals during system suspend and that has to be done by the\nsuspend callbacks that the pm_runtime_suspended() check prevents from\nbeing executed.\n\nSimilarly, it may not be a good idea to unconditionally change\nthe runtime PM status of the device to \u0027active\u0027 in\n__pm_generic_resume(), because the driver may want to leave the\ndevice in the \u0027suspended\u0027 state, depending on what happened to it\nbefore the system suspend and whether or not it is enabled to\nwake up the system.\n\nFor the above reasons, remove the pm_runtime_suspended()\ncheck from __pm_generic_call() and remove the code changing the\ndevice\u0027s runtime PM status from __pm_generic_resume().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "925b44a273aa8c4c23c006c1228aacd538eead09",
      "tree": "107742feb4aa12727de15daf5d472968967ce142",
      "parents": [
        "c9914854b4ca339e511d052ce3a1a441ef15b928"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Thu Dec 08 23:27:28 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Dec 09 23:22:41 2011 +0100"
      },
      "message": "PM / Domains: Provide an always on power domain governor\n\nSince systems are likely to have power domains that can\u0027t be turned off\nfor various reasons at least temporarily while implementing power domain\nsupport provide a default governor which will always refuse to power off\nthe domain, saving platforms having to implement their own.\n\nSince the code is so tiny don\u0027t bother with a Kconfig symbol for it.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "c9914854b4ca339e511d052ce3a1a441ef15b928",
      "tree": "a58486eb9156a15cefe1c6b2ce2483991faeeae7",
      "parents": [
        "e84b2c202771bbd538866207efcb1f7dbab8045b"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 06 23:16:47 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 08 22:59:23 2011 +0100"
      },
      "message": "PM / Domains: Fix default system suspend/resume operations\n\nCommit d23b9b00cdde5c93b914a172cecd57d5625fcd04 (PM / Domains: Rework\nsystem suspend callback routines (v2)) broke the system suspend and\nresume handling by devices belonging to generic PM domains, because\nit used freeze/thaw callbacks instead of suspend/resume ones and\ndidn\u0027t initialize device callbacks for system suspend/resume\nproperly at all.  Fix those problems.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "e84b2c202771bbd538866207efcb1f7dbab8045b",
      "tree": "00f62ed8f422c587897c7eb6ac6cd8c4dca508ab",
      "parents": [
        "4f042cdad40e1566a53b7ae85e72b6945a4b0fde"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 06 22:19:54 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 06 22:19:54 2011 +0100"
      },
      "message": "PM / Domains: Make it possible to assign names to generic PM domains\n\nAdd a name member pointer to struct generic_pm_domain and use it in\ndiagnostic messages regarding the domain power-off and power-on\nlatencies.  Update the ARM shmobile SH7372 code to assign names to\nthe PM domains used by it.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@opensource.se\u003e\n"
    },
    {
      "commit": "0c6aebe31861c470c8cfbfdfdfd72d1369a6440b",
      "tree": "1d23085d79374baae2aa51730a1d49632f332c50",
      "parents": [
        "5a50a7c32d630d6cdb13d69afabb0cc81b2f379c"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Dec 03 00:23:43 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 06 22:09:45 2011 +0100"
      },
      "message": "PM / Sleep: Unify diagnostic messages from device suspend/resume\n\nMake pm_op() and pm_noirq_op() use the same helper function for\nrunning callbacks, which will cause them to use the same format of\ndiagnostic messages.  This also reduces the complexity and size of\nthe code quite a bit.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "0140d8bd47f798d55c3720f7fcade9e50929a5e5",
      "tree": "8be169e9eab129f60fc0af2977e0335cfe764dee",
      "parents": [
        "221e9b58380abdd6c05e11b4538597e2586ee141"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 00:02:17 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 21:48:07 2011 +0100"
      },
      "message": "PM / Domains: Automatically update overoptimistic latency information\n\nMeasure the time of execution of the .stop(), .start(), .save_state()\nand .restore_state() PM domain device callbacks and if the result\nis greater than the corresponding latency value stored in the\ndevice\u0027s struct generic_pm_domain_data object, replace the inaccurate\nvalue with the measured time.\n\nDo analogously for the PM domains\u0027 .power_off() and .power_off()\ncallbacks.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "221e9b58380abdd6c05e11b4538597e2586ee141",
      "tree": "acc8e06b6f05050f5deec0c90e6fe63a8a09bdf1",
      "parents": [
        "b02c999ac325e977585abeb4caf6e0a2ee21e30b"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 00:02:10 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 21:47:58 2011 +0100"
      },
      "message": "PM / Domains: Add default power off governor function (v4)\n\nAdd a function deciding whether or not a given PM domain should\nbe powered off on the basis of the PM QoS constraints of devices\nbelonging to it and their PM QoS timing data.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "b02c999ac325e977585abeb4caf6e0a2ee21e30b",
      "tree": "1ddec5f020a80b9df443b03ffb578ef7f882abb6",
      "parents": [
        "d23b9b00cdde5c93b914a172cecd57d5625fcd04"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 00:02:05 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 21:47:40 2011 +0100"
      },
      "message": "PM / Domains: Add device stop governor function (v4)\n\nAdd a function deciding whether or not devices should be stopped in\npm_genpd_runtime_suspend() depending on their PM QoS constraints\nand stop/start timing values.  Make it possible to add information\nused by this function to device objects.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@opensource.se\u003e\n"
    },
    {
      "commit": "d23b9b00cdde5c93b914a172cecd57d5625fcd04",
      "tree": "62be5b5b35697e95ef6f71bfeb28ba658e299266",
      "parents": [
        "ecf00475f229fcf06362412ad2d15a3267e354a1"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Nov 27 13:11:51 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 21:47:29 2011 +0100"
      },
      "message": "PM / Domains: Rework system suspend callback routines (v2)\n\nThe current generic PM domains code attempts to use the generic\nsystem suspend operations along with the domains\u0027 device stop/start\nroutines, which requires device drivers to assume that their\nsystem suspend/resume (and hibernation/restore) callbacks will always\nbe used with generic PM domains.  However, in theory, the same\nhardware may be used in devices that don\u0027t belong to any PM domain,\nin which case it would be necessary to add \"fake\" PM domains to\nsatisfy the above assumption.  Also, the domain the hardware belongs\nto may not be handled with the help of the generic code.\n\nTo allow device drivers that may be used along with the generic PM\ndomains code of more flexibility, add new device callbacks,\n.suspend(), .suspend_late(), .resume_early(), .resume(), .freeze(),\n.freeze_late(), .thaw_early(), and .thaw(), that can be supplied by\nthe drivers in addition to their \"standard\" system suspend and\nhibernation callbacks.  These new callbacks, if defined, will be used\nby the generic PM domains code for the handling of system suspend and\nhibernation instead of the \"standard\" ones.  This will allow drivers\nto be designed to work with generic PM domains as well as without\nthem.\n\nFor backwards compatibility, introduce default implementations of the\nnew callbacks for PM domains that will execute pm_generic_suspend(),\npm_generic_suspend_noirq(), pm_generic_resume_noirq(),\npm_generic_resume(), pm_generic_freeze(), pm_generic_freeze_noirq(),\npm_generic_thaw_noirq(), and pm_generic_thaw(), respectively, for the\ngiven device if its driver doesn\u0027t define those callbacks.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "ecf00475f229fcf06362412ad2d15a3267e354a1",
      "tree": "282792856ca84debf81e6c29141a6bebe7fdb966",
      "parents": [
        "d5e4cbfe2049fca375cb19c4bc0cf676e8b4a88a"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Nov 27 13:11:44 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 21:47:18 2011 +0100"
      },
      "message": "PM / Domains: Introduce \"save/restore state\" device callbacks\n\nThe current PM domains code uses device drivers\u0027 .runtime_suspend()\nand .runtime_resume() callbacks as the \"save device state\" and\n\"restore device state\" operations, which may not be appropriate in\ngeneral, because it forces drivers to assume that they always will\nbe used with generic PM domains.  However, in theory, the same\nhardware may be used in devices that don\u0027t belong to any PM\ndomain, in which case it would be necessary to add \"fake\" PM\ndomains to satisfy the above assumption.  It also may be located in\na PM domain that\u0027s not handled with the help of the generic code.\n\nTo allow device drivers that may be used along with the generic PM\ndomains code of more flexibility, introduce new device callbacks,\n.save_state() and .restore_state(), that can be supplied by the\ndrivers in addition to their \"standard\" runtime PM callbacks.  This\nwill allow the drivers to be designed to work with generic PM domains\nas well as without them.\n\nFor backwards compatibility, introduce default .save_state() and\n.restore_state() callback routines for PM domains that will execute\na device driver\u0027s .runtime_suspend() and .runtime_resume() callbacks,\nrespectively, for the given device if the driver doesn\u0027t provide its\nown implementations of .save_state() and .restore_state().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "d5e4cbfe2049fca375cb19c4bc0cf676e8b4a88a",
      "tree": "51dfa4b178a53e884d310faad496aed07eee565b",
      "parents": [
        "b930c26416c4ea6855726fd977145ccea9afbdda"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Nov 27 13:11:36 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 21:47:08 2011 +0100"
      },
      "message": "PM / Domains: Make it possible to use per-device domain callbacks\n\nThe current generic PM domains code requires that the same .stop(),\n.start() and .active_wakeup() device callback routines be used for\nall devices in the given domain, which is inflexible and may not\ncover some specific use cases.  For this reason, make it possible to\nuse device specific .start()/.stop() and .active_wakeup() callback\nroutines by adding corresponding callback pointers to struct\ngeneric_pm_domain_data.  Add a new helper routine,\npm_genpd_register_callbacks(), that can be used to populate\nthe new per-device callback pointers.\n\nModify the shmobile\u0027s power domains code to allow drivers to add\ntheir own code to be run during the device stop and start operations\nwith the help of the new callback pointers.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@opensource.se\u003e\n"
    },
    {
      "commit": "00dc9ad18d707f36b2fb4af98fd2cf0548d2b258",
      "tree": "f41672d9dae9bf15f2ee17abf3b5b6c31c966088",
      "parents": [
        "b930c26416c4ea6855726fd977145ccea9afbdda"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 00:01:31 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 01 21:46:42 2011 +0100"
      },
      "message": "PM / Runtime: Use device PM QoS constraints (v2)\n\nMake the runtime PM core use device PM QoS constraints to check if\nit is allowed to suspend a given device, so that an error code is\nreturned if the device\u0027s own PM QoS constraint is negative or one of\nits children has already been suspended for too long.  If this is\nnot the case, the maximum estimated time the device is allowed to be\nsuspended, computed as the minimum of the device\u0027s PM QoS constraint\nand the PM QoS constraints of its children (reduced by the difference\nbetween the current time and their suspend times) is stored in a new\ndevice\u0027s PM field power.max_time_suspended_ns that can be used by\nthe device\u0027s subsystem or PM domain to decide whether or not to put\nthe device into lower-power (and presumably higher-latency) states\nlater (if the constraint is 0, which means \"no constraint\", the\npower.max_time_suspended_ns is set to -1).\n\nAdditionally, the time of execution of the subsystem-level\n.runtime_suspend() callback for the device is recorded in the new\npower.suspend_time field for later use by the device\u0027s subsystem or\nPM domain along with power.max_time_suspended_ns (it also is used\nby the core code when the device\u0027s parent is suspended).\n\nIntroduce a new helper function,\npm_runtime_update_max_time_suspended(), allowing subsystems and PM\ndomains (or device drivers) to update the power.max_time_suspended_ns\nfield, for example after changing the power state of a suspended\ndevice.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "64e94aafb6a5c4f419e9b8f93950914b5ac162a9",
      "tree": "afecaed56199e369ec627e75813ccb7012dccbfd",
      "parents": [
        "d74e278aaf3b0fe4b02af67055aa71babcc0cebe"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Nov 21 23:33:55 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Nov 23 21:13:34 2011 +0100"
      },
      "message": "PM / Sleep: Simplify device_suspend_noirq()\n\nRemove a few if () and return statements in device_suspend_noirq()\nthat aren\u0027t really necessary.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d74e278aaf3b0fe4b02af67055aa71babcc0cebe",
      "tree": "2dc1f9986c130da90578c7acb265aed4e4bbc850",
      "parents": [
        "6a76b7a9cc93dec6ae58d70f1257d234291908e0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Nov 21 23:33:28 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Nov 23 21:13:24 2011 +0100"
      },
      "message": "PM / Sleep: Remove unnecessary label and jumps to it form PM core code\n\nThe \"End\" label in device_prepare() in drivers/base/power/main.c is\nnot necessary and the jumps to it have no real effect, so remove them\nall.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "8b258cc8ac229aa7d5dcb7cc34cb35d9124498ac",
      "tree": "9615636b05b04035af0c8eb11ee9711aa2b868a6",
      "parents": [
        "af8db1508f2c9f3b6e633e2d2d906c6557c617f9"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Nov 17 21:39:33 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Nov 17 21:39:33 2011 +0100"
      },
      "message": "PM Sleep: Do not extend wakeup paths to devices with ignore_children set\n\nCommit 4ca46ff3e0d8c234cb40ebb6457653b59584426c (PM / Sleep: Mark\ndevices involved in wakeup signaling during suspend) introduced\nthe power.wakeup_path field in struct dev_pm_info to mark devices\nwhose children are enabled to wake up the system from sleep states,\nso that power domains containing the parents that provide their\nchildren with wakeup power and/or relay their wakeup signals are not\nturned off.  Unfortunately, that introduced a PM regression on SH7372\nwhose power consumption in the system \"memory sleep\" state increased\nas a result of it, because it prevented the power domain containing\nthe I2C controller from being turned off when some children of that\ncontroller were enabled to wake up the system, although the\ncontroller was not necessary for them to signal wakeup.\n\nTo fix this issue use the observation that devices whose\npower.ignore_children flag is set for runtime PM should be treated\nanalogously during system suspend.  Namely, they shouldn\u0027t be\nincluded in wakeup paths going through their children.  Since the\nSH7372 I2C controller\u0027s power.ignore_children flag is set, doing so\nwill restore the previous behavior of that SOC.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "af4c720efc0507e01b89774fed936087baac4107",
      "tree": "673f6421d814937b7cb274bbf6b2fa20c48d2b1d",
      "parents": [
        "24050956e029a9ecff096e1992869ada4492963c"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "g.liakhovetski@gmx.de",
        "time": "Thu Nov 10 00:44:18 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Nov 10 00:44:18 2011 +0100"
      },
      "message": "PM / QoS: Properly use the WARN() macro in dev_pm_qos_add_request()\n\nMake dev_pm_qos_add_request() use WARN() in a better way and do not hardcode\nthe function\u0027s name into the message (use __func__ instead).\n\nSigned-off-by: Guennadi Liakhovetski \u003cg.liakhovetski@gmx.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "24050956e029a9ecff096e1992869ada4492963c",
      "tree": "096341c4741fcc967645578af0acb277f9754501",
      "parents": [
        "056879d2f244001b2888cdc8cf868c33ca8b23a0"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@opensource.se",
        "time": "Thu Nov 10 00:44:10 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Nov 10 00:44:10 2011 +0100"
      },
      "message": "PM / Clocks: Only disable enabled clocks in pm_clk_suspend()\n\nRefrain from running clk_disable() on clocks that\nhave not been enabled. A typical case when this can\nhappen is during Suspend-to-RAM for devices that have\nno driver associated with them. In such case the clock\nmay be in default ACQUIRED state.\n\nWithout this patch the sh7372 Mackerel board crashes\nin __clk_disable() during Suspend-to-RAM with:\n\"Trying to disable clock 0xdeadbeef with 0 usecount\"\nThis happens for the CEU device which is added during\nboot. The test case has no CEU driver included in the\nkernel configuration. Needed for v3.2-rc1.\n\nSigned-off-by: Magnus Damm \u003cdamm@opensource.se\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "156acb166ea9a43d7fcdf9b8051694ce4e91dbfc",
      "tree": "944ba8516cb681decf943c34b7ba4f872991eaaa",
      "parents": [
        "1a51cfdc4516a6e1f2c1f8a579630a027c30331a"
      ],
      "author": {
        "name": "Thomas Meyer",
        "email": "thomas@m3y3r.de",
        "time": "Tue Nov 08 22:34:00 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Nov 08 22:34:00 2011 +0100"
      },
      "message": "PM / OPP: Use ERR_CAST instead of ERR_PTR(PTR_ERR())\n\nUse ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(...))\n\n[The semantic patch that makes this change is available\n in scripts/coccinelle/api/err_cast.cocci.\n\n More information about semantic patching is available at\n http://coccinelle.lip6.fr/]\n\nSigned-off-by: Thomas Meyer \u003cthomas@m3y3r.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "886486b792e4f6f96d4fbe8ec5bf20811cab7d6a",
      "tree": "1c638e14492c16f8f69ca71fa93b2d81d8e4eeb6",
      "parents": [
        "6513fd6972f725291ee8ce62c7a39fb8a6c7391e"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Thu Nov 03 23:39:18 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Nov 04 22:28:14 2011 +0100"
      },
      "message": "PM / Runtime: Automatically retry failed autosuspends\n\nOriginally, the runtime PM core would send an idle notification\nwhenever a suspend attempt failed.  The idle callback routine could\nthen schedule a delayed suspend for some time later.\n\nHowever this behavior was changed by commit\nf71648d73c1650b8b4aceb3856bebbde6daa3b86 (PM / Runtime: Remove idle\nnotification after failing suspend).  No notifications were sent, and\nthere was no clear mechanism to retry failed suspends.\n\nThis caused problems for the usbhid driver, because it fails\nautosuspend attempts as long as a key is being held down.  Therefore\nthis patch (as1492) adds a mechanism for retrying failed\nautosuspends.  If the callback routine updates the last_busy field so\nthat the next autosuspend expiration time is in the future, the\nautosuspend will automatically be rescheduled.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nTested-by: Henrik Rydberg \u003crydberg@euromail.se\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "def0c0a37d02820497fcd5a74b6cc93dbce5dc06",
      "tree": "4bfa6ef68b49887f3948abffbbd49d3175b16727",
      "parents": [
        "e9db50b839c592fcd22952d7f1dccbd0a56da57d"
      ],
      "author": {
        "name": "venu byravarasu",
        "email": "vbyravarasu@nvidia.com",
        "time": "Thu Nov 03 10:12:14 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Nov 04 22:28:10 2011 +0100"
      },
      "message": "PM / Runtime: Fix runtime accounting calculation error\n\nWith delta type being int, its value is made zero\nfor all values of now \u003e 0x80000000.\nHence fixing it.\n\nSigned-off-by: venu byravarasu \u003cvbyravarasu@nvidia.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "aaf195444be47aa3d3776825b3b384a61f40dca4",
      "tree": "3752d08fe46febc140874a2cf8f8004df93529f1",
      "parents": [
        "ba33162a2c3c847c02e42b9193b250217fdbbd9d"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Sep 28 18:23:03 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:39 2011 -0400"
      },
      "message": "drivers/base: change module.h -\u003e export.h in power/common.c\n\nThis file isn\u0027t using full modular functionality, and hence\ncan be \"downgraded\" to just using export.h\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "1b6bc32f0a7380102499deb6aa99a59e789efb33",
      "tree": "283ef829016d671e7be5a6f72c00fa59fbc9f842",
      "parents": [
        "bff7832dd6670dd0e215ce32d60b18f3825a6555"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Fri May 27 07:12:15 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:38 2011 -0400"
      },
      "message": "drivers/base: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required.\n\nMost of these files were implicitly getting EXPORT_SYMBOL via\ndevice.h which was including module.h, but that path will be broken\nsoon.\n\n[ with input from Stephen Rothwell \u003csfr@canb.auug.org.au\u003e ]\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "0ab1e79b825a5cd8aeb3b34d89c9a89dea900056",
      "tree": "b30ea644d376fa9e80d25933b2257d7adee1eeb2",
      "parents": [
        "7fef9fc83fbd7293ea9fe665d14046422ebf4219"
      ],
      "author": {
        "name": "Jonghwan Choi",
        "email": "jhbird.choi@samsung.com",
        "time": "Sat Oct 22 00:22:54 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Oct 22 00:22:54 2011 +0200"
      },
      "message": "PM / Clocks: Remove redundant NULL checks before kfree()\n\nSince kfree() checks it its argument is not NULL, it is not necessary\nto duplicate this check in __pm_clk_remove().\n\n[rjw: Added the changelog.]\n\nSigned-off-by: Jonghwan Choi \u003cjhbird.choi@samsung.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "d033e078566faed8c8f59baf97ee57ce2524ef5c",
      "tree": "46a98bf6a555ecbc8178baf6dd3a81553c3c3654",
      "parents": [
        "081a9d043c983f161b78fdc4671324d1342b86bc",
        "382414b93ac1e8ee7693be710e60c83eacc97c6f"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Oct 22 00:21:52 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Oct 22 00:21:52 2011 +0200"
      },
      "message": "Merge branch \u0027pm-domains\u0027 into pm-for-linus\n\n* pm-domains:\n  ARM: mach-shmobile: sh7372 A4R support (v4)\n  ARM: mach-shmobile: sh7372 A3SP support (v4)\n  PM / Sleep: Mark devices involved in wakeup signaling during suspend\n"
    },
    {
      "commit": "4ca46ff3e0d8c234cb40ebb6457653b59584426c",
      "tree": "b929bbc30d5e08b1ba4be980c473f9d594a42b58",
      "parents": [
        "cd0ea672f58d5cfdea271c45cec0c897f2b792aa"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:34:36 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Oct 22 00:19:29 2011 +0200"
      },
      "message": "PM / Sleep: Mark devices involved in wakeup signaling during suspend\n\nThe generic PM domains code in drivers/base/power/domain.c has\nto avoid powering off domains that provide power to wakeup devices\nduring system suspend.  Currently, however, this only works for\nwakeup devices directly belonging to the given domain and not for\ntheir children (or the children of their children and so on).\nThus, if there\u0027s a wakeup device whose parent belongs to a power\ndomain handled by the generic PM domains code, the domain will be\npowered off during system suspend preventing the device from\nsignaling wakeup.\n\nTo address this problem introduce a device flag, power.wakeup_path,\nthat will be set during system suspend for all wakeup devices,\ntheir parents, the parents of their parents and so on.  This way,\nall wakeup paths in the device hierarchy will be marked and the\ngeneric PM domains code will only need to avoid powering off\ndomains containing devices whose power.wakeup_path is set.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "8f88893c05f2f677f18f2ce5591b4bed5d4a7535",
      "tree": "4368e42a2c35ee018f7cd91b8fa6643f6ff2b852",
      "parents": [
        "37cce26b32142f09a8967f6d238178af654b20de"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Mon Sep 26 17:38:50 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:28:51 2011 +0200"
      },
      "message": "PM: Update the policy on default wakeup settings\n\nThis patch (as1485) documents a change to the kernel\u0027s default wakeup\npolicy.  Devices that forward wakeup requests between buses should be\nenabled for wakeup by default.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "2a77c46de1e3dace73745015635ebbc648eca69c",
      "tree": "a801ed6ba5623c7d963377906776ade6f02eea0a",
      "parents": [
        "9bd717c0dc8224cadfd66df7eeff98c987711d98"
      ],
      "author": {
        "name": "ShuoX Liu",
        "email": "shuox.liu@intel.com",
        "time": "Wed Aug 10 23:01:26 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:27:45 2011 +0200"
      },
      "message": "PM / Suspend: Add statistics debugfs file for suspend to RAM\n\nRecord S3 failure time about each reason and the latest two failed\ndevices\u0027 names in S3 progress.\nWe can check it through \u0027suspend_stats\u0027 entry in debugfs.\n\nThe motivation of the patch:\n\nWe are enabling power features on Medfield. Comparing with PC/notebook,\na mobile enters/exits suspend-2-ram (we call it s3 on Medfield) far\nmore frequently. If it can\u0027t enter suspend-2-ram in time, the power\nmight be used up soon.\n\nWe often find sometimes, a device suspend fails. Then, system retries\ns3 over and over again. As display is off, testers and developers\ndon\u0027t know what happens.\n\nSome testers and developers complain they don\u0027t know if system\ntries suspend-2-ram, and what device fails to suspend. They need\nsuch info for a quick check. The patch adds suspend_stats under\ndebugfs for users to check suspend to RAM statistics quickly.\n\nIf not using this patch, we have other methods to get info about\nwhat device fails. One is to turn on  CONFIG_PM_DEBUG, but users\nwould get too much info and testers need recompile the system.\n\nIn addition, dynamic debug is another good tool to dump debug info.\nBut it still doesn\u0027t match our utilization scenario closely.\n1) user need write a user space parser to process the syslog output;\n2) Our testing scenario is we leave the mobile for at least hours.\n   Then, check its status. No serial console available during the\n   testing. One is because console would be suspended, and the other\n   is serial console connecting with spi or HSU devices would consume\n   power. These devices are powered off at suspend-2-ram.\n\nSigned-off-by: ShuoX Liu \u003cshuox.liu@intel.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "9bd717c0dc8224cadfd66df7eeff98c987711d98",
      "tree": "bca8a9232d457d984d87da53b5ffadcb7dcd46be",
      "parents": [
        "7811ac276bb9f77aa6475110ef340c1bc3090def",
        "857b36c7b038ac56a882ee914df93e5985443074"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:26:49 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:26:49 2011 +0200"
      },
      "message": "Merge branch \u0027pm-runtime\u0027 into pm-for-linus\n\n* pm-runtime:\n  PM / Runtime: Handle .runtime_suspend() failure correctly\n  PM / Runtime: Fix kerneldoc comment for rpm_suspend()\n  PM / Runtime: Update document about callbacks\n"
    },
    {
      "commit": "857b36c7b038ac56a882ee914df93e5985443074",
      "tree": "04af09cacf24cde80659c810c66bc89c6fcf84c9",
      "parents": [
        "47d8f0bac0fda4c15a030f92cd6da6c6bed87459"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "ming.lei@canonical.com",
        "time": "Wed Oct 12 22:59:33 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:25:23 2011 +0200"
      },
      "message": "PM / Runtime: Handle .runtime_suspend() failure correctly\n\nIf .runtime_suspend() returns -EAGAIN or -EBUSY, the device should\nstill be in ACTIVE state, so it is not necessary to send an idle\nnotification to its parent.  If .runtime_suspend() returns other\nfatal failure, it doesn\u0027t make sense to send idle notification to\nits parent.\n\nSkip parent idle notification when failure is returned from\n.runtime_suspend() and update comments in rpm_suspend() to reflect\nthat change.\n\n[rjw: Modified the subject and changelog slightly.]\n\nSigned-off-by: Ming Lei \u003cming.lei@canonical.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "47d8f0bac0fda4c15a030f92cd6da6c6bed87459",
      "tree": "57b4078eac2bd58b412ca09bc47f2827050cf47e",
      "parents": [
        "2fb242adcaab5defa2f208775ac4f181ac998fdd"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "ming.lei@canonical.com",
        "time": "Wed Oct 12 11:53:32 2011 +0800"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:25:08 2011 +0200"
      },
      "message": "PM / Runtime: Fix kerneldoc comment for rpm_suspend()\n\nThis patch fix kerneldoc comments for rpm_suspend():\n\n - \u0027Cancel a pending idle notification\u0027 should be put before, also\n   should be changed to \u0027Cancel a pending idle notification,\n   autosuspend or suspend\u0027.\n\n - idle notification for the device after succeeding suspend has\n   been removed, so update the comment accordingly.\n\n[rjw: Modified the subject and changelog slightly.]\n\nSigned-off-by: Ming Lei \u003cming.lei@canonical.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "7811ac276bb9f77aa6475110ef340c1bc3090def",
      "tree": "5c8b9d6033b7a52f0cd67394c20e437001f577a7",
      "parents": [
        "9696cc90071e3660ec02a3728acdedb68afdce4c",
        "ce26c5bb9569d8b826f01b8620fc16d8da6821e9"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:17:18 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:17:18 2011 +0200"
      },
      "message": "Merge branch \u0027pm-devfreq\u0027 into pm-for-linus\n\n* pm-devfreq:\n  PM / devfreq: Add basic governors\n  PM / devfreq: Add common sysfs interfaces\n  PM: Introduce devfreq: generic DVFS framework with device-specific OPPs\n  PM / OPP: Add OPP availability change notifier.\n"
    },
    {
      "commit": "9696cc90071e3660ec02a3728acdedb68afdce4c",
      "tree": "99783d31dd42262c29346c92760f7896c3d81cb6",
      "parents": [
        "c28b56b1d46b1bbb1be33c8f2632a88b0de1ef68",
        "e3cba3243eb853a052613c804dea033bc4c9cf2d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:17:07 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:17:07 2011 +0200"
      },
      "message": "Merge branch \u0027pm-qos\u0027 into pm-for-linus\n\n* pm-qos:\n  PM / QoS: Update Documentation for the pm_qos and dev_pm_qos frameworks\n  PM / QoS: Add function dev_pm_qos_read_value() (v3)\n  PM QoS: Add global notification mechanism for device constraints\n  PM QoS: Implement per-device PM QoS constraints\n  PM QoS: Generalize and export constraints management code\n  PM QoS: Reorganize data structs\n  PM QoS: Code reorganization\n  PM QoS: Minor clean-ups\n  PM QoS: Move and rename the implementation files\n"
    },
    {
      "commit": "c28b56b1d46b1bbb1be33c8f2632a88b0de1ef68",
      "tree": "a7caddb9f58c968f6e77f36d2d398ec06983509e",
      "parents": [
        "d727b60659a1173eb4142a5fc521ce67c28b34e1",
        "cd0ea672f58d5cfdea271c45cec0c897f2b792aa"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:17:02 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:17:02 2011 +0200"
      },
      "message": "Merge branch \u0027pm-domains\u0027 into pm-for-linus\n\n* pm-domains:\n  PM / Domains: Split device PM domain data into base and need_restore\n  ARM: mach-shmobile: sh7372 sleep warning fixes\n  ARM: mach-shmobile: sh7372 A3SM support\n  ARM: mach-shmobile: sh7372 generic suspend/resume support\n  PM / Domains: Preliminary support for devices with power.irq_safe set\n  PM: Move clock-related definitions and headers to separate file\n  PM / Domains: Use power.sybsys_data to reduce overhead\n  PM: Reference counting of power.subsys_data\n  PM: Introduce struct pm_subsys_data\n  ARM / shmobile: Make A3RV be a subdomain of A4LC on SH7372\n  PM / Domains: Rename argument of pm_genpd_add_subdomain()\n  PM / Domains: Rename GPD_STATE_WAIT_PARENT to GPD_STATE_WAIT_MASTER\n  PM / Domains: Allow generic PM domains to have multiple masters\n  PM / Domains: Add \"wait for parent\" status for generic PM domains\n  PM / Domains: Make pm_genpd_poweron() always survive parent removal\n  PM / Domains: Do not take parent locks to modify subdomain counters\n  PM / Domains: Implement subdomain counters as atomic fields\n"
    },
    {
      "commit": "d727b60659a1173eb4142a5fc521ce67c28b34e1",
      "tree": "793d0fc86ecf98331024db5c86bc271cc72aa2d2",
      "parents": [
        "3ee72ca99288f1de95ec9c570e43f531c8799f06",
        "2a5306cc5f383b0e7414c75e458111afd4a563a4"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:16:55 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Oct 07 23:16:55 2011 +0200"
      },
      "message": "Merge branch \u0027pm-runtime\u0027 into pm-for-linus\n\n* pm-runtime:\n  PM / Tracing: build rpm-traces.c only if CONFIG_PM_RUNTIME is set\n  PM / Runtime: Replace dev_dbg() with trace_rpm_*()\n  PM / Runtime: Introduce trace points for tracing rpm_* functions\n  PM / Runtime: Don\u0027t run callbacks under lock for power.irq_safe set\n  USB: Add wakeup info to debugging messages\n  PM / Runtime: pm_runtime_idle() can be called in atomic context\n  PM / Runtime: Add macro to test for runtime PM events\n  PM / Runtime: Add might_sleep() to runtime PM functions\n"
    },
    {
      "commit": "1a9a91525d806f2b3bd8b57b963755a96fd36ce2",
      "tree": "511db2ab0871872bce759d35b7ffd22b9d7fc3f5",
      "parents": [
        "b66213cdb002b08b29603d488c451dfe25e2ca20"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Sep 29 22:29:44 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Oct 04 21:54:26 2011 +0200"
      },
      "message": "PM / QoS: Add function dev_pm_qos_read_value() (v3)\n\nTo read the current PM QoS value for a given device we need to\nmake sure that the device\u0027s power.constraints object won\u0027t be\nremoved while we\u0027re doing that.  For this reason, put the\noperation under dev-\u003epower.lock and acquire the lock\naround the initialization and removal of power.constraints.\n\nMoreover, since we\u0027re using the value of power.constraints to\ndetermine whether or not the object is present, the\npower.constraints_state field isn\u0027t necessary any more and may be\nremoved.  However, dev_pm_qos_add_request() needs to check if the\ndevice is being removed from the system before allocating a new\nPM QoS constraints object for it, so make it use the\npower.power_state field of struct device for this purpose.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "03ca370fbf7b76d6d002380dbdc2cdc2319f9c80",
      "tree": "d6978f3139f109755e0b2966995527a44c2e4681",
      "parents": [
        "a102a9ece5489e1718cd7543aa079082450ac3a2"
      ],
      "author": {
        "name": "MyungJoo Ham",
        "email": "myungjoo.ham@samsung.com",
        "time": "Fri Sep 30 22:35:12 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Sep 30 22:35:12 2011 +0200"
      },
      "message": "PM / OPP: Add OPP availability change notifier.\n\nThe patch enables to register notifier_block for an OPP-device in order\nto get notified for any changes in the availability of OPPs of the\ndevice. For example, if a new OPP is inserted or enable/disable status\nof an OPP is changed, the notifier is executed.\n\nThis enables the usage of opp_add, opp_enable, and opp_disable to\ndirectly take effect with any connected entities such as cpufreq or\ndevfreq.\n\nSigned-off-by: MyungJoo Ham \u003cmyungjoo.ham@samsung.com\u003e\nSigned-off-by: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nReviewed-by: Mike Turquette \u003cmturquette@ti.com\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "c3dc2f14622a06488f11452b6efd1e02c5a8548b",
      "tree": "d1fc5bc15c8fc593457fffd9e90e66498c14e196",
      "parents": [
        "53b615ccca567ada1931eb04ad0614ac150c14a3"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "ming.lei@canonical.com",
        "time": "Tue Sep 27 22:54:41 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Sep 27 22:54:41 2011 +0200"
      },
      "message": "PM / Runtime: Replace dev_dbg() with trace_rpm_*()\n\nThis patch replaces dev_dbg with trace_rpm_* inside\nthe three important functions:\n\n\trpm_idle\n\trpm_suspend\n\trpm_resume\n\nTrace points have the below advantages compared with dev_dbg:\n\n\t- trace points include much runtime information(such as\n\trunning cpu, current task, ...)\n\n\t- most of linux distributions may disable \"verbose debug\"\n\tdriver debug compile switch, so it is very difficult to\n\treport/debug runtime pm related problems from distribution\n\tusers without this kind of debug information.\n\n\t- for upstream kernel users, enableing the debug switch will\n\tproduce many useless \"rpm_resume\" output, and it is very noise.\n\n\t- dev_dbg inside rpm_suspend/rpm_resume may have some effects\n\ton runtime pm behaviour of console devicer\n\nSigned-off-by: Ming Lei \u003cming.lei@canonical.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "ad3c36a534bc7b945d7bffdda1c62e13bf93489a",
      "tree": "5f7520f575891716577de33176713b8cb13a22d5",
      "parents": [
        "30b1a7a32ca48fd8758f8ca44d60deebc0aa3d72"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Sep 27 21:54:52 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Sep 27 21:54:52 2011 +0200"
      },
      "message": "PM / Runtime: Don\u0027t run callbacks under lock for power.irq_safe set\n\nThe rpm_suspend() and rpm_resume() routines execute subsystem or PM\ndomain callbacks under power.lock if power.irq_safe is set for the\ngiven device.  This is inconsistent with that rpm_idle() does after\ncommit 02b2677 (PM / Runtime: Allow _put_sync() from\ninterrupts-disabled context) and is problematic for subsystems and PM\ndomains wanting to use power.lock for synchronization in their\nruntime PM callbacks.\n\nThis change requires the code checking if the device\u0027s runtime PM\nstatus is RPM_SUSPENDING or RPM_RESUMING to be modified too, to take\nthe power.irq_safe set case into account (that code wasn\u0027t reachable\nbefore with power.irq_safe set, because it\u0027s executed with the\ndevice\u0027s power.lock held).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "cd0ea672f58d5cfdea271c45cec0c897f2b792aa",
      "tree": "96596cf00fd4fd84b1eb76626f7cc2e1e05e6a18",
      "parents": [
        "0d41da2e31e81f5c8aaabe17f769de4304b2d4c8"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 26 20:22:02 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 26 20:22:02 2011 +0200"
      },
      "message": "PM / Domains: Split device PM domain data into base and need_restore\n\nThe struct pm_domain_data data type is defined in such a way that\nadding new fields specific to the generic PM domains code will\nrequire include/linux/pm.h to be modified.  As a result, data types\nused only by the generic PM domains code will be defined in two\nheaders, although they all should be defined in pm_domain.h and\npm.h will need to include more headers, which won\u0027t be very nice.\n\nFor this reason change the definition of struct pm_subsys_data\nso that its domain_data member is a pointer, which will allow\nstruct pm_domain_data to be subclassed by various PM domains\nimplementations.  Remove the need_restore member from\nstruct pm_domain_data and make the generic PM domains code\nsubclass it by adding the need_restore member to the new data type.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "0d41da2e31e81f5c8aaabe17f769de4304b2d4c8",
      "tree": "540acefba9bf01d3880d7bacb767fbf9b1fe80b4",
      "parents": [
        "a0089bd617adea27ebc352e1e0871649ab1dbaa6",
        "e8b364b88cc4001b21c28c1ecf1e1e3ffbe162e6"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 26 20:12:45 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 26 20:12:45 2011 +0200"
      },
      "message": "Merge branch \u0027pm-fixes\u0027 into pm-domains\n\nMerge commit e8b364b88cc4001b21c28c1ecf1e1e3ffbe162e6\n(PM / Clocks: Do not acquire a mutex under a spinlock) fixing\na regression in drivers/base/power/clock_ops.c.\n\nConflicts:\n\tdrivers/base/power/clock_ops.c\n"
    },
    {
      "commit": "e8b364b88cc4001b21c28c1ecf1e1e3ffbe162e6",
      "tree": "980f84081c2278ff2b6bb4a113d949a1730759a8",
      "parents": [
        "f9d81f61c84aca693bc353dfef4b8c36c2e5e1b5"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 26 19:40:23 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 26 19:40:23 2011 +0200"
      },
      "message": "PM / Clocks: Do not acquire a mutex under a spinlock\n\nCommit b7ab83e (PM: Use spinlock instead of mutex in clock\nmanagement functions) introduced a regression causing clocks_mutex\nto be acquired under a spinlock.  This happens because\npm_clk_suspend() and pm_clk_resume() call pm_clk_acquire() under\npcd-\u003elock, but pm_clk_acquire() executes clk_get() which causes\nclocks_mutex to be acquired.  Similarly, __pm_clk_remove(),\nexecuted under pcd-\u003elock, calls clk_put(), which also causes\nclocks_mutex to be acquired.\n\nTo fix those problems make pm_clk_add() call pm_clk_acquire(), so\nthat pm_clk_suspend() and pm_clk_resume() don\u0027t have to do that.\nChange pm_clk_remove() and pm_clk_destroy() to separate\nmodifications of the pcd-\u003eclock_list list from the actual removal of\nPM clock entry objects done by __pm_clk_remove().\n\nReported-and-tested-by: Guennadi Liakhovetski \u003cg.liakhovetski@gmx.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "0aa2a221696cc8ea20a4cdca01315d3b6b4ecc4d",
      "tree": "e2af809c44ff7ec93299170fc7ee6871be25108e",
      "parents": [
        "b5e8d269d814763d597ccc0108d1fa6639ad35a1"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:37:04 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:37:04 2011 +0200"
      },
      "message": "PM / Domains: Preliminary support for devices with power.irq_safe set\n\nThe generic PM domains framework currently doesn\u0027t work with devices\nwhose power.irq_safe flag is set, because runtime PM callbacks for\nsuch devices are run with interrupts disabled and the callbacks\nprovided by the generic PM domains framework use domain mutexes\nand may sleep.  However, such devices very well may belong to\npower domains on some systems, so the generic PM domains framework\nshould take them into account.\n\nFor this reason, modify the generic PM domains framework so that the\ndomain .power_off() and .power_on() callbacks are never executed for\na domain containing devices with power.irq_safe set, although the\n.stop_device() and .start_device() callbacks are still run for them.\n\nAdditionally, introduce a flag allowing the creator of a\nstruct generic_pm_domain object to indicate that its .stop_device()\nand .start_device() callbacks may be run in interrupt context\n(might_sleep_if() triggers if that flag is not set and one of those\ncallbacks is run in interrupt context).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "b66213cdb002b08b29603d488c451dfe25e2ca20",
      "tree": "eebdfa34524d5cd40f30c722098e8c51457a15e0",
      "parents": [
        "91ff4cb803df6de9114351b9f2f0f39f397ee03e"
      ],
      "author": {
        "name": "Jean Pihet",
        "email": "j-pihet@ti.com",
        "time": "Thu Aug 25 15:35:47 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:35:47 2011 +0200"
      },
      "message": "PM QoS: Add global notification mechanism for device constraints\n\nAdd a global notification chain that gets called upon changes to the\naggregated constraint value for any device.\nThe notification callbacks are passing the full constraint request data\nin order for the callees to have access to it. The current use is for the\nplatform low-level code to access the target device of the constraint.\n\nSigned-off-by: Jean Pihet \u003cj-pihet@ti.com\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "91ff4cb803df6de9114351b9f2f0f39f397ee03e",
      "tree": "eb24c7df28d0f93557ac1d9e7d72a79fc3556b97",
      "parents": [
        "abe98ec2d86279fe821c9051003a0abc43444f15"
      ],
      "author": {
        "name": "Jean Pihet",
        "email": "j-pihet@ti.com",
        "time": "Thu Aug 25 15:35:41 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:35:41 2011 +0200"
      },
      "message": "PM QoS: Implement per-device PM QoS constraints\n\nImplement the per-device PM QoS constraints by creating a device\nPM QoS API, which calls the PM QoS constraints management core code.\n\nThe per-device latency constraints data strctures are stored\nin the device dev_pm_info struct.\n\nThe device PM code calls the init and destroy of the per-device constraints\ndata struct in order to support the dynamic insertion and removal of the\ndevices in the system.\n\nTo minimize the data usage by the per-device constraints, the data struct\nis only allocated at the first call to dev_pm_qos_add_request.\nThe data is later free\u0027d when the device is removed from the system.\nA global mutex protects the constraints users from the data being\nallocated and free\u0027d.\n\nSigned-off-by: Jean Pihet \u003cj-pihet@ti.com\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "b5e8d269d814763d597ccc0108d1fa6639ad35a1",
      "tree": "9c401a279d38e977e7208debc74b7ce2708d3498",
      "parents": [
        "4605ab653c1f9d7cc2dda8033de215c9cee325f4"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:34:19 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:34:19 2011 +0200"
      },
      "message": "PM: Move clock-related definitions and headers to separate file\n\nSince the PM clock management code in drivers/base/power/clock_ops.c\nis used for both runtime PM and system suspend/hibernation, the\ndefinitions of data structures and headers related to it should not\nbe located in include/linux/pm_rumtime.h.  Move them to a separate\nheader file.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "4605ab653c1f9d7cc2dda8033de215c9cee325f4",
      "tree": "8f55aa3137973ce2a3ef0ed49c44304e148d50fe",
      "parents": [
        "ef27bed1870dbd5fd363ff5ec51eebd5a695e277"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:34:12 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:34:12 2011 +0200"
      },
      "message": "PM / Domains: Use power.sybsys_data to reduce overhead\n\nCurrently pm_genpd_runtime_resume() has to walk the list of devices\nfrom the device\u0027s PM domain to find the corresponding device list\nobject containing the need_restore field to check if the driver\u0027s\n.runtime_resume() callback should be executed for the device.\nThis is suboptimal and can be simplified by using power.sybsys_data\nto store device information used by the generic PM domains code.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "ef27bed1870dbd5fd363ff5ec51eebd5a695e277",
      "tree": "ef563bb07f259386fbe2477ec9a01e7ead011bcc",
      "parents": [
        "5c095a0e0d600d5a5a4207eaadabd18db46395ce"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:34:01 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:34:01 2011 +0200"
      },
      "message": "PM: Reference counting of power.subsys_data\n\nSince the power.subsys_data device field will be used by multiple\nfilesystems, introduce a reference counting mechanism for it to avoid\nfreeing it prematurely or changing its value at a wrong time.\n\nMake the PM clocks management code that currently is the only user of\npower.subsys_data use the new reference counting.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "5c095a0e0d600d5a5a4207eaadabd18db46395ce",
      "tree": "18163d773234898e71c22d83b265a1eccfba11d9",
      "parents": [
        "111058c3ff29a6a25216b31789046c2a330baa7d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:50 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:50 2011 +0200"
      },
      "message": "PM: Introduce struct pm_subsys_data\n\nIntroduce struct pm_subsys_data that may be subclassed by subsystems\nto store subsystem-specific information related to the device.  Move\nthe clock management fields accessed through the power.subsys_data\npointer in struct device to the new strucutre.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "bc0403ff16e5305c3a14c2b0826616ceaabbf058",
      "tree": "709b4e1c2cdbb33c075fc06d0598161952ab71d8",
      "parents": [
        "17877eb5a900f32bb5827a7b2109b6c9adff5fc3"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Aug 08 23:43:59 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:45 2011 +0200"
      },
      "message": "PM / Domains: Rename argument of pm_genpd_add_subdomain()\n\nChange the name of the second argument of pm_genpd_add_subdomain()\nso that it is (a) shorter and (b) in agreement with the name of\nthe second argument of pm_genpd_add_subdomain().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "17877eb5a900f32bb5827a7b2109b6c9adff5fc3",
      "tree": "40071b242874b486e8a5fdc36b0bdf0ba9ccbe00",
      "parents": [
        "5063ce1571b73865cbdcd92db002e85809750c97"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Aug 08 23:43:50 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:45 2011 +0200"
      },
      "message": "PM / Domains: Rename GPD_STATE_WAIT_PARENT to GPD_STATE_WAIT_MASTER\n\nSince it is now possible for a PM domain to have multiple masters\ninstead of one parent, rename the \"wait for parent\" status to reflect\nthe new situation.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "5063ce1571b73865cbdcd92db002e85809750c97",
      "tree": "0c844d3e9c61768492c1e87d4df78c44d7f4ed1e",
      "parents": [
        "3f241775c30365c33a0d2f6d40f4cf12470f48c6"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Aug 08 23:43:40 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:44 2011 +0200"
      },
      "message": "PM / Domains: Allow generic PM domains to have multiple masters\n\nCurrently, for a given generic PM domain there may be only one parent\ndomain (i.e. a PM domain it depends on).  However, there is at least\none real-life case in which there should be two parents (masters) for\none PM domain (the A3RV domain on SH7372 turns out to depend on the\nA4LC domain and it depends on the A4R domain and the same time). For\nthis reason, allow a PM domain to have multiple parents (masters) by\nintroducing objects representing links between PM domains.\n\nThe (logical) links between PM domains represent relationships in\nwhich one domain is a master (i.e. it is depended on) and another\ndomain is a slave (i.e. it depends on the master) with the rule that\nthe slave cannot be powered on if the master is not powered on and\nthe master cannot be powered off if the slave is not powered off.\nEach struct generic_pm_domain object representing a PM domain has\ntwo lists of links, a list of links in which it is a master and\na list of links in which it is a slave.  The first of these lists\nreplaces the list of subdomains and the second one is used in place\nof the parent pointer.\n\nEach link is represented by struct gpd_link object containing\npointers to the master and the slave and two struct list_head\nmembers allowing it to hook into two lists (the master\u0027s list\nof \"master\" links and the slave\u0027s list of \"slave\" links).  This\nallows the code to get to the link from each side (either from\nthe master or from the slave) and follow it in each direction.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "3f241775c30365c33a0d2f6d40f4cf12470f48c6",
      "tree": "45b3fa3b5da4d9cbb006762118dcd0f8837434ff",
      "parents": [
        "9e08cf429697090d0fac57d493dc7b6de17a5eee"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Aug 08 23:43:29 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:44 2011 +0200"
      },
      "message": "PM / Domains: Add \"wait for parent\" status for generic PM domains\n\nThe next patch will make it possible for a generic PM domain to have\nmultiple parents (i.e. multiple PM domains it depends on).  To\nprepare for that change it is necessary to change pm_genpd_poweron()\nso that it doesn\u0027t jump to the start label after running itself\nrecursively for the parent domain.  For this purpose, introduce a new\nPM domain status value GPD_STATE_WAIT_PARENT that will be set by\npm_genpd_poweron() before calling itself recursively for the parent\ndomain and modify the code in drivers/base/power/domain.c so that\nthe GPD_STATE_WAIT_PARENT status is guaranteed to be preserved during\nthe execution of pm_genpd_poweron() for the parent.\n\nThis change also causes pm_genpd_add_subdomain() and\npm_genpd_remove_subdomain() to wait for started pm_genpd_poweron() to\ncomplete and allows pm_genpd_runtime_resume() to avoid dropping the\nlock after powering on the PM domain.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "9e08cf429697090d0fac57d493dc7b6de17a5eee",
      "tree": "70b18a96a5510bdec9bd35307bbf9d3b3e57981d",
      "parents": [
        "3c07cbc488bfd1ad1abf64d09cc692339b5f8a83"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Aug 08 23:43:22 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:44 2011 +0200"
      },
      "message": "PM / Domains: Make pm_genpd_poweron() always survive parent removal\n\nIf pm_genpd_remove_subdomain() is called to remove a PM domain\u0027s\nsubdomain and pm_genpd_poweron() is called for that subdomain at\nthe same time, and the pm_genpd_poweron() called by it recursively\nfor the parent returns an error, the first pm_genpd_poweron()\u0027s\nerror code path will attempt to decrement the subdomain counter of\na PM domain that it\u0027s not a subdomain of any more.\n\nRearrange the code in pm_genpd_poweron() to prevent this from\nhappening.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "3c07cbc488bfd1ad1abf64d09cc692339b5f8a83",
      "tree": "d53a2a9a3635092f289b66dabcbac0fbcefe8d50",
      "parents": [
        "c4bb3160c8823d3a1e581d7e05fb8b343097e7c8"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Aug 08 23:43:14 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:43 2011 +0200"
      },
      "message": "PM / Domains: Do not take parent locks to modify subdomain counters\n\nAfter the subdomain counter in struct generic_pm_domain has been\nchanged into an atomic_t field, it is possible to modify\npm_genpd_poweron() and pm_genpd_poweroff() so that they don\u0027t take\nthe parents locks.  This requires pm_genpd_poweron() to increment\nthe parent\u0027s subdomain counter before calling itself recursively\nfor the parent and to decrement it if an error is to be returned.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "c4bb3160c8823d3a1e581d7e05fb8b343097e7c8",
      "tree": "550ba22e33176d4e5116a50cb8789ababe6dd09d",
      "parents": [
        "ff35336d3efd1ec4015b56f690191ed69730cbb0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Aug 08 23:43:04 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 25 15:33:43 2011 +0200"
      },
      "message": "PM / Domains: Implement subdomain counters as atomic fields\n\nCurrently, pm_genpd_poweron() and pm_genpd_poweroff() need to take\nthe parent PM domain\u0027s lock in order to modify the parent\u0027s counter\nof active subdomains in a nonracy way.  This causes the locking to be\nconsiderably complex and in fact is not necessary, because the\nsubdomain counters may be implemented as atomic fields and they\nwon\u0027t have to be modified under a lock.\n\nReplace the unsigned in sd_count field in struct generic_pm_domain\nby an atomic_t one and modify the code in drivers/base/power/domain.c\nto take this change into account.\n\nThis patch doesn\u0027t change the locking yet, that is going to be done\nin a separate subsequent patch.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "b7ab83edba2d50583bc9520431618489379718b2",
      "tree": "25b780542b1b58451345a1352d221a32a3b86e9a",
      "parents": [
        "a53e77fa57145cef6e2a63925db3d426128b2335"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Aug 24 21:40:56 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Aug 24 21:40:56 2011 +0200"
      },
      "message": "PM: Use spinlock instead of mutex in clock management functions\n\nThe lock member of struct pm_clk_data is of type struct mutex,\nwhich is a problem, because the suspend and resume routines\ndefined in drivers/base/power/clock_ops.c cannot be executed\nwith interrupts disabled for this reason.  Modify\nstruct pm_clk_data so that its lock member is a spinlock.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@opensource.se\u003e\n"
    },
    {
      "commit": "311aab73d273eb22be976055f6cab224f7279d5e",
      "tree": "14ef310eb77cac8d85c85b3ed006713e4602ec8f",
      "parents": [
        "17f2ae7f677f023997e02fd2ebabd90ea2a0390d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Aug 08 23:39:36 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Aug 14 13:35:52 2011 +0200"
      },
      "message": "PM / Runtime: Add might_sleep() to runtime PM functions\n\nSome of the entry points to pm runtime are not safe to\ncall in atomic context unless pm_runtime_irq_safe() has\nbeen called.  Inspecting the code, it is not immediately\nobvious that the functions sleep at all, as they run\ninside a spin_lock_irqsave, but under some conditions\nthey can drop the lock and turn on irqs.\n\nIf a driver incorrectly calls the pm_runtime apis, it can\ncause sleeping and irq processing when it expects to stay\nin atomic context.\n\nAdd might_sleep_if to the majority of the __pm_runtime_* entry points\nto enforce correct usage.\n\nAdd pm_runtime_put_sync_autosuspend to the list of\nfunctions that can be called in atomic context.\n\nSigned-off-by: Colin Cross \u003cccross@android.com\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "17f2ae7f677f023997e02fd2ebabd90ea2a0390d",
      "tree": "9f333057d8771adc432687417c2bfe28164f1e48",
      "parents": [
        "91d85ea6786107aa2837bef3e957165ad7c8b823"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Aug 14 13:34:31 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Aug 14 13:34:31 2011 +0200"
      },
      "message": "PM / Domains: Fix build for CONFIG_PM_RUNTIME unset\n\nFunction genpd_queue_power_off_work() is not defined for\nCONFIG_PM_RUNTIME, so pm_genpd_poweroff_unused() causes a build\nerror to happen in that case.  Fix the problem by making\npm_genpd_poweroff_unused() depend on CONFIG_PM_RUNTIME too.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "02b26774afebb2d62695ba3230319d70d8c6cc2d",
      "tree": "956c4056fcb42d2c2b2a75e20d3ad98f148865fc",
      "parents": [
        "fe202fde50a986a8510c62a76dc8733c1a8fac86"
      ],
      "author": {
        "name": "Kevin Hilman",
        "email": "khilman@ti.com",
        "time": "Fri Aug 05 21:45:20 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Aug 05 21:45:20 2011 +0200"
      },
      "message": "PM / Runtime: Allow _put_sync() from interrupts-disabled context\n\nCurrently the use of pm_runtime_put_sync() is not safe from\ninterrupts-disabled context because rpm_idle() will release the\nspinlock and enable interrupts for the idle callbacks.  This enables\ninterrupts during a time where interrupts were expected to be\ndisabled, and can have strange side effects on drivers that expected\ninterrupts to be disabled.\n\nThis is not a bug since the documentation clearly states that only\n_put_sync_suspend() is safe in IRQ-safe mode.\n\nHowever, pm_runtime_put_sync() could be made safe when in IRQ-safe\nmode by releasing the spinlock but not re-enabling interrupts, which\nis what this patch aims to do.\n\nProblem was found when using some buggy drivers that set\npm_runtime_irq_safe() and used _put_sync() in interrupts-disabled\ncontext.\n\nReported-by: Colin Cross \u003cccross@google.com\u003e\nTested-by: Nishanth Menon \u003cnm@ti.com\u003e\nSigned-off-by: Kevin Hilman \u003ckhilman@ti.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "fe202fde50a986a8510c62a76dc8733c1a8fac86",
      "tree": "055cb487668446bcf184650039ac8a12268a6b81",
      "parents": [
        "de96355c111679dd6e2c5c73e25e814c72510c58"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Aug 05 21:45:11 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Aug 05 21:45:11 2011 +0200"
      },
      "message": "PM / Domains: Fix pm_genpd_poweron()\n\nThe local variable ret is defined twice in pm_genpd_poweron(), which\ncauses this function to always return 0, even if the PM domain\u0027s\n.power_on() callback fails, in which case an error code should be\nreturned.\n\nRemove the wrong second definition of ret and additionally remove an\nunnecessary definition of wait from pm_genpd_poweron().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc92805a8e25e5e2b0ba7c413cc15d9f05962ee8",
      "tree": "841ba603726e0168d0cddaf528e9e5c472a7fed1",
      "parents": [
        "adc400f69053b16756ff3b00daa64884c8df0787"
      ],
      "author": {
        "name": "Jonghwan Choi",
        "email": "jhbird.choi@samsung.com",
        "time": "Tue Jul 26 16:08:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:41 2011 -0700"
      },
      "message": "drivers/base/power/opp.c: fix dev_opp initial value\n\nDev_opp initial value shoule be ERR_PTR(), IS_ERR() is used to check\nerror.\n\nSigned-off-by: Jonghwan Choi \u003cjhbird.choi@samsung.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ae033cc0dfce68d8e0c83aca60837cf2bf0d2e6",
      "tree": "91bb3b8ae2790c7fef06b1832a7df61ae496a77a",
      "parents": [
        "ba1389d74f34c0c6e95cc135a332cd29c29d9c20",
        "c8c9fda5069456eb9e0e403c19764b2e257802e1"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 15 23:59:25 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 15 23:59:25 2011 +0200"
      },
      "message": "Merge branch \u0027pm-runtime\u0027 into for-linus\n\n* pm-runtime:\n  OMAP: PM: disable idle on suspend for GPIO and UART\n  OMAP: PM: omap_device: add API to disable idle on suspend\n  OMAP: PM: omap_device: add system PM methods for PM domain handling\n  OMAP: PM: omap_device: conditionally use PM domain runtime helpers\n  PM / Runtime: Add new helper function: pm_runtime_status_suspended()\n  PM / Runtime: Consistent utilization of deferred_resume\n  PM / Runtime: Prevent runtime_resume from racing with probe\n  PM / Runtime: Replace \"run-time\" with \"runtime\" in documentation\n  PM / Runtime: Improve documentation of enable, disable and barrier\n  PM: Limit race conditions between runtime PM and system sleep (v2)\n  PCI / PM: Detect early wakeup in pci_pm_prepare()\n  PM / Runtime: Return special error code if runtime PM is disabled\n  PM / Runtime: Update documentation of interactions with system sleep\n"
    },
    {
      "commit": "ba1389d74f34c0c6e95cc135a332cd29c29d9c20",
      "tree": "53813843d22cfcfe6d466a5daa44c646f8157980",
      "parents": [
        "f0c077a8b7f9dce590c760a7b2f3c417dffa52d1",
        "5ca80817e231723f1399bff495854ba2171103ca"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 15 23:59:09 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 15 23:59:09 2011 +0200"
      },
      "message": "Merge branch \u0027pm-domains\u0027 into for-linus\n\n* pm-domains: (33 commits)\n  ARM / shmobile: Return -EBUSY from A4LC power off if A3RV is active\n  PM / Domains: Take .power_off() error code into account\n  ARM / shmobile: Use genpd_queue_power_off_work()\n  ARM / shmobile: Use pm_genpd_poweroff_unused()\n  PM / Domains: Introduce function to power off all unused PM domains\n  PM / Domains: Queue up power off work only if it is not pending\n  PM / Domains: Improve handling of wakeup devices during system suspend\n  PM / Domains: Do not restore all devices on power off error\n  PM / Domains: Allow callbacks to execute all runtime PM helpers\n  PM / Domains: Do not execute device callbacks under locks\n  PM / Domains: Make failing pm_genpd_prepare() clean up properly\n  PM / Domains: Set device state to \"active\" during system resume\n  ARM: mach-shmobile: sh7372 A3RV requires A4LC\n  PM / Domains: Export pm_genpd_poweron() in header\n  ARM: mach-shmobile: sh7372 late pm domain off\n  ARM: mach-shmobile: Runtime PM late init callback\n  ARM: mach-shmobile: sh7372 D4 support\n  ARM: mach-shmobile: sh7372 A4MP support\n  ARM: mach-shmobile: sh7372: make sure that fsi is peripheral of spu2\n  ARM: mach-shmobile: sh7372 A3SG support\n  ...\n"
    },
    {
      "commit": "1d8047a6f7973470bb1de4606a6e00c0bbee3cc6",
      "tree": "eeac09edbc2b43d912a7c100f9acd6882207788a",
      "parents": [
        "a5e4fd8783a2bec861ecf1138cdc042269ff59aa"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Jun 27 01:01:16 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 15 23:58:19 2011 +0200"
      },
      "message": "PM: Add \"RTC\" to PM trace time stamps to avoid confusion\n\nSome users are apparently confused by dmesg output from\nread_magic_time(), which looks like \"real\" time and date.\nAdd the \"RTC\" string to time stamps printed by read_magic_time() to\navoid that confusion.\n\nReported-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "99f381d3549432a250fe846a2a82d61a032804b0",
      "tree": "c267e27c99d0609732e54fb7e7fda9fef2a7e8c0",
      "parents": [
        "3110df800c4de2724624d46e6bed27efc5e9a707"
      ],
      "author": {
        "name": "Nishanth Menon",
        "email": "nm@ti.com",
        "time": "Fri Jun 10 20:24:57 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 15 23:58:18 2011 +0200"
      },
      "message": "PM / OPP: Introduce function to free cpufreq table\n\ncpufreq table allocated by opp_init_cpufreq_table is better\nfreed by OPP layer itself. This allows future modifications to\nthe table handling to be transparent to the users.\n\nSigned-off-by: Nishanth Menon \u003cnm@ti.com\u003e\nAcked-by: Kevin Hilman \u003ckhilman@ti.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "d28054020f97c7c9f15327a53945f0f40ffc5d7a",
      "tree": "0c1d4dcef6eca9c5fe6a435d8a86d51c373d90c8",
      "parents": [
        "0bc5b2debb832191a42baea7ff59d2ca6ce9f7d5"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 14 20:59:20 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 14 20:59:20 2011 +0200"
      },
      "message": "PM / Domains: Take .power_off() error code into account\n\nCurrently pm_genpd_poweroff() discards error codes returned by\nthe PM domain\u0027s .power_off() callback, because it\u0027s safer to always\nregard the domain as inaccessible to drivers after a failing\n.power_off().  Still, there are situations in which the low-level\ncode may want to indicate that it doesn\u0027t want to power off the\ndomain, so allow it to do that by returning -EBUSY from .power_off().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@opensource.se\u003e\n"
    },
    {
      "commit": "0bc5b2debb832191a42baea7ff59d2ca6ce9f7d5",
      "tree": "cb7f1f7a20fb9a9d2483714a8e9f0a3a84862245",
      "parents": [
        "796204142a98b6e0e71b494e808d1b6ee62cc75f"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 14 20:59:07 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 14 20:59:07 2011 +0200"
      },
      "message": "ARM / shmobile: Use genpd_queue_power_off_work()\n\nMake pd_power_down_a3rv() use genpd_queue_power_off_work() to queue\nup the powering off of the A4LC domain to avoid queuing it up when\nit is pending.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@opensource.se\u003e\n"
    },
    {
      "commit": "5125bbf3880755419eff68672623cde49c4f31e8",
      "tree": "50c4bfa1745e6d30ca16652a4d2ea848c568eb31",
      "parents": [
        "56375fd420f851944960bd53dbb08d674f4d9406"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 13 12:31:52 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 13 12:31:52 2011 +0200"
      },
      "message": "PM / Domains: Introduce function to power off all unused PM domains\n\nAdd a new function pm_genpd_poweroff_unused() queuing up the\nexecution of pm_genpd_poweroff() for every initialized generic PM\ndomain.  Calling it will cause every generic PM domain without\ndevices in use to be powered off.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Magnus Damm \u003cdamm@opensource.se\u003e\n"
    },
    {
      "commit": "56375fd420f851944960bd53dbb08d674f4d9406",
      "tree": "634fc52ba88aad057cbd2175d9a2b91d5dee4f01",
      "parents": [
        "4ecd6e651dd25ebbf0cc53c68162c0ab08641725"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:40:03 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:40:03 2011 +0200"
      },
      "message": "PM / Domains: Queue up power off work only if it is not pending\n\nIn theory it is possible that pm_genpd_poweroff() for two different\nsubdomains of the same parent domain will attempt to queue up the\nexecution of pm_genpd_poweroff() for the parent twice in a row.  This\nwould lead to unpleasant consequences, so prevent it from happening\nby checking if genpd-\u003epower_off_work is pending before attempting to\nqueue it up.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "4ecd6e651dd25ebbf0cc53c68162c0ab08641725",
      "tree": "6a9a77fde53b096432f28a691889d9f79112eec3",
      "parents": [
        "697a7f3727b53c7d4c927948bbe1f6afc4fabfde"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:57 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:57 2011 +0200"
      },
      "message": "PM / Domains: Improve handling of wakeup devices during system suspend\n\nKevin points out that if there\u0027s a device that can wake up the system\nfrom sleep states, but it doesn\u0027t generate wakeup signals by itself\n(they are generated on its behalf by other parts of the system) and\nit currently is not enabled to wake up the system (that is,\ndevice_may_wakeup() returns \"false\" for it), we may need to change\nits wakeup settings during system suspend (for example, the device\nmight have been configured to signal remote wakeup from the system\u0027s\nworking state, as needed by runtime PM).  Therefore the generic PM\ndomains code should invoke the system suspend callbacks provided by\nthe device\u0027s driver, which it doesn\u0027t do if the PM domain is powered\noff during the system suspend\u0027s \"prepare\" stage.  This is a valid\npoint.  Moreover, this code also should make sure that system wakeup\ndevices that are enabled to wake up the system from sleep states and\nhave to remain active for this purpose are not suspended while the\nsystem is in a sleep state.\n\nTo avoid the above issues, make the generic PM domains\u0027 .prepare()\nroutine, pm_genpd_prepare(), force runtime resume of devices whose\nsystem wakeup settings may need to be changed during system suspend\nor that should remain active while the system is in a sleep state to\nbe able to wake it up from that state.\n\nReported-by: Kevin Hilman \u003ckhilman@ti.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "697a7f3727b53c7d4c927948bbe1f6afc4fabfde",
      "tree": "d57da1cbcc7d0c72d1549aba1a19def94141773d",
      "parents": [
        "c6d22b37263607ba5aeeb2e11169fa65caa29bee"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:48 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:48 2011 +0200"
      },
      "message": "PM / Domains: Do not restore all devices on power off error\n\nSince every device in a PM domain has its own need_restore\nflag, which is set by __pm_genpd_save_device(), there\u0027s no need to\nwalk the domain\u0027s device list and restore all devices on an error\nfrom one of the drivers\u0027 .runtime_suspend() callbacks.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "c6d22b37263607ba5aeeb2e11169fa65caa29bee",
      "tree": "890d56f9559a93be0d09b77b54cf1b6a80fd34f4",
      "parents": [
        "17b75eca7683d4942f4d8d00563fd15f37c39589"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:36 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:36 2011 +0200"
      },
      "message": "PM / Domains: Allow callbacks to execute all runtime PM helpers\n\nA deadlock may occur if one of the PM domains\u0027 .start_device() or\n.stop_device() callbacks or a device driver\u0027s .runtime_suspend() or\n.runtime_resume() callback executed by the core generic PM domain\ncode uses a \"wrong\" runtime PM helper function.  This happens, for\nexample, if .runtime_resume() from one device\u0027s driver calls\npm_runtime_resume() for another device in the same PM domain.\nA similar situation may take place if a device\u0027s parent is in the\nsame PM domain, in which case the runtime PM framework may execute\npm_genpd_runtime_resume() automatically for the parent (if it is\nsuspended at the moment).  This, of course, is undesirable, so\nthe generic PM domains code should be modified to prevent it from\nhappening.\n\nThe runtime PM framework guarantees that pm_genpd_runtime_suspend()\nand pm_genpd_runtime_resume() won\u0027t be executed in parallel for\nthe same device, so the generic PM domains code need not worry\nabout those cases.  Still, it needs to prevent the other possible\nrace conditions between pm_genpd_runtime_suspend(),\npm_genpd_runtime_resume(), pm_genpd_poweron() and pm_genpd_poweroff()\nfrom happening and it needs to avoid deadlocks at the same time.\nTo this end, modify the generic PM domains code to relax\nsynchronization rules so that:\n\n* pm_genpd_poweron() doesn\u0027t wait for the PM domain status to\n  change from GPD_STATE_BUSY.  If it finds that the status is\n  not GPD_STATE_POWER_OFF, it returns without powering the domain on\n  (it may modify the status depending on the circumstances).\n\n* pm_genpd_poweroff() returns as soon as it finds that the PM\n  domain\u0027s status changed from GPD_STATE_BUSY after it\u0027s released\n  the PM domain\u0027s lock.\n\n* pm_genpd_runtime_suspend() doesn\u0027t wait for the PM domain status\n  to change from GPD_STATE_BUSY after executing the domain\u0027s\n  .stop_device() callback and executes pm_genpd_poweroff() only\n  if pm_genpd_runtime_resume() is not executed in parallel.\n\n* pm_genpd_runtime_resume() doesn\u0027t wait for the PM domain status\n  to change from GPD_STATE_BUSY after executing pm_genpd_poweron()\n  and sets the domain\u0027s status to GPD_STATE_BUSY and increments its\n  counter of resuming devices (introduced by this change) immediately\n  after acquiring the lock.  The counter of resuming devices is then\n  decremented after executing __pm_genpd_runtime_resume() for the\n  device and the domain\u0027s status is reset to GPD_STATE_ACTIVE (unless\n  there are more resuming devices in the domain, in which case the\n  status remains GPD_STATE_BUSY).\n\nThis way, for example, if a device driver\u0027s .runtime_resume()\ncallback executes pm_runtime_resume() for another device in the same\nPM domain, pm_genpd_poweron() called by pm_genpd_runtime_resume()\ninvoked by the runtime PM framework will not block and it will see\nthat there\u0027s nothing to do for it.  Next, the PM domain\u0027s lock will\nbe acquired without waiting for its status to change from\nGPD_STATE_BUSY and the device driver\u0027s .runtime_resume() callback\nwill be executed.  In turn, if pm_runtime_suspend() is executed by\none device driver\u0027s .runtime_resume() callback for another device in\nthe same PM domain, pm_genpd_poweroff() executed by\npm_genpd_runtime_suspend() invoked by the runtime PM framework as a\nresult will notice that one of the devices in the domain is being\nresumed, so it will return immediately.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "17b75eca7683d4942f4d8d00563fd15f37c39589",
      "tree": "539ee88f2c4008eec206ca98cec54263deeae708",
      "parents": [
        "b6c10c84665912985d0bf9b6ae8ce19fc4298d9f"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:29 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:29 2011 +0200"
      },
      "message": "PM / Domains: Do not execute device callbacks under locks\n\nCurrently, the .start_device() and .stop_device() callbacks from\nstruct generic_pm_domain() as well as the device drivers\u0027 runtime PM\ncallbacks used by the generic PM domains code are executed under\nthe generic PM domain lock.  This, unfortunately, is prone to\ndeadlocks, for example if a device and its parent are boths members\nof the same PM domain.  For this reason, it would be better if the\nPM domains code didn\u0027t execute device callbacks under the lock.\n\nRework the locking in the generic PM domains code so that the lock\nis dropped for the execution of device callbacks.  To this end,\nintroduce PM domains states reflecting the current status of a PM\ndomain and such that the PM domain lock cannot be acquired if the\nstatus is GPD_STATE_BUSY.  Make threads attempting to acquire a PM\ndomain\u0027s lock wait until the status changes to either\nGPD_STATE_ACTIVE or GPD_STATE_POWER_OFF.\n\nThis change by itself doesn\u0027t fix the deadlock problem mentioned\nabove, but the mechanism introduced by it will be used for for this\npurpose by a subsequent patch.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "b6c10c84665912985d0bf9b6ae8ce19fc4298d9f",
      "tree": "6dd76693427b432646c05633090f390dcc74e2c3",
      "parents": [
        "6f00ff78278fd5d6ac110b6903ee042af2d6af91"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:21 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:21 2011 +0200"
      },
      "message": "PM / Domains: Make failing pm_genpd_prepare() clean up properly\n\nIf pm_generic_prepare() in pm_genpd_prepare() returns error code,\nthe PM domains counter of \"prepared\" devices should be decremented\nand its suspend_power_off flag should be reset if this counter drops\ndown to zero.  Otherwise, the PM domain runtime PM code will not\nhandle the domain correctly (it will permanently think that system\nsuspend is in progress).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "6f00ff78278fd5d6ac110b6903ee042af2d6af91",
      "tree": "e466b608591a916ed3a6faace59a47065a2a6f4f",
      "parents": [
        "775b8ae8707592af9275b8b216c2bf056b3f5d82"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:10 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 12 00:39:10 2011 +0200"
      },
      "message": "PM / Domains: Set device state to \"active\" during system resume\n\nThe runtime PM status of devices in a power domain that is not\npowered off in pm_genpd_complete() should be set to \"active\", because\nthose devices are operational at this point.  Some of them may not be\nin use, though, so make pm_genpd_complete() call pm_runtime_idle()\nin addition to pm_runtime_set_active() for each of them.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "18b4f3f5d058b590e7189027eeb5d897742ade0a",
      "tree": "8cc1c52f77e218593fc8cea275f57b6ba5e4076b",
      "parents": [
        "b9416f03fd9f809225a90f63b2fbc86f90010eab"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@opensource.se",
        "time": "Sun Jul 10 10:39:14 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Jul 10 10:39:14 2011 +0200"
      },
      "message": "PM / Domains: Export pm_genpd_poweron() in header\n\nAllow SoC-specific code to call pm_genpd_poweron().\n\nSigned-off-by: Magnus Damm \u003cdamm@opensource.se\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "2cffff1281a74714c9e035322077ec52ffb1f838",
      "tree": "a0321ea7466987e6e860fc4e05633ac64b8120c9",
      "parents": [
        "69c843b45eb3b8f267019e6a05860c9c48337419"
      ],
      "author": {
        "name": "ShuoX Liu",
        "email": "shuox.liu@intel.com",
        "time": "Fri Jul 08 20:53:55 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 08 20:53:55 2011 +0200"
      },
      "message": "PM / Runtime: Consistent utilization of deferred_resume\n\ndev-\u003epower.deferred_resume is used as a bool typically, so change\none assignment to false from 0, like other places.\n\nSigned-off-by: ShuoX Liu \u003cshuox.liu@intel.com\u003e\n"
    },
    {
      "commit": "69c843b45eb3b8f267019e6a05860c9c48337419",
      "tree": "11a797e0cfa0dee3e0f790123a687f9daa2789bb",
      "parents": [
        "62052ab1d1a456f5f62f8b753e12d10ca1a83604"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Wed Jul 06 10:52:23 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 06 10:52:23 2011 +0200"
      },
      "message": "PM / Runtime: Prevent runtime_resume from racing with probe\n\nThis patch (as1475) adds device_lock() and device_unlock() calls to\nthe store methods for the power/control and power/autosuspend_delay_ms\nsysfs attribute files.  We don\u0027t want badly timed writes to these\nfiles to cause runtime_resume callbacks to occur while a driver is\nbeing probed for a device.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "62052ab1d1a456f5f62f8b753e12d10ca1a83604",
      "tree": "0a4bca617dbec22b82f9261c0b99ff40ef7fc5b9",
      "parents": [
        "e358bad75ff13210f5211cac9f93d76170d43f89"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 06 10:52:13 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 06 10:52:13 2011 +0200"
      },
      "message": "PM / Runtime: Replace \"run-time\" with \"runtime\" in documentation\n\nThe runtime PM documentation and kerneldoc comments sometimes spell\n\"runtime\" with a dash (i.e. \"run-time\").  Replace all of those\ninstances with \"runtime\" to make the naming consistent.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "1e2ef05bb8cf851a694d38e9170c89e7ff052741",
      "tree": "ff1dfccc622374f9039d342cc48d16d6636740ae",
      "parents": [
        "eea3fc0357eb89d0b2d1af37bdfb83eb4076a542"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 06 10:51:58 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 06 10:51:58 2011 +0200"
      },
      "message": "PM: Limit race conditions between runtime PM and system sleep (v2)\n\nOne of the roles of the PM core is to prevent different PM callbacks\nexecuted for the same device object from racing with each other.\nUnfortunately, after commit e8665002477f0278f84f898145b1f141ba26ee26\n(PM: Allow pm_runtime_suspend() to succeed during system suspend)\nruntime PM callbacks may be executed concurrently with system\nsuspend/resume callbacks for the same device.\n\nThe main reason for commit e8665002477f0278f84f898145b1f141ba26ee26\nwas that some subsystems and device drivers wanted to use runtime PM\nhelpers, pm_runtime_suspend() and pm_runtime_put_sync() in\nparticular, for carrying out the suspend of devices in their\n.suspend() callbacks.  However, as it\u0027s been determined recently,\nthere are multiple reasons not to do so, inlcuding:\n\n * The caller really doesn\u0027t control the runtime PM usage counters,\n   because user space can access them through sysfs and effectively\n   block runtime PM.  That means using pm_runtime_suspend() or\n   pm_runtime_get_sync() to suspend devices during system suspend\n   may or may not work.\n\n * If a driver calls pm_runtime_suspend() from its .suspend()\n   callback, it causes the subsystem\u0027s .runtime_suspend() callback to\n   be executed, which leads to the call sequence:\n\n   subsys-\u003esuspend(dev)\n      driver-\u003esuspend(dev)\n         pm_runtime_suspend(dev)\n            subsys-\u003eruntime_suspend(dev)\n\n   recursive from the subsystem\u0027s point of view.  For some subsystems\n   that may actually work (e.g. the platform bus type), but for some\n   it will fail in a rather spectacular fashion (e.g. PCI).  In each\n   case it means a layering violation.\n\n * Both the subsystem and the driver can provide .suspend_noirq()\n   callbacks for system suspend that can do whatever the\n   .runtime_suspend() callbacks do just fine, so it really isn\u0027t\n   necessary to call pm_runtime_suspend() during system suspend.\n\n * The runtime PM\u0027s handling of wakeup devices is usually different\n   from the system suspend\u0027s one, so .runtime_suspend() may simply be\n   inappropriate for system suspend.\n\n * System suspend is supposed to work even if CONFIG_PM_RUNTIME is\n   unset.\n\n * The runtime PM workqueue is frozen before system suspend, so if\n   whatever the driver is going to do during system suspend depends\n   on it, that simply won\u0027t work.\n\nStill, there is a good reason to allow pm_runtime_resume() to\nsucceed during system suspend and resume (for instance, some\nsubsystems and device drivers may legitimately use it to ensure that\ntheir devices are in full-power states before suspending them).\nMoreover, there is no reason to prevent runtime PM callbacks from\nbeing executed in parallel with the system suspend/resume .prepare()\nand .complete() callbacks and the code removed by commit\ne8665002477f0278f84f898145b1f141ba26ee26 went too far in this\nrespect.  On the other hand, runtime PM callbacks, including\n.runtime_resume(), must not be executed during system suspend\u0027s\n\"late\" stage of suspending devices and during system resume\u0027s \"early\"\ndevice resume stage.\n\nTaking all of the above into consideration, make the PM core\nacquire a runtime PM reference to every device and resume it if\nthere\u0027s a runtime PM resume request pending right before executing\nthe subsystem-level .suspend() callback for it.  Make the PM core\ndrop references to all devices right after executing the\nsubsystem-level .resume() callbacks for them.  Additionally,\nmake the PM core disable the runtime PM framework for all devices\nduring system suspend, after executing the subsystem-level .suspend()\ncallbacks for them, and enable the runtime PM framework for all\ndevices during system resume, right before executing the\nsubsystem-level .resume() callbacks for them.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "632e270e01d8a1ee9e8ea56c83028727f17b1d17",
      "tree": "58cbc127f9f173409f40bbaf27f8ea85c185c52d",
      "parents": [
        "455716e9b12ba93e93181ac88bef62e4eb5ac66c"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:29:15 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:30:10 2011 +0200"
      },
      "message": "PM / Runtime: Return special error code if runtime PM is disabled\n\nSome callers of pm_runtime_get_sync() and other runtime PM helper\nfunctions, scsi_autopm_get_host() and scsi_autopm_get_device() in\nparticular, need to distinguish error codes returned when runtime PM\nis disabled (i.e. power.disable_depth is nonzero for the given\ndevice) from error codes returned in other situations.  For this\nreason, make the runtime PM helper functions return -EACCES when\npower.disable_depth is nonzero and ensure that this error code\nwon\u0027t be returned by them in any other circumstances.  Modify\nscsi_autopm_get_host() and scsi_autopm_get_device() to check the\nerror code returned by pm_runtime_get_sync() and ignore -EACCES.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "3d5c30367cbc0c55c93bb158e824e00badc7ddc4",
      "tree": "073ab59dfbf0514e9ba5eb37431a337c5511af33",
      "parents": [
        "b7b95920aa2e89e655afe9913ee0e55855ceda90"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:13:44 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:57 2011 +0200"
      },
      "message": "PM: Rename clock management functions\n\nThe common PM clock management functions may be used for system\nsuspend/resume as well as for runtime PM, so rename them\naccordingly.  Modify kerneldoc comments describing these functions\nand kernel messages printed by them, so that they refer to power\nmanagement in general rather that to runtime PM.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "b7b95920aa2e89e655afe9913ee0e55855ceda90",
      "tree": "6f7f30252e2b4b518d76906706a745107288a701",
      "parents": [
        "d4f2d87a8b46c14c4307c690c92bd08229f66ecf"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:13:37 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:56 2011 +0200"
      },
      "message": "PM: Allow the clocks management code to be used during system suspend\n\nThe common clocks management code in drivers/base/power/clock_ops.c\nis going to be used during system-wide power transitions as well as\nfor runtime PM, so it shouldn\u0027t depend on CONFIG_PM_RUNTIME.\nHowever, the suspend/resume functions provided by it for\nCONFIG_PM_RUNTIME unset, to be used during system-wide power\ntransitions, should not behave in the same way as their counterparts\ndefined for CONFIG_PM_RUNTIME set, because in that case the clocks\nare managed differently at run time.\n\nThe names of the functions still contain the word \"runtime\" after\nthis change, but that is going to be modified by a separate patch\nlater.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "d4f2d87a8b46c14c4307c690c92bd08229f66ecf",
      "tree": "6560c88f024f9972936cfd4dabc1685e00baee8b",
      "parents": [
        "596ba34bcd2978ee9823cc1d84df230576f8ffb9"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:13:29 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:56 2011 +0200"
      },
      "message": "PM / Domains: Wakeup devices support for system sleep transitions\n\nThere is the problem how to handle devices set up to wake up the\nsystem from sleep states during system-wide power transitions.\nIn some cases, those devices can be turned off entirely, because the\nwakeup signals will be generated on their behalf anyway.  In some\nother cases, they will generate wakeup signals if their clocks are\nstopped, but only if power is not removed from them.  Finally, in\nsome cases, they can only generate wakeup signals if power is not\nremoved from them and their clocks are enabled.\n\nTo allow platform-specific code to decide whether or not to put\nwakeup devices (and their PM domains) into low-power state during\nsystem-wide transitions, such as system suspend, introduce a new\ngeneric PM domain callback, .active_wakeup(), that will be used\nduring the \"noirq\" phase of system suspend and hibernation (after\nimage creation) to decide what to do with wakeup devices.\nSpecifically, if this callback is present and returns \"true\", the\ngeneric PM domain code will not execute .stop_device() for the\ngiven wakeup device and its PM domain won\u0027t be powered off.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "596ba34bcd2978ee9823cc1d84df230576f8ffb9",
      "tree": "ef118fc94c08730c7e82a58c2e7f70cb781d17c2",
      "parents": [
        "5248051b9afb6684cd817b2fbdaefa5063761dab"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:13:19 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:56 2011 +0200"
      },
      "message": "PM / Domains: System-wide transitions support for generic domains (v5)\n\nMake generic PM domains support system-wide power transitions\n(system suspend and hibernation).  Add suspend, resume, freeze, thaw,\npoweroff and restore callbacks to be associated with struct\ngeneric_pm_domain objects and make pm_genpd_init() use them as\nappropriate.\n\nThe new callbacks do nothing for devices belonging to power domains\nthat were powered down at run time (before the transition).  For the\nother devices the action carried out depends on the type of the\ntransition.  During system suspend the power domain .suspend()\ncallback executes pm_generic_suspend() for the device, while the\nPM domain .suspend_noirq() callback runs pm_generic_suspend_noirq()\nfor it, stops it and eventually removes power from the PM domain it\nbelongs to (after all devices in the domain have been stopped and its\nsubdomains have been powered off).\n\nDuring system resume the PM domain .resume_noirq() callback\nrestores power to the PM domain (when executed for it first time),\nstarts the device and executes pm_generic_resume_noirq() for it,\nwhile the .resume() callback executes pm_generic_resume() for the\ndevice.  Finally, the .complete() callback executes pm_runtime_idle()\nfor the device which should put it back into the suspended state if\nits runtime PM usage count is equal to zero at that time.\n\nThe actions carried out during hibernation and resume from it are\nanalogous to the ones described above.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "5248051b9afb6684cd817b2fbdaefa5063761dab",
      "tree": "44782bb3ae2330f676e053d1b3a8aad4d2abb6e7",
      "parents": [
        "e5291928839877f8e73c2643ee1d3fe0bcdcaf5c"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:13:10 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:55 2011 +0200"
      },
      "message": "PM / Domains: Move code from under #ifdef CONFIG_PM_RUNTIME (v2)\n\nThere is some code in drivers/base/power/domain.c that will be useful\nfor both runtime PM and system-wide power transitions, so make it\ndepend on CONFIG_PM instead of CONFIG_PM_RUNTIME.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "e5291928839877f8e73c2643ee1d3fe0bcdcaf5c",
      "tree": "df733cad71610a2f5ce283dcca5f2ad1d83bdf1f",
      "parents": [
        "f721889ff65afa6243c463832c74dee3bed418d5"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:12:59 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:55 2011 +0200"
      },
      "message": "PM: Introduce generic \"noirq\" callback routines for subsystems (v2)\n\nIntroduce generic \"noirq\" power management callback routines for\nsubsystems in addition to the \"regular\" generic PM callback routines.\n\nThe new routines will be used, among other things, for implementing\nsystem-wide PM transitions support for generic PM domains.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "f721889ff65afa6243c463832c74dee3bed418d5",
      "tree": "350bcb4fd7964167189fce93d0a9352f2958b1a4",
      "parents": [
        "dc6e4e56e6ef473a696a1ab24f80b79b9aceb92d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jul 01 22:12:45 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:55 2011 +0200"
      },
      "message": "PM / Domains: Support for generic I/O PM domains (v8)\n\nIntroduce common headers, helper functions and callbacks allowing\nplatforms to use simple generic power domains for runtime power\nmanagement.\n\nIntroduce struct generic_pm_domain to be used for representing\npower domains that each contain a number of devices and may be\nparent domains or subdomains with respect to other power domains.\nAmong other things, this structure includes callbacks to be\nprovided by platforms for performing specific tasks related to\npower management (i.e. -\u003estop_device() may disable a device\u0027s\nclocks, while -\u003estart_device() may enable them, -\u003epower_off() is\nsupposed to remove power from the entire power domain\nand -\u003epower_on() is supposed to restore it).\n\nIntroduce functions that can be used as power domain runtime PM\ncallbacks, pm_genpd_runtime_suspend() and pm_genpd_runtime_resume(),\nas well as helper functions for the initialization of a power\ndomain represented by a struct generic_power_domain object,\nadding a device to or removing a device from it and adding or\nremoving subdomains.\n\nIntroduce configuration option CONFIG_PM_GENERIC_DOMAINS to be\nselected by the platforms that want to use the new code.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nReviewed-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    },
    {
      "commit": "564b905ab10d17fb42f86aa8b7b9b796276d1336",
      "tree": "b191c000e55ae1a354bd67876ca6945d2ad87c93",
      "parents": [
        "f5da24dbed213d103f00aa9ef26e010b50d2db24"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jun 23 01:52:55 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Jul 02 14:29:54 2011 +0200"
      },
      "message": "PM / Domains: Rename struct dev_power_domain to struct dev_pm_domain\n\nThe naming convention used by commit 7538e3db6e015e890825fbd9f86599b\n(PM: Add support for device power domains), which introduced the\nstruct dev_power_domain type for representing device power domains,\nevidently confuses some developers who tend to think that objects\nof this type must correspond to \"power domains\" as defined by\nhardware, which is not the case.  Namely, at the kernel level, a\nstruct dev_power_domain object can represent arbitrary set of devices\nthat are mutually dependent power management-wise and need not belong\nto one hardware power domain.  To avoid that confusion, rename struct\ndev_power_domain to struct dev_pm_domain and rename the related\npointers in struct device and struct pm_clk_notifier_block from\npwr_domain to pm_domain.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Kevin Hilman \u003ckhilman@ti.com\u003e\n"
    }
  ],
  "next": "4d1518f5668ef1b3dff6c3b30fa761fe5573cdaa"
}
