)]}'
{
  "log": [
    {
      "commit": "181e9bdef37bfcaa41f3ab6c948a2a0d60a268b5",
      "tree": "66e69f83b63e8517a47e0eb0e7ae730d8a9a109b",
      "parents": [
        "0a9626575400879d1d5e6bc8768188b938d7c501"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Jan 29 20:35:52 2012 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Jan 29 20:35:52 2012 +0100"
      },
      "message": "PM / Hibernate: Fix s2disk regression related to freezing workqueues\n\nCommit 2aede851ddf08666f68ffc17be446420e9d2a056\n\n  PM / Hibernate: Freeze kernel threads after preallocating memory\n\nintroduced a mechanism by which kernel threads were frozen after\nthe preallocation of hibernate image memory to avoid problems with\nfrozen kernel threads not responding to memory freeing requests.\nHowever, it overlooked the s2disk code path in which the\nSNAPSHOT_CREATE_IMAGE ioctl was run directly after SNAPSHOT_FREE,\nwhich caused freeze_workqueues_begin() to BUG(), because it saw\nthat worqueues had been already frozen.\n\nAlthough in principle this issue might be addressed by removing\nthe relevant BUG_ON() from freeze_workqueues_begin(), that would\nreintroduce the very problem that commit 2aede851ddf08666f68ffc17be4\nattempted to avoid into that particular code path.  For this reason,\nto fix the issue at hand, introduce thaw_kernel_threads() and make\nthe SNAPSHOT_FREE ioctl execute it.\n\nSpecial thanks to Srivatsa S. Bhat for detailed analysis of the\nproblem.\n\nReported-and-tested-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b3b73ec0d7fe5bf8f950232aa58dfa0416a62372",
      "tree": "beaf2eea7573acb110fe1159c032885b40e56ee7",
      "parents": [
        "467de1fc67d1bd2954eaac7019c564f28fa2b6a5"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Dec 26 00:29:55 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 27 01:06:33 2011 +0100"
      },
      "message": "PM / Freezer: fix return value of freezable_schedule_timeout_killable()\n\n...it should return the return code from schedule_timeout_killable(),\nnot the one from freezer_count().\n\nAll of the current callers ignore the return code so the bug is\nharmless but it\u0027s worth fixing.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "467de1fc67d1bd2954eaac7019c564f28fa2b6a5",
      "tree": "246d0ff1072bf5f51497e764564911e9ea9f77f3",
      "parents": [
        "d310310cbff18ec385c6ab4d58f33b100192a96a"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Tue Dec 06 23:17:51 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Dec 08 23:21:01 2011 +0100"
      },
      "message": "PM / Freezer: Remove the \"userspace only\" constraint from freezer[_do_not]_count()\n\nAt present, the functions freezer_count() and freezer_do_not_count()\nimpose the restriction that they are effective only for userspace processes.\nHowever, now, these functions have found more utility than originally\nintended by the commit which introduced it: ba96a0c8 (freezer:\nfix vfork problem). And moreover, even the vfork issue actually does not\nneed the above restriction in these functions.\n\nSo, modify these functions to make them work even for kernel threads, so\nthat they can be used at other places in the kernel, where the userspace\nrestriction doesn\u0027t apply.\n\nSuggested-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSuggested-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "d310310cbff18ec385c6ab4d58f33b100192a96a",
      "tree": "801dbbef1552256e7cefc7ec08dcd41b30a9930b",
      "parents": [
        "62c9ea6b120688d800b4d892eaf737c20a73e86b"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Dec 01 22:44:39 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 06 22:12:27 2011 +0100"
      },
      "message": "Freezer / sunrpc / NFS: don\u0027t allow TASK_KILLABLE sleeps to block the freezer\n\nAllow the freezer to skip wait_on_bit_killable sleeps in the sunrpc\nlayer. This should allow suspend and hibernate events to proceed, even\nwhen there are RPC\u0027s pending on the wire.\n\nAlso, wrap the TASK_KILLABLE sleeps in NFS layer in freezer_do_not_count\nand freezer_count calls. This allows the freezer to skip tasks that are\nsleeping while looping on EJUKEBOX or NFS4ERR_DELAY sorts of errors.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "62c9ea6b120688d800b4d892eaf737c20a73e86b",
      "tree": "c1a472e96ec19c337da1c2e9b74de83f3083178b",
      "parents": [
        "986b11c3ee9e0eace25fe74a502205f7fe8c179b"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Fri Nov 25 00:44:55 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Nov 25 00:44:55 2011 +0100"
      },
      "message": "Freezer: fix more fallout from the thaw_process rename\n\nCommit 944e192db53c \"freezer: rename thaw_process() to __thaw_task()\nand simplify the implementation\" did not create a !CONFIG_FREEZER version\nof __thaw_task().\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "24b7ead3fb0bae267c2ee50898eb4c13aedd1e9f",
      "tree": "899a48d29daebb6e2eb9398797304985e5961fc8",
      "parents": [
        "34b087e48367c252e343c2f8de65676a78af1e4a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Nov 23 09:28:17 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 23 09:28:17 2011 -0800"
      },
      "message": "freezer: fix wait_event_freezable/__thaw_task races\n\nwait_event_freezable() and friends stop the waiting if try_to_freeze()\nfails. This is not right, we can race with __thaw_task() and in this\ncase\n\n\t- wait_event_freezable() returns the wrong ERESTARTSYS\n\n\t- wait_event_freezable_timeout() can return the positive\n\t  value while condition \u003d\u003d F\n\nChange the code to always check __retval/condition before return.\n\nNote: with or without this patch the timeout logic looks strange,\nprobably we should recalc timeout if try_to_freeze() returns T.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "34b087e48367c252e343c2f8de65676a78af1e4a",
      "tree": "fbe94bad0a3073c6f4231752fba99c6bc8702277",
      "parents": [
        "adfa543e7314b36ac55a40019977de6e47946dd7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 23 09:28:17 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 23 09:28:17 2011 -0800"
      },
      "message": "freezer: kill unused set_freezable_with_signal()\n\nThere\u0027s no in-kernel user of set_freezable_with_signal() left.  Mixing\nTIF_SIGPENDING with kernel threads can lead to nasty corner cases as\nkernel threads never travel signal delivery path on their own.\n\ne.g. the current implementation is buggy in the cancelation path of\n__thaw_task().  It calls recalc_sigpending_and_wake() in an attempt to\nclear TIF_SIGPENDING but the function never clears it regardless of\nsigpending state.  This means that signallable freezable kthreads may\ncontinue executing with !freezing() \u0026\u0026 stuck TIF_SIGPENDING, which can\nbe troublesome.\n\nThis patch removes set_freezable_with_signal() along with\nPF_FREEZER_NOSIG and recalc_sigpending*() calls in freezer.  User\ntasks get TIF_SIGPENDING, kernel tasks get woken up and the spurious\nsigpending is dealt with in the usual signal delivery path.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "839e3407d90a810318d17c17ceb3d5928a910704",
      "tree": "9b75e8f69cadba5d33537698931cf637a22d423b",
      "parents": [
        "37ad8aca94a1da2112a7c56151390914e80d1113"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "message": "freezer: remove unused @sig_only from freeze_task()\n\nAfter \"freezer: make freezing() test freeze conditions in effect\ninstead of TIF_FREEZE\", freezing() returns authoritative answer on\nwhether the current task should freeze or not and freeze_task()\ndoesn\u0027t need or use @sig_only.  Remove it.\n\nWhile at it, rewrite function comment for freeze_task() and rename\n@sig_only to @user_only in try_to_freeze_tasks().\n\nThis patch doesn\u0027t cause any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "96ee6d8539c9fc6742908d85eb9723abb5c91854",
      "tree": "0c042d74508c777c33744e5a917ac16e057f073b",
      "parents": [
        "948246f70a811c872b9d93bb4a8ab5823c4c79e0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "message": "freezer: fix set_freezable[_with_signal]() race\n\nA kthread doing set_freezable*() may race with on-going PM freeze and\nthe freezer might think all tasks are frozen while the new freezable\nkthread is merrily proceeding to execute code paths which aren\u0027t\nsupposed to be executing during PM freeze.\n\nReimplement set_freezable[_with_signal]() using __set_freezable() such\nthat freezable PF flags are modified under freezer_lock and\ntry_to_freeze() is called afterwards.  This eliminates race condition\nagainst freezing.\n\nNote: Separated out from larger patch to resolve fix order dependency\n      Oleg pointed out.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "948246f70a811c872b9d93bb4a8ab5823c4c79e0",
      "tree": "385fee0509ba5e05f1f651c8b86b7b56a0518163",
      "parents": [
        "d88e4cb67197d007fb778d62fe17360e970d5bfa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "message": "freezer: remove should_send_signal() and update frozen()\n\nshould_send_signal() is only used in freezer.c.  Exporting them only\nincreases chance of abuse.  Open code the two users and remove it.\n\nUpdate frozen() to return bool.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a3201227f803ad7fd43180c5195dbe5a2bf998aa",
      "tree": "1845ba06346f8a8772fe1c90f8960bd1a430d05c",
      "parents": [
        "22b4e111fa01a1147aa562ceaf18a752a928ef4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "message": "freezer: make freezing() test freeze conditions in effect instead of TIF_FREEZE\n\nUsing TIF_FREEZE for freezing worked when there was only single\nfreezing condition (the PM one); however, now there is also the\ncgroup_freezer and single bit flag is getting clumsy.\nthaw_processes() is already testing whether cgroup freezing in in\neffect to avoid thawing tasks which were frozen by both PM and cgroup\nfreezers.\n\nThis is racy (nothing prevents race against cgroup freezing) and\nfragile.  A much simpler way is to test actual freeze conditions from\nfreezing() - ie. directly test whether PM or cgroup freezing is in\neffect.\n\nThis patch adds variables to indicate whether and what type of\nfreezing conditions are in effect and reimplements freezing() such\nthat it directly tests whether any of the two freezing conditions is\nactive and the task should freeze.  On fast path, freezing() is still\nvery cheap - it only tests system_freezing_cnt.\n\nThis makes the clumsy dancing aroung TIF_FREEZE unnecessary and\nfreeze/thaw operations more usual - updating state variables for the\nnew state and nudging target tasks so that they notice the new state\nand comply.  As long as the nudging happens after state update, it\u0027s\nrace-free.\n\n* This allows use of freezing() in freeze_task().  Replace the open\n  coded tests with freezing().\n\n* p !\u003d current test is added to warning printing conditions in\n  try_to_freeze_tasks() failure path.  This is necessary as freezing()\n  is now true for the task which initiated freezing too.\n\n-v2: Oleg pointed out that re-freezing FROZEN cgroup could increment\n     system_freezing_cnt.  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Paul Menage \u003cpaul@paulmenage.org\u003e  (for the cgroup portions)\n"
    },
    {
      "commit": "22b4e111fa01a1147aa562ceaf18a752a928ef4e",
      "tree": "f4b29f532678c72edf99bb8df3ba64d526bc8a3c",
      "parents": [
        "03afed8bc296fa70186ba832c1126228bb992465"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "message": "cgroup_freezer: prepare for removal of TIF_FREEZE\n\nTIF_FREEZE will be removed soon and freezing() will directly test\nwhether any freezing condition is in effect.  Make the following\nchanges in preparation.\n\n* Rename cgroup_freezing_or_frozen() to cgroup_freezing() and make it\n  return bool.\n\n* Make cgroup_freezing() access task_freezer() under rcu read lock\n  instead of task_lock().  This makes the state dereferencing racy\n  against task moving to another cgroup; however, it was already racy\n  without this change as -\u003estate dereference wasn\u0027t synchronized.\n  This will be later dealt with using attach hooks.\n\n* freezer-\u003estate is now set before trying to push tasks into the\n  target state.\n\n-v2: Oleg pointed out that freeze_change_state() was setting\n     freeze-\u003estate incorrectly to CGROUP_FROZEN instead of\n     CGROUP_FREEZING.  Fixed.\n\n-v3: Matt pointed out that setting CGROUP_FROZEN used to always invoke\n     try_to_freeze_cgroup() regardless of the current state.  Patch\n     updated such that the actual freeze/thaw operations are always\n     performed on invocation.  This shouldn\u0027t make any difference\n     unless something is broken.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Paul Menage \u003cpaul@paulmenage.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "03afed8bc296fa70186ba832c1126228bb992465",
      "tree": "96d0a6a9bffdcfc678d31f21caa88e43693bde94",
      "parents": [
        "376fede80e74d98b49d1ba9ac18f23c9fd026ddd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "message": "freezer: clean up freeze_processes() failure path\n\nfreeze_processes() failure path is rather messy.  Freezing is canceled\nfor workqueues and tasks which aren\u0027t frozen yet but frozen tasks are\nleft alone and should be thawed by the caller and of course some\ncallers (xen and kexec) didn\u0027t do it.\n\nThis patch updates __thaw_task() to handle cancelation correctly and\nmakes freeze_processes() and freeze_kernel_threads() call\nthaw_processes() on failure instead so that the system is fully thawed\non failure.  Unnecessary [suspend_]thaw_processes() calls are removed\nfrom kernel/power/hibernate.c, suspend.c and user.c.\n\nWhile at it, restructure error checking if clause in suspend_prepare()\nto be less weird.\n\n-v2: Srivatsa spotted missing removal of suspend_thaw_processes() in\n     suspend_prepare() and error in commit message.  Updated.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a5be2d0d1a8746e7be5210e3d6b904455000443c",
      "tree": "1dcfa2725057a73059a3f768f5f5f7825b5d56ef",
      "parents": [
        "8a32c441c1609f80e55df75422324a1151208f40"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "message": "freezer: rename thaw_process() to __thaw_task() and simplify the implementation\n\nthaw_process() now has only internal users - system and cgroup\nfreezers.  Remove the unnecessary return value, rename, unexport and\ncollapse __thaw_process() into it.  This will help further updates to\nthe freezer code.\n\n-v3: oom_kill grew a use of thaw_process() while this patch was\n     pending.  Convert it to use __thaw_task() for now.  In the longer\n     term, this should be handled by allowing tasks to die if killed\n     even if it\u0027s frozen.\n\n-v2: minor style update as suggested by Matt.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\n"
    },
    {
      "commit": "8a32c441c1609f80e55df75422324a1151208f40",
      "tree": "73884b06cc2db3ea155af9a88815bb5105a4473e",
      "parents": [
        "a0acae0e886d44bd5ce6d2f173c1ace0fcf0d9f6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "message": "freezer: implement and use kthread_freezable_should_stop()\n\nWriteback and thinkpad_acpi have been using thaw_process() to prevent\ndeadlock between the freezer and kthread_stop(); unfortunately, this\nis inherently racy - nothing prevents freezing from happening between\nthaw_process() and kthread_stop().\n\nThis patch implements kthread_freezable_should_stop() which enters\nrefrigerator if necessary but is guaranteed to return if\nkthread_stop() is invoked.  Both thaw_process() users are converted to\nuse the new function.\n\nNote that this deadlock condition exists for many of freezable\nkthreads.  They need to be converted to use the new should_stop or\nfreezable workqueue.\n\nTested with synthetic test case.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Henrique de Moraes Holschuh \u003cibm-acpi@hmh.eng.br\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "a0acae0e886d44bd5ce6d2f173c1ace0fcf0d9f6",
      "tree": "0b763388360a5a9043986e1f2201e43df74ebc46",
      "parents": [
        "3a7cbd50f74907580eb47a8d08e1f29741b81abf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "message": "freezer: unexport refrigerator() and update try_to_freeze() slightly\n\nThere is no reason to export two functions for entering the\nrefrigerator.  Calling refrigerator() instead of try_to_freeze()\ndoesn\u0027t save anything noticeable or removes any race condition.\n\n* Rename refrigerator() to __refrigerator() and make it return bool\n  indicating whether it scheduled out for freezing.\n\n* Update try_to_freeze() to return bool and relay the return value of\n  __refrigerator() if freezing().\n\n* Convert all refrigerator() users to try_to_freeze().\n\n* Update documentation accordingly.\n\n* While at it, add might_sleep() to try_to_freeze().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "6f35c4abd7f0294166a5e0ab0401fe7949b33034",
      "tree": "e8af20e67b4d08b1b819b7917104468df85210f8",
      "parents": [
        "b2c0a863e14676fa5760c6d828fd373288e2f64a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Nov 03 16:07:49 2011 -0700"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Nov 04 22:28:15 2011 +0100"
      },
      "message": "PM / Freezer: Reimplement wait_event_freezekillable using freezer_do_not_count/freezer_count\n\nCommit 27920651fe \"PM / Freezer: Make fake_signal_wake_up() wake\nTASK_KILLABLE tasks too\" updated fake_signal_wake_up() used by freezer\nto wake up KILLABLE tasks.  Sending unsolicited wakeups to tasks in\nkillable sleep is dangerous as there are code paths which depend on\ntasks not waking up spuriously from KILLABLE sleep.\n\nFor example. sys_read() or page can sleep in TASK_KILLABLE assuming\nthat wait/down/whatever _killable can only fail if we can not return\nto the usermode.  TASK_TRACED is another obvious example.\n\nThe offending commit was to resolve freezer hang during system PM\noperations caused by KILLABLE sleeps in network filesystems.\nwait_event_freezekillable(), which depends on the spurious KILLABLE\nwakeup, was added by f06ac72e92 \"cifs, freezer: add\nwait_event_freezekillable and have cifs use it\" to be used to\nimplement killable \u0026 freezable sleeps in network filesystems.\n\nTo prepare for reverting of 27920651fe, this patch reimplements\nwait_event_freezekillable() using freezer_do_not_count/freezer_count()\nso that it doesn\u0027t depend on the spurious KILLABLE wakeup.  This isn\u0027t\nvery nice but should do for now.\n\n[tj: Refreshed patch to apply to linus/master and updated commit\n    description on Rafael\u0027s request.]\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "dabcbb1bae0f55378060b285062b20f6ec648c6a",
      "tree": "027cdd35ce43cce95a78afab22e1e809b436b636",
      "parents": [
        "5619a693965b291315685bdfe01a0246ebd7e41e",
        "e0c8ea1a69410ef44043646938a6a4175f5307e4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:43:32 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:43:32 2011 -0700"
      },
      "message": "Merge branch \u00273.2-without-smb2\u0027 of git://git.samba.org/sfrench/cifs-2.6\n\n* \u00273.2-without-smb2\u0027 of git://git.samba.org/sfrench/cifs-2.6: (52 commits)\n  Fix build break when freezer not configured\n  Add definition for share encryption\n  CIFS: Make cifs_push_locks send as many locks at once as possible\n  CIFS: Send as many mandatory unlock ranges at once as possible\n  CIFS: Implement caching mechanism for posix brlocks\n  CIFS: Implement caching mechanism for mandatory brlocks\n  CIFS: Fix DFS handling in cifs_get_file_info\n  CIFS: Fix error handling in cifs_readv_complete\n  [CIFS] Fixup trivial checkpatch warning\n  [CIFS] Show nostrictsync and noperm mount options in /proc/mounts\n  cifs, freezer: add wait_event_freezekillable and have cifs use it\n  cifs: allow cifs_max_pending to be readable under /sys/module/cifs/parameters\n  cifs: tune bdi.ra_pages in accordance with the rsize\n  cifs: allow for larger rsize\u003d options and change defaults\n  cifs: convert cifs_readpages to use async reads\n  cifs: add cifs_async_readv\n  cifs: fix protocol definition for READ_RSP\n  cifs: add a callback function to receive the rest of the frame\n  cifs: break out 3rd receive phase into separate function\n  cifs: find mid earlier in receive codepath\n  ...\n"
    },
    {
      "commit": "e0c8ea1a69410ef44043646938a6a4175f5307e4",
      "tree": "4c859e9e9cdcddf7bb5d073fcbc434818d135963",
      "parents": [
        "96814ecb404d587fade79af70bb741bc753e9ffb"
      ],
      "author": {
        "name": "Steve French",
        "email": "smfrench@gmail.com",
        "time": "Tue Oct 25 10:02:53 2011 -0500"
      },
      "committer": {
        "name": "Steve French",
        "email": "smfrench@gmail.com",
        "time": "Thu Oct 27 16:53:40 2011 -0500"
      },
      "message": "Fix build break when freezer not configured\n\nfs/cifs/transport.c: In function \u0027wait_for_response\u0027:\nfs/cifs/transport.c:328: error: implicit declaration of function \u0027wait_event_freezekillable\u0027\n\nCaused by commit f06ac72e9291 (\"cifs, freezer: add\nwait_event_freezekillable and have cifs use it\").  In this config,\nCONFIG_FREEZER is not set.\n\nReviewed-by: Shirish Pargaonkar \u003cshirishp@us.ibm.com\u003e\nCC: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csmfrench@gmail.com\u003e\n"
    },
    {
      "commit": "b957ae9c53d5715a07f8bac644d8ff0a407c7e07",
      "tree": "a9a9419cc96a528e886e001a936fbca0c7c2e5d8",
      "parents": [
        "fbcae3ea169189ee49dc6820478cb1d069b80a08"
      ],
      "author": {
        "name": "Steve French",
        "email": "smfrench@gmail.com",
        "time": "Wed Oct 19 21:27:11 2011 -0500"
      },
      "committer": {
        "name": "Steve French",
        "email": "smfrench@gmail.com",
        "time": "Wed Oct 19 21:27:11 2011 -0500"
      },
      "message": "[CIFS] Fixup trivial checkpatch warning\n\nSigned-off-by: Steve French \u003csmfrench@gmail.com\u003e\n"
    },
    {
      "commit": "f06ac72e929115f2772c29727152ba0832d641e4",
      "tree": "c214d17cd28fcbc8c6929ca69f38d1439975cf75",
      "parents": [
        "fef33df88bef6810cc3c4e6edf55c741a8fd68e3"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 19 15:30:40 2011 -0400"
      },
      "committer": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 19 15:30:40 2011 -0400"
      },
      "message": "cifs, freezer: add wait_event_freezekillable and have cifs use it\n\nCIFS currently uses wait_event_killable to put tasks to sleep while\nthey await replies from the server. That function though does not\nallow the freezer to run. In many cases, the network interface may\nbe going down anyway, in which case the reply will never come. The\nclient then ends up blocking the computer from suspending.\n\nFix this by adding a new wait_event_freezable variant --\nwait_event_freezekillable. The idea is to combine the behavior of\nwait_event_killable and wait_event_freezable -- put the task to\nsleep and only allow it to be awoken by fatal signals, but also\nallow the freezer to do its job.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\n"
    },
    {
      "commit": "2aede851ddf08666f68ffc17be446420e9d2a056",
      "tree": "f63a0477c9fe618cd374065bac4cb5f172aaf7db",
      "parents": [
        "8f88893c05f2f677f18f2ce5591b4bed5d4a7535"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 26 20:32:27 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:28:52 2011 +0200"
      },
      "message": "PM / Hibernate: Freeze kernel threads after preallocating memory\n\nThere is a problem with the current ordering of hibernate code which\nleads to deadlocks in some filesystems\u0027 memory shrinkers.  Namely,\nsome filesystems use freezable kernel threads that are inactive when\nthe hibernate memory preallocation is carried out.  Those same\nfilesystems use memory shrinkers that may be triggered by the\nhibernate memory preallocation.  If those memory shrinkers wait for\nthe frozen kernel threads, the hibernate process deadlocks (this\nhappens with XFS, for one example).\n\nApparently, it is not technically viable to redesign the filesystems\nin question to avoid the situation described above, so the only\npossible solution of this issue is to defer the freezing of kernel\nthreads until the hibernate memory preallocation is done, which is\nimplemented by this change.\n\nUnfortunately, this requires the memory preallocation to be done\nbefore the \"prepare\" stage of device freeze, so after this change the\nonly way drivers can allocate additional memory for their freeze\nroutines in a clean way is to use PM notifiers.\n\nReported-by: Christoph \u003ccr2005@u-club.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "58a69cb47ec6991bf006a3e5d202e8571b0327a4",
      "tree": "56abdf817649c352f70bff3263f9351ed6c42062",
      "parents": [
        "7576958a9d5a4a677ad7dd40901cdbb6c1110c98"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 16 09:25:31 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 16 17:48:59 2011 +0100"
      },
      "message": "workqueue, freezer: unify spelling of \u0027freeze\u0027 + \u0027able\u0027 to \u0027freezable\u0027\n\nThere are two spellings in use for \u0027freeze\u0027 + \u0027able\u0027 - \u0027freezable\u0027 and\n\u0027freezeable\u0027.  The former is the more prominent one.  The latter is\nmostly used by workqueue and in a few other odd places.  Unify the\nspelling to \u0027freezable\u0027.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5a7aadfe2fcb0f69e2acc1fbefe22a096e792fc9",
      "tree": "dc1b649fc6aa05ecd25cab23e464894e660830d5",
      "parents": [
        "4f598458ea4450f53e8ed929ee4e66b3404a7286"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Fri Mar 26 23:51:44 2010 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Mar 26 23:51:44 2010 +0100"
      },
      "message": "Freezer: Fix buggy resume test for tasks frozen with cgroup freezer\n\nWhen the cgroup freezer is used to freeze tasks we do not want to thaw\nthose tasks during resume. Currently we test the cgroup freezer\nstate of the resuming tasks to see if the cgroup is FROZEN.  If so\nthen we don\u0027t thaw the task. However, the FREEZING state also indicates\nthat the task should remain frozen.\n\nThis also avoids a problem pointed out by Oren Ladaan: the freezer state\ntransition from FREEZING to FROZEN is updated lazily when userspace reads\nor writes the freezer.state file in the cgroup filesystem. This means that\nresume will thaw tasks in cgroups which should be in the FROZEN state if\nthere is no read/write of the freezer.state file to trigger this\ntransition before suspend.\n\nNOTE: Another \"simple\" solution would be to always update the cgroup\nfreezer state during resume. However it\u0027s a bad choice for several reasons:\nUpdating the cgroup freezer state is somewhat expensive because it requires\nwalking all the tasks in the cgroup and checking if they are each frozen.\nWorse, this could easily make resume run in N^2 time where N is the number\nof tasks in the cgroup. Finally, updating the freezer state from this code\npath requires trickier locking because of the way locks must be ordered.\n\nInstead of updating the freezer state we rely on the fact that lazy\nupdates only manage the transition from FREEZING to FROZEN. We know that\na cgroup with the FREEZING state may actually be FROZEN so test for that\nstate too. This makes sense in the resume path even for partially-frozen\ncgroups -- those that really are FREEZING but not FROZEN.\n\nReported-by: Oren Ladaan \u003corenl@cs.columbia.edu\u003e\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "00c2e63c31d0f431952ff2a671c5c6997dd4f8b2",
      "tree": "2277b400fef79e55c13d7045aa63d5bed9ad5883",
      "parents": [
        "80a6a2cf3bebcf20285cf05373b9c5ec96816577"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Oct 29 14:00:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": "freezer_cg: use thaw_process() in unfreeze_cgroup()\n\nDon\u0027t duplicate the implementation of thaw_process().\n\n[akpm@linux-foundation.org: make __thaw_process() static]\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nAcked-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc52ddc0e6f45b04780b26fc0813509f8e798c42",
      "tree": "384826e9fab4e434bc5c85ce744470ae472e52c3",
      "parents": [
        "8174f1503f4bf7e9a14b3fbbfdb30c6be6e29f77"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Sat Oct 18 20:27:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:34 2008 -0700"
      },
      "message": "container freezer: implement freezer cgroup subsystem\n\nThis patch implements a new freezer subsystem in the control groups\nframework.  It provides a way to stop and resume execution of all tasks in\na cgroup by writing in the cgroup filesystem.\n\nThe freezer subsystem in the container filesystem defines a file named\nfreezer.state.  Writing \"FROZEN\" to the state file will freeze all tasks\nin the cgroup.  Subsequently writing \"RUNNING\" will unfreeze the tasks in\nthe cgroup.  Reading will return the current state.\n\n* Examples of usage :\n\n   # mkdir /containers/freezer\n   # mount -t cgroup -ofreezer freezer  /containers\n   # mkdir /containers/0\n   # echo $some_pid \u003e /containers/0/tasks\n\nto get status of the freezer subsystem :\n\n   # cat /containers/0/freezer.state\n   RUNNING\n\nto freeze all tasks in the container :\n\n   # echo FROZEN \u003e /containers/0/freezer.state\n   # cat /containers/0/freezer.state\n   FREEZING\n   # cat /containers/0/freezer.state\n   FROZEN\n\nto unfreeze all tasks in the container :\n\n   # echo RUNNING \u003e /containers/0/freezer.state\n   # cat /containers/0/freezer.state\n   RUNNING\n\nThis is the basic mechanism which should do the right thing for user space\ntask in a simple scenario.\n\nIt\u0027s important to note that freezing can be incomplete.  In that case we\nreturn EBUSY.  This means that some tasks in the cgroup are busy doing\nsomething that prevents us from completely freezing the cgroup at this\ntime.  After EBUSY, the cgroup will remain partially frozen -- reflected\nby freezer.state reporting \"FREEZING\" when read.  The state will remain\n\"FREEZING\" until one of these things happens:\n\n\t1) Userspace cancels the freezing operation by writing \"RUNNING\" to\n\t\tthe freezer.state file\n\t2) Userspace retries the freezing operation by writing \"FROZEN\" to\n\t\tthe freezer.state file (writing \"FREEZING\" is not legal\n\t\tand returns EIO)\n\t3) The tasks that blocked the cgroup from entering the \"FROZEN\"\n\t\tstate disappear from the cgroup\u0027s set of tasks.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: export thaw_process]\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nTested-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8174f1503f4bf7e9a14b3fbbfdb30c6be6e29f77",
      "tree": "a8df1ebd62255dd231452b3f72782604e8919991",
      "parents": [
        "83224b08372be48d5fcefedc4886457da29130c8"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Sat Oct 18 20:27:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:33 2008 -0700"
      },
      "message": "container freezer: make refrigerator always available\n\nNow that the TIF_FREEZE flag is available in all architectures, extract\nthe refrigerator() and freeze_task() from kernel/power/process.c and make\nit available to all.\n\nThe refrigerator() can now be used in a control group subsystem\nimplementing a control group freezer.\n\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nTested-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ebb12db51f6c13b30752fcf506baad4c617b153c",
      "tree": "55c08b82463ffd5b78a8bc4a4748261b02391593",
      "parents": [
        "d20a4dca47d2cd027ed58a13f91b424affd1f449"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jun 11 22:04:29 2008 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed Jul 16 23:27:03 2008 +0200"
      },
      "message": "Freezer: Introduce PF_FREEZER_NOSIG\n\nThe freezer currently attempts to distinguish kernel threads from\nuser space tasks by checking if their mm pointer is unset and it\ndoes not send fake signals to kernel threads.  However, there are\nkernel threads, mostly related to networking, that behave like\nuser space tasks and may want to be sent a fake signal to be frozen.\n\nIntroduce the new process flag PF_FREEZER_NOSIG that will be set\nby default for all kernel threads and make the freezer only send\nfake signals to the tasks having PF_FREEZER_NOSIG unset.  Provide\nthe set_freezable_with_signal() function to be called by the kernel\nthreads that want to be sent a fake signal for freezing.\n\nThis patch should not change the freezer\u0027s observable behavior.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "e42837bcd35b75bb59ae5d3e62f87be1aeeb05c3",
      "tree": "aa9666b080dc75ef3fa27992f042a422f7a979b7",
      "parents": [
        "2e1318956ce6bf149af5c5e98499b5cd99f99c89"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Oct 18 03:04:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:19 2007 -0700"
      },
      "message": "freezer: introduce freezer-friendly waiting macros\n\nIntroduce freezer-friendly wrappers around wait_event_interruptible() and\nwait_event_interruptible_timeout(), originally defined in \u003clinux/wait.h\u003e, to\nbe used in freezable kernel threads.  Make some of the freezable kernel\nthreads use them.\n\nThis is necessary for the freezer to stop sending signals to kernel threads,\nwhich is implemented in the next patch.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "296699de6bdc717189a331ab6bbe90e05c94db06",
      "tree": "53c847ecc8cce11952502921844052e44ca60d5e",
      "parents": [
        "b0cb1a19d05b8ea8611a9ef48a17fe417f1832e6"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Jul 29 23:27:18 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 29 16:45:38 2007 -0700"
      },
      "message": "Introduce CONFIG_SUSPEND for suspend-to-Ram and standby\n\nIntroduce CONFIG_SUSPEND representing the ability to enter system sleep\nstates, such as the ACPI S3 state, and allow the user to choose SUSPEND\nand HIBERNATION independently of each other.\n\nMake HOTPLUG_CPU be selected automatically if SUSPEND or HIBERNATION has\nbeen chosen and the kernel is intended for SMP systems.\n\nAlso, introduce CONFIG_PM_SLEEP which is automatically selected if\nCONFIG_SUSPEND or CONFIG_HIBERNATION is set and use it to select the\ncode needed for both suspend and hibernation.\n\nThe top-level power management headers and the ACPI code related to\nsuspend and hibernation are modified to use the new definitions (the\nchanges in drivers/acpi/sleep/main.c are, mostly, moving code to reduce\nthe number of ifdefs).\n\nThere are many other files in which CONFIG_PM can be replaced with\nCONFIG_PM_SLEEP or even with CONFIG_SUSPEND, but they can be updated in\nthe future.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c1eecfb345401629aa57c9d3b077273e56c45a7",
      "tree": "522d7090966c6e70f3147c30e3308781e0309938",
      "parents": [
        "b1457bcc3a00a0446c7f6e2f22fd24b6d8d0a309"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 19 01:47:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:42 2007 -0700"
      },
      "message": "Freezer: avoid freezing kernel threads prematurely\n\nKernel threads should not have TIF_FREEZE set when user space processes are\nbeing frozen, since otherwise some of them might be frozen prematurely.\nTo prevent this from happening we can (1) make exit_mm() unset TIF_FREEZE\nunconditionally just after clearing tsk-\u003emm and (2) make try_to_freeze_tasks()\ncheck if p-\u003emm is different from zero and PF_BORROWED_MM is unset in p-\u003eflags\nwhen user space processes are to be frozen.\n\nNamely, when user space processes are being frozen, we only should set\nTIF_FREEZE for tasks that have p-\u003emm different from NULL and don\u0027t have\nPF_BORROWED_MM set in p-\u003eflags.  For this reason task_lock() must be used to\nprevent try_to_freeze_tasks() from racing with use_mm()/unuse_mm(), in which\np-\u003emm and p-\u003eflags.PF_BORROWED_MM are changed under task_lock(p).  Also, we\nneed to prevent the following scenario from happening:\n\n* daemonize() is called by a task spawned from a user space code path\n* freezer checks if the task has p-\u003emm set and the result is positive\n* task enters exit_mm() and clears its TIF_FREEZE\n* freezer sets TIF_FREEZE for the task\n* task calls try_to_freeze() and goes to the refrigerator, which is wrong at\n  that point\n\nThis requires us to acquire task_lock(p) before p-\u003eflags.PF_BORROWED_MM and\np-\u003emm are examined and release it after TIF_FREEZE is set for p (or it turns\nout that TIF_FREEZE should not be set).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "831441862956fffa17b9801db37e6ea1650b0f69",
      "tree": "b0334921341f8f1734bdd3243de76d676329d21c",
      "parents": [
        "787d2214c19bcc9b6ac48af0ce098277a801eded"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 17 04:03:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "Freezer: make kernel threads nonfreezable by default\n\nCurrently, the freezer treats all tasks as freezable, except for the kernel\nthreads that explicitly set the PF_NOFREEZE flag for themselves.  This\napproach is problematic, since it requires every kernel thread to either\nset PF_NOFREEZE explicitly, or call try_to_freeze(), even if it doesn\u0027t\ncare for the freezing of tasks at all.\n\nIt seems better to only require the kernel threads that want to or need to\nbe frozen to use some freezer-related code and to remove any\nfreezer-related code from the other (nonfreezable) kernel threads, which is\ndone in this patch.\n\nThe patch causes all kernel threads to be nonfreezable by default (ie.  to\nhave PF_NOFREEZE set by default) and introduces the set_freezable()\nfunction that should be called by the freezable kernel threads in order to\nunset PF_NOFREEZE.  It also makes all of the currently freezable kernel\nthreads call set_freezable(), so it shouldn\u0027t cause any (intentional)\nchange of behaviour to appear.  Additionally, it updates documentation to\ndescribe the freezing of tasks more accurately.\n\n[akpm@linux-foundation.org: build fixes]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88f18ba028b5939bb6f77bd690e5ad8d01bb24cc",
      "tree": "eea3f79f5098f7b45723f842208b44f860f0fb71",
      "parents": [
        "5fcc57f2d5d558056668159f9153bf21d2c53d16"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 23 13:57:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "freezer: move frozen_process() to kernel/power/process.c\n\nOther than refrigerator, no one else calls frozen_process().  So move it from\ninclude/linux/freezer.h to kernel/power/process.c.\n\nAlso, since a task can be marked as frozen by itself, we don\u0027t need to pass\nthe (struct task_struct *p) parameter to frozen_process().\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5fcc57f2d5d558056668159f9153bf21d2c53d16",
      "tree": "aa81c453b093f051bf775cd8fb557df9d2f79543",
      "parents": [
        "a076e4bca2fdabb9e45d86722cc72c0944da5f94"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 23 13:57:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "freezer: fix PF_NOFREEZE vs freezeable race\n\nThis patch fixes the race pointed out by Oleg Nesterov.\n\n* Freezer marks a thread as freezeable.\n* The thread now marks itself PF_NOFREEZE, but it will be frozen on\n  on calling try_to_freeze(). Thus the task is frozen, even though it doesn\u0027t\n  want to.\n* Subsequent thaw_processes() will also fail to thaw the task since it is\n  marked PF_NOFREEZE.\n\nAvoid this problem by checking the task\u0027s PF_NOFREEZE status in\nfrozen_processes() before marking the task as frozen.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba96a0c88098697a63e80157718b7440414ed24d",
      "tree": "bdd999761eed452cc162f5b63166d1014aaf2e3e",
      "parents": [
        "33e1c288da62a6a5aa9077a6b7bfa690b1b02cf4"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 23 13:57:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "freezer: fix vfork problem\n\nCurrently try_to_freeze_tasks() has to wait until all of the vforked processes\nexit and for this reason every user can make it fail.  To fix this problem we\ncan introduce the additional process flag PF_FREEZER_SKIP to be used by tasks\nthat do not want to be counted as freezable by the freezer and want to have\nTIF_FREEZE set nevertheless.  Then, this flag can be set by tasks using\nsys_vfork() before they call wait_for_completion(\u0026vfork) and cleared after\nthey have woken up.  After clearing it, the tasks should call try_to_freeze()\nas soon as possible.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33e1c288da62a6a5aa9077a6b7bfa690b1b02cf4",
      "tree": "68837483316db1fa08bcb2b444cabae75d31a5b2",
      "parents": [
        "585a2858b970cb6e2e5ca4877eefd18b4dba8ed4"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 23 13:57:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:10 2007 -0700"
      },
      "message": "freezer: close potential race between refrigerator and thaw_tasks\n\nIf the freezing of tasks fails and a task is preempted in refrigerator()\nbefore calling frozen_process(), then thaw_tasks() may run before this task is\nfrozen.  In that case the task will freeze and no one will thaw it.\n\nTo fix this race we can call freezing(current) in refrigerator() along with\nfrozen_process(current) under the task_lock() which also should be taken in\nthe error path of try_to_freeze_tasks() as well as in thaw_process().\nMoreover, if thaw_process() additionally clears TIF_FREEZE for tasks that are\nnot frozen, we can be sure that all tasks are thawed and there are no pending\n\"freeze\" requests after thaw_tasks() has run.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a102eed9c4e1d21bad07a8fd97bd4fbf125d966",
      "tree": "9ec99f046b94971db46b08a87d7eab3e84c4acd4",
      "parents": [
        "3df494a32b936aef76d893f5065f962ebd9b9437"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 13 00:34:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] PM: Fix SMP races in the freezer\n\nCurrently, to tell a task that it should go to the refrigerator, we set the\nPF_FREEZE flag for it and send a fake signal to it.  Unfortunately there\nare two SMP-related problems with this approach.  First, a task running on\nanother CPU may be updating its flags while the freezer attempts to set\nPF_FREEZE for it and this may leave the task\u0027s flags in an inconsistent\nstate.  Second, there is a potential race between freeze_process() and\nrefrigerator() in which freeze_process() running on one CPU is reading a\ntask\u0027s PF_FREEZE flag while refrigerator() running on another CPU has just\nset PF_FROZEN for the same task and attempts to reset PF_FREEZE for it.  If\nthe refrigerator wins the race, freeze_process() will state that PF_FREEZE\nhasn\u0027t been set for the task and will set it unnecessarily, so the task\nwill go to the refrigerator once again after it\u0027s been thawed.\n\nTo solve first of these problems we need to stop using PF_FREEZE to tell\ntasks that they should go to the refrigerator.  Instead, we can introduce a\nspecial TIF_*** flag and use it for this purpose, since it is allowed to\nchange the other tasks\u0027 TIF_*** flags and there are special calls for it.\n\nTo avoid the freeze_process()-refrigerator() race we can make\nfreeze_process() to always check the task\u0027s PF_FROZEN flag after it\u0027s read\nits \"freeze\" flag.  We should also make sure that refrigerator() will\nalways reset the task\u0027s \"freeze\" flag after it\u0027s set PF_FROZEN for it.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5c543eff6cc658f46241f1ccb77436d65abbf445",
      "tree": "c8e097efe8b6f5731caecbb23f0c581ece15c3c0",
      "parents": [
        "cf1b939e41c28a31f2052e5c0a6619b5711ad7d0"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sun Dec 10 02:18:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:40 2006 -0800"
      },
      "message": "[PATCH] freezer.h uses task_struct fields\n\nfreezer.h uses task_struct fields so it should include sched.h.\n\n  CC [M]  fs/jfs/jfs_txnmgr.o\nIn file included from fs/jfs/jfs_txnmgr.c:49:\ninclude/linux/freezer.h: In function \u0027frozen\u0027:\ninclude/linux/freezer.h:9: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:9: error: \u0027PF_FROZEN\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h:9: error: (Each undeclared identifier is reported only once\ninclude/linux/freezer.h:9: error: for each function it appears in.)\ninclude/linux/freezer.h: In function \u0027freezing\u0027:\ninclude/linux/freezer.h:17: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:17: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h: In function \u0027freeze\u0027:\ninclude/linux/freezer.h:26: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:26: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h: In function \u0027do_not_freeze\u0027:\ninclude/linux/freezer.h:34: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:34: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h: In function \u0027thaw_process\u0027:\ninclude/linux/freezer.h:43: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:43: error: \u0027PF_FROZEN\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h:44: warning: implicit declaration of function \u0027wake_up_process\u0027\ninclude/linux/freezer.h: In function \u0027frozen_process\u0027:\ninclude/linux/freezer.h:55: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:55: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:55: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h:55: error: \u0027PF_FROZEN\u0027 undeclared (first use in this function)\nfs/jfs/jfs_txnmgr.c: In function \u0027freezing\u0027:\ninclude/linux/freezer.h:18: warning: control reaches end of non-void function\nmake[2]: *** [fs/jfs/jfs_txnmgr.o] Error 1\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a9b6f562f14dc28fb4b2415f0f275cede0abe9b5",
      "tree": "8d83009585877bf4c5f263690468d35105058822",
      "parents": [
        "a6d70980602e6f1869ebcdcbfaf55a0a5941583e"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 06 20:34:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:28 2006 -0800"
      },
      "message": "[PATCH] swsusp: Untangle thaw_processes\n\nMove the loop from thaw_processes() to a separate function and call it\nindependently for kernel threads and user space processes so that the order\nof thawing tasks is clearly visible.\n\nDrop thaw_kernel_threads() which is never used.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ff39593ad0ff7a79a3717edac6634407aa8200c2",
      "tree": "571e02e20d5d211224567d5cc22333196cf6f563",
      "parents": [
        "14b5b7cfaa110b1d25b8f80b01a8c97cf2db30bc"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "ncunningham@linuxmail.org",
        "time": "Wed Dec 06 20:34:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:28 2006 -0800"
      },
      "message": "[PATCH] swsusp: thaw userspace and kernel space separately\n\nModify process thawing so that we can thaw kernel space without thawing\nuserspace, and thaw kernelspace first.  This will be useful in later\npatches, where I intend to get swsusp thawing kernel threads only before\nseeking to free memory.\n\nSigned-off-by: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7dfb71030f7636a0d65200158113c37764552f93",
      "tree": "276b812903d377b16d8828e888552fd256f48aab",
      "parents": [
        "8a05aac2631aa0e6494d9dc990f8c68ed8b8fde7"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "ncunningham@linuxmail.org",
        "time": "Wed Dec 06 20:34:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] Add include/linux/freezer.h and move definitions from sched.h\n\nMove process freezing functions from include/linux/sched.h to freezer.h, so\nthat modifications to the freezer or the kernel configuration don\u0027t require\nrecompiling just about everything.\n\n[akpm@osdl.org: fix ueagle driver]\nSigned-off-by: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
