)]}'
{
  "log": [
    {
      "commit": "9d3cfc4c1d17c6d3bc1373e3b954c56b92607755",
      "tree": "7e9f748cd920ced68fc51e21f761155d3c7d94ec",
      "parents": [
        "11854247e2c851e7ff9ce138e501c6cffc5a4217"
      ],
      "author": {
        "name": "Frans Pop",
        "email": "elendil@planet.nl",
        "time": "Mon Jan 25 14:56:34 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 28 06:59:55 2010 +0100"
      },
      "message": "sched: Correct printk whitespace in warning from cpu down task check\n\nDue to an incorrect line break the output currently contains tabs.\nAlso remove trailing space.\n\nThe actual output that logcheck sent me looked like this:\n Task events/1 (pid \u003d 10) is on cpu 1^I^I^I^I(state \u003d 1, flags \u003d 84208040)\n\nAfter this patch it becomes:\n Task events/1 (pid \u003d 10) is on cpu 1 (state \u003d 1, flags \u003d 84208040)\n\nSigned-off-by: Frans Pop \u003celendilplanet.nl\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c201001251456.34996.elendil@planet.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "11854247e2c851e7ff9ce138e501c6cffc5a4217",
      "tree": "281c12176055279558b31b4b059e32e59229f486",
      "parents": [
        "fabf318e5e4bda0aca2b0d617b191884fda62703"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Thu Jan 21 16:34:27 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 28 06:59:51 2010 +0100"
      },
      "message": "sched: Fix incorrect sanity check\n\nWe moved to migrate on wakeup, which means that sleeping tasks could\nstill be present on offline cpus. Amend the check to only test running\ntasks.\n\nReported-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9ee349ad6d326df3633d43f54202427295999c47",
      "tree": "06f4795cb1b3f493b2421b65af0fd870875c8168",
      "parents": [
        "933b0618d8b2a59c7a0742e43836544e02f1e9bd"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Wed Dec 16 18:04:32 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 16 19:01:53 2009 +0100"
      },
      "message": "sched: Fix set_cpu_active() in cpu_down()\n\nSachin found cpu hotplug test failures on powerpc, which made\nthe kernel hang on his POWER box.\n\nThe problem is that we fail to re-activate a cpu when a\nhot-unplug fails. Fix this by moving the de-activation into\n_cpu_down after doing the initial checks.\n\nRemove the synchronize_sched() calls and rely on those implied\nby rebuilding the sched domains using the new mask.\n\nReported-by: Sachin Sant \u003csachinp@in.ibm.com\u003e\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nTested-by: Sachin Sant \u003csachinp@in.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nLKML-Reference: \u003c20091216170517.500272612@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "702a7c7609bec3a940b6a46b0d6ab9ce45274580",
      "tree": "6c169691449259410b9b51a146acb0e837dae96a",
      "parents": [
        "053fe57ac249a9531c396175778160d9e9509399",
        "b9889ed1ddeca5a3f3569c8de7354e9e97d803ae"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 12 11:34:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 12 11:34:10 2009 -0800"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (21 commits)\n  sched: Remove forced2_migrations stats\n  sched: Fix memory leak in two error corner cases\n  sched: Fix build warning in get_update_sysctl_factor()\n  sched: Update normalized values on user updates via proc\n  sched: Make tunable scaling style configurable\n  sched: Fix missing sched tunable recalculation on cpu add/remove\n  sched: Fix task priority bug\n  sched: cgroup: Implement different treatment for idle shares\n  sched: Remove unnecessary RCU exclusion\n  sched: Discard some old bits\n  sched: Clean up check_preempt_wakeup()\n  sched: Move update_curr() in check_preempt_wakeup() to avoid redundant call\n  sched: Sanitize fork() handling\n  sched: Clean up ttwu() rq locking\n  sched: Remove rq-\u003eclock coupling from set_task_cpu()\n  sched: Consolidate select_task_rq() callers\n  sched: Remove sysctl.sched_features\n  sched: Protect sched_rr_get_param() access to task-\u003esched_class\n  sched: Protect task-\u003ecpus_allowed access in sched_getaffinity()\n  sched: Fix balance vs hotplug race\n  ...\n\nFixed up conflicts in kernel/sysctl.c (due to sysctl cleanup)\n"
    },
    {
      "commit": "6ad4c18884e864cf4c77f9074d3d1816063f99cd",
      "tree": "f09643f6148b576fa2d23bf7d4b37d082d94e267",
      "parents": [
        "e1b8090bdf125f8b2e192149547fead7f302a89c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Nov 25 13:31:39 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Dec 06 21:10:56 2009 +0100"
      },
      "message": "sched: Fix balance vs hotplug race\n\nSince (e761b77: cpu hotplug, sched: Introduce cpu_active_map and redo\nsched domain managment) we have cpu_active_mask which is suppose to rule\nscheduler migration and load-balancing, except it never (fully) did.\n\nThe particular problem being solved here is a crash in try_to_wake_up()\nwhere select_task_rq() ends up selecting an offline cpu because\nselect_task_rq_fair() trusts the sched_domain tree to reflect the\ncurrent state of affairs, similarly select_task_rq_rt() trusts the\nroot_domain.\n\nHowever, the sched_domains are updated from CPU_DEAD, which is after the\ncpu is taken offline and after stop_machine is done. Therefore it can\nrace perfectly well with code assuming the domains are right.\n\nCure this by building the domains from cpu_active_mask on\nCPU_DOWN_PREPARE.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "feae3203d711db0a9965300ee6d592257fdaae4f",
      "tree": "747f1223ed4afb9dbb4c79ceff1d06cb4da61984",
      "parents": [
        "ba5ea951d0b5e5896180e21fe07f228d2b3b0e63"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Tue Nov 17 18:22:13 2009 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 26 10:18:42 2009 +0100"
      },
      "message": "timers, init: Limit the number of per cpu calibration bootup messages\n\nLimit the number of per cpu calibration messages by only\nprinting out results for the first cpu to boot.\n\nAlso, don\u0027t print \"CPUx is down\" as this is expected, and we\ndon\u0027t need 4096 reminders... ;-)\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c20091118002219.889552000@alcatraz.americas.sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "227423904c709a8e60245c97081bbeb4fb500655",
      "tree": "97db1b8df1e4518334aea2fdf60363e0a691eb1e",
      "parents": [
        "1aaf2e59135fd67321f47c11c64a54aac27014e9",
        "fa526d0d641b5365676a1fb821ce359e217c9b85"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 15 09:19:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 15 09:19:38 2009 -0700"
      },
      "message": "Merge branch \u0027x86-pat-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-pat-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, pat: Fix cacheflush address in change_page_attr_set_clr()\n  mm: remove !NUMA condition from PAGEFLAGS_EXTENDED condition set\n  x86: Fix earlyprintk\u003ddbgp for machines without NX\n  x86, pat: Sanity check remap_pfn_range for RAM region\n  x86, pat: Lookup the protection from memtype list on vm_insert_pfn()\n  x86, pat: Add lookup_memtype to get the current memtype of a paddr\n  x86, pat: Use page flags to track memtypes of RAM pages\n  x86, pat: Generalize the use of page flag PG_uncached\n  x86, pat: Add rbtree to do quick lookup in memtype tracking\n  x86, pat: Add PAT reserve free to io_mapping* APIs\n  x86, pat: New i/f for driver to request memtype for IO regions\n  x86, pat: ioremap to follow same PAT restrictions as other PAT users\n  x86, pat: Keep identity maps consistent with mmaps even when pat_disabled\n  x86, mtrr: make mtrr_aps_delayed_init static bool\n  x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init\n  generic-ipi: Allow cpus not yet online to call smp_call_function with irqs disabled\n  x86: Fix an incorrect argument of reserve_bootmem()\n  x86: Fix system crash when loading with \"reservetop\" parameter\n"
    },
    {
      "commit": "69575d388603365f2afbf4166df93152df59b165",
      "tree": "ca3d66668c8ec47befc0adbfa62cf135229bda59",
      "parents": [
        "62a3207b8cf3de35368cdc3822b30b82d59eea95"
      ],
      "author": {
        "name": "Shane Wang",
        "email": "shane.wang@intel.com",
        "time": "Tue Sep 01 18:25:07 2009 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Tue Sep 01 18:25:07 2009 -0700"
      },
      "message": "x86, intel_txt: clean up the impact on generic code, unbreak non-x86\n\nMove tboot.h from asm to linux to fix the build errors of intel_txt\npatch on non-X86 platforms. Remove the tboot code from generic code\ninit/main.c and kernel/cpu.c.\n\nSigned-off-by: Shane Wang \u003cshane.wang@intel.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "d0af9eed5aa91b6b7b5049cae69e5ea956fd85c3",
      "tree": "b9214db00ba734e5b943165082c30336f7a8425a",
      "parents": [
        "269c861baa2fe7c114c3bc7831292758d29eb336"
      ],
      "author": {
        "name": "Suresh Siddha",
        "email": "suresh.b.siddha@intel.com",
        "time": "Wed Aug 19 18:05:36 2009 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Fri Aug 21 16:25:55 2009 -0700"
      },
      "message": "x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init\n\nSDM Vol 3a section titled \"MTRR considerations in MP systems\" specifies\nthe need for synchronizing the logical cpu\u0027s while initializing/updating\nMTRR.\n\nCurrently Linux kernel does the synchronization of all cpu\u0027s only when\na single MTRR register is programmed/updated. During an AP online\n(during boot/cpu-online/resume)  where we initialize all the MTRR/PAT registers,\nwe don\u0027t follow this synchronization algorithm.\n\nThis can lead to scenarios where during a dynamic cpu online, that logical cpu\nis initializing MTRR/PAT with cache disabled (cr0.cd\u003d1) etc while other logical\nHT sibling continue to run (also with cache disabled because of cr0.cd\u003d1\non its sibling).\n\nStarting from Westmere, VMX transitions with cr0.cd\u003d1 don\u0027t work properly\n(because of some VMX performance optimizations) and the above scenario\n(with one logical cpu doing VMX activity and another logical cpu coming online)\ncan result in system crash.\n\nFix the MTRR initialization by doing rendezvous of all the cpus. During\nboot and resume, we delay the MTRR/PAT init for APs till all the\nlogical cpu\u0027s come online and the rendezvous process at the end of AP\u0027s bringup,\nwill initialize the MTRR/PAT for all AP\u0027s.\n\nFor dynamic single cpu online, we synchronize all the logical cpus and\ndo the MTRR/PAT init on the AP that is coming online.\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "86886e55b273f565935491816c7c96b82469d4f8",
      "tree": "0045d68e4720f545f546e216c71104ab31d9d80c",
      "parents": [
        "840c2baf2d4cdf35ecc3b7fcbba7740f97de30a4"
      ],
      "author": {
        "name": "Joseph Cihula",
        "email": "joseph.cihula@intel.com",
        "time": "Tue Jun 30 19:31:07 2009 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Tue Jul 21 11:50:04 2009 -0700"
      },
      "message": "x86, intel_txt: Intel TXT Sx shutdown support\n\nSupport for graceful handling of sleep states (S3/S4/S5) after an Intel(R) TXT launch.\n\nWithout this patch, attempting to place the system in one of the ACPI sleep\nstates (S3/S4/S5) will cause the TXT hardware to treat this as an attack and\nwill cause a system reset, with memory locked.  Not only may the subsequent\nmemory scrub take some time, but the platform will be unable to enter the\nrequested power state.\n\nThis patch calls back into the tboot so that it may properly and securely clean\nup system state and clear the secrets-in-memory flag, after which it will place\nthe system into the requested sleep state using ACPI information passed by the kernel.\n\n arch/x86/kernel/smpboot.c     |    2 ++\n drivers/acpi/acpica/hwsleep.c |    3 +++\n kernel/cpu.c                  |    7 ++++++-\n 3 files changed, 11 insertions(+), 1 deletion(-)\n\nSigned-off-by: Joseph Cihula \u003cjoseph.cihula@intel.com\u003e\nSigned-off-by: Shane Wang \u003cshane.wang@intel.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "31950eb66ff47c946fd9c65c2f8c94b6b7ba13fc",
      "tree": "1ab1e09bbe7a0b33bbf19dd725172827bac5bb88",
      "parents": [
        "ac1b7c378ef26fba6694d5f118fe7fc16fee2fe2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 21:18:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 21:18:12 2009 -0700"
      },
      "message": "mm/init: cpu_hotplug_init() must be initialized before SLAB\n\nSLAB uses get/put_online_cpus() which use a mutex which is itself only\ninitialized when cpu_hotplug_init() is called.  Currently we hang suring\nboot in SLAB due to doing that too late.\n\nReported by James Bottomley and Sachin Sant (and possibly others).\nDebugged by Benjamin Herrenschmidt.\n\nThis just removes the dynamic initialization of the data structures, and\nreplaces it with a static one, avoiding this dependency entirely, and\nremoving one unnecessary special initcall.\n\nTested-by: Sachin Sant \u003csachinp@in.ibm.com\u003e\nTested-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nTested-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b17fa506c418e9fb02bbbc7f426d2bbb5b247a6",
      "tree": "bc010d85f71ff6f6f8fa3e7038d8ad5eb3526aec",
      "parents": [
        "0451fb2ebc4f65c265bb51d71a2fc986ebf20218"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:12 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:12 2009 +1030"
      },
      "message": "cpumask: use set_cpu_active in init/main.c\n\ncpu_active_map is deprecated in favor of cpu_active_mask, which is\nconst for safety: we use accessors now (set_cpu_active) is we really\nwant to make a change.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a0e280e0f33f6c859a235fb69a875ed8f3420388",
      "tree": "c41b0ad22c4195bef2bfdd36437e20d232b9586b",
      "parents": [
        "30aafdba6f78619274a977d67283a681bedbcbbd"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 07 16:19:46 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 11:36:14 2009 -0800"
      },
      "message": "stop_machine/cpu hotplug: fix disable_nonboot_cpus\n\ndisable_nonboot_cpus calls _cpu_down. But _cpu_down requires that the\ncaller already created the stop_machine workqueue (like cpu_down does).\nOtherwise a call to stop_machine will lead to accesses to random memory\nregions.\n\nWhen introducing this new interface (9ea09af3bd3090e8349ca2899ca2011bd94cda85\n\"stop_machine: introduce stop_machine_create/destroy\") I missed the second\ncall site of _cpu_down.\nSo add the missing stop_machine_create/destroy calls to disable_nonboot_cpus\nas well.\n\nFixes suspend-to-ram/disk and also this bug:\n\n[  286.547348] BUG: unable to handle kernel paging request at 6b6b6b6b\n[  286.548940] IP: [\u003cc0150ca4\u003e] __stop_machine+0x88/0xe3\n[  286.550598] Oops: 0002 [#1] SMP\n[  286.560580] Pid: 3273, comm: halt Not tainted (2.6.28-06127-g238c6d5\n[  286.560580] EIP: is at __stop_machine+0x88/0xe3\n[  286.560580] Process halt (pid: 3273, ti\u003df1a28000 task\u003df4530f30\n[  286.560580] Call Trace:\n[  286.560580]  [\u003cc03d04e4\u003e] ? _cpu_down+0x10f/0x234\n[  286.560580]  [\u003cc012a57e\u003e] ? disable_nonboot_cpus+0x58/0xdc\n[  286.560580]  [\u003cc01360c0\u003e] ? kernel_poweroff+0x22/0x39\n[  286.560580]  [\u003cc0136301\u003e] ? sys_reboot+0xde/0x14c\n[  286.560580]  [\u003cc01331b2\u003e] ? complete_signal+0x179/0x191\n[  286.560580]  [\u003cc0133396\u003e] ? send_signal+0x1cc/0x1e1\n[  286.560580]  [\u003cc03de418\u003e] ? _spin_unlock_irqrestore+0x2d/0x3c\n[  286.560580]  [\u003cc0133b65\u003e] ? group_send_signal_info+0x58/0x61\n[  286.560580]  [\u003cc0133b9e\u003e] ? kill_pid_info+0x30/0x3a\n[  286.560580]  [\u003cc0133d49\u003e] ? sys_kill+0x75/0x13a\n[  286.560580]  [\u003cc01a06cb\u003e] ? mntput_no_expire+ox1f/0x101\n[  286.560580]  [\u003cc019b3b3\u003e] ? dput+0x1e/0x105\n[  286.560580]  [\u003cc018ef87\u003e] ?  __fput+0x150/0x158\n[  286.560580]  [\u003cc0157abf\u003e] ? audit_syscall_entry+0x137/0x159\n[  286.560580]  [\u003cc010329f\u003e] ? sysenter_do_call+0x12/0x34\n\nReported-and-tested-by: \"Justin P. Mattock\" \u003cjustinmattock@gmail.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ea09af3bd3090e8349ca2899ca2011bd94cda85",
      "tree": "36396347bb750a6aecb0771cfebf9887aaaae492",
      "parents": [
        "c298be74492bece102f3379d14015638f1fd1fac"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Mon Dec 22 12:36:30 2008 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 05 08:40:14 2009 +1030"
      },
      "message": "stop_machine: introduce stop_machine_create/destroy.\n\nIntroduce stop_machine_create/destroy. With this interface subsystems\nthat need a non-failing stop_machine environment can create the\nstop_machine machine threads before actually calling stop_machine.\nWhen the threads aren\u0027t needed anymore they can be killed with\nstop_machine_destroy again.\n\nWhen stop_machine gets called and the threads aren\u0027t present they\nwill be created and destroyed automatically. This restores the old\nbehaviour of stop_machine.\n\nThis patch also converts cpu hotplug to the new interface since it\nis special: cpu_down calls __stop_machine instead of stop_machine.\nHowever the kstop threads will only be created when stop_machine\ngets called.\n\nChanging the code so that the threads would be created automatically\non __stop_machine is currently not possible: when __stop_machine gets\ncalled we hold cpu_add_remove_lock, which is the same lock that\ncreate_rt_workqueue would take. So the workqueue needs to be created\nbefore the cpu hotplug code locks cpu_add_remove_lock.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e0b582ec56f1a1d8b30ebf340a7b91fb09f26c8c",
      "tree": "d96b9b657eda13b902a712dfb4f95321133caf1c",
      "parents": [
        "c309b917cab55799ea489d7b5f1b77025d9f8462"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:28 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:28 2009 +1030"
      },
      "message": "cpumask: convert kernel/cpu.c\n\nImpact: Reduce kernel stack and memory usage, use new cpumask API.\n\nUse cpumask_var_t for take_cpu_down() stack var, and frozen_cpus.\n\nNote that notify_cpu_starting() can be called before core_initcall\nallocates frozen_cpus, but the NULL check is optimized out by gcc for\nthe CONFIG_CPUMASK_OFFSTACK\u003dn case.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3fa41520696fec2815e2d88fbcccdda77ba4d693",
      "tree": "418c698535189083b9cbed28bc30e895bda147e3",
      "parents": [
        "ae7a47e72e1a0b5e2b46d1596bc2c22942a73023"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:16 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:16 2008 +1030"
      },
      "message": "cpumask: make set_cpu_*/init_cpu_* out-of-line\n\nThey\u0027re only for use in boot/cpu hotplug code anyway, and this avoids\nthe use of deprecated cpu_*_map.\n\nStephen Rothwell points out that gcc 4.2.4 (on powerpc at least)\ndidn\u0027t like the cast away of const anyway:\n\n  include/linux/cpumask.h: In function \u0027set_cpu_possible\u0027:\n  include/linux/cpumask.h:1052: warning: passing argument 2 of \u0027cpumask_set_cpu\u0027 discards qualifiers from pointer target type\n\nSo this kills two birds with one stone.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b3199c025d1646e25e7d1d640dd605db251dccf8",
      "tree": "752bd257f2db6b4d39bf9cdce18ca25ade5e63a9",
      "parents": [
        "cb78a0ce69fad2026825f957e24e2d9cda1ec9f1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:14 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:14 2008 +1030"
      },
      "message": "cpumask: switch over to cpu_online/possible/active/present_mask: core\n\nImpact: cleanup\n\nThis implements the obsolescent cpu_online_map in terms of\ncpu_online_mask, rather than the other way around.  Same for the other\nmaps.\n\nThe documentation comments are also updated to refer to _mask rather\nthan _map.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n"
    },
    {
      "commit": "98a79d6a50181ca1ecf7400eda01d5dc1bc0dbf0",
      "tree": "e8829ee975b77745da153b9d23601e3a1497ad68",
      "parents": [
        "6c34bc2976b30dc8b56392c020e25bae1f363cab"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:19:41 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:19:41 2008 +1030"
      },
      "message": "cpumask: centralize cpu_online_map and cpu_possible_map\n\nImpact: cleanup\n\nEach SMP arch defines these themselves.  Move them to a central\nlocation.\n\nTwists:\n1) Some archs (m32, parisc, s390) set possible_map to all 1, so we add a\n   CONFIG_INIT_ALL_POSSIBLE for this rather than break them.\n\n2) mips and sparc32 \u0027#define cpu_possible_map phys_cpu_present_map\u0027.\n   Those archs simply have phys_cpu_present_map replaced everywhere.\n\n3) Alpha defined cpu_possible_map to cpu_present_map; this is tricky\n   so I just manipulate them both in sync.\n\n4) IA64, cris and m32r have gratuitous \u0027extern cpumask_t cpu_possible_map\u0027\n   declarations.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nReviewed-by: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nTested-by: Tony Luck \u003ctony.luck@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Mike Travis \u003ctravis@sgi.com\u003e\nCc: ink@jurassic.park.msu.ru\nCc: rmk@arm.linux.org.uk\nCc: starvik@axis.com\nCc: tony.luck@intel.com\nCc: takata@linux-m32r.org\nCc: ralf@linux-mips.org\nCc: grundler@parisc-linux.org\nCc: paulus@samba.org\nCc: schwidefsky@de.ibm.com\nCc: lethal@linux-sh.org\nCc: wli@holomorphy.com\nCc: davem@davemloft.net\nCc: jdike@addtoit.com\nCc: mingo@redhat.com\n"
    },
    {
      "commit": "8419641450edc838a6ce7cdf0f99d262bf0af2d5",
      "tree": "1a396f0bafecd6ebcf15db23ca89b0cb8e33bda0",
      "parents": [
        "b0385146bcdd24b0390c2b60fd05a083888835db"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Nov 22 17:36:44 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 10:03:37 2008 -0800"
      },
      "message": "cpuinit fixes in kernel/*\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d3854a37e8b767a51aba38ed6d22817b0631e33",
      "tree": "3b55cc93720b2e525460216b196ed20298ae985b",
      "parents": [
        "75fa67706cce5272bcfc51ed646f2da21f3bdb6e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Nov 05 13:39:10 2008 +1100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 06 09:05:33 2008 +0100"
      },
      "message": "cpumask: introduce new API, without changing anything\n\nImpact: introduce new APIs\n\nWe want to deprecate cpumasks on the stack, as we are headed for\ngynormous numbers of CPUs.  Eventually, we want to head towards an\nundefined \u0027struct cpumask\u0027 so they can never be declared on stack.\n\n1) New cpumask functions which take pointers instead of copies.\n   (cpus_* -\u003e cpumask_*)\n\n2) Several new helpers to reduce requirements for temporary cpumasks\n   (cpumask_first_and, cpumask_next_and, cpumask_any_and)\n\n3) Helpers for declaring cpumasks on or offstack for large NR_CPUS\n   (cpumask_var_t, alloc_cpumask_var and free_cpumask_var)\n\n4) \u0027struct cpumask\u0027 for explicitness and to mark new-style code.\n\n5) Make iterator functions stop at nr_cpu_ids (a runtime constant),\n   not NR_CPUS for time efficiency and for smaller dynamic allocations\n   in future.\n\n6) cpumask_copy() so we can allocate less than a full cpumask eventually\n   (for alloc_cpumask_var), and so we can eliminate the \u0027struct cpumask\u0027\n   definition eventually.\n\n7) work_on_cpu() helper for doing task on a CPU, rather than saving old\n   cpumask for current thread and manipulating it.\n\n8) smp_call_function_many() which is smp_call_function_mask() except\n   taking a cpumask pointer.\n\nNote that this patch simply introduces the new functions and leaves\nthe obsolescent ones in place.  This is to simplify the transition\npatches.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "990d0f2ced23052abc7efa09bd05bff34e00cf73",
      "tree": "df9f3fe5c0417102586087cec63e1d813a8f29cb",
      "parents": [
        "85ba94ba0592296053f7f2846812173424afe1cb",
        "34b3ede2353604ec9861c1d900b2a835ff85de47",
        "e545a6140b698b2494daf0b32107bdcc5e901390",
        "d294eb83d8d39a29f01dad391f15fc3a29aa04f9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 08 11:31:02 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 08 11:31:02 2008 +0200"
      },
      "message": "Merge branches \u0027sched/devel\u0027, \u0027sched/cpu-hotplug\u0027, \u0027sched/cpusets\u0027 and \u0027sched/urgent\u0027 into sched/core\n"
    },
    {
      "commit": "e545a6140b698b2494daf0b32107bdcc5e901390",
      "tree": "63f302e25ba7a0705bbf051f3817fac8f8b98aba",
      "parents": [
        "7686ad5606f08d9dfb33a2087a36c8366366015b"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Sun Sep 07 16:57:22 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 08 19:25:24 2008 +0200"
      },
      "message": "kernel/cpu.c: create a CPU_STARTING cpu_chain notifier\n\nRight now, there is no notifier that is called on a new cpu, before the new\ncpu begins processing interrupts/softirqs.\nVarious kernel function would need that notification, e.g. kvm works around\nby calling smp_call_function_single(), rcu polls cpu_online_map.\n\nThe patch adds a CPU_STARTING notification. It also adds a helper function\nthat sends the message to all cpu_chain handlers.\n\nTested on x86-64.\nAll other archs are untested. Especially on sparc, I\u0027m not sure if I got\nit right.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ba35573ad9a149a3af19625b502679283382f6b",
      "tree": "01e19ef5be3a247e310745c09134837b990dda77",
      "parents": [
        "38736f475071b80b66be28af7b44c854073699cc"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Sun Aug 31 19:58:49 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 06 19:13:59 2008 +0200"
      },
      "message": "kernel/cpu.c: Move the CPU_DYING notifiers\n\nWhen a cpu is taken offline, the CPU_DYING notifiers are called on the\ndying cpu. According to \u003clinux/notifiers.h\u003e, the cpu should be \"not\nrunning any task, not handling interrupts, soon dead\".\n\nFor the current implementation, this is not true:\n- __cpu_disable can fail. If it fails, then the cpu will remain alive\n  and happy.\n- At least on x86, __cpu_disable() briefly enables the local interrupts\n  to handle any outstanding interrupts.\n\nWhat about moving CPU_DYING down a few lines, behind the __cpu_disable()\nline?\nThere are only two CPU_DYING handlers in the kernel right now: one in\nkvm, one in the scheduler. Both should work with the patch applied\n[and: I\u0027m not sure if either one handles a failing __cpu_disable()]\n\nThe patch survives simple offlining a cpu. kvm untested due to lack\nof a test setup.\n\nSigned-off-By: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ee1062b4ee82a56294808a065b64f4bc6781a56",
      "tree": "6524b1df35cf4be3fd66d767a5b1a4c170be63d8",
      "parents": [
        "74768ed833344bb0f82b97cee46320a3d7f09ecd"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Tue Aug 12 15:08:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:28 2008 -0700"
      },
      "message": "cpu hotplug: s390 doesn\u0027t support additional_cpus anymore.\n\ns390 doesn\u0027t support the additional_cpus kernel parameter anymore since a\nlong time.  So we better update the code and documentation to reflect\nthat.\n\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.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": "279ef6bbb8308488398c8f33b04c760148428378",
      "tree": "bc2b925ce5ed3f943d57a2adc99324cf308712e7",
      "parents": [
        "77ae651347bdd46830da8b28b1efc5e4a9d7cbd0"
      ],
      "author": {
        "name": "Dmitry Adamushko",
        "email": "dmitry.adamushko@gmail.com",
        "time": "Wed Jul 30 12:34:04 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 16:32:41 2008 +0200"
      },
      "message": "sched, cpu hotplug: fix set_cpus_allowed() use in hotplug callbacks\n\nMark Langsdorf reported:\n\n\u003e One of my co-workers noticed that the powernow-k8\n\u003e driver no longer restarts when a CPU core is\n\u003e hot-disabled and then hot-enabled on AMD quad-core\n\u003e systems.\n\u003e\n\u003e The following comands work fine on 2.6.26 and fail\n\u003e on 2.6.27-rc1:\n\u003e\n\u003e echo 0 \u003e /sys/devices/system/cpu/cpu3/online\n\u003e echo 1 \u003e /sys/devices/system/cpu/cpu3/online\n\u003e find /sys -name cpufreq\n\u003e\n\u003e For 2.6.26, the find will return a cpufreq\n\u003e directory for each processor.  In 2.6.27-rc1,\n\u003e the cpu3 directory is missing.\n\u003e\n\u003e After digging through the code, the following\n\u003e logic is failing when the core is hot-enabled\n\u003e at runtime.  The code works during the boot\n\u003e sequence.\n\u003e\n\u003e       cpumask_t \u003d current-\u003ecpus_allowed;\n\u003e       set_cpus_allowed_ptr(current, \u0026cpumask_of_cpu(cpu));\n\u003e       if (smp_processor_id() !\u003d cpu)\n\u003e               return -ENODEV;\n\nSo set the CPU active before calling the CPU_ONLINE notifier chain,\nthere are a handful of notifiers that use set_cpus_allowed().\n\nThis fix also solves the problem with x86-microcode. I\u0027ve sent\nalternative patches for microcode, but as this \"rely on\nset_cpus_allowed_ptr() being workable in cpu-hotplug(CPU_ONLINE, ...)\"\nassumption seems to be more broad than what we thought, perhaps this fix\nshould be applied.\n\nWith this patch we define that by the moment CPU_ONLINE is being sent,\na \u0027cpu\u0027 is online and ready for tasks to be migrated onto it.\n\nSigned-off-by: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nReported-by: Mark Langsdorf \u003cmark.langsdorf@amd.com\u003e\nTested-by: Mark Langsdorf \u003cmark.langsdorf@amd.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9e3ee1c39c0cc71222f9980ccbf87fe072897eef",
      "tree": "99462000e6f0d4f907cb2fc690f19d4d441ba0f3",
      "parents": [
        "e56b3bc7942982ac2589c942fb345e38bc7a341a",
        "f934fb19ef34730263e6afc01e8ec27a8a71470f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 28 23:32:00 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 28 23:32:00 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into cpus4096\n\nConflicts:\n\n\tkernel/stop_machine.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e56b3bc7942982ac2589c942fb345e38bc7a341a",
      "tree": "8130492904f5bb9cff061f62ebb1c5d6eed3308b",
      "parents": [
        "414f746d232d41ed6ae8632c4495ae795373c44b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 11:32:33 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 28 22:20:41 2008 +0200"
      },
      "message": "cpu masks: optimize and clean up cpumask_of_cpu()\n\nClean up and optimize cpumask_of_cpu(), by sharing all the zero words.\n\nInstead of stupidly generating all possible i\u003d0...NR_CPUS 2^i patterns\ncreating a huge array of constant bitmasks, realize that the zero words\ncan be shared.\n\nIn other words, on a 64-bit architecture, we only ever need 64 of these\narrays - with a different bit set in one single world (with enough zero\nwords around it so that we can create any bitmask by just offsetting in\nthat big array). And then we just put enough zeroes around it that we\ncan point every single cpumask to be one of those things.\n\nSo when we have 4k CPU\u0027s, instead of having 4k arrays (of 4k bits each,\nwith one bit set in each array - 2MB memory total), we have exactly 64\narrays instead, each 8k bits in size (64kB total).\n\nAnd then we just point cpumask(n) to the right position (which we can\ncalculate dynamically). Once we have the right arrays, getting\n\"cpumask(n)\" ends up being:\n\n  static inline const cpumask_t *get_cpu_mask(unsigned int cpu)\n  {\n          const unsigned long *p \u003d cpu_bit_bitmap[1 + cpu % BITS_PER_LONG];\n          p -\u003d cpu / BITS_PER_LONG;\n          return (const cpumask_t *)p;\n  }\n\nThis brings other advantages and simplifications as well:\n\n - we are not wasting memory that is just filled with a single bit in\n   various different places\n\n - we don\u0027t need all those games to re-create the arrays in some dense\n   format, because they\u0027re already going to be dense enough.\n\nif we compile a kernel for up to 4k CPU\u0027s, \"wasting\" that 64kB of memory\nis a non-issue (especially since by doing this \"overlapping\" trick we\nprobably get better cache behaviour anyway).\n\n[ mingo@elte.hu:\n\n  Converted Linus\u0027s mails into a commit. See:\n\n     http://lkml.org/lkml/2008/7/27/156\n     http://lkml.org/lkml/2008/7/28/320\n\n  Also applied a family filter - which also has the side-effect of leaving\n  out the bits where Linus calls me an idio... Oh, never mind ;-)\n]\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eeec4fad963490821348a331cca6102ae1c4a7a3",
      "tree": "163a7d9414d719fccac096d1ba822416f705b397",
      "parents": [
        "04321587584272f4e8b9818f319f40caf8eeee13"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:30 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:30 2008 +1000"
      },
      "message": "stop_machine(): stop_machine_run() changed to use cpu mask\n\nInstead of a \"cpu\" arg with magic values NR_CPUS (any cpu) and ~0 (all\ncpus), pass a cpumask_t.  Allow NULL for the common case (where we\ndon\u0027t care which CPU the function is run on): temporary cpumask_t\u0027s\nare usually considered bad for stack space.\n\nThis deprecates stop_machine_run, to be removed soon when all the\ncallers are dead.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "04321587584272f4e8b9818f319f40caf8eeee13",
      "tree": "5bf00c36a182644cc2c4fe2577b14e050a49418b",
      "parents": [
        "ffdb5976c47609c862917d4c186ecbb5706d2dda"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:29 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:29 2008 +1000"
      },
      "message": "Hotplug CPU: don\u0027t check cpu_online after take_cpu_down\n\nAkinobu points out that if take_cpu_down() succeeds, the cpu must be offline.\nRemove the cpu_online() check, and put a BUG_ON().\n\nQuoting Akinobu Mita:\n   Actually the cpu_online() check was necessary before appling this\n   stop_machine: simplify patch.\n\n   With old __stop_machine_run(), __stop_machine_run() could succeed\n   (return !IS_ERR(p) value) even if take_cpu_down() returned non-zero value.\n   The return value of take_cpu_down() was obtained through kthread_stop()..\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Akinobu Mita\" \u003cakinobu.mita@gmail.com\u003e\n"
    },
    {
      "commit": "ffdb5976c47609c862917d4c186ecbb5706d2dda",
      "tree": "7a8485260922290080094adc25f3cbebd4ad506b",
      "parents": [
        "5c2aed622571ac7c3c6ec182d6d3c318e4b45c8b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:28 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:29 2008 +1000"
      },
      "message": "Simplify stop_machine\n\nstop_machine creates a kthread which creates kernel threads.  We can\ncreate those threads directly and simplify things a little.  Some care\nmust be taken with CPU hotunplug, which has special needs, but that code\nseems more robust than it was in the past.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\n"
    },
    {
      "commit": "5a7a201c51c324876d00a54e7208af6af12d1ca4",
      "tree": "c996456a44722bc8bd58661c5d869e9d9d1d2ea5",
      "parents": [
        "0bc3cc03fa6e1c20aecb5a33356bcaae410640b9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 26 16:50:47 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 26 16:48:59 2008 +0200"
      },
      "message": "cpumask: export cpumask_of_cpu_map\n\nfix:\n\n ERROR: \"cpumask_of_cpu_map\" [drivers/acpi/processor.ko] undefined!\n ERROR: \"cpumask_of_cpu_map\" [arch/x86/kernel/microcode.ko] undefined!\n ERROR: \"cpumask_of_cpu_map\" [arch/x86/kernel/cpu/cpufreq/speedstep-ich.ko] undefined!\n ERROR: \"cpumask_of_cpu_map\" [arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko] undefined!\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6524d938b3360504b43a1278b5a8403e85383d1a",
      "tree": "8edbe9e88883e992f63c68ca0f1ea3ab4594ebb9",
      "parents": [
        "b8d317d10cca76cabe6b03ebfeb23cc99118b731"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Thu Jul 24 18:21:30 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 26 16:40:33 2008 +0200"
      },
      "message": "cpumask: put cpumask_of_cpu_map in the initdata section\n\n  * Create the cpumask_of_cpu_map statically in the init data section\n    using NR_CPUS but replace it during boot up with one sized by\n    nr_cpu_ids (num possible cpus).\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b8d317d10cca76cabe6b03ebfeb23cc99118b731",
      "tree": "a997d21960099095822ffbfe8be4d3f6176f33a9",
      "parents": [
        "024e8ac04453b3525448c31ef39848cf675ba6db"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Thu Jul 24 18:21:29 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 26 16:40:32 2008 +0200"
      },
      "message": "cpumask: make cpumask_of_cpu_map generic\n\nIf an arch doesn\u0027t define cpumask_of_cpu_map, create a generic\nstatically-initialized one for them.  This allows removal of the buggy\ncpumask_of_cpu() macro (\u0026cpumask_of_cpu() gives address of\nout-of-scope var).\n\nAn arch with NR_CPUS of 4096 probably wants to allocate this itself\nbased on the actual number of CPUs, since otherwise they\u0027re using 2MB\nof rodata (1024 cpus means 128k).  That\u0027s what\nCONFIG_HAVE_CPUMASK_OF_CPU_MAP is for (only x86/64 does so at the\nmoment).\n\nIn future as we support more CPUs, we\u0027ll need to resort to a\nget_cpu_map()/put_cpu_map() allocation scheme.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3da1c84c00c7e5fa8348336bd8c342f9128b0f14",
      "tree": "af960c65a670319fa86846a493a6d97f9fb37cd9",
      "parents": [
        "8616a89ab761239c963eea3a63be383f127cc7e8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:40 2008 -0700"
      },
      "message": "workqueues: make get_online_cpus() useable for work-\u003efunc()\n\nworkqueue_cpu_callback(CPU_DEAD) flushes cwq-\u003ethread under\ncpu_maps_update_begin().  This means that the multithreaded workqueues\ncan\u0027t use get_online_cpus() due to the possible deadlock, very bad and\nvery old problem.\n\nIntroduce the new state, CPU_POST_DEAD, which is called after\ncpu_hotplug_done() but before cpu_maps_update_done().\n\nChange workqueue_cpu_callback() to use CPU_POST_DEAD instead of CPU_DEAD.\nThis means that create/destroy functions can\u0027t rely on get_online_cpus()\nany longer and should take cpu_add_remove_lock instead.\n\n[akpm@linux-foundation.org: fix CONFIG_SMP\u003dn]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f9dce38378f0a4a298e885553d6bb7121376376",
      "tree": "5bfd688c9f356f7216bbc3cef3b4c10153de334b",
      "parents": [
        "26dcce0fabbef75ae426461edf21b5030bad60f3",
        "ba42059fbd0aa1ac91b582412b5fedb1258f241f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 19:36:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 19:36:53 2008 -0700"
      },
      "message": "Merge branch \u0027sched/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: hrtick_enabled() should use cpu_active()\n  sched, x86: clean up hrtick implementation\n  sched: fix build error, provide partition_sched_domains() unconditionally\n  sched: fix warning in inc_rt_tasks() to not declare variable \u0027rq\u0027 if it\u0027s not needed\n  cpu hotplug: Make cpu_active_map synchronization dependency clear\n  cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2)\n  sched: rework of \"prioritize non-migratable tasks over migratable ones\"\n  sched: reduce stack size in isolated_cpu_setup()\n  Revert parts of \"ftrace: do not trace scheduler functions\"\n\nFixed up conflicts in include/asm-x86/thread_info.h (due to the\nTIF_SINGLESTEP unification vs TIF_HRTICK_RESCHED removal) and\nkernel/sched_fair.c (due to cpu_active_map vs for_each_cpu_mask_nr()\nintroduction).\n"
    },
    {
      "commit": "bb2c018b09b681d43f5e08124b83e362647ea82b",
      "tree": "d794902c78f9fdd04ed88a4b8d451ed6f9292ec0",
      "parents": [
        "82638844d9a8581bbf33201cc209a14876eca167",
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:00:54 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:00:54 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into cpus4096\n\nConflicts:\n\n\tdrivers/acpi/processor_throttling.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "39b0fad7121eace85770e7a4c6dc35dfd2879768",
      "tree": "a5d85b06fd656ccb26c906c237fb45dccd46e18c",
      "parents": [
        "e761b7725234276a802322549cee5255305a0930"
      ],
      "author": {
        "name": "Max Krasnyansky",
        "email": "maxk@qualcomm.com",
        "time": "Tue Jul 15 20:56:26 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 13:23:18 2008 +0200"
      },
      "message": "cpu hotplug: Make cpu_active_map synchronization dependency clear\n\nThis goes on top of the cpu_active_map (take 2) patch.\n\nCurrently we depend on the stop_machine to provide nescessesary\nsynchronization for the cpu_active_map updates.\nAs Dmitry Adamushko pointed this is fragile and is not much clearer\nthan the previous scheme. In other words we do not want to depend on\nthe internal stop machine operation here.\nSo make the synchronization rules clear by doing synchronize_sched()\nafter clearing out cpu active bit.\n\nTested on quad-Core2 with:\n\n   while true; do\n      for i in 1 2 3; do\n        echo 0 \u003e /sys/devices/system/cpu/cpu$i/online\n      done\n      for i in 1 2 3; do\n        echo 1 \u003e /sys/devices/system/cpu/cpu$i/online\n      done\n   done\nand\n   stress -c 200\n\nNo lockdep, preempt or other complaints.\n\nSigned-off-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e761b7725234276a802322549cee5255305a0930",
      "tree": "27b351a7d5fc9a93590e0effce1c5adb1bfcebc0",
      "parents": [
        "7ebefa8ceefed44cc321be70afc54a585a68ac0b"
      ],
      "author": {
        "name": "Max Krasnyansky",
        "email": "maxk@qualcomm.com",
        "time": "Tue Jul 15 04:43:49 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 13:22:25 2008 +0200"
      },
      "message": "cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2)\n\nThis is based on Linus\u0027 idea of creating cpu_active_map that prevents\nscheduler load balancer from migrating tasks to the cpu that is going\ndown.\n\nIt allows us to simplify domain management code and avoid unecessary\ndomain rebuilds during cpu hotplug event handling.\n\nPlease ignore the cpusets part for now. It needs some more work in order\nto avoid crazy lock nesting. Although I did simplfy and unify domain\nreinitialization logic. We now simply call partition_sched_domains() in\nall the cases. This means that we\u0027re using exact same code paths as in\ncpusets case and hence the test below cover cpusets too.\nCpuset changes to make rebuild_sched_domains() callable from various\ncontexts are in the separate patch (right next after this one).\n\nThis not only boots but also easily handles\n\twhile true; do make clean; make -j 8; done\nand\n\twhile true; do on-off-cpu 1; done\nat the same time.\n(on-off-cpu 1 simple does echo 0/1 \u003e /sys/.../cpu1/online thing).\n\nSuprisingly the box (dual-core Core2) is quite usable. In fact I\u0027m typing\nthis on right now in gnome-terminal and things are moving just fine.\n\nAlso this is running with most of the debug features enabled (lockdep,\nmutex, etc) no BUG_ONs or lockdep complaints so far.\n\nI believe I addressed all of the Dmitry\u0027s comments for original Linus\u0027\nversion. I changed both fair and rt balancer to mask out non-active cpus.\nAnd replaced cpu_is_offline() with !cpu_active() in the main scheduler\ncode where it made sense (to me).\n\nSigned-off-by: Max Krasnyanskiy \u003cmaxk@qualcomm.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nCc: dmitry.adamushko@gmail.com\nCc: pj@sgi.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b62b8ef906cdf7115af579ce7378886ce3e0ce00",
      "tree": "9017eff86e7a8d22a88d92df88021f01162d7e0e",
      "parents": [
        "26d46867b7d27f68a446b073dac7817721ae4c8f"
      ],
      "author": {
        "name": "Zhang Rui",
        "email": "rui.zhang@intel.com",
        "time": "Tue Apr 29 02:35:56 2008 -0400"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed Jul 16 23:27:01 2008 +0200"
      },
      "message": "force offline the processor during hot-removal\n\nThe ACPI device node for the cpu has already been unregistered\nwhen acpi_processor_handle_eject is called.\nThus we should offline the cpu and continue, rather than a failure here.\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9772\n\nSigned-off-by: Zhang Rui \u003crui.zhang@intel.com\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "82638844d9a8581bbf33201cc209a14876eca167",
      "tree": "961d7f9360194421a71aa644a9d0c176a960ce49",
      "parents": [
        "9982fbface82893e77d211fbabfbd229da6bdde6",
        "63cf13b77ab785e87c867defa8545e6d4a989774"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 16 00:29:07 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 16 00:29:07 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into cpus4096\n\nConflicts:\n\n\tarch/x86/xen/smp.c\n\tkernel/sched_rt.c\n\tnet/iucv/iucv.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "68f4f1ec08e3d95730a2693b99df8260aa0d06ae",
      "tree": "c5deab621f545eac80fcec6608d68cddf6705032",
      "parents": [
        "5c8e1ed1d204a6770ca2854cd3b3597070fe7e5a"
      ],
      "author": {
        "name": "Max Krasnyansky",
        "email": "maxk@qualcomm.com",
        "time": "Thu May 29 11:17:02 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 06 15:25:01 2008 +0200"
      },
      "message": "sched: Move cpu masks from kernel/sched.c into kernel/cpu.c\n\nkernel/cpu.c seems a more logical place for those maps since they do not really\nhave much to do with the scheduler these days.\n\nkernel/cpu.c is now built for the UP kernel too, but it does not affect the size\nthe kernel sections.\n\n$ size vmlinux\n\nbefore\n   text       data        bss        dec        hex    filename\n3313797     307060     310352    3931209     3bfc49    vmlinux\n\nafter\n   text       data        bss        dec        hex    filename\n3313797     307060     310352    3931209     3bfc49    vmlinux\n\nSigned-off-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: pj@sgi.com\nCc: menage@google.com\nCc: rostedt@goodmis.org\nCc: mingo@elte.hu\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "363ab6f1424cdea63e5d182312d60e19077b892a",
      "tree": "e200197412691015ca8de083155985e7e460ecfc",
      "parents": [
        "068b12772a64c2440ef2f64ac5d780688c06576f"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Mon May 12 21:21:13 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 18:35:12 2008 +0200"
      },
      "message": "core: use performance variant for_each_cpu_mask_nr\n\nChange references from for_each_cpu_mask to for_each_cpu_mask_nr\nwhere appropriate\n\nReviewed-by: Paul Jackson \u003cpj@sgi.com\u003e\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "af1f16d08f38ab6f17b5760e6ec9d2b7d3a5ff1a",
      "tree": "7d03fc171300efd43634d2e28d913fd508ab7474",
      "parents": [
        "d40cee245ff6ad05d3448401d7320be82c1c5af1"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Apr 30 00:55:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:54 2008 -0700"
      },
      "message": "kernel: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2ba7e2ae206e9ab24e8937d99d0d5513bfd08e5",
      "tree": "4cdd43bbf03885705fed5c80e982d19d397afaeb",
      "parents": [
        "1e35eaa2d86419470f3f3aed9acd85b8addff25c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Apr 29 01:00:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:11 2008 -0700"
      },
      "message": "simplify cpu_hotplug_begin()/put_online_cpus()\n\ncpu_hotplug_begin() must be always called under cpu_add_remove_lock, this\nmeans that only one process can be cpu_hotplug.active_writer.  So we don\u0027t\nneed the cpu_hotplug.writer_queue, we can wake up the -\u003eactive_writer\ndirectly.\n\nAlso, fix the comment.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nAcked-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@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": "f7b16c108fd044adc422ff21b5d6c16022462fd0",
      "tree": "dbc64c60bd7c1d3f046ac230fdb415b7ab7af4bf",
      "parents": [
        "514a20a5da99aef8e667cc395841a5c4e5f9e8c1"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Tue Apr 29 00:58:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:00 2008 -0700"
      },
      "message": "cpu: fix section mismatch warning in reference to register_cpu_notifier\n\nFix following warnings:\nWARNING: vmlinux.o(.text+0xc60): Section mismatch in reference from the function kvm_init() to the function .cpuinit.text:register_cpu_notifier()\nWARNING: vmlinux.o(.text+0x33869a): Section mismatch in reference from the function xfs_icsb_init_counters() to the function .cpuinit.text:register_cpu_notifier()\nWARNING: vmlinux.o(.text+0x5556a1): Section mismatch in reference from the function acpi_processor_install_hotplug_notify() to the function .cpuinit.text:register_cpu_notifier()\nWARNING: vmlinux.o(.text+0xfe6b28): Section mismatch in reference from the function cpufreq_register_driver() to the function .cpuinit.text:register_cpu_notifier()\n\nregister_cpu_notifier() are only really defined when HOTPLUG_CPU is enabled.\nSo references to the function are OK.\n\nAnnotate it with __ref so we do not get warnings from callers and do not get\nwarnings for the functions/data used by register_cpu_notifier().\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\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": "514a20a5da99aef8e667cc395841a5c4e5f9e8c1",
      "tree": "c95ee722fb4cfc58ebb2fcad5ec7971abc3884de",
      "parents": [
        "9647155ffbce9dffed8a9a4768c8994334b609db"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Tue Apr 29 00:58:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:00 2008 -0700"
      },
      "message": "cpu: fix section mismatch warnings in *cpu_down\n\nFix following warnings:\nWARNING: vmlinux.o(.text+0x75c8d): Section mismatch in reference from the function take_cpu_down() to the variable .cpuinit.data:cpu_chain\nWARNING: vmlinux.o(.text+0x75d2a): Section mismatch in reference from the function _cpu_down() to the variable .cpuinit.data:cpu_chain\nWARNING: vmlinux.o(.text+0x75d4d): Section mismatch in reference from the function _cpu_down() to the variable .cpuinit.data:cpu_chain\nWARNING: vmlinux.o(.text+0x75de4): Section mismatch in reference from the function _cpu_down() to the variable .cpuinit.data:cpu_chain\nWARNING: vmlinux.o(.text+0x75e33): Section mismatch in reference from the function _cpu_down() to the variable .cpuinit.data:cpu_chain\n\ncpu_down is only used from code surrounded by HOTPLUG_CPU so any references to\n__cpuinit is OK.\n\nAdd a few __ref to tech modpost to ignore the references.\n\nThis is just papering over the fact that the cpu hotplug code is fragile with\nrespect to use of HOTPLUG_CPU and in many cases rely on __cpuinit to get rid\nof code when HOTPLUG_CPU is not enabled.  For now this is the least invasive\nchange.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\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": "9647155ffbce9dffed8a9a4768c8994334b609db",
      "tree": "da905e9965a2f5932fb56be66836b1b8804b5f3f",
      "parents": [
        "f718e31819857825315300ea3c2dbc3f26ff3b0e"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Tue Apr 29 00:58:48 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:59 2008 -0700"
      },
      "message": "cpu: fix section mismatch warning in unregister_cpu_notifier\n\nFix following warning:\nWARNING: vmlinux.o(.text+0x75f4e): Section mismatch in reference from the function unregister_cpu_notifier() to the variable .cpuinit.data:cpu_chain\n\nWe know that unregister_cpu_notifier is using HOTPLUG_CPU\nstuff - so ignore these references.\nAnnotating unregister_cpu_notifier had been another option\nbut this caused far more warnings since not all callers were\nannotated __cpuinit.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\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": "f70316dace2bb99730800d47044acb818c6735f6",
      "tree": "03c0178c8d6c0213a82b800f4a3e00c2da9a4d5c",
      "parents": [
        "fc0e474840d1fd96f28fbd76d4f36b80e7ad1cc3"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Apr 04 18:11:06 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:58 2008 +0200"
      },
      "message": "generic: use new set_cpus_allowed_ptr function\n\n  * Use new set_cpus_allowed_ptr() function added by previous patch,\n    which instead of passing the \"newly allowed cpus\" cpumask_t arg\n    by value,  pass it by pointer:\n\n    -int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)\n    +int set_cpus_allowed_ptr(struct task_struct *p, const cpumask_t *new_mask)\n\n  * Modify CPU_MASK_ALL\n\nDepends on:\n\t[sched-devel]: sched: add new set_cpus_allowed_ptr function\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fa7303e22c829a3364b5b7227aec9ed2d8623b2c",
      "tree": "6080eeec19aa52720dd20f3237ad3ca5aef9a82a",
      "parents": [
        "13d8bcd263cf96c67bd4071ad13cd056dca7b0fb"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Fri Feb 08 04:21:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:41 2008 -0800"
      },
      "message": "cpu: fix section mismatch warnings for enable_nonboot_cpus\n\nFix following warning:\nWARNING: o-x86_64/kernel/built-in.o(.text+0x36d8b): Section mismatch in reference from the function enable_nonboot_cpus() to the function .cpuinit.text:_cpu_up()\n\nenable_nonboot_cpus() are used solely from CONFIG_CONFIG_PM_SLEEP_SMP\u003dy\nand PM_SLEEP_SMP imply HOTPLUG_CPU therefore the reference\nto _cpu_up() is valid.\nAnnotate enable_nonboot_cpus() with __ref to silence modpost.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\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": "95402b3829010fe1e208f44e4a158ccade88969a",
      "tree": "3b9895b47623b4673e3c11121980e5171af76bbe",
      "parents": [
        "86ef5c9a8edd78e6bf92879f32329d89b2d55b5a"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "message": "cpu-hotplug: replace per-subsystem mutexes with get_online_cpus()\n\nThis patch converts the known per-subsystem mutexes to get_online_cpus\nput_online_cpus. It also eliminates the CPU_LOCK_ACQUIRE and\nCPU_LOCK_RELEASE hotplug notification events.\n\nSigned-off-by: Gautham  R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "86ef5c9a8edd78e6bf92879f32329d89b2d55b5a",
      "tree": "7bf46885326a6fdbb0c3596855408e9a5634dd3a",
      "parents": [
        "d221938c049f4845da13c8593132595a6b9222a8"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "message": "cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus()\n\nReplace all lock_cpu_hotplug/unlock_cpu_hotplug from the kernel and use\nget_online_cpus and put_online_cpus instead as it highlights the\nrefcount semantics in these operations.\n\nThe new API guarantees protection against the cpu-hotplug operation, but\nit doesn\u0027t guarantee serialized access to any of the local data\nstructures. Hence the changes needs to be reviewed.\n\nIn case of pseries_add_processor/pseries_remove_processor, use\ncpu_maps_update_begin()/cpu_maps_update_done() as we\u0027re modifying the\ncpu_present_map there.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d221938c049f4845da13c8593132595a6b9222a8",
      "tree": "8eae6c7095a3d7d31d7435befc30019540a4d13e",
      "parents": [
        "6b2d7700266b9402e12824e11e0099ae6a4a6a79"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Fri Jan 25 21:08:01 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:01 2008 +0100"
      },
      "message": "cpu-hotplug: refcount based cpu hotplug\n\nThis patch implements a Refcount + Waitqueue based model for\ncpu-hotplug.\n\nNow, a thread which wants to prevent cpu-hotplug, will bump up a global\nrefcount and the thread which wants to perform a cpu-hotplug operation\nwill block till the global refcount goes to zero.\n\nThe readers, if any, during an ongoing cpu-hotplug operation are blocked\nuntil the cpu-hotplug operation is over.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e [For !CONFIG_HOTPLUG_CPU ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "73e753a50dcac7d6d4fa8b9552203ef544a70d77",
      "tree": "7e8569cb99f6792bb436a07ec5ea45632b9c4ecf",
      "parents": [
        "470fd646444c65a5d062a371f5ec8dcedee61239"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Oct 18 23:40:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:44 2007 -0700"
      },
      "message": "CPU HOTPLUG: avoid hotadd when proper possible_map isn\u0027t specified\n\ncpu-hot-add should be fail if cpu is not set in cpu_possible_map.  If go\nahead, the system will panic soon.\n\nEspecially, arch which requires additional_cpus\u003d parameter should handle\nthis.  Tested on ia64.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba25f9dcc4ea6e30839fcab5a5516f2176d5bfed",
      "tree": "3123c03b25dd5c0cd24b6ab4fc16731217838157",
      "parents": [
        "9a2e70572e94e21e7ec4186702d045415422bda0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:43 2007 -0700"
      },
      "message": "Use helpers to obtain task pid in printks\n\nThe task_struct-\u003epid member is going to be deprecated, so start\nusing the helpers (task_pid_nr/task_pid_vnr/task_pid_nr_ns) in\nthe kernel.\n\nThe first thing to start with is the pid, printed to dmesg - in\nthis case we may safely use task_pid_nr(). Besides, printks produce\nmore (much more) than a half of all the explicit pid usage.\n\n[akpm@linux-foundation.org: git-drm went and changed lots of stuff]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a0d8cdb652d35af9319a9e0fb7134de2a276c636",
      "tree": "485219f5bec58c9c6abba9e63e558c2a70b8755e",
      "parents": [
        "12d00f6a121877235a5cacc56386936dd9bb81af"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Thu Oct 18 03:05:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:21 2007 -0700"
      },
      "message": "cpu hotplug: cpu: deliver CPU_UP_CANCELED only to NOTIFY_OKed callbacks with CPU_UP_PREPARE\n\nThe functions in a CPU notifier chain is called with CPU_UP_PREPARE event\nbefore making the CPU online.  If one of the callback returns NOTIFY_BAD, it\nstops to deliver CPU_UP_PREPARE event, and CPU online operation is canceled.\nThen CPU_UP_CANCELED event is delivered to the functions in a CPU notifier\nchain again.\n\nThis CPU_UP_CANCELED event is delivered to the functions which have been\ncalled with CPU_UP_PREPARE, not delivered to the functions which haven\u0027t been\ncalled with CPU_UP_PREPARE.\n\nThe problem that makes existing cpu hotplug error handlings complex is that\nthe CPU_UP_CANCELED event is delivered to the function that has returned\nNOTIFY_BAD, too.\n\nUsually we don\u0027t expect to call destructor function against the object that\nhas failed to initialize.  It is like:\n\n\terr \u003d register_something();\n\tif (err) {\n\t\tunregister_something();\n\t\treturn err;\n\t}\n\nSo it is natural to deliver CPU_UP_CANCELED event only to the functions that\nhave returned NOTIFY_OK with CPU_UP_PREPARE event and not to call the function\nthat have returned NOTIFY_BAD.  This is what this patch is doing.\n\nOtherwise, every cpu hotplug notifiler has to track whether notifiler event is\nfailed or not for each cpu.  (drivers/base/topology.c is doing this with\ntopology_dev_map)\n\nSimilary this patch makes same thing with CPU_DOWN_PREPARE and CPU_DOWN_FAILED\nevnets.\n\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\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": "f3de4be9d5f8551d7880a1f1f5231a30e0161b1f",
      "tree": "9ebd397e6b253d144460f061b95ded60a7b0da0b",
      "parents": [
        "b07e35f94a7b6a059f889b904529ee907dc0634d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Aug 30 23:56:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:22 2007 -0700"
      },
      "message": "PM: Fix dependencies of CONFIG_SUSPEND and CONFIG_HIBERNATION\n\nDependencies of CONFIG_SUSPEND and CONFIG_HIBERNATION introduced by commit\n296699de6bdc717189a331ab6bbe90e05c94db06 \"Introduce CONFIG_SUSPEND for\nsuspend-to-Ram and standby\" are incorrect, as they don\u0027t cover the facts that\n(1) not all architectures support suspend and (2) SMP hibernation is only\npossible on X86 and PPC64 (if CONFIG_PPC64_SWSUSP is set).\n\nSigned-off-by: 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": "db912f963909b3cbc3a059b7528f6a1a1eb6ffae",
      "tree": "85d112b2879782fda2b2ca77413ac73361d0d3b0",
      "parents": [
        "e495606dd09d79f9fa496334ac3958f6ff179d82"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 24 12:23:10 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:49 2007 +0300"
      },
      "message": "HOTPLUG: Add CPU_DYING notifier\n\nKVM wants a notification when a cpu is about to die, so it can disable\nhardware extensions, but at a time when user processes cannot be scheduled\non the cpu, so it doesn\u0027t try to use virtualization extensions after they\nhave been disabled.\n\nThis adds a CPU_DYING notification.  The notification is called in atomic\ncontext on the doomed cpu.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "455c017ae3934797653549704c286e7bcc3a9397",
      "tree": "7b5b67916b064e3ce7868082e0915f37b437aeb8",
      "parents": [
        "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "microcode: use suspend-related CPU hotplug notifications\n\nMake the microcode driver use the suspend-related CPU hotplug notifications\nto handle the CPU hotplug events occuring during system-wide suspend and\nresume transitions.  Remove the global variable suspend_cpu_hotplug\npreviously used for this purpose.\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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\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\nSigned-off-by: 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": "7b0834c26fd796c79dfcc3939ed2b9122b75246f",
      "tree": "870eb42cd02b9012fd0ab06d7efb5e7596376bad",
      "parents": [
        "10ab825bdef8df510f99c703a5a2d9b13a4e31a5"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 09 02:34:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "Remove kthread_bind() call from _cpu_down()\n\nWe are anyway kthread_stop()ping other per-cpu kernel threads after\nmove_task_off_dead_cpu(), so we can do it with the stop_machine_run thread\nas well.\n\nI just checked with Vatsa if there was any subtle reason why they\nhad put in the kthread_bind() in cpu.c. Vatsa cannot seem to recollect\nany and I can\u0027t see any. So let us just remove the kthread_bind.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.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": "e7407dcc69e077ac34a527842db916abfbc458df",
      "tree": "138b24bceee828dc256bb81f2b592926be9f1515",
      "parents": [
        "5be9361cdff17fc76fa0c3e262ead94158555f16"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed May 09 02:34:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "call cpu_chain with CPU_DOWN_FAILED if CPU_DOWN_PREPARE failed\n\nThis makes cpu hotplug symmetrical: if CPU_UP_PREPARE fails we get\nCPU_UP_CANCELED, so we can undo what ever happened on PREPARE.  The same\nshould happen for CPU_DOWN_PREPARE.\n\n[akpm@linux-foundation.org: fix for reduce-size-of-task_struct-on-64-bit-machines]\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Gautham Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\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": "baaca49f415b25fdbe2a8f3c22b39929e450fbfd",
      "tree": "b152b4235fc07fe56619bd3a2e975e5ca90b8c5b",
      "parents": [
        "6f7cc11aa6c7d5002e16096c7590944daece70ed"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 09 02:34:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "Define and use new events,CPU_LOCK_ACQUIRE and CPU_LOCK_RELEASE\n\nThis is an attempt to provide an alternate mechanism for postponing\na hotplug event instead of using a global mechanism like lock_cpu_hotplug.\n\nThe proposal is to add two new events namely CPU_LOCK_ACQUIRE and\nCPU_LOCK_RELEASE. The notification for these two events would be sent\nout before and after a cpu_hotplug event respectively.\n\nDuring the CPU_LOCK_ACQUIRE event, a cpu-hotplug-aware subsystem is\nsupposed to acquire any per-subsystem hotcpu mutex ( Eg. workqueue_mutex\nin kernel/workqueue.c ).\n\nDuring the CPU_LOCK_RELEASE release event the cpu-hotplug-aware subsystem\nis supposed to release the per-subsystem hotcpu mutex.\n\nThe reasons for defining new events as opposed to reusing the existing events\nlike CPU_UP_PREPARE/CPU_UP_FAILED/CPU_ONLINE for locking/unlocking of\nper-subsystem hotcpu mutexes are as follow:\n\n\t- CPU_LOCK_ACQUIRE: All hotcpu mutexes are taken before subsystems\n\tstart handling pre-hotplug events like CPU_UP_PREPARE/CPU_DOWN_PREPARE\n\tetc, thus ensuring a clean handling of these events.\n\n\t- CPU_LOCK_RELEASE: The hotcpu mutexes will be released only after\n\tall subsystems have handled post-hotplug events like CPU_DOWN_FAILED,\n\tCPU_DEAD,CPU_ONLINE etc thereby ensuring that there are no subsequent\n\tclashes amongst the interdependent subsystems after a cpu hotplugs.\n\nThis patch also uses __raw_notifier_call chain in _cpu_up to take care\nof the dependency between the two consequetive calls to\nraw_notifier_call_chain.\n\n[akpm@linux-foundation.org: fix a bug]\nSigned-off-by: 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": "1d64b9cb1dc2a7cd521444e3d908adeccd026356",
      "tree": "31c6c7751b656e74b5ee05159c85154f710e8956",
      "parents": [
        "0c84ce268b69855919b6ac7edc8f11caf21e9c88"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Apr 01 23:49:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Apr 02 10:06:09 2007 -0700"
      },
      "message": "[PATCH] Fix microcode-related suspend problem\n\nFix the regression resulting from the recent change of suspend code\nordering that causes systems based on Intel x86 CPUs using the microcode\ndriver to hang during the resume.\n\nThe problem occurs since the microcode driver uses request_firmware() in\nits CPU hotplug notifier, which is called after tasks has been frozen and\nhangs.  It can be fixed by telling the microcode driver to use the\nmicrocode stored in memory during the resume instead of trying to load it\nfrom disk.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAdrian Bunk \u003cbunk@stusta.de\u003e\nCc: Tigran Aivazian \u003ctigran@aivazian.fsnet.co.uk\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Maxim \u003cmaximlevitsky@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed746e3b18f4df18afa3763155972c5835f284c5",
      "tree": "322a5420ae8ca653839669035fde9f208d03a566",
      "parents": [
        "e3c7db621bed4afb8e231cb005057f2feb5db557"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Feb 10 01:43:32 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:19 2007 -0800"
      },
      "message": "[PATCH] swsusp: Change code ordering in disk.c\n\nChange the ordering of code in kernel/power/disk.c so that device_suspend() is\ncalled before disable_nonboot_cpus() and platform_finish() is called after\nenable_nonboot_cpus() and before device_resume(), as indicated by the recent\ndiscussion on Linux-PM (cf.\nhttp://lists.osdl.org/pipermail/linux-pm/2006-November/004164.html).\n\nThe changes here only affect the built-in swsusp.\n\n[alexey.y.starikovskiy@linux.intel.com: fix LED blinking during image load]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nCc: Alexey Starikovskiy \u003calexey.y.starikovskiy@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b282b6f8a8d1cf3e132ce3769d7d1cac81d9dd2d",
      "tree": "a5201d54c20d85273694fb79d312ed9e1434e86d",
      "parents": [
        "0d103e90f63c4b78f2101f8c0bd303fa049ce9a7"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed Jan 10 23:15:34 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Jan 11 18:18:20 2007 -0800"
      },
      "message": "[PATCH] Change cpu_up and co from __devinit to __cpuinit\n\nCompiling the kernel with CONFIG_HOTPLUG \u003d y and CONFIG_HOTPLUG_CPU \u003d n\nwith CONFIG_RELOCATABLE \u003d y generates the following modpost warnings\n\nWARNING: vmlinux - Section mismatch: reference to .init.data: from\n.text between \u0027_cpu_up\u0027 (at offset 0xc0141b7d) and \u0027cpu_up\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.data: from\n.text between \u0027_cpu_up\u0027 (at offset 0xc0141b9c) and \u0027cpu_up\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.text:__cpu_up\nfrom .text between \u0027_cpu_up\u0027 (at offset 0xc0141bd8) and \u0027cpu_up\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.data: from\n.text between \u0027_cpu_up\u0027 (at offset 0xc0141c05) and \u0027cpu_up\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.data: from\n.text between \u0027_cpu_up\u0027 (at offset 0xc0141c26) and \u0027cpu_up\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.data: from\n.text between \u0027_cpu_up\u0027 (at offset 0xc0141c37) and \u0027cpu_up\u0027\n\nThis is because cpu_up, _cpu_up and __cpu_up (in some architectures) are\ndefined as __devinit\nAND\n__cpu_up calls some __cpuinit functions.\n\nSince __cpuinit would map to __init with this kind of a configuration,\nwe get a .text refering .init.data warning.\n\nThis patch solves the problem by converting all of __cpu_up, _cpu_up\nand cpu_up from __devinit to __cpuinit. The approach is justified since\nthe callers of cpu_up are either dependent on CONFIG_HOTPLUG_CPU or\nare of __init type.\n\nThus when CONFIG_HOTPLUG_CPU\u003dy, all these cpu up functions would land up\nin .text section, and when CONFIG_HOTPLUG_CPU\u003dn, all these functions would\nland up in .init section.\n\nTested on a i386 SMP machine running linux-2.6.20-rc3-mm1.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Vivek Goyal \u003cvgoyal@in.ibm.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e1d9fd2e3d33b2fec3207171ec8ca6e71d5c81c7",
      "tree": "541652a20988e413edeba6bd00d150a07d65227f",
      "parents": [
        "ffaa82008f1aad52a6d3979f49d2a76c2928b60f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Dec 23 16:55:29 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 23 13:59:33 2006 -0800"
      },
      "message": "[PATCH] suspend: fix suspend on single-CPU systems\n\nClark Williams reported that suspend doesnt work on his laptop on\n2.6.20-rc1-rt kernels. The bug was introduced by the following cleanup\ncommit:\n\n commit 112cecb2cc0e7341db92281ba04b26c41bb8146d\n Author: Siddha, Suresh B \u003csuresh.b.siddha@intel.com\u003e\n Date:   Wed Dec 6 20:34:31 2006 -0800\n\n    [PATCH] suspend: don\u0027t change cpus_allowed for task initiating the suspend\n\nbecause with this change \u0027error\u0027 is not initialized to 0 anymore, if\nthere are no other online CPUs. (i.e. if the system is single-CPU).\n\nthe fix is the initialize it to 0. The really weird thing is that my\nversion of gcc does not warn about this non-initialized variable\nsituation ...\n\n(also fix the kernel printk in the error branch, it was missing a\n newline)\n\nReported-by: Clark Williams \u003cwilliams@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "112cecb2cc0e7341db92281ba04b26c41bb8146d",
      "tree": "5eed4de8bfa3ed7e7f71454e82d3e92a5ee36347",
      "parents": [
        "2d4a34c9365c6e3f94a5b26ce296e1fce9b66c8b"
      ],
      "author": {
        "name": "Siddha, Suresh B",
        "email": "suresh.b.siddha@intel.com",
        "time": "Wed Dec 06 20:34:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:28 2006 -0800"
      },
      "message": "[PATCH] suspend: don\u0027t change cpus_allowed for task initiating the suspend\n\nDon\u0027t modify the cpus_allowed of the task initiating the suspend.\n_cpu_down() already makes sure that the task doing the suspend doesn\u0027t run\non dying cpu.\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\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": "4b96b1a10cb00c867103b21f0f2a6c91b705db11",
      "tree": "25b95e00b413025682b933da182caca2a048a475",
      "parents": [
        "d1ed6a3ea10aa7b199c434f6ffd1b6761896567a"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Sun Nov 05 23:52:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 06 01:46:22 2006 -0800"
      },
      "message": "[PATCH] Fix the spurious unlock_cpu_hotplug false warnings\n\nCpu-hotplug locking has a minor race case caused because of setting the\nvariable \"recursive\" to NULL *after* releasing the cpu_bitmask_lock in the\nfunction unlock_cpu_hotplug,instead of doing so before releasing the\ncpu_bitmask_lock.\n\nThis was the cause of most of the recent false spurious lock_cpu_unlock\nwarnings.\n\nThis should fix the problem reported by Martin Lorenz reported in\nhttp://lkml.org/lkml/2006/10/29/127.\n\nThanks to Srinivasa DS for pointing it out.\n\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8fa1d7d3b2c51594c0f3aa151983dd51f605e07d",
      "tree": "8fbc0037f98d1cc3201ca1a816b42ad87930e2db",
      "parents": [
        "bb1d860551c4307b1a7ee9a21b120319075e987e"
      ],
      "author": {
        "name": "Satoru Takeuchi",
        "email": "takeuchi_satoru@jp.fujitsu.com",
        "time": "Sat Oct 28 10:38:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:55 2006 -0700"
      },
      "message": "[PATCH] cpu-hotplug: release `workqueue_mutex\u0027 properly on CPU hot-remove\n\n_cpu_down() acquires `workqueue_mutex\u0027 on its process, but doen\u0027t release it\nif __cpu_disable() fails.\n\nSigned-off-by: Satoru Takeuchi \u003ctakeuchi_satoru@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bd5349cfd2b9bbb10a3dbcd3fe5cbaabe0b2ab9e",
      "tree": "20a55c6592f0934d6dccebb7972d28d120b4badd",
      "parents": [
        "bea493a031fe3337f4fe5479e8e865513828ea76"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 17 00:10:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 17 08:18:48 2006 -0700"
      },
      "message": "[PATCH] Convert cpu hotplug notifiers to use raw_notifier instead of blocking_notifier\n\nThe use of blocking notifier by _cpu_up and _cpu_down in cpu.c has two\nproblem.\n\n1/ An interaction with the workqueue notifier causes lockdep to spit a\n   warning.\n\n2/ A notifier could conceivable be added or removed while _cpu_up or\n   _cpu_down are in process.  As each notifier is called twice (prepare\n   then commit/abort) this could be unhealthy.\n\nTo fix to we simply take cpu_add_remove_lock while adding or removing\nnotifiers to/from the list.\n\nThis makes the \u0027blocking\u0027 usage unnecessary as all accesses to cpu_chain\nare now protected by cpu_add_remove_lock.  So change \"blocking\" to \"raw\" in\nall relevant places.  This fixes 1.\n\nCredit: Andrew Morton\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Michal Piotrowski \u003cmichal.k.k.piotrowski@gmail.com\u003e (reporter)\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e3920fb42c8ddfe63befb54d95c0e13eabacea9b",
      "tree": "08371a71e58e6e9d3ec62dfa6a22b3b5e6ff0fd5",
      "parents": [
        "e8eff5ac294e12531c4195e0c15a222d3c9015e5"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 25 23:32:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:59 2006 -0700"
      },
      "message": "[PATCH] Disable CPU hotplug during suspend\n\nThe current suspend code has to be run on one CPU, so we use the CPU\nhotplug to take the non-boot CPUs offline on SMP machines.  However, we\nshould also make sure that these CPUs will not be enabled by someone else\nafter we have disabled them.\n\nThe functions disable_nonboot_cpus() and enable_nonboot_cpus() are moved to\nkernel/cpu.c, because they now refer to some stuff in there that should\nbetter be static.  Also it\u0027s better if disable_nonboot_cpus() returns an\nerror instead of panicking if something goes wrong, and\nenable_nonboot_cpus() has no reason to panic(), because the CPUs may have\nbeen enabled by the userland before it tries to take them online.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: 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"
    },
    {
      "commit": "aa95387774039096c11803c04011f1aa42d85758",
      "tree": "b8d3c845efedc2d67bcaff0038b4306fa375379c",
      "parents": [
        "2cd7cbdf4bd0d0fe58e4dc903e8b413412595504"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@macmini.osdl.org",
        "time": "Sun Jul 23 12:12:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@macmini.osdl.org",
        "time": "Sun Jul 23 12:12:16 2006 -0700"
      },
      "message": "cpu hotplug: simplify and hopefully fix locking\n\nThe CPU hotplug locking was quite messy, with a recursive lock to\nhandle the fact that both the actual up/down sequence wanted to\nprotect itself from being re-entered, but the callbacks that it\ncalled also tended to want to protect themselves from CPU events.\n\nThis splits the lock into two (one to serialize the whole hotplug\nsequence, the other to protect against the CPU present bitmaps\nchanging). The latter still allows recursive usage because some\nsubsystems (ondemand policy for cpufreq at least) had already gotten\ntoo used to the lax locking, but the locking mistakes are hopefully\nnow less fundamental, and we now warn about recursive lock usage\nwhen we see it, in the hope that it can be fixed.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "65edc68c345cbe21d0b0375c3452a3ed5e322868",
      "tree": "07961d63cdacf95355a8db471c6ff4e321ca94fd",
      "parents": [
        "054cc8a2d808822dadf488a61729e3e550f114c4"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Tue Jun 27 02:54:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:41 2006 -0700"
      },
      "message": "[PATCH] cpu hotplug: make [un]register_cpu_notifier init time only\n\nCPUs come online only at init time (unless CONFIG_HOTPLUG_CPU is defined).\nSo, cpu_notifier functionality need to be available only at init time.\n\nThis patch makes register_cpu_notifier() available only at init time, unless\nCONFIG_HOTPLUG_CPU is defined.\n\nThis patch exports register_cpu_notifier() and unregister_cpu_notifier() only\nif CONFIG_HOTPLUG_CPU is defined.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "81615b624a45621b758380ec45d750483eae281d",
      "tree": "9373ca3e4a484fe4fdac48ae6e6d204c7e560121",
      "parents": [
        "1fb00c6cbd8356f43b46322742f3c01c2a1f02da"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 26 00:24:32 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:16 2006 -0700"
      },
      "message": "[PATCH] Convert kernel/cpu.c to mutexes\n\nConvert kernel/cpu.c from semaphore to mutex.\n\nI\u0027ve reviewed all lock_cpu_hotplug() critical sections, and they all seem to\nfit mutex semantics.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e041c683412d5bf44dc2b109053e3b837b71742d",
      "tree": "9d271066ef379da0c0fb3b8cb4137abd5d2ebba0",
      "parents": [
        "76b81e2b0e2241accebcc68e126bc5ab958661b9"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Mon Mar 27 01:16:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:50 2006 -0800"
      },
      "message": "[PATCH] Notifier chain update: API changes\n\nThe kernel\u0027s implementation of notifier chains is unsafe.  There is no\nprotection against entries being added to or removed from a chain while the\nchain is in use.  The issues were discussed in this thread:\n\n    http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113018709002036\u0026w\u003d2\n\nWe noticed that notifier chains in the kernel fall into two basic usage\nclasses:\n\n\t\"Blocking\" chains are always called from a process context\n\tand the callout routines are allowed to sleep;\n\n\t\"Atomic\" chains can be called from an atomic context and\n\tthe callout routines are not allowed to sleep.\n\nWe decided to codify this distinction and make it part of the API.  Therefore\nthis set of patches introduces three new, parallel APIs: one for blocking\nnotifiers, one for atomic notifiers, and one for \"raw\" notifiers (which is\nreally just the old API under a new name).  New kinds of data structures are\nused for the heads of the chains, and new routines are defined for\nregistration, unregistration, and calling a chain.  The three APIs are\nexplained in include/linux/notifier.h and their implementation is in\nkernel/sys.c.\n\nWith atomic and blocking chains, the implementation guarantees that the chain\nlinks will not be corrupted and that chain callers will not get messed up by\nentries being added or removed.  For raw chains the implementation provides no\nguarantees at all; users of this API must provide their own protections.  (The\nidea was that situations may come up where the assumptions of the atomic and\nblocking APIs are not appropriate, so it should be possible for users to\nhandle these things in their own way.)\n\nThere are some limitations, which should not be too hard to live with.  For\natomic/blocking chains, registration and unregistration must always be done in\na process context since the chain is protected by a mutex/rwsem.  Also, a\ncallout routine for a non-raw chain must not try to register or unregister\nentries on its own chain.  (This did happen in a couple of places and the code\nhad to be changed to avoid it.)\n\nSince atomic chains may be called from within an NMI handler, they cannot use\nspinlocks for synchronization.  Instead we use RCU.  The overhead falls almost\nentirely in the unregister routine, which is okay since unregistration is much\nless frequent that calling a chain.\n\nHere is the list of chains that we adjusted and their classifications.  None\nof them use the raw API, so for the moment it is only a placeholder.\n\n  ATOMIC CHAINS\n  -------------\narch/i386/kernel/traps.c:\t\ti386die_chain\narch/ia64/kernel/traps.c:\t\tia64die_chain\narch/powerpc/kernel/traps.c:\t\tpowerpc_die_chain\narch/sparc64/kernel/traps.c:\t\tsparc64die_chain\narch/x86_64/kernel/traps.c:\t\tdie_chain\ndrivers/char/ipmi/ipmi_si_intf.c:\txaction_notifier_list\nkernel/panic.c:\t\t\t\tpanic_notifier_list\nkernel/profile.c:\t\t\ttask_free_notifier\nnet/bluetooth/hci_core.c:\t\thci_notifier\nnet/ipv4/netfilter/ip_conntrack_core.c:\tip_conntrack_chain\nnet/ipv4/netfilter/ip_conntrack_core.c:\tip_conntrack_expect_chain\nnet/ipv6/addrconf.c:\t\t\tinet6addr_chain\nnet/netfilter/nf_conntrack_core.c:\tnf_conntrack_chain\nnet/netfilter/nf_conntrack_core.c:\tnf_conntrack_expect_chain\nnet/netlink/af_netlink.c:\t\tnetlink_chain\n\n  BLOCKING CHAINS\n  ---------------\narch/powerpc/platforms/pseries/reconfig.c:\tpSeries_reconfig_chain\narch/s390/kernel/process.c:\t\tidle_chain\narch/x86_64/kernel/process.c\t\tidle_notifier\ndrivers/base/memory.c:\t\t\tmemory_chain\ndrivers/cpufreq/cpufreq.c\t\tcpufreq_policy_notifier_list\ndrivers/cpufreq/cpufreq.c\t\tcpufreq_transition_notifier_list\ndrivers/macintosh/adb.c:\t\tadb_client_list\ndrivers/macintosh/via-pmu.c\t\tsleep_notifier_list\ndrivers/macintosh/via-pmu68k.c\t\tsleep_notifier_list\ndrivers/macintosh/windfarm_core.c\twf_client_list\ndrivers/usb/core/notify.c\t\tusb_notifier_list\ndrivers/video/fbmem.c\t\t\tfb_notifier_list\nkernel/cpu.c\t\t\t\tcpu_chain\nkernel/module.c\t\t\t\tmodule_notify_list\nkernel/profile.c\t\t\tmunmap_notifier\nkernel/profile.c\t\t\ttask_exit_notifier\nkernel/sys.c\t\t\t\treboot_notifier_list\nnet/core/dev.c\t\t\t\tnetdev_chain\nnet/decnet/dn_dev.c:\t\t\tdnaddr_chain\nnet/ipv4/devinet.c:\t\t\tinetaddr_chain\n\nIt\u0027s possible that some of these classifications are wrong.  If they are,\nplease let us know or submit a patch to fix them.  Note that any chain that\ngets called very frequently should be atomic, because the rwsem read-locking\nused for blocking chains is very likely to incur cache misses on SMP systems.\n(However, if the chain\u0027s callout routines may sleep then the chain cannot be\natomic.)\n\nThe patch set was written by Alan Stern and Chandra Seetharaman, incorporating\nmaterial written by Keith Owens and suggestions from Paul McKenney and Andrew\nMorton.\n\n[jes@sgi.com: restructure the notifier chain initialization macros]\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6978c7052f2e22c6c40781cdd4eba5c4bce9a789",
      "tree": "eb93e551109b441052db414b7074d8b2a0f19e45",
      "parents": [
        "8cd5283b897f56004631944dd2888e9a7b843f89"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Fri Mar 24 18:45:21 2006 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Mar 24 18:45:21 2006 +0100"
      },
      "message": "BUG_ON() Conversion in kernel/cpu.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner, contains unlikely() and can better optimized away.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "a9d9baa1e819b2f92f9cfa5240f766c535e636a6",
      "tree": "0ae15e5b1071b395affa0ac9abf6fd746ad60b0e",
      "parents": [
        "e0f39591cc178026607fcbbe9a53be435fe8285d"
      ],
      "author": {
        "name": "Ashok Raj",
        "email": "ashok.raj@intel.com",
        "time": "Mon Nov 28 13:43:46 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:42:23 2005 -0800"
      },
      "message": "[PATCH] clean up lock_cpu_hotplug() in cpufreq\n\nThere are some callers in cpufreq hotplug notify path that the lowest\nfunction calls lock_cpu_hotplug().  The lock is already held during\ncpu_up() and cpu_down() calls when the notify calls are broadcast to\nregistered clients.\n\nIdeally if possible, we could disable_preempt() at the highest caller and\nmake sure we dont sleep in the path down in cpufreq-\u003edriver_target() calls\nbut the calls are so intertwined and cumbersome to cleanup.\n\nHence we consistently use lock_cpu_hotplug() and unlock_cpu_hotplug() in\nall places.\n\n - Removed export of cpucontrol semaphore and made it static.\n - removed explicit uses of up/down with lock_cpu_hotplug()\n   so we can keep track of the the callers in same thread context and\n   just keep refcounts without calling a down() that causes a deadlock.\n - Removed current_in_hotplug() uses\n - Removed PF_HOTPLUG_CPU in sched.h introduced for the current_in_hotplug()\n   temporary workaround.\n\nTested with insmod of cpufreq_stat.ko, and logical online/offline\nto make sure we dont have any hang situations.\n\nSigned-off-by: Ashok Raj \u003cashok.raj@intel.com\u003e\nCc: Zwane Mwaikambo \u003czwane@linuxpower.ca\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: \"Siddha, Suresh B\" \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "90d45d17f3e68608ac7ba8fc3d7acce022a19c8e",
      "tree": "615b2f21c3e02e0ec901febd180014fed64a6a01",
      "parents": [
        "330d57fb98a916fa8e1363846540dd420e99499a"
      ],
      "author": {
        "name": "Ashok Raj",
        "email": "ashok.raj@intel.com",
        "time": "Tue Nov 08 21:34:24 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:55:50 2005 -0800"
      },
      "message": "[PATCH] cpu hotplug: fix locking in cpufreq drivers\n\nWhen calling target drivers to set frequency, we take cpucontrol lock.\nWhen we modified the code to accomodate CPU hotplug, there was an attempt\nto take a double lock of cpucontrol leading to a deadlock.  Since the\ncurrent thread context is already holding the cpucontrol lock, we dont need\nto make another attempt to acquire it.\n\nNow we leave a trace in current-\u003eflags indicating current thread already is\nunder cpucontrol lock held, so we dont attempt to do this another time.\n\nThanks to Andrew Morton for the beating:-)\n\nFrom: Brice Goglin \u003cBrice.Goglin@ens-lyon.org\u003e\n\n  Build fix\n\n(akpm: this patch is still unpleasant.  Ashok continues to look for a cleaner\nsolution, doesn\u0027t he?  ;))\n\nSigned-off-by: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@ens-lyon.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c32b6b8e524d2c337767d312814484d9289550cf",
      "tree": "02e634b0b48db6eccc8774369366daa1893921ea",
      "parents": [
        "d434fca737bee0862625c2377b987a7713b6b487"
      ],
      "author": {
        "name": "Ashok Raj",
        "email": "ashok.raj@intel.com",
        "time": "Sun Oct 30 14:59:54 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:14 2005 -0800"
      },
      "message": "[PATCH] create and destroy cpufreq sysfs entries based on cpu notifiers\n\ncpufreq entries in sysfs should only be populated when CPU is online state.\n When we either boot with maxcpus\u003dx and then boot the other cpus by echoing\nto sysfs online file, these entries should be created and destroyed when\nCPU_DEAD is notified.  Same treatement as cache entries under sysfs.\n\nWe place the processor in the lowest frequency, so hw managed P-State\ntransitions can still work on the other threads to save power.\n\nPrimary goal was to just make these directories appear/disapper dynamically.\n\nThere is one in this patch i had to do, which i really dont like myself but\nprobably best if someone handling the cpufreq infrastructure could give\nthis code right treatment if this is not acceptable.  I guess its probably\ngood for the first cut.\n\n- Converting lock_cpu_hotplug()/unlock_cpu_hotplug() to disable/enable preempt.\n  The locking was smack in the middle of the notification path, when the\n  hotplug is already holding the lock. I tried another solution to avoid this\n  so avoid taking locks if we know we are from notification path. The solution\n  was getting very ugly and i decided this was probably good for this iteration\n  until someone who understands cpufreq could do a better job than me.\n\n(akpm: export cpucontrol to GPL modules: drivers/cpufreq/cpufreq_stats.c now\ndoes lock_cpu_hotplug())\n\nSigned-off-by: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Dave Jones \u003cdavej@codemonkey.org.uk\u003e\nCc: Zwane Mwaikambo \u003czwane@holomorphy.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f370513640492641b4046bfd9a6e4714f6ae530d",
      "tree": "46da47197fcbb3614b51c5f1fac841bf26d5e572",
      "parents": [
        "d92de65cab5980c16d4a1c326c1ef9a591892883"
      ],
      "author": {
        "name": "Zwane Mwaikambo",
        "email": "zwane@linuxpower.ca",
        "time": "Sat Jun 25 14:54:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 16:24:29 2005 -0700"
      },
      "message": "[PATCH] i386 CPU hotplug\n\n(The i386 CPU hotplug patch provides infrastructure for some work which Pavel\nis doing as well as for ACPI S3 (suspend-to-RAM) work which Li Shaohua\n\u003cshaohua.li@intel.com\u003e is doing)\n\nThe following provides i386 architecture support for safely unregistering and\nregistering processors during runtime, updated for the current -mm tree.  In\norder to avoid dumping cpu hotplug code into kernel/irq/* i dropped the\ncpu_online check in do_IRQ() by modifying fixup_irqs().  The difference being\nthat on cpu offline, fixup_irqs() is called before we clear the cpu from\ncpu_online_map and a long delay in order to ensure that we never have any\nqueued external interrupts on the APICs.  There are additional changes to s390\nand ppc64 to account for this change.\n\n1) Add CONFIG_HOTPLUG_CPU\n2) disable local APIC timer on dead cpus.\n3) Disable preempt around irq balancing to prevent CPUs going down.\n4) Print irq stats for all possible cpus.\n5) Debugging check for interrupts on offline cpus.\n6) Hacky fixup_irqs() to redirect irqs when cpus go off/online.\n7) play_dead() for offline cpus to spin inside.\n8) Handle offline cpus set in flush_tlb_others().\n9) Grab lock earlier in smp_call_function() to prevent CPUs going down.\n10) Implement __cpu_disable() and __cpu_die().\n11) Enable local interrupts in cpu_enable() after fixup_irqs()\n12) Don\u0027t fiddle with NMI on dead cpu, but leave intact on other cpus.\n13) Program IRQ affinity whilst cpu is still in cpu_online_map on offline.\n\nSigned-off-by: Zwane Mwaikambo \u003czwane@linuxpower.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
