)]}'
{
  "log": [
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "38c7fed2f5ffee17e1fa3e0f78b0e1bf43d52d13",
      "tree": "52544d8dcfadbd5347872eae23939fe387d7c78b",
      "parents": [
        "a5f4f52e82114e85aa1a066bd1a450acc19a464d"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Mon May 25 15:10:58 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu Jun 11 19:27:07 2009 +0300"
      },
      "message": "x86: remove some alloc_bootmem_cpumask_var calling\n\nNow that we set up the slab allocator earlier, we can get rid of some\nalloc_bootmem_cpumask_var() calls in boot code.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "0281b5dc0350cbf6dd21ed558a33cccce77abc02",
      "tree": "4523b6f48722eee44a854207e268c71ae4d84771",
      "parents": [
        "3af968e066d593bc4dacc021715f3e95ddf0996f"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Sat Jun 06 14:50:36 2009 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jun 09 22:30:26 2009 +0930"
      },
      "message": "cpumask: introduce zalloc_cpumask_var\n\nSo can get cpumask_var with cpumask_clear\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4f032ac4122a77dbabf7a24b2739b2790448180f",
      "tree": "6a56afe2e32f346f2d24ac592a7cfdd0263c1629",
      "parents": [
        "2d09cde985702503970d7cc18d762fae17e1cf88"
      ],
      "author": {
        "name": "Jack Steiner",
        "email": "steiner@sgi.com",
        "time": "Thu Apr 02 16:59:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:11 2009 -0700"
      },
      "message": "cpumask: fix slab corruption caused by alloc_cpumask_var_node()\n\nFix slab corruption caused by alloc_cpumask_var_node() overwriting the\ntail end of an off-stack cpumask.\n\nThe function zeros out cpumask bits beyond the last possible cpu.  The\nstarting point for zeroing should be the beginning of the mask offset by a\nbyte count derived from the number of possible cpus.  The offset was\ncalculated in bits instead of bytes.  This resulted in overwriting the end\nof the cpumask.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Mike Travis \u003ctravis.sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.29.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a53008033189ed09bfe241c6b33811ba4ce980d",
      "tree": "86dcdacdd7fbaf671f2487b7a05352aa672fecc1",
      "parents": [
        "5db0e1e9e0f30f160b832a0b5cd1131954bf4f6e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:30 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:30 2009 +1030"
      },
      "message": "cpumask: zero extra bits in alloc_cpumask_var_node\n\nImpact: extra safety checks during transition\n\nWhen CONFIG_CPUMASKS_OFFSTACK is set, the new cpumask_ operators only\nuse bits up to nr_cpu_ids, not NR_CPUS.  Using the old cpus_ operators\non these masks can mean accessing undefined bits.\n\nAfter some discussion, Mike and I decided to err on the side of caution;\nwe zero the \"undefined\" bits in alloc_cpumask_var_node() until all the\nold cpumask functions are removed.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e9690a6e4b1615cb0102e425e04b7ce29e7858e2",
      "tree": "5f852c75ffd22de0d0ee4ee710568e67053465b8",
      "parents": [
        "f320786063a9d1f885d2cf34ab44aa69c1d88f43"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 31 16:45:50 2008 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:13 2009 +1030"
      },
      "message": "cpumask: fix bogus kernel-doc\n\nImpact: fix kernel-doc\n\nalloc_bootmem_cpumask_var() returns avoid.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ec26b805879c7e77865b39ee91b737985e80006d",
      "tree": "d5d5c06c81ff7ed21b061b7d42cfe77d4de8a90b",
      "parents": [
        "7b4967c532045a1983d6d4af5c69cc7c5109f62b"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Dec 19 16:56:52 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Dec 19 16:56:52 2008 +1030"
      },
      "message": "cpumask: documentation for cpumask_var_t\n\nImpact: New kerneldoc comments\n\nAdditional documentation added to all the alloc_cpumask and free_cpumask\nfunctions.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (minor additions)\n"
    },
    {
      "commit": "7b4967c532045a1983d6d4af5c69cc7c5109f62b",
      "tree": "50f385985ed028b5316c1aad4b70ad08bd932e81",
      "parents": [
        "7be7585393d311866653564fbcd10a3232773c0b"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Dec 19 16:56:37 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Dec 19 16:56:37 2008 +1030"
      },
      "message": "cpumask: Add alloc_cpumask_var_node()\n\nImpact: New API\n\nThis will be needed in x86 code to allocate the domain and old_domain\ncpumasks on the same node as where the containing irq_cfg struct is\nallocated.\n\n(Also fixes double-dump_stack on rare CONFIG_DEBUG_PER_CPU_MAPS case)\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (re-impl alloc_cpumask_var)\n"
    },
    {
      "commit": "984f2f377fdfd098f5ae58d09ee04d5e29e6112b",
      "tree": "6f6ea07057f5680586a8ac6f77700c118f253bcb",
      "parents": [
        "cd83e42c6b0413dcbb548c2ead799111ff7e6a13"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Nov 08 20:24:19 2008 +1100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 09 21:09:54 2008 +0100"
      },
      "message": "cpumask: introduce new API, without changing anything, v3\n\nImpact: cleanup\n\nClean up based on feedback from Andrew Morton and others:\n\n - change to inline functions instead of macros\n - add __init to bootmem method\n - add a missing debug check\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd83e42c6b0413dcbb548c2ead799111ff7e6a13",
      "tree": "0110f8f39a8f88aacfbe4f0692b099373523edc0",
      "parents": [
        "2d3854a37e8b767a51aba38ed6d22817b0631e33"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Nov 07 11:12:29 2008 +1100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 07 12:52:30 2008 +0100"
      },
      "message": "cpumask: new API, v2\n\n- add cpumask_of()\n- add free_bootmem_cpumask_var()\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "41df0d61c266998b8049df7fec119cd518a43aa1",
      "tree": "6791fa6e3fdaee51ae348f9fe63972d648beaf5a",
      "parents": [
        "143aa5c53bd3895d42d7c08753fe58293988a69d"
      ],
      "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:23:38 2008 +0200"
      },
      "message": "x86: Add performance variants of cpumask operators\n\n  * Increase performance for systems with large count NR_CPUS by limiting\n    the range of the cpumask operators that loop over the bits in a cpumask_t\n    variable.  This removes a large amount of wasted cpu cycles.\n\n  * Add performance variants of the cpumask operators:\n\n    int cpus_weight_nr(mask)\t     Same using nr_cpu_ids instead of NR_CPUS\n    int first_cpu_nr(mask)\t     Number lowest set bit, or nr_cpu_ids\n    int next_cpu_nr(cpu, mask)\t     Next cpu past \u0027cpu\u0027, or nr_cpu_ids\n    for_each_cpu_mask_nr(cpu, mask)  for-loop cpu over mask using nr_cpu_ids\n\n  * Modify following to use performance variants:\n\n    #define num_online_cpus()\tcpus_weight_nr(cpu_online_map)\n    #define num_possible_cpus()\tcpus_weight_nr(cpu_possible_map)\n    #define num_present_cpus()\tcpus_weight_nr(cpu_present_map)\n\n    #define for_each_possible_cpu(cpu) for_each_cpu_mask_nr((cpu), ...)\n    #define for_each_online_cpu(cpu)   for_each_cpu_mask_nr((cpu), ...)\n    #define for_each_present_cpu(cpu)  for_each_cpu_mask_nr((cpu), ...)\n\n  * Comment added to include/linux/cpumask.h:\n\n    Note: The alternate operations with the suffix \"_nr\" are used\n\t  to limit the range of the loop to nr_cpu_ids instead of\n\t  NR_CPUS when NR_CPUS \u003e 64 for performance reasons.\n\t  If NR_CPUS is \u003c\u003d 64 then most assembler bitmask\n\t  operators execute faster with a constant range, so\n\t  the operator will continue to use NR_CPUS.\n\n\t  Another consideration is that nr_cpu_ids is initialized\n\t  to NR_CPUS and isn\u0027t lowered until the possible cpus are\n\t  discovered (including any disabled cpus).  So early uses\n\t  will span the entire range of NR_CPUS.\n\n    (The net effect is that for systems with 64 or less CPU\u0027s there are no\n     functional changes.)\n\nFor inclusion into sched-devel/latest tree.\n\nBased on:\n\tgit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git\n    +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\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\n"
    },
    {
      "commit": "476f35348eb8d2a827765992899fea78b7dcc46f",
      "tree": "81dbace9de3d4ffa3ecc67bffe265134962117bd",
      "parents": [
        "aee16b3cee2746880e40945a9b5bff4f309cfbc4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sun May 06 14:48:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "Safer nr_node_ids and nr_node_ids determination and initial values\n\nThe nr_cpu_ids value is currently only calculated in smp_init.  However, it\nmay be needed before (SLUB needs it on kmem_cache_init!) and other kernel\ncomponents may also want to allocate dynamically sized per cpu array before\nsmp_init.  So move the determination of possible cpus into sched_init()\nwhere we already loop over all possible cpus early in boot.\n\nAlso initialize both nr_node_ids and nr_cpu_ids with the highest value they\ncould take.  If we have accidental users before these values are determined\nthen the current valud of 0 may cause too small per cpu and per node arrays\nto be allocated.  If it is set to the maximum possible then we only waste\nsome memory for early boot users.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53b8a315b76a3f3c70a5644976c0095460eb13d8",
      "tree": "f407a607adb1f552942aef9150ec709ed3f01798",
      "parents": [
        "74c7aa8b8581e0ba8d6d17c623b9279aaabbb0cf"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Feb 20 13:57:51 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 20 17:10:13 2007 -0800"
      },
      "message": "[PATCH] Convert highest_possible_processor_id to nr_cpu_ids\n\nWe frequently need the maximum number of possible processors in order to\nallocate arrays for all processors.  So far this was done using\nhighest_possible_processor_id().  However, we do need the number of\nprocessors not the highest id.  Moreover the number was so far dynamically\ncalculated on each invokation.  The number of possible processors does not\nchange when the system is running.  We can therefore calculate that number\nonce.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Frederik Deweerdt \u003cfrederik.deweerdt@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6220ec7844fda2686496013a66b5b9169976b991",
      "tree": "7274cbe70f0ef3da085e1f74e3605fa8d1cfc777",
      "parents": [
        "e51959faa61278c762389802faf8ba1a40676628"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Oct 19 23:29:05 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:43 2006 -0700"
      },
      "message": "[PATCH] highest_possible_node_id() linkage fix\n\nQooting Adrian:\n\n- net/sunrpc/svc.c uses highest_possible_node_id()\n\n- include/linux/nodemask.h says highest_possible_node_id() is\n  out-of-line #if MAX_NUMNODES \u003e 1\n\n- the out-of-line highest_possible_node_id() is in lib/cpumask.c\n\n- lib/Makefile: lib-$(CONFIG_SMP) +\u003d cpumask.o\n  CONFIG_ARCH_DISCONTIGMEM_ENABLE\u003dy, CONFIG_SMP\u003dn, CONFIG_SUNRPC\u003dy\n\n-\u003e highest_possible_node_id() is used in net/sunrpc/svc.c\n   CONFIG_NODES_SHIFT defined and \u003e 0\n\n-\u003e include/linux/numa.h: MAX_NUMNODES \u003e 1\n\n-\u003e compile error\n\nThe bug is not present on architectures where ARCH_DISCONTIGMEM_ENABLE\ndepends on NUMA (but m32r isn\u0027t the only affected architecture).\n\nSo move the function into page_alloc.c\n\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0f532f3861d2c4e5aa7dcd33fb18e9975eb28457",
      "tree": "4b4cf436bbc94a1659fdb25314ff7b17624e80a1",
      "parents": [
        "ca8af486765852302931bb69075871d5564e1e5b"
      ],
      "author": {
        "name": "Greg Banks",
        "email": "gnb@melbourne.sgi.com",
        "time": "Mon Oct 02 02:17:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:17 2006 -0700"
      },
      "message": "[PATCH] cpumask: add highest_possible_node_id\n\ncpumask: add highest_possible_node_id(), analogous to\nhighest_possible_processor_id().\n\n[pj@sgi.com: fix typo]\nSigned-off-by: Greg Banks \u003cgnb@melbourne.sgi.com\u003e\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96a9b4d31eba4722ba7aad2cc15118a7799f499f",
      "tree": "f96739e328e3e50b43122e551a36415f6e26a1e8",
      "parents": [
        "8630282070b4a52b12cfa514ba8558e2f3d56360"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Mar 25 03:08:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:00 2006 -0800"
      },
      "message": "[PATCH] cpumask: uninline any_online_cpu()\n\n           text    data     bss     dec     hex filename\nbefore: 3605597 1363528  363328 5332453  515de5 vmlinux\nafter:  3605295 1363612  363200 5332107  515c8b vmlinux\n\n218 bytes saved.\n\nAlso, optimise any_online_cpu() out of existence on CONFIG_SMP\u003dn.\n\nThis function seems inefficient.  Can\u0027t we simply AND the two masks, then use\nfind_first_bit()?\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8630282070b4a52b12cfa514ba8558e2f3d56360",
      "tree": "cf648185ccc0a0ba4e7cf752c1c09a0272a6d192",
      "parents": [
        "3d18bd74a22d0bed3bc81fc64c4ba6344a10f155"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Mar 25 03:08:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:00 2006 -0800"
      },
      "message": "[PATCH] cpumask: uninline highest_possible_processor_id()\n\nShrinks the only caller (net/bridge/netfilter/ebtables.c) by 174 bytes.\n\nAlso, optimise highest_possible_processor_id() out of existence on\nCONFIG_SMP\u003dn.\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3d18bd74a22d0bed3bc81fc64c4ba6344a10f155",
      "tree": "414b44796651db833481e17030f0b18a1be3527b",
      "parents": [
        "ccb46000f4bb459777686611157ac0eac928704e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Mar 25 03:08:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:59 2006 -0800"
      },
      "message": "[PATCH] cpumask: uninline next_cpu()\n\n           text    data     bss     dec     hex filename\nbefore: 3488027 1322496  360128 5170651  4ee5db vmlinux\nafter:  3485112 1322480  359968 5167560  4ed9c8 vmlinux\n\n2931 bytes saved\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ccb46000f4bb459777686611157ac0eac928704e",
      "tree": "461e956d9e27a7afa7de64950f3186070ffa61f5",
      "parents": [
        "64b91379439ff0fb007bde90eb496299c14a9b2a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Mar 25 03:08:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:59 2006 -0800"
      },
      "message": "[PATCH] cpumask: uninline first_cpu()\n\n           text    data     bss     dec     hex filename\nbefore: 3490577 1322408  360000 5172985  4eeef9 vmlinux\nafter:  3488027 1322496  360128 5170651  4ee5db vmlinux\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
