)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
