)]}'
{
  "log": [
    {
      "commit": "7ea931c9fc80c4d0a4306c30ec92eb0f1d922a0b",
      "tree": "4f2c85d658c75e8679e01943e3e95866b3729b54",
      "parents": [
        "f5b087b52f1710eb0bf15a2d2b030c51a6a1ca9e"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Mon Apr 28 02:12:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mempolicy: add bitmap_onto() and bitmap_fold() operations\n\nThe following adds two more bitmap operators, bitmap_onto() and bitmap_fold(),\nwith the usual cpumask and nodemask wrappers.\n\nThe bitmap_onto() operator computes one bitmap relative to another.  If the\nn-th bit in the origin mask is set, then the m-th bit of the destination mask\nwill be set, where m is the position of the n-th set bit in the relative mask.\n\nThe bitmap_fold() operator folds a bitmap into a second that has bit m set iff\nthe input bitmap has some bit n set, where m \u003d\u003d n mod sz, for the specified sz\nvalue.\n\nThere are two substantive changes between this patch and its\npredecessor bitmap_relative:\n 1) Renamed bitmap_relative() to be bitmap_onto().\n 2) Added bitmap_fold().\n\nThe essential motivation for bitmap_onto() is to provide a mechanism for\nconverting a cpuset-relative CPU or Node mask to an absolute mask.  Cpuset\nrelative masks are written as if the current task were in a cpuset whose CPUs\nor Nodes were just the consecutive ones numbered 0..N-1, for some N.  The\nbitmap_onto() operator is provided in anticipation of adding support for the\nfirst such cpuset relative mask, by the mbind() and set_mempolicy() system\ncalls, using a planned flag of MPOL_F_RELATIVE_NODES.  These bitmap operators\n(and their nodemask wrappers, in particular) will be used in code that\nconverts the user specified cpuset relative memory policy to a specific system\nnode numbered policy, given the current mems_allowed of the tasks cpuset.\n\nSuch cpuset relative mempolicies will address two deficiencies\nof the existing interface between cpusets and mempolicies:\n 1) A task cannot at present reliably establish a cpuset\n    relative mempolicy because there is an essential race\n    condition, in that the tasks cpuset may be changed in\n    between the time the task can query its cpuset placement,\n    and the time the task can issue the applicable mbind or\n    set_memplicy system call.\n 2) A task cannot at present establish what cpuset relative\n    mempolicy it would like to have, if it is in a smaller\n    cpuset than it might have mempolicy preferences for,\n    because the existing interface only allows specifying\n    mempolicies for nodes currently allowed by the cpuset.\n\nCpuset relative mempolicies are useful for tasks that don\u0027t distinguish\nparticularly between one CPU or Node and another, but only between how many of\neach are allowed, and the proper placement of threads and memory pages on the\nvarious CPUs and Nodes available.\n\nThe motivation for the added bitmap_fold() can be seen in the following\nexample.\n\nLet\u0027s say an application has specified some mempolicies that presume 16 memory\nnodes, including say a mempolicy that specified MPOL_F_RELATIVE_NODES (cpuset\nrelative) nodes 12-15.  Then lets say that application is crammed into a\ncpuset that only has 8 memory nodes, 0-7.  If one just uses bitmap_onto(),\nthis mempolicy, mapped to that cpuset, would ignore the requested relative\nnodes above 7, leaving it empty of nodes.  That\u0027s not good; better to fold the\nhigher nodes down, so that some nodes are included in the resulting mapped\nmempolicy.  In this case, the mempolicy nodes 12-15 are taken modulo 8 (the\nweight of the mems_allowed of the confining cpuset), resulting in a mempolicy\nspecifying nodes 4-7.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cray-lk@madrabbit.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9f0e8d0400d925c3acd5f4e01dbeb736e4011882",
      "tree": "970dab54eeba019e4649aa32730489206be5f8a2",
      "parents": [
        "321a8e9dcb714f3c350ba55e41ed447bf3f05fac"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Apr 04 18:11:01 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:59 2008 +0200"
      },
      "message": "x86: convert cpumask_of_cpu macro to allocated array\n\n  * Here is a simple patch to use an allocated array of cpumasks to\n    represent cpumask_of_cpu() instead of constructing one on the stack.\n    It\u0027s based on the Kconfig option \"HAVE_CPUMASK_OF_CPU_MAP\" which is\n    currently only set for x86_64 SMP.  Otherwise the the existing\n    cpumask_of_cpu() is used but has been changed to produce an lvalue\n    so a pointer to it can be used.\n\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-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": "321a8e9dcb714f3c350ba55e41ed447bf3f05fac",
      "tree": "e75ca8ebcee0954dc6e313864ebba9f72e984fc8",
      "parents": [
        "7c16ec585c558960a508ccf9a08fcb9ed49b3754"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Apr 04 18:11:02 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:59 2008 +0200"
      },
      "message": "cpumask: add CPU_MASK_ALL_PTR macro\n\n  * Add a static cpumask_t variable \"CPU_MASK_ALL_PTR\" to use as\n    a pointer reference to CPU_MASK_ALL.  This reduces where possible\n    the instances where CPU_MASK_ALL allocates and fills a large\n    array on the stack.  Used only if NR_CPUS \u003e BITS_PER_LONG.\n\n  * Change init/main.c to use new set_cpus_allowed_ptr().\n\nDepends on:\n\t[sched-devel]: sched: add new set_cpus_allowed_ptr function\n\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "30ca60c15a725f655e5d3f14e0238a066bc5aeb7",
      "tree": "96d36a2cf12e7a964ce4cd0c49d30b2d40f94b52",
      "parents": [
        "9f0e738f492522a2f70ad9a2a0287e4e966c633a"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Tue Mar 25 15:06:55 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:58 2008 +0200"
      },
      "message": "cpumask: add cpumask_scnprintf_len function\n\nAdd a new function cpumask_scnprintf_len() to return the number of\ncharacters needed to display \"len\" cpumask bits.  The current method\nof allocating NR_CPUS bytes is incorrect as what\u0027s really needed is\n9 characters per 32-bit word of cpumask bits (8 hex digits plus the\nseperator [\u0027,\u0027] or the terminating NULL.)  This function provides the\ncaller the means to allocate the correct string length.\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2355188570790930718fb72444cddc2959039d9d",
      "tree": "eacc078c7acbc1fbd2087d2542fa6f7fb0334ad2",
      "parents": [
        "675a0813609f9097e323261b1cc4b9dc3f50d40b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:31:10 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:31:10 2008 +0100"
      },
      "message": "x86: avoid build warning\n\nfix this build warning:\n\n include/asm/topology_32.h: In function \u0027node_to_first_cpu\u0027:\n include/asm/topology_32.h:66: warning: unused variable \u0027mask\u0027\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a263898f628dd21e59210b547986c154788f628e",
      "tree": "b6c0a05c607c9b748336e629b3b6f4ddfea191ee",
      "parents": [
        "57a04513cb35086d54bcb2cb92e6627fc8fa0fae"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Dec 30 11:58:17 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jan 06 12:39:42 2008 -0800"
      },
      "message": "CPU hotplug: fix cpu_is_offline() on !CONFIG_HOTPLUG_CPU\n\nmake randconfig bootup testing found that the cpufreq code\ncrashes on bootup, if the powernow-k8 driver is enabled and\nif maxcpus\u003d1 passed on the boot line to a !CONFIG_HOTPLUG_CPU\nkernel.\n\nFirst lockdep found out that there\u0027s an inconsistent unlock\nsequence:\n\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n [ BUG: bad unlock balance detected! ]\n -------------------------------------\n swapper/1 is trying to release lock (\u0026per_cpu(cpu_policy_rwsem, cpu)) at:\n [\u003cffffffff806ffd8e\u003e] unlock_policy_rwsem_write+0x3c/0x42\n but there are no more locks to release!\n\nCall Trace:\n [\u003cffffffff806ffd8e\u003e] unlock_policy_rwsem_write+0x3c/0x42\n [\u003cffffffff80251c29\u003e] print_unlock_inbalance_bug+0x104/0x12c\n [\u003cffffffff80252f3a\u003e] mark_held_locks+0x56/0x94\n [\u003cffffffff806ffd8e\u003e] unlock_policy_rwsem_write+0x3c/0x42\n [\u003cffffffff807008b6\u003e] cpufreq_add_dev+0x2a8/0x5c4\n ...\n\nthen shortly afterwards the cpufreq code crashed on an assert:\n\n ------------[ cut here ]------------\n kernel BUG at drivers/cpufreq/cpufreq.c:1068!\n invalid opcode: 0000 [1] SMP\n [...]\n Call Trace:\n  [\u003cffffffff805145d6\u003e] sysdev_driver_unregister+0x5b/0x91\n  [\u003cffffffff806ff520\u003e] cpufreq_register_driver+0x15d/0x1a2\n  [\u003cffffffff80cc0596\u003e] powernowk8_init+0x86/0x94\n [...]\n ---[ end trace 1e9219be2b4431de ]---\n\nthe bug was caused by maxcpus\u003d1 bootup, which brought up the\nsecondary core as !cpu_online() but !cpu_is_offline() either,\nwhich on on !CONFIG_HOTPLUG_CPU is always 0 (include/linux/cpu.h):\n\n  /* CPUs don\u0027t go offline once they\u0027re online w/o CONFIG_HOTPLUG_CPU */\n  static inline int cpu_is_offline(int cpu) { return 0; }\n\nbut the cpufreq code uses cpu_online() and cpu_is_offline() in\na mixed way - the low-level drivers use cpu_online(), while\nthe cpufreq core uses cpu_is_offline(). This opened up the\npossibility to add the non-initialized sysdev device of the\nsecondary core:\n\n cpufreq-core: trying to register driver powernow-k8\n cpufreq-core: adding CPU 0\n powernow-k8: BIOS error - no PSB or ACPI _PSS objects\n cpufreq-core: initialization failed\n cpufreq-core: adding CPU 1\n cpufreq-core: initialization failed\n\nwhich then blew up. The fix is to make cpu_is_offline() always\nthe negation of cpu_online(). With that fix applied the kernel\nboots up fine without crashing:\n\n Calling initcall 0xffffffff80cc0510: powernowk8_init+0x0/0x94()\n powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ processors (1 cpu cores) (version 2.20.00)\n powernow-k8: BIOS error - no PSB or ACPI _PSS objects\n initcall 0xffffffff80cc0510: powernowk8_init+0x0/0x94() returned -19.\n initcall 0xffffffff80cc0510 ran for 19 msecs: powernowk8_init+0x0/0x94()\n Calling initcall 0xffffffff80cc328f: init_lapic_nmi_sysfs+0x0/0x39()\n\nWe could fix this by making CPU enumeration aware of max_cpus, but that\nwould be more fragile IMO, and the cpu_online(cpu) !\u003d cpu_is_offline(cpu)\npossibility was quite confusing and a continuous source of bugs too.\n\nMost distributions have kernels with CPU hotplug enabled, so this bug\nremained hidden for a long time.\n\nBug forensics:\n\nThe broken cpu_is_offline() API variant was introduced via:\n\n commit a59d2e4e6977e7b94e003c96a41f07e96cddc340\n Author: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n Date:   Mon Mar 8 06:06:03 2004 -0800\n\n     [PATCH] minor cleanups for hotplug CPUs\n\n( this predates linux-2.6.git, this commit is available from Thomas\u0027s\n  historic git tree. )\n\nThen 1.5 years later the cpufreq code made use of it:\n\n commit c32b6b8e524d2c337767d312814484d9289550cf\n Author: Ashok Raj \u003cashok.raj@intel.com\u003e\n Date:   Sun Oct 30 14:59:54 2005 -0800\n\n     [PATCH] create and destroy cpufreq sysfs entries based on cpu notifiers\n\n +       if (cpu_is_offline(cpu))\n +               return 0;\n\nwhich is a correct use of the subtly broken new API. v2.6.15 then\nshipped with this bug included.\n\nthen it took two more years for random-kernel qa to hit it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "01a3ee2b203e511e20f98b85a9172fd32c53e87c",
      "tree": "0dd90d81dc86f231828af23bdb97522405b06cab",
      "parents": [
        "39484e53bb00f55b6303a908070db133608ef2a5"
      ],
      "author": {
        "name": "Reinette Chatre",
        "email": "reinette.chatre@linux.intel.com",
        "time": "Wed Oct 11 01:21:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:22 2006 -0700"
      },
      "message": "[PATCH] bitmap: parse input from kernel and user buffers\n\nlib/bitmap.c:bitmap_parse() is a library function that received as input a\nuser buffer.  This seemed to have originated from the way the write_proc\nfunction of the /proc filesystem operates.\n\nThis has been reworked to not use kmalloc and eliminates a lot of\nget_user() overhead by performing one access_ok before using __get_user().\n\nWe need to test if we are in kernel or user space (is_user) and access the\nbuffer differently.  We cannot use __get_user() to access kernel addresses\nin all cases, for example in architectures with separate address space for\nkernel and user.\n\nThis function will be useful for other uses as well; for example, taking\ninput for /sysfs instead of /proc, so it was changed to accept kernel\nbuffers.  We have this use for the Linux UWB project, as part as the\nupcoming bandwidth allocator code.\n\nOnly a few routines used this function and they were changed too.\n\nSigned-off-by: Reinette Chatre \u003creinette.chatre@linux.intel.com\u003e\nSigned-off-by: Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Joe Korty \u003cjoe.korty@ccur.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9de9adb615bddbdb786273c41ec3c03837e32fa5",
      "tree": "d9c37e52c032f9bbb2da5f55868a79b299e58d25",
      "parents": [
        "eab98702afa567927c9b052499b43acad2f25a1c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Jun 25 05:48:10 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:12 2006 -0700"
      },
      "message": "[PATCH] for_each_cpu_mask() warning fix\n\nOn UP, this:\n\n       cpumask_t mask \u003d node_to_cpumask(numa_node_id());\n\n       for_each_cpu_mask(cpu, mask)\n\ndoes this:\n\nmm/readahead.c: In function `node_readahead_aging\u0027:\nmm/readahead.c:850: warning: unused variable `mask\u0027\n\nwhich is unpleasantly fixed by this:\n\nAcked-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": "fb1bb34d45400f12e0a33f8c487b3795674908a7",
      "tree": "11c593c83eff5a83999f4feee0d8937d1f575712",
      "parents": [
        "1e48275adc8c94c3281e646c8beb829f8e6f5bfc"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Jun 25 05:46:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:00:54 2006 -0700"
      },
      "message": "[PATCH] remove for_each_cpu()\n\nConvert a few stragglers over to for_each_possible_cpu(), remove\nfor_each_cpu().\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "631d6747e1d877a4baa924cb373b8b9511a53e5e",
      "tree": "5bb88d5c9716b9d9f398a6a1e8c8be4501671643",
      "parents": [
        "68c3431ae22912be580c68d3955ef46515582943"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Mar 28 01:56:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:04 2006 -0800"
      },
      "message": "[PATCH] for_each_possible_cpu: defines for_each_possible_cpu\n\nfor_each_cpu() is a for-loop over cpu_possible_map.  for_each_online_cpu is\nfor-loop cpu over cpu_online_map.  .....for_each_cpu() is not sufficiently\nexplicit and can lead to mistakes.\n\nThis patch adds for_each_possible_cpu() in preparation for the removal of\nfor_each_cpu().\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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"
    },
    {
      "commit": "7a8ef1cb774e5438d292365626f9b96616283706",
      "tree": "82d085204e8728d28a5267fb39aa2e26ea8824c9",
      "parents": [
        "705672935f8a9e661264e34cd8c409e8cddcc7db"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Feb 10 01:51:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 10 08:13:12 2006 -0800"
      },
      "message": "[PATCH] x86: don\u0027t initialise cpu_possible_map to all ones\n\nInitialising cpu_possible_map to all-ones with CONFIG_HOTPLUG_CPU means that\n\na) All for_each_cpu() loops will iterate across all NR_CPUS CPUs, rather\n   than over possible ones.  That can be quite expensive.\n\nb) Soon we\u0027ll be allocating per-cpu areas only for possible CPUs.  So with\n   CPU_MASK_ALL, we\u0027ll be wasting memory.\n\nI also switched voyager over to not use CPU_MASK_ALL in the non-CPU-hotplug\ncase.  Should be OK..\n\nI note that parisc is also using CPU_MASK_ALL.  Suggest that it stop doing\nthat.\n\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nCc: Zwane Mwaikambo \u003czwane@linuxpower.ca\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": "1b8623545b42c03eb92e51b28c84acf4b8ba00a3",
      "tree": "071045ad9c60d2697292c523c77322a70a248fb9",
      "parents": [
        "92118c739df879497b8cc5a2eb3a9dc255f01b20"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 15 01:07:03 2005 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 07 20:56:35 2006 -0500"
      },
      "message": "[PATCH] remove bogus asm/bug.h includes.\n\nA bunch of asm/bug.h includes are both not needed (since it will get\npulled anyway) and bogus (since they are done too early).  Removed.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fb5eeeee44edb248b4837416966f19731f497f79",
      "tree": "f947a4dcf103f55d526bb5c71f69b657d8f22e61",
      "parents": [
        "28a42b9ea7e42e1efb02cc2dcacba0b6af234e1b"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Oct 30 15:02:33 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:21 2005 -0800"
      },
      "message": "[PATCH] cpusets: bitmap and mask remap operators\n\nIn the forthcoming task migration support, a key calculation will be\nmapping cpu and node numbers from the old set to the new set while\npreserving cpuset-relative offset.\n\nFor example, if a task and its pages on nodes 8-11 are being migrated to\nnodes 24-27, then pages on node 9 (the 2nd node in the old set) should be\nmoved to node 25 (the 2nd node in the new set.)\n\nAs with other bitmap operations, the proper way to code this is to provide\nthe underlying calculation in lib/bitmap.c, and then to provide the usual\ncpumask and nodemask wrappers.\n\nThis patch provides that.  These operations are termed \u0027remap\u0027 operations.\nBoth remapping a single bit and a set of bits is supported.\n\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": "688ce17b8599abc548b406c00e4d18ae0dec954f",
      "tree": "c64c78c72bf9582c2dcc5a3455d6fe561c6e7085",
      "parents": [
        "e6850cce8f0fcb0e16b981f13cb9c69618bbdaf1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 16 00:17:33 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 16 00:17:33 2005 -0700"
      },
      "message": "[PATCH]: highest_possible_processor_id() has to be a macro\n\n\t... otherwise, things like alpha and sparc64 break and break\nbadly.  They define cpu_possible_map to something else in smp.h\n*AFTER* having included cpumask.h.\n\n\tIf that puppy is a macro, expansion will happen at the actual\ncaller, when we\u0027d already seen #define cpu_possible_map ... and we will\nget the right thing used.\n\n\tAs an inline helper it will be tokenized before we get to that\ndefine and that\u0027s it; no matter what we define later, it won\u0027t affect\nanything.  We get modules with dependency on cpu_possible_map instead\nof the right symbol (phys_cpu_present_map in case of sparc64), or outright\nlink errors if they are built-in.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n\n"
    },
    {
      "commit": "c8923c6b852d3a97c1faad0566e38fca330375a7",
      "tree": "eb79e97c5468bba641c7a34b83514876f4902cf2",
      "parents": [
        "c931488cc4619eecfe68a2f046b5898fddc2f904"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 13 14:41:23 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 13 14:41:23 2005 -0700"
      },
      "message": "[NETFILTER]: Fix OOPSes on machines with discontiguous cpu numbering.\n\nOriginal patch by Harald Welte, with feedback from Herbert Xu\nand testing by Sébastien Bernard.\n\nEBTABLES, ARP tables, and IP/IP6 tables all assume that cpus\nare numbered linearly.  That is not necessarily true.\n\nThis patch fixes that up by calculating the largest possible\ncpu number, and allocating enough per-cpu structure space given\nthat.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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"
    }
  ]
}
