)]}'
{
  "log": [
    {
      "commit": "099a19d91ca429944743d51bef8fee240e94d8e3",
      "tree": "55bdc0f25ecbf38240782fb1d9a80d33c0100eb6",
      "parents": [
        "4ba6ce250e406b20bcd6f0f3aed6b3d80965e6c2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 27 18:50:00 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 27 18:50:00 2010 +0200"
      },
      "message": "percpu: allow limited allocation before slab is online\n\nThis patch updates percpu allocator such that it can serve limited\namount of allocation before slab comes online.  This is primarily to\nallow slab to depend on working percpu allocator.\n\nTwo parameters, PERCPU_DYNAMIC_EARLY_SIZE and SLOTS, determine how\nmuch memory space and allocation map slots are reserved.  If this\nreserved area is exhausted, WARN_ON_ONCE() will trigger and allocation\nwill fail till slab comes online.\n\nThe following changes are made to implement early alloc.\n\n* pcpu_mem_alloc() now checks slab_is_available()\n\n* Chunks are allocated using pcpu_mem_alloc()\n\n* Init paths make sure ai-\u003edyn_size is at least as large as\n  PERCPU_DYNAMIC_EARLY_SIZE.\n\n* Initial alloc maps are allocated in __initdata and copied to\n  kmalloc\u0027d areas once slab is online.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ba6ce250e406b20bcd6f0f3aed6b3d80965e6c2",
      "tree": "3ae4cdd7c53626dca141bd32037a524a2bc3643c",
      "parents": [
        "9983b6f0cf8263e51bcf4c8a9dc0c1ef175b3c60"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 27 18:49:59 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 27 18:49:59 2010 +0200"
      },
      "message": "percpu: make @dyn_size always mean min dyn_size in first chunk init functions\n\nIn pcpu_build_alloc_info() and pcpu_embed_first_chunk(), @dyn_size was\nssize_t, -1 meant auto-size, 0 forced 0 and positive meant minimum\nsize.  There\u0027s no use case for forcing 0 and the upcoming early alloc\nsupport always requires non-zero dynamic size.  Make @dyn_size always\nmean minimum dyn_size.\n\nWhile at it, make pcpu_build_alloc_info() static which doesn\u0027t have\nany external caller as suggested by David Rientjes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\n"
    },
    {
      "commit": "b66696e3c0d8fc01efdbc701eba1276618332cb3",
      "tree": "3094ef42787b8e0c900bce1f2391ced081ed1ba4",
      "parents": [
        "9e74e7c81a24aee66024fc477786bd1de84e293b",
        "a32f3926632e71c8aa23ce32fe2625f8d5f792c2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 05 09:39:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 05 09:39:11 2010 -0700"
      },
      "message": "Merge branch \u0027slabh\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc\n\n* \u0027slabh\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc:\n  eeepc-wmi: include slab.h\n  staging/otus: include slab.h from usbdrv.h\n  percpu: don\u0027t implicitly include slab.h from percpu.h\n  kmemcheck: Fix build errors due to missing slab.h\n  include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n  iwlwifi: don\u0027t include iwl-dev.h from iwl-devtrace.h\n  x86: don\u0027t include slab.h from arch/x86/include/asm/pgtable_32.h\n\nFix up trivial conflicts in include/linux/percpu.h due to\nis_kernel_percpu_address() having been introduced since the slab.h\ncleanup with the percpu_up.c splitup.\n"
    },
    {
      "commit": "de380b55f92986c1a84198149cb71b7228d15fbd",
      "tree": "dce7168802e1e65754c9b6455d0527dfa853168c",
      "parents": [
        "ea5a9f0c3447889abceb7482c391bb977472eab9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:06:43 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "percpu: don\u0027t implicitly include slab.h from percpu.h\n\npercpu.h has always been including slab.h to get k[mz]alloc/free() for\nUP inline implementation.  percpu.h being used by very low level\nheaders including module.h and sched.h, this meant that a lot files\nunintentionally got slab.h inclusion.\n\nLee Schermerhorn was trying to make topology.h use percpu.h and got\nbitten by this implicit inclusion.  The right thing to do is break\nthis ultimately unnecessary dependency.  The previous patch added\nexplicit inclusion of either gfp.h or slab.h to the source files using\nthem.  This patch updates percpu.h such that slab.h is no longer\nincluded from percpu.h.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-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": "10fad5e46f6c7bdfb01b1a012380a38e3c6ab346",
      "tree": "9ec6e3955e7f879f64ea79812cf5ecd41baa6939",
      "parents": [
        "259354deaaf03d49a02dbb9975d6ec2a54675672"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 10 18:57:54 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 29 23:07:12 2010 +0900"
      },
      "message": "percpu, module: implement and use is_kernel/module_percpu_address()\n\nlockdep has custom code to check whether a pointer belongs to static\npercpu area which is somewhat broken.  Implement proper\nis_kernel/module_percpu_address() and replace the custom code.\n\nOn UP, percpu variables are regular static variables and can\u0027t be\ndistinguished from them.  Always return %false on UP.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "32032df6c2f6c9c6b2ada2ce42322231824f70c2",
      "tree": "b1ce838a37044bb38dfc128e2116ca35630e629a",
      "parents": [
        "22b737f4c75197372d64afc6ed1bccd58c00e549",
        "c5974b835a909ff15c3b7e6cf6789b5eb919f419"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 05 09:17:33 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 05 09:17:33 2010 +0900"
      },
      "message": "Merge branch \u0027master\u0027 into percpu\n\nConflicts:\n\tarch/powerpc/platforms/pseries/hvCall.S\n\tinclude/linux/percpu.h\n"
    },
    {
      "commit": "50de1a8ef18da0cfff97543315b4e042e8bb7c83",
      "tree": "86056d1aef0e83d7839a8350c9e6109b80b3cfa5",
      "parents": [
        "390dfd95c5df1ab3921dd388d11b2aee332c3f2c",
        "ee0a6efc1897ef817e177e669f5c5d211194df24"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Dec 08 10:02:12 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Dec 08 10:02:12 2009 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 into for-next\n\nConflicts:\n\tmm/percpu.c\n"
    },
    {
      "commit": "ee0a6efc1897ef817e177e669f5c5d211194df24",
      "tree": "6a0e8f5999e15332c29a0bbe5c61cd8f69f2d4b6",
      "parents": [
        "3b034b0d084221596bf35c8d893e1d4d5477b9cc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 02 08:36:58 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 02 08:36:58 2009 +0900"
      },
      "message": "percpu: add missing per_cpu_ptr_to_phys() definition for UP\n\nCommit 3b034b0d084221596bf35c8d893e1d4d5477b9cc implemented\nper_cpu_ptr_to_phys() but forgot to add UP definition.  Add UP\ndefinition which is simple wrapper around __pa().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "3b034b0d084221596bf35c8d893e1d4d5477b9cc",
      "tree": "c3b9f33dc9fc748a9460036ae8647b16541a7547",
      "parents": [
        "833af8427be4b217b5bc522f61afdbd3f1d282c2"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Nov 24 15:50:03 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 25 21:49:22 2009 +0900"
      },
      "message": "percpu: Fix kdump failure if booted with percpu_alloc\u003dpage\n\no kdump functionality reserves a per cpu area at boot time and exports the\n  physical address of that area to user space through sys interface. This\n  area stores some dump related information like cpu register states etc\n  at the time of crash.\n\no We were assuming that per cpu area always come from linearly mapped meory\n  region and using __pa() to determine physical address.\n  With percpu_alloc\u003dpage, per cpu area can come from vmalloc region also and\n  __pa() breaks.\n\no This patch implments a new function to convert per cpu address to\n  physical address.\n\nBefore the patch, crash_notes addresses looked as follows.\n\ncpu0 60fffff49800\ncpu1 60fffff60800\ncpu2 60fffff77800\n\nThese are bogus phsyical addresses.\n\nAfter the patch, address are following.\n\ncpu0 13eb44000\ncpu1 13eb43000\ncpu2 13eb42000\ncpu3 13eb41000\n\nThese look fine. I got 4G of memory and /proc/iomem tell me following.\n\n100000000-13fffffff : System RAM\n\ntj: * added missing asm/io.h include reported by Stephen Rothwell\n    * repositioned per_cpu_ptr_phys() in percpu.c and added comment.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\n"
    },
    {
      "commit": "545695fb41da117928ab946067a42d9e15fd009d",
      "tree": "1ea32c45a6f6efb03a88f99278f065054a5de3e2",
      "parents": [
        "e0fdb0e050eae331046385643618f12452aa7e73"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "message": "percpu: make accessors check for percpu pointer in sparse\n\nThe previous patch made sparse warn about percpu variables being used\ndirectly without going through percpu accessors.  This patch\nimplements the other half - checking whether non percpu variable is\npassed into percpu accessors.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e0fdb0e050eae331046385643618f12452aa7e73",
      "tree": "6156f577879764fd75cf8c46ca7980433de0e59d",
      "parents": [
        "f7b64fe806029e0a0454df132eec3c5ab576102c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "message": "percpu: add __percpu for sparse.\n\nWe have to make __kernel \"__attribute__((address_space(0)))\" so we can\ncast to it.\n\ntj: * put_cpu_var() update.\n\n    * Annotations added to dynamic allocator interface.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f7b64fe806029e0a0454df132eec3c5ab576102c",
      "tree": "04812617c2c64f0fa169df3b63686079df1131d6",
      "parents": [
        "dd17c8f72993f9461e9c19250e3f155d6d99df22"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "message": "percpu: make access macros universal\n\nNow that per_cpu__ prefix is gone, there\u0027s no distinction between\nstatic and dynamic percpu variables.  Make get_cpu_var() take dynamic\npercpu variables and ensure that all macros have parentheses around\nthe parameter evaluation and evaluate the variable parameter only once\nsuch that any expression which evaluates to percpu address can be used\nsafely.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "dd17c8f72993f9461e9c19250e3f155d6d99df22",
      "tree": "c33eedf0cf2862e9feeb796e94d49a2ccdce0149",
      "parents": [
        "390dfd95c5df1ab3921dd388d11b2aee332c3f2c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "message": "percpu: remove per_cpu__ prefix.\n\nNow that the return from alloc_percpu is compatible with the address\nof per-cpu vars, it makes sense to hand around the address of per-cpu\nvariables.  To make this sane, we remove the per_cpu__ prefix we used\ncreated to stop people accidentally using these vars directly.\n\nNow we have sparse, we can use that (next patch).\n\ntj: * Updated to convert stuff which were missed by or added after the\n      original patch.\n\n    * Kill per_cpu_var() macro.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f5e4816dbf38ce9488e611ca2296925c1e90d5e",
      "tree": "9c13079d21cb0c316db7e254222bca357ad7b41b",
      "parents": [
        "64ef291f46d795917f32a0f5975e2b76f6fe206a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:12 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:12 2009 +0900"
      },
      "message": "percpu: remove some sparse warnings\n\nMake the following changes to remove some sparse warnings.\n\n* Make DEFINE_PER_CPU_SECTION() declare __pcpu_unique_* before\n  defining it.\n\n* Annotate pcpu_extend_area_map() that it is entered with pcpu_lock\n  held, releases it and then reacquires it.\n\n* Make percpu related macros use unique nested variable names.\n\n* While at it, add pcpu prefix to __size_call[_return]() macros as\n  to-be-implemented sparse annotations will add percpu specific stuff\n  to these macros.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "64ef291f46d795917f32a0f5975e2b76f6fe206a",
      "tree": "c900fa524230a90f44676212a7dc0349a0cea394",
      "parents": [
        "3f04ba859597412afbfb31f2fcbe289f2461f9a1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:12 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:12 2009 +0900"
      },
      "message": "percpu: make alloc_percpu() handle array types\n\nalloc_percpu() couldn\u0027t handle array types like \"int [100]\" due to the\nway return type was casted.  Fix it by using typeof() instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7340a0b15280c9d902c7dd0608b8e751b5a7c403",
      "tree": "4046c9cfc2f7d48610bd6c8aa9caeb8f440bea5f",
      "parents": [
        "23fb064bb96f001ecb8682129f7ee1bc1ca691bc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Sat Oct 03 19:48:22 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Oct 03 19:48:22 2009 +0900"
      },
      "message": "this_cpu: Introduce this_cpu_ptr() and generic this_cpu_* operations\n\nThis patch introduces two things: First this_cpu_ptr and then per cpu\natomic operations.\n\nthis_cpu_ptr\n------------\n\nA common operation when dealing with cpu data is to get the instance of the\ncpu data associated with the currently executing processor. This can be\noptimized by\n\nthis_cpu_ptr(xx) \u003d per_cpu_ptr(xx, smp_processor_id).\n\nThe problem with per_cpu_ptr(x, smp_processor_id) is that it requires\nan array lookup to find the offset for the cpu. Processors typically\nhave the offset for the current cpu area in some kind of (arch dependent)\nefficiently accessible register or memory location.\n\nWe can use that instead of doing the array lookup to speed up the\ndetermination of the address of the percpu variable. This is particularly\nsignificant because these lookups occur in performance critical paths\nof the core kernel. this_cpu_ptr() can avoid memory accesses and\n\nthis_cpu_ptr comes in two flavors. The preemption context matters since we\nare referring the the currently executing processor. In many cases we must\ninsure that the processor does not change while a code segment is executed.\n\n__this_cpu_ptr \t-\u003e Do not check for preemption context\nthis_cpu_ptr\t-\u003e Check preemption context\n\nThe parameter to these operations is a per cpu pointer. This can be the\naddress of a statically defined per cpu variable (\u0026per_cpu_var(xxx)) or\nthe address of a per cpu variable allocated with the per cpu allocator.\n\nper cpu atomic operations: this_cpu_*(var, val)\n-----------------------------------------------\nthis_cpu_* operations (like this_cpu_add(struct-\u003ey, value) operate on\nabitrary scalars that are members of structures allocated with the new\nper cpu allocator. They can also operate on static per_cpu variables\nif they are passed to per_cpu_var() (See patch to use this_cpu_*\noperations for vm statistics).\n\nThese operations are guaranteed to be atomic vs preemption when modifying\nthe scalar. The calculation of the per cpu offset is also guaranteed to\nbe atomic at the same time. This means that a this_cpu_* operation can be\nsafely used to modify a per cpu variable in a context where interrupts are\nenabled and preemption is allowed. Many architectures can perform such\na per cpu atomic operation with a single instruction.\n\nNote that the atomicity here is different from regular atomic operations.\nAtomicity is only guaranteed for data accessed from the currently executing\nprocessor. Modifications from other processors are still possible. There\nmust be other guarantees that the per cpu data is not modified from another\nprocessor when using these instruction. The per cpu atomicity is created\nby the fact that the processor either executes and instruction or not.\nEmbedded in the instruction is the relocation of the per cpu address to\nthe are reserved for the current processor and the RMW action. Therefore\ninterrupts or preemption cannot occur in the mids of this processing.\n\nGeneric fallback functions are used if an arch does not define optimized\nthis_cpu operations. The functions come also come in the two flavors used\nfor this_cpu_ptr().\n\nThe firstparameter is a scalar that is a member of a structure allocated\nthrough allocpercpu or a per cpu variable (use per_cpu_var(xxx)). The\noperations are similar to what percpu_add() and friends do.\n\nthis_cpu_read(scalar)\nthis_cpu_write(scalar, value)\nthis_cpu_add(scale, value)\nthis_cpu_sub(scalar, value)\nthis_cpu_inc(scalar)\nthis_cpu_dec(scalar)\nthis_cpu_and(scalar, value)\nthis_cpu_or(scalar, value)\nthis_cpu_xor(scalar, value)\n\nArch code can override the generic functions and provide optimized atomic\nper cpu operations. These atomic operations must provide both the relocation\n(x86 does it through a segment override) and the operation on the data in a\nsingle instruction. Otherwise preempt needs to be disabled and there is no\ngain from providing arch implementations.\n\nA third variant is provided prefixed by irqsafe_. These variants are safe\nagainst hardware interrupts on the *same* processor (all per cpu atomic\nprimitives are *always* *only* providing safety for code running on the\n*same* processor!). The increment needs to be implemented by the hardware\nin such a way that it is a single RMW instruction that is either processed\nbefore or after an interrupt.\n\ncc: David Howells \u003cdhowells@redhat.com\u003e\ncc: Ingo Molnar \u003cmingo@elte.hu\u003e\ncc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\ncc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "23fb064bb96f001ecb8682129f7ee1bc1ca691bc",
      "tree": "ae9173b25aa69cda1b974c630334ffb61cee7ebe",
      "parents": [
        "52594762a39dfb6338c9d0906ca21dd9ae9453be"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 21 21:18:35 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Oct 02 13:29:29 2009 +0900"
      },
      "message": "percpu: kill legacy percpu allocator\n\nWith ia64 converted, there\u0027s no arch left which still uses legacy\npercpu allocator.  Kill it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nDelightedly-acked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e933a73f48e3b2d40cfa56d81e2646f194b5a66a",
      "tree": "e828fbdac9ff888a3e8e3d750e14f132abd7ffa0",
      "parents": [
        "4518e6a0c038b98be4c480e6f4481e8676bd15dd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:53 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:53 2009 +0900"
      },
      "message": "percpu: kill lpage first chunk allocator\n\nWith x86 converted to embedding allocator, lpage doesn\u0027t have any user\nleft.  Kill it along with cpa handling code.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jan Beulich \u003cJBeulich@novell.com\u003e\n"
    },
    {
      "commit": "c8826dd538602d730ed2c18c6753f1bbfa6c4933",
      "tree": "705a34d5afae4a53a1b041689b0b0079cd88f737",
      "parents": [
        "6563297ceafab6bbcc931b52e2a9e660fbb21fb2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:52 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:52 2009 +0900"
      },
      "message": "percpu: update embedding first chunk allocator to handle sparse units\n\nNow that percpu core can handle very sparse units, given that vmalloc\nspace is large enough, embedding first chunk allocator can use any\nmemory to build the first chunk.  This patch teaches\npcpu_embed_first_chunk() about distances between cpus and to use\nalloc/free callbacks to allocate node specific areas for each group\nand use them for the first chunk.\n\nThis brings the benefits of embedding allocator to NUMA configurations\n- no extra TLB pressure with the flexibility of unified dynamic\nallocator and no need to restructure arch code to build memory layout\nsuitable for percpu.  With units put into atom_size aligned groups\naccording to cpu distances, using large page for dynamic chunks is\nalso easily possible with falling back to reuglar pages if large\nallocation fails.\n\nEmbedding allocator users are converted to specify NULL\ncpu_distance_fn, so this patch doesn\u0027t cause any visible behavior\ndifference.  Following patches will convert them.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "fb435d5233f8b6f9b93c11d6304d8e98fed03234",
      "tree": "76a210c3895b9db5dc7e1f185ee0a60744fef99a",
      "parents": [
        "fd1e8a1fe2b54df6c185b4fa65f181f50b9c4d4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:51 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:51 2009 +0900"
      },
      "message": "percpu: add pcpu_unit_offsets[]\n\nCurrently units are mapped sequentially into address space.  This\npatch adds pcpu_unit_offsets[] which allows units to be mapped to\narbitrary offsets from the chunk base address.  This is necessary to\nallow sparse embedding which might would need to allocate address\nranges and memory areas which aren\u0027t aligned to unit size but\nallocation atom size (page or large page size).  This also simplifies\nthings a bit by removing the need to calculate offset from unit\nnumber.\n\nWith this change, there\u0027s no need for the arch code to know\npcpu_unit_size.  Update pcpu_setup_first_chunk() and first chunk\nallocators to return regular 0 or -errno return code instead of unit\nsize or -errno.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fd1e8a1fe2b54df6c185b4fa65f181f50b9c4d4e",
      "tree": "d4411507baacaa33c68be7813ad6f9e0d93a74e2",
      "parents": [
        "033e48fb82958053113178264ddb9d5038d5e38b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:51 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:51 2009 +0900"
      },
      "message": "percpu: introduce pcpu_alloc_info and pcpu_group_info\n\nTill now, non-linear cpu-\u003eunit map was expressed using an integer\narray which maps each cpu to a unit and used only by lpage allocator.\nAlthough how many units have been placed in a single contiguos area\n(group) is known while building unit_map, the information is lost when\nthe result is recorded into the unit_map array.  For lpage allocator,\nas all allocations are done by lpages and whether two adjacent lpages\nare in the same group or not is irrelevant, this didn\u0027t cause any\nproblem.  Non-linear cpu-\u003eunit mapping will be used for sparse\nembedding and this grouping information is necessary for that.\n\nThis patch introduces pcpu_alloc_info which contains all the\ninformation necessary for initializing percpu allocator.\npcpu_alloc_info contains array of pcpu_group_info which describes how\nunits are grouped and mapped to cpus.  pcpu_group_info also has\nbase_offset field to specify its offset from the chunk\u0027s base address.\npcpu_build_alloc_info() initializes this field as if all groups are\nallocated back-to-back as is currently done but this will be used to\nsparsely place groups.\n\npcpu_alloc_info is a rather complex data structure which contains a\nflexible array which in turn points to nested cpu_map arrays.\n\n* pcpu_alloc_alloc_info() and pcpu_free_alloc_info() are provided to\n  help dealing with pcpu_alloc_info.\n\n* pcpu_lpage_build_unit_map() is updated to build pcpu_alloc_info,\n  generalized and renamed to pcpu_build_alloc_info().\n  @cpu_distance_fn may be NULL indicating that all cpus are of\n  LOCAL_DISTANCE.\n\n* pcpul_lpage_dump_cfg() is updated to process pcpu_alloc_info,\n  generalized and renamed to pcpu_dump_alloc_info().  It now also\n  prints which group each alloc unit belongs to.\n\n* pcpu_setup_first_chunk() now takes pcpu_alloc_info instead of the\n  separate parameters.  All first chunk allocators are updated to use\n  pcpu_build_alloc_info() to build alloc_info and call\n  pcpu_setup_first_chunk() with it.  This has the side effect of\n  packing units for sparse possible cpus.  ie. if cpus 0, 2 and 4 are\n  possible, they\u0027ll be assigned unit 0, 1 and 2 instead of 0, 2 and 4.\n\n* x86 setup_pcpu_lpage() is updated to deal with alloc_info.\n\n* sparc64 setup_per_cpu_areas() is updated to build alloc_info.\n\nAlthough the changes made by this patch are pretty pervasive, it\ndoesn\u0027t cause any behavior difference other than packing of sparse\ncpus.  It mostly changes how information is passed among\ninitialization functions and makes room for more flexibility.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "033e48fb82958053113178264ddb9d5038d5e38b",
      "tree": "a0f0a0d35ca050f9f974c8e50dce7c767d6e7ee6",
      "parents": [
        "3cbc85652767c38b252c8de55f9fd180b29e4c0d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:51 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:51 2009 +0900"
      },
      "message": "percpu: move pcpu_lpage_build_unit_map() and pcpul_lpage_dump_cfg() upward\n\nUnit map handling will be generalized and extended and used for\nembedding sparse first chunk and other purposes.  Relocate two\nunit_map related functions upward in preparation.  This patch just\nmoves the code without any actual change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3cbc85652767c38b252c8de55f9fd180b29e4c0d",
      "tree": "ccfedb764830dbd4a90b9517a9ad365af694c01f",
      "parents": [
        "1d9d32572163b30be81dbe1409dfa7ea9763d0e8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "message": "percpu: add @align to pcpu_fc_alloc_fn_t\n\npcpu_fc_alloc_fn_t is about to see more interesting usage, add @align\nparameter.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1d9d32572163b30be81dbe1409dfa7ea9763d0e8",
      "tree": "a9ba62cffda9f77637ac509331cf6367075fd2c4",
      "parents": [
        "9a7737691e90d3cce0e5248f91826c50e5aa3fcf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "message": "percpu: make @dyn_size mandatory for pcpu_setup_first_chunk()\n\nNow that all actual first chunk allocation and copying happen in the\nfirst chunk allocators and helpers, there\u0027s no reason for\npcpu_setup_first_chunk() to try to determine @dyn_size automatically.\nThe only left user is page first chunk allocator.  Make it determine\ndyn_size like other allocators and make @dyn_size mandatory for\npcpu_setup_first_chunk().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "9a7737691e90d3cce0e5248f91826c50e5aa3fcf",
      "tree": "dbe43cb2d2a19539ca3fb58c52e4cbd68b51d24b",
      "parents": [
        "f58dc01ba2ca9fe3ab2ba4ca43d9c8a735cf62d8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "message": "percpu: drop @static_size from first chunk allocators\n\nFirst chunk allocators assume percpu areas have been linked using one\nof PERCPU_*() macros and depend on __per_cpu_load symbol defined by\nthose macros, so there isn\u0027t much point in passing in static area size\nexplicitly when it can be easily calculated from __per_cpu_start and\n__per_cpu_end.  Drop @static_size from all percpu first chunk\nallocators and helpers.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f58dc01ba2ca9fe3ab2ba4ca43d9c8a735cf62d8",
      "tree": "9eb76a0d6aa34e56f8650fe98a5ce26891a522ab",
      "parents": [
        "08fc45806103e59a37418e84719b878f9bb32540"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:50 2009 +0900"
      },
      "message": "percpu: generalize first chunk allocator selection\n\nNow that all first chunk allocators are in mm/percpu.c, it makes sense\nto make generalize percpu_alloc kernel parameter.  Define PCPU_FC_*\nand set pcpu_chosen_fc using early_param() in mm/percpu.c.  Arch code\ncan use the set value to determine which first chunk allocator to use.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "08fc45806103e59a37418e84719b878f9bb32540",
      "tree": "8b39b7769fd42457bdb2950ce02d9893f39c0b7d",
      "parents": [
        "00ae4064b1445524752575dd84df227c0687c99d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:49 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:49 2009 +0900"
      },
      "message": "percpu: build first chunk allocators selectively\n\nThere\u0027s no need to build unused first chunk allocators in.  Define\nCONFIG_NEED_PER_CPU_*_FIRST_CHUNK and let archs enable them\nselectively.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "00ae4064b1445524752575dd84df227c0687c99d",
      "tree": "bfe3400aed0d9f97c15ac991ba09af32387056ae",
      "parents": [
        "004018e2c06b9c650e88dddd973ae36799ed72b9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:49 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 15:00:49 2009 +0900"
      },
      "message": "percpu: rename 4k first chunk allocator to page\n\nPage size isn\u0027t always 4k depending on arch and configuration.  Rename\n4k first chunk allocator to page.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "a76761b621bcd8336065c4fe3a74f046858bc34c",
      "tree": "f9c7def7b55d97ffeb942a8240742397b767929e",
      "parents": [
        "872fb6dd6b07986417964e089074e7acfd025f4c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 15 23:35:14 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 15 23:35:14 2009 +0900"
      },
      "message": "percpu: add dummy pcpu_lpage_remapped() for !CONFIG_SMP\n\n!CONFIG_SMP was missing pcpu_lpage_remapped() definition causing build\nfailure.  Add dummy implementation.  This was discovered by linux-next\ntesting.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\n"
    },
    {
      "commit": "a530b7958612bafe2027e21359083dba84f0b3b4",
      "tree": "fecbfc0d23b7702a903e8b2539e04e6086ba4404",
      "parents": [
        "2f39e637ea240efb74cf807d31c93a71a0b89174"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:11:00 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:11:00 2009 +0900"
      },
      "message": "percpu: teach large page allocator about NUMA\n\nLarge page first chunk allocator is primarily used for NUMA machines;\nhowever, its NUMA handling is extremely simplistic.  Regardless of\ntheir proximity, each cpu is put into separate large page just to\nreturn most of the allocated space back wasting large amount of\nvmalloc space and increasing cache footprint.\n\nThis patch teachs NUMA details to large page allocator.  Given\nprocessor proximity information, pcpu_lpage_build_unit_map() will find\nfitting cpu -\u003e unit mapping in which cpus in LOCAL_DISTANCE share the\nsame large page and not too much virtual address space is wasted.\n\nThis greatly reduces the unit and thus chunk size and wastes much less\naddress space for the first chunk.  For example, on 4/4 NUMA machine,\nthe original code occupied 16MB of virtual space for the first chunk\nwhile the new code only uses 4MB - one 2MB page for each node.\n\n[ Impact: much better space efficiency on NUMA machines ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2f39e637ea240efb74cf807d31c93a71a0b89174",
      "tree": "d26bd3ad962031c5b495a528b4115c2ed4ff7a80",
      "parents": [
        "ce3141a277ff6cc37e51008b8888dc2cb7456ef1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:11:00 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:11:00 2009 +0900"
      },
      "message": "percpu: allow non-linear / sparse cpu -\u003e unit mapping\n\nCurrently cpu and unit are always identity mapped.  To allow more\nefficient large page support on NUMA and lazy allocation for possible\nbut offline cpus, cpu -\u003e unit mapping needs to be non-linear and/or\nsparse.  This can be easily implemented by adding a cpu -\u003e unit\nmapping array and using it whenever looking up the matching unit for a\ncpu.\n\nThe only unusal conversion is in pcpu_chunk_addr_search().  The passed\nin address is unit0 based and unit0 might not be in use so it needs to\nbe converted to address of an in-use unit.  This is easily done by\nadding the unit offset for the current processor.\n\n[ Impact: allows non-linear/sparse cpu -\u003e unit mapping, no visible change yet ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ce3141a277ff6cc37e51008b8888dc2cb7456ef1",
      "tree": "8bd43d595d85fa37de5f3a7030580aa56b590028",
      "parents": [
        "c8a51be4cabb7009db5f865169389242d49c4c60"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:11:00 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:11:00 2009 +0900"
      },
      "message": "percpu: drop pcpu_chunk-\u003epage[]\n\npercpu core doesn\u0027t need to tack all the allocated pages.  It needs to\nknow whether certain pages are populated and a way to reverse map\naddress to page when freeing.  This patch drops pcpu_chunk-\u003epage[] and\nuse populated bitmap and vmalloc_to_page() lookup instead.  Using\nvmalloc_to_page() exclusively is also possible but complicates first\nchunk handling, inflates cache footprint and prevents non-standard\nmemory allocation for percpu memory.\n\npcpu_chunk-\u003epage[] was used to track each page\u0027s allocation and\nallowed asymmetric population which happens during failure path;\nhowever, with single bitmap for all units, this is no longer possible.\nBite the bullet and rewrite (de)populate functions so that things are\ndone in clearly separated steps such that asymmetric population\ndoesn\u0027t happen.  This makes the (de)population process much more\nmodular and will also ease implementing non-standard memory usage in\nthe future (e.g. large pages).\n\nThis makes @get_page_fn parameter to pcpu_setup_first_chunk()\nunnecessary.  The parameter is dropped and all first chunk helpers are\nupdated accordingly.  Please note that despite the volume most changes\nto first chunk helpers are symbol renames for variables which don\u0027t\nneed to be referenced outside of the helper anymore.\n\nThis change reduces memory usage and cache footprint of pcpu_chunk.\nNow only #unit_pages bits are necessary per chunk.\n\n[ Impact: reduced memory usage and cache footprint for bookkeeping ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "38a6be525460f52ac6f2de1c3f73c5615a8853cd",
      "tree": "3427f05ecb70eb50614bdc23de689a94e044db37",
      "parents": [
        "8c4bfc6e8801616ab2e01c38140b2159b388d2ff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:59 2009 +0900"
      },
      "message": "percpu: simplify pcpu_setup_first_chunk()\n\nNow that all first chunk allocator helpers allocate and map the first\nchunk themselves, there\u0027s no need to have optional default alloc/map\nin pcpu_setup_first_chunk().  Drop @populate_pte_fn and only leave\n@dyn_size optional and make all other params mandatory.\n\nThis makes it much easier to follow what pcpu_setup_first_chunk() is\ndoing and what actual differences tweaking each parameter results in.\n\n[ Impact: drop unused code path ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8c4bfc6e8801616ab2e01c38140b2159b388d2ff",
      "tree": "e29e8bbfae362362554b870371a6187b41f92d82",
      "parents": [
        "8f05a6a65d944f2fed4eb384fb58aa8c8e5a9bab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:59 2009 +0900"
      },
      "message": "x86,percpu: generalize lpage first chunk allocator\n\nGeneralize and move x86 setup_pcpu_lpage() into\npcpu_lpage_first_chunk().  setup_pcpu_lpage() now is a simple wrapper\naround the generalized version.  Other than taking size parameters and\nusing arch supplied callbacks to allocate/free/map memory,\npcpu_lpage_first_chunk() is identical to the original implementation.\n\nThis simplifies arch code and will help converting more archs to\ndynamic percpu allocator.\n\nWhile at it, factor out pcpu_calc_fc_sizes() which is common to\npcpu_embed_first_chunk() and pcpu_lpage_first_chunk().\n\n[ Impact: code reorganization and generalization ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d4b95f80399471e4bce5e992700ff7f06ef91f6a",
      "tree": "a7b97c549629ea1032c36a41048ea847a20b8d27",
      "parents": [
        "788e5abc5441e9046dd91c995c6f1f75bbd144bf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:59 2009 +0900"
      },
      "message": "x86,percpu: generalize 4k first chunk allocator\n\nGeneralize and move x86 setup_pcpu_4k() into pcpu_4k_first_chunk().\nsetup_pcpu_4k() now is a simple wrapper around the generalized\nversion.  Other than taking size parameters and using arch supplied\ncallbacks to allocate/free memory, pcpu_4k_first_chunk() is identical\nto the original implementation.\n\nThis simplifies arch code and will help converting more archs to\ndynamic percpu allocator.\n\nWhile at it, s/pcpu_populate_pte_fn_t/pcpu_fc_populate_pte_fn_t/ for\nconsistency.\n\n[ Impact: code reorganization and generalization ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "788e5abc5441e9046dd91c995c6f1f75bbd144bf",
      "tree": "5ad49583625c81000759307f4928179f9aa9ca41",
      "parents": [
        "79ba6ac825fac187894e236c9df1ba5fcbf53fd3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:58 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 08:10:58 2009 +0900"
      },
      "message": "percpu: drop @unit_size from embed first chunk allocator\n\nThe only extra feature @unit_size provides is making dead space at the\nend of the first chunk which doesn\u0027t have any valid usecase.  Drop the\nparameter.  This will increase consistency with generalized 4k\nallocator.\n\nJames Bottomley spotted missing conversion for the default\nsetup_per_cpu_areas() which caused build breakage on all arcsh which\nuse it.\n\n[ Impact: drop unused code path ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e74e396204bfcb67570ba4517b08f5918e69afea",
      "tree": "df57c859e10f7fcbe5790e9b51a106d5bccfe8dc",
      "parents": [
        "0017c869ddcb73069905d09f9e98e68627466237"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 30 19:07:44 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 24 15:13:35 2009 +0900"
      },
      "message": "percpu: use dynamic percpu allocator as the default percpu allocator\n\nThis patch makes most !CONFIG_HAVE_SETUP_PER_CPU_AREA archs use\ndynamic percpu allocator.  The first chunk is allocated using\nembedding helper and 8k is reserved for modules.  This ensures that\nthe new allocator behaves almost identically to the original allocator\nas long as static percpu variables are concerned, so it shouldn\u0027t\nintroduce much breakage.\n\ns390 and alpha use custom SHIFT_PERCPU_PTR() to work around addressing\nrange limit the addressing model imposes.  Unfortunately, this breaks\nif the address is specified using a variable, so for now, the two\narchs aren\u0027t converted.\n\nThe following architectures are affected by this change.\n\n* sh\n* arm\n* cris\n* mips\n* sparc(32)\n* blackfin\n* avr32\n* parisc (broken, under investigation)\n* m32r\n* powerpc(32)\n\nAs this change makes the dynamic allocator the default one,\nCONFIG_HAVE_DYNAMIC_PER_CPU_AREA is replaced with its invert -\nCONFIG_HAVE_LEGACY_PER_CPU_AREA, which is added to yet-to-be converted\narchs.  These archs implement their own setup_per_cpu_areas() and the\nconversion is not trivial.\n\n* powerpc(64)\n* sparc(64)\n* ia64\n* alpha\n* s390\n\nBoot and batch alloc/free tests on x86_32 with debug code (x86_32\ndoesn\u0027t use default first chunk initialization).  Compile tested on\nsparc(32), powerpc(32), arm and alpha.\n\nKyle McMartin reported that this change breaks parisc.  The problem is\nstill under investigation and he is okay with pushing this patch\nforward and fixing parisc later.\n\n[ Impact: use dynamic allocator for most archs w/o custom percpu setup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Bryan Wu \u003ccooloney@kernel.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2e1483c995bbd0fa6cbd055ad76088a520799ba4",
      "tree": "4b555ae3452a80e3cebd7adcab83b019d1ca1b60",
      "parents": [
        "4f2294b6dc88d99295230d97fef2c9863cec44c3"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jun 11 13:24:13 2009 +0100"
      },
      "committer": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jun 11 17:04:18 2009 +0100"
      },
      "message": "kmemleak: Remove some of the kmemleak false positives\n\nThere are allocations for which the main pointer cannot be found but\nthey are not memory leaks. This patch fixes some of them. For more\ninformation on false positives, see Documentation/kmemleak.txt.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\n"
    },
    {
      "commit": "5028eaa97dd1dab9cd7c30c4d38f71c708ca64bc",
      "tree": "ff416e9ecb00ab2b616bce6acc4e2579c45b06b9",
      "parents": [
        "9b8de7479d0dbab1ed98b5b015d44232c9d3d08e"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Apr 21 23:00:29 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 21 19:40:00 2009 -0700"
      },
      "message": "PERCPU: Collect the DECLARE/DEFINE declarations together\n\nCollect the DECLARE/DEFINE declarations together in linux/percpu-defs.h so\nthat they\u0027re in one place, and give them descriptive comments, particularly\nthe SHARED_ALIGNED variant.\n\nIt would be nice to collect these in linux/percpu.h, but that\u0027s not possible\nwithout sorting out the severe #include recursion between the x86 arch headers\nand the general headers (and possibly other arches too).\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b8de7479d0dbab1ed98b5b015d44232c9d3d08e",
      "tree": "1b138996efe642f03699a7737af109dfa72ef830",
      "parents": [
        "ccc5ff94c66e628d3c501b26ace5d4339667715d"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Apr 21 23:00:24 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 21 19:39:59 2009 -0700"
      },
      "message": "FRV: Fix the section attribute on UP DECLARE_PER_CPU()\n\nIn non-SMP mode, the variable section attribute specified by DECLARE_PER_CPU()\ndoes not agree with that specified by DEFINE_PER_CPU().  This means that\narchitectures that have a small data section references relative to a base\nregister may throw up linkage errors due to too great a displacement between\nwhere the base register points and the per-CPU variable.\n\nOn FRV, the .h declaration says that the variable is in the .sdata section, but\nthe .c definition says it\u0027s actually in the .data section.  The linker throws\nup the following errors:\n\nkernel/built-in.o: In function `release_task\u0027:\nkernel/exit.c:78: relocation truncated to fit: R_FRV_GPREL12 against symbol `per_cpu__process_counts\u0027 defined in .data section in kernel/built-in.o\nkernel/exit.c:78: relocation truncated to fit: R_FRV_GPREL12 against symbol `per_cpu__process_counts\u0027 defined in .data section in kernel/built-in.o\n\nTo fix this, DECLARE_PER_CPU() should simply apply the same section attribute\nas does DEFINE_PER_CPU().  However, this is made slightly more complex by\nvirtue of the fact that there are several variants on DEFINE, so these need to\nbe matched by variants on DECLARE.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "066123a535927b3f17cac2305258cc71abdb0d92",
      "tree": "0913cbe29cd9f08cf98d828e50a109181351087a",
      "parents": [
        "36cd3c9f925b9307236505ae7ad1ad7ac4d4357c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Apr 10 12:02:40 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 10 21:36:18 2009 +0200"
      },
      "message": "percpu: unbreak alpha percpu\n\nFor the time being, move the generic percpu_*() accessors to\nlinux/percpu.h.\n\nasm-generic/percpu.h is meant to carry generic stuff for low level\nstuff - declarations, definitions and pointer offset calculation\nand so on but not for generic interface.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "66c3a75772247c31feabefb724e082220a1ab060",
      "tree": "5e61a0e44c82474729e81007edc2093d37fffe95",
      "parents": [
        "6074d5b0a319fe8400ff079a3c289406ca024321"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "message": "percpu: generalize embedding first chunk setup helper\n\nImpact: code reorganization\n\nSeparate out embedding first chunk setup helper from x86 embedding\nfirst chunk allocator and put it in mm/percpu.c.  This will be used by\nthe default percpu first chunk allocator and possibly by other archs.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6074d5b0a319fe8400ff079a3c289406ca024321",
      "tree": "465ad1ae2ba2a35ee2b67772e188f6a1f5ac189d",
      "parents": [
        "e01009833e22dc87075d770554b34d797843ed23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "message": "percpu: more flexibility for @dyn_size of pcpu_setup_first_chunk()\n\nImpact: cleanup, more flexibility for first chunk init\n\nNon-negative @dyn_size used to be allowed iff @unit_size wasn\u0027t auto.\nThis restriction stemmed from implementation detail and made things a\nbit less intuitive.  This patch allows @dyn_size to be specified\nregardless of @unit_size and swaps the positions of @dyn_size and\n@unit_size so that the parameter order makes more sense (static,\nreserved and dyn sizes followed by enclosing unit_size).\n\nWhile at it, add @unit_size \u003e\u003d PCPU_MIN_UNIT_SIZE sanity check.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6b19b0c2400437a3c10059ede0e59b517092e1bd",
      "tree": "4fc1868fc8fde37315b54c6d416b48000621af9d",
      "parents": [
        "edcb463997ed7b2ffa3bac76e3e75957318f2e01"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "x86, percpu: setup reserved percpu area for x86_64\n\nImpact: fix relocation overflow during module load\n\nx86_64 uses 32bit relocations for symbol access and static percpu\nsymbols whether in core or modules must be inside 2GB of the percpu\nsegement base which the dynamic percpu allocator doesn\u0027t guarantee.\nThis patch makes x86_64 reserve PERCPU_MODULE_RESERVE bytes in the\nfirst chunk so that module percpu areas are always allocated from the\nfirst chunk which is always inside the relocatable range.\n\nThis problem exists for any percpu allocator but is easily triggered\nwhen using the embedding allocator because the second chunk is located\nbeyond 2GB on it.\n\nThis patch also changes the meaning of PERCPU_DYNAMIC_RESERVE such\nthat it only indicates the size of the area to reserve for dynamic\nallocation as static and dynamic areas can be separate.  New\nPERCPU_DYNAMIC_RESERVED is increased by 4k for both 32 and 64bits as\nthe reserved area separation eats away some allocatable space and\nhaving slightly more headroom (currently between 4 and 8k after\nminimal boot sans module area) makes sense for common case\nperformance.\n\nx86_32 can address anywhere from anywhere and doesn\u0027t need reserving.\n\nMike Galbraith first reported the problem first and bisected it to the\nembedding percpu allocator commit.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nReported-by: Jaswinder Singh Rajput \u003cjaswinder@kernel.org\u003e\n"
    },
    {
      "commit": "edcb463997ed7b2ffa3bac76e3e75957318f2e01",
      "tree": "d1eefb78736404993b0de4a049392f9af578e29e",
      "parents": [
        "3e24aa58907c62bc79d1094e941a374568f62522"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu, module: implement reserved allocation and use it for module percpu variables\n\nImpact: add reserved allocation functionality and use it for module\n\tpercpu variables\n\nThis patch implements reserved allocation from the first chunk.  When\nsetting up the first chunk, arch can ask to set aside certain number\nof bytes right after the core static area which is available only\nthrough a separate reserved allocator.  This will be used primarily\nfor module static percpu variables on architectures with limited\nrelocation range to ensure that the module perpcu symbols are inside\nthe relocatable range.\n\nIf reserved area is requested, the first chunk becomes reserved and\nisn\u0027t available for regular allocation.  If the first chunk also\nincludes piggy-back dynamic allocation area, a separate chunk mapping\nthe same region is created to serve dynamic allocation.  The first one\nis called static first chunk and the second dynamic first chunk.\nAlthough they share the page map, their different area map\ninitializations guarantee they serve disjoint areas according to their\npurposes.\n\nIf arch doesn\u0027t setup reserved area, reserved allocation is handled\nlike any other allocation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "cafe8816b217b98dc3f268d3b77445da498beb4f",
      "tree": "7ebbb4e9fc2c4f6ec0035170d4736aecc00d2501",
      "parents": [
        "61ace7fa2fff9c4b6641c506b6b3f1a9394a1b11"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu: use negative for auto for pcpu_setup_first_chunk() arguments\n\nImpact: argument semantic cleanup\n\nIn pcpu_setup_first_chunk(), zero @unit_size and @dyn_size meant\nauto-sizing.  It\u0027s okay for @unit_size as 0 doesn\u0027t make sense but 0\ndynamic reserve size is valid.  Alos, if arch @dyn_size is calculated\nfrom other parameters, it might end up passing in 0 @dyn_size and\nmalfunction when the size is automatically adjusted.\n\nThis patch makes both @unit_size and @dyn_size ssize_t and use -1 for\nauto sizing.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "2441d15c97d498b18f03ae9fba262ffeae42a08b",
      "tree": "b1ffae67036b6b1eef544342490d330a9ba183d4",
      "parents": [
        "6a242909b01120f6f3d571c0b75e20ec61f0d8d3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu: cosmetic renames in pcpu_setup_first_chunk()\n\nImpact: cosmetic, preparation for future changes\n\nMake the following renames in pcpur_setup_first_chunk() in preparation\nfor future changes.\n\n* s/free_size/dyn_size/\n* s/static_vm/first_vm/\n* s/static_chunk/schunk/\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6a242909b01120f6f3d571c0b75e20ec61f0d8d3",
      "tree": "30688c18508f7ad0fe7b725e502c1e85fe33e7e5",
      "parents": [
        "f254f3909efaf59ca2d0f408de2d044dace60706"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:58 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:58 2009 +0900"
      },
      "message": "percpu: clean up percpu constants\n\nImpact: cleaup\n\nMake the following cleanups.\n\n* There isn\u0027t much arch-specific about PERCPU_MODULE_RESERVE.  Always\n  define it whether arch overrides PERCPU_ENOUGH_ROOM or not.\n\n* blackfin overrides PERCPU_ENOUGH_ROOM to align static area size.  Do\n  it by default.\n\n* percpu allocation sizes doesn\u0027t have much to do with the page size.\n  Don\u0027t use PAGE_SHIFT in their definition.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Bryan Wu \u003ccooloney@kernel.org\u003e\n"
    },
    {
      "commit": "e317603694bfd17b28a40de9d65e1a4ec12f816e",
      "tree": "ae286d9e1ae9ffacdd325ea76cd1d9ee88032efc",
      "parents": [
        "d2b0261506602bd969164879206027b30358ffdf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 26 10:54:17 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 26 10:54:17 2009 +0900"
      },
      "message": "percpu: fix too low alignment restriction on UP\n\nUP __alloc_percpu() triggered WARN_ON_ONCE() if the requested\nalignment is larger than that of unsigned long long, which is too\nsmall for all the cacheline aligned allocations.  Bump it up to\nSMP_CACHE_BYTES which kmalloc allocations generally guarantee.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d2b0261506602bd969164879206027b30358ffdf",
      "tree": "e1acca60dfc21bc89f1bdceba3b58610eb8e23ee",
      "parents": [
        "0dcec8c27ba44cd11c6e68c46d5fd553818a3837"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 14:36:45 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 14:38:12 2009 +0100"
      },
      "message": "alloc_percpu: fix UP build\n\nImpact: build fix\n\nthe !SMP branch had a \u0027gfp\u0027 leftover:\n\n include/linux/percpu.h: In function \u0027__alloc_percpu\u0027:\n include/linux/percpu.h:160: error: \u0027gfp\u0027 undeclared (first use in this function)\n include/linux/percpu.h:160: error: (Each undeclared identifier is reported only once\n include/linux/percpu.h:160: error: for each function it appears in.)\n\nUse GFP_KERNEL like the SMP version does.\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8d408b4be37bc49c9086531f2ebe411cf5731746",
      "tree": "559a532a04b24dd164ec2c72ab545b30a5a604ef",
      "parents": [
        "d9b55eeb1d55ef2dc5a4fdbff9604c2c68cb5649"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "message": "percpu: give more latitude to arch specific first chunk initialization\n\nImpact: more latitude for first percpu chunk allocation\n\nThe first percpu chunk serves the kernel static percpu area and may or\nmay not contain extra room for further dynamic allocation.\nInitialization of the first chunk needs to be done before normal\nmemory allocation service is up, so it has its own init path -\npcpu_setup_static().\n\nIt seems archs need more latitude while initializing the first chunk\nfor example to take advantage of large page mapping.  This patch makes\nthe following changes to allow this.\n\n* Define PERCPU_DYNAMIC_RESERVE to give arch hint about how much space\n  to reserve in the first chunk for further dynamic allocation.\n\n* Rename pcpu_setup_static() to pcpu_setup_first_chunk().\n\n* Make pcpu_setup_first_chunk() much more flexible by fetching page\n  pointer by callback and adding optional @unit_size, @free_size and\n  @base_addr arguments which allow archs to selectively part of chunk\n  initialization to their likings.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "fbf59bc9d74d1fb30b8e0630743aff2806eafcea",
      "tree": "3f0a7b7cf809a25e27b7a5ba0b16321fdb901801",
      "parents": [
        "8fc48985006da4ceba24508db64ec77fc0dfe3bb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "percpu: implement new dynamic percpu allocator\n\nImpact: new scalable dynamic percpu allocator which allows dynamic\n        percpu areas to be accessed the same way as static ones\n\nImplement scalable dynamic percpu allocator which can be used for both\nstatic and dynamic percpu areas.  This will allow static and dynamic\nareas to share faster direct access methods.  This feature is optional\nand enabled only when CONFIG_HAVE_DYNAMIC_PER_CPU_AREA is defined by\narch.  Please read comment on top of mm/percpu.c for details.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f2a8205c4ef1af917d175c36a4097ae5587791c8",
      "tree": "6c5531aa50803fda8005ea94c04b94fcd0310be3",
      "parents": [
        "313e458f81ec3852106c5a83830fe0d4f405a71a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "percpu: kill percpu_alloc() and friends\n\nImpact: kill unused functions\n\npercpu_alloc() and its friends never saw much action.  It was supposed\nto replace the cpu-mask unaware __alloc_percpu() but it never happened\nand in fact __percpu_alloc_mask() itself never really grew proper\nup/down handling interface either (no exported interface for\npopulate/depopulate).\n\npercpu allocation is about to go through major reimplementation and\nthere\u0027s no reason to carry this unused interface around.  Replace it\nwith __alloc_percpu() and free_percpu().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "313e458f81ec3852106c5a83830fe0d4f405a71a",
      "tree": "682cd5b6d7dc4e0e9eccdcc7915820dd33c87a34",
      "parents": [
        "b36128c830a8f5bd7d4981f5b0b69950f5928ee6"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "alloc_percpu: add align argument to __alloc_percpu.\n\nThis prepares for a real __alloc_percpu, by adding an alignment argument.\nOnly one place uses __alloc_percpu directly, and that\u0027s for a string.\n\ntj: af_inet also uses __alloc_percpu(), update it.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b36128c830a8f5bd7d4981f5b0b69950f5928ee6",
      "tree": "c1cec2c2b374b53372ab2e0592321aae9f5ba245",
      "parents": [
        "6b588c18f8dacfa6d7957c33c5ff832096e752d3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "alloc_percpu: change percpu_ptr to per_cpu_ptr\n\nImpact: cleanup\n\nThere are two allocated per-cpu accessor macros with almost identical\nspelling.  The original and far more popular is per_cpu_ptr (44\nfiles), so change over the other 4 files.\n\ntj: kill percpu_ptr() and update UP too\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: mingo@redhat.com\nCc: lenb@kernel.org\nCc: cpufreq@vger.kernel.org\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "d3770449d3cb058b94ca1d050d5ced4a66c75ce4",
      "tree": "5e546795ca8bf8431f9a176d20a3c4691a60ac9a",
      "parents": [
        "56fc82c5360cdf0b250b5eb74f38657b0402faa5"
      ],
      "author": {
        "name": "Brian Gerst",
        "email": "brgerst@gmail.com",
        "time": "Sun Feb 08 09:58:38 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:30:29 2009 +0100"
      },
      "message": "percpu: make PER_CPU_BASE_SECTION overridable by arches\n\nImpact: bug fix\n\nIA-64 needs to put percpu data in the seperate section even on UP.\nFixes regression caused by \"percpu: refactor percpu.h\"\n\nSigned-off-by: Brian Gerst \u003cbrgerst@gmail.com\u003e\nAcked-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0bd74fa8e29dcad98f7e8ffe01ec05fb3326abaf",
      "tree": "8b2768ec721d649e1c9d0c8cff4caf44a5326263",
      "parents": [
        "8ce031972b40da58c268caba8c5ea3c0856d7131"
      ],
      "author": {
        "name": "Brian Gerst",
        "email": "brgerst@gmail.com",
        "time": "Mon Jan 19 12:21:27 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 20 12:29:19 2009 +0900"
      },
      "message": "percpu: refactor percpu.h\n\nImpact: cleanup\n\nRefactor the DEFINE_PER_CPU_* macros and add .data.percpu.first\nsection.\n\nSigned-off-by: Brian Gerst \u003cbrgerst@gmail.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "d3d0ba7b8fb8f57c33207adcb41f40c176148c03",
      "tree": "39a93460aa2c6eb8286fbba6c551f95443e175dd",
      "parents": [
        "9042763808c5285a1a61b45b0fe98a710a4c903c",
        "63cc8c75156462d4b42cbdd76c293b7eee7ddbfe"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 05 09:24:30 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 05 09:24:30 2008 +0200"
      },
      "message": "Merge commit \u002763cc8c75156462d4b42cbdd76c293b7eee7ddbfe\u0027:\n\n  \"percpu: introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro\"\n\ninto x86/core\n\nConflicts:\n\tarch/x86/kernel/cpu/common.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9d8fddfb17aaee4ffc5e3d0560620d0fa8b50a42",
      "tree": "f8a6b13a3048d1ae9c169b2d732fa05d8dcdf2ac",
      "parents": [
        "9e5c6da71e89fa25ced6e88182225a99941bec90"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 19:46:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:12 2008 -0700"
      },
      "message": "mm/allocpercpu.c: make 4 functions static\n\nThis patch makes the following needlessly global functions static:\n - percpu_depopulate()\n - __percpu_depopulate_mask()\n - percpu_populate()\n - __percpu_populate_mask()\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63cc8c75156462d4b42cbdd76c293b7eee7ddbfe",
      "tree": "e014b4c61399f8f74347352e6ea76ddf1502dcfa",
      "parents": [
        "75d3bce2fc0a80f435fe12f2c9ed2632c8ac29e4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon May 12 15:44:40 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun May 25 07:03:46 2008 +0200"
      },
      "message": "percpu: introduce DEFINE_PER_CPU_PAGE_ALIGNED() macro\n\nWhile examining holes in percpu section I found this :\n\nc05f5000 D per_cpu__current_task\nc05f5000 D __per_cpu_start\nc05f5004 D per_cpu__cpu_number\nc05f5008 D per_cpu__irq_regs\nc05f500c d per_cpu__cpu_devices\nc05f5040 D per_cpu__cyc2ns\n\n\u003cBig Hole of about 4000 bytes\u003e\n\nc05f6000 d per_cpu__cpuid4_info\nc05f6004 d per_cpu__cache_kobject\nc05f6008 d per_cpu__index_kobject\n\n\u003cBig Hole of about 4000 bytes\u003e\n\nc05f7000 D per_cpu__gdt_page\n\nThis is because gdt_page is a percpu variable, defined with\na page alignement, and linker is doing its job, two times because of .o\nnesting in the build process.\n\nI introduced a new macro DEFINE_PER_CPU_PAGE_ALIGNED() to avoid\nwasting this space. All page aligned variables (only one at this time)\nare put in a separate\nsubsection .data.percpu.page_aligned, at the very begining of percpu zone.\n\nBefore patch , on a x86_32 machine :\n\n.data.percpu                30232   3227471872\n.data.percpu                22168   3227471872\n\nThats 8064 bytes saved for each CPU.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "44c81433e8b05dbc85985d939046f10f95901184",
      "tree": "861801baf94a47c38f449f99aea6b5a0395f2f10",
      "parents": [
        "fd8a4221ad76df700ff34875c9fbc42302aa4ba3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed May 14 16:05:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:14 2008 -0700"
      },
      "message": "per_cpu: fix DEFINE_PER_CPU_SHARED_ALIGNED for modules\n\nCurrent module loader lookups \".data.percpu\" ELF section to perform\nper_cpu relocation.  But DEFINE_PER_CPU_SHARED_ALIGNED() uses another\nsection (\".data.percpu.shared_aligned\"), currently only handled in\nvmlinux.lds, not by module loader.\n\nTo correct this problem, instead of adding logic into module loader, or\nusing at build time a module.lds file for all arches to group\n\".data.percpu.shared_aligned\" into \".data.percpu\", just use \".data.percpu\"\nfor modules.\n\nAlignment requirements are correctly handled by ld and module loader.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Fenghua Yu \u003cfenghua.yu@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": "aab3c3b01d1848a5e8a1ddec4e5656fc4de04982",
      "tree": "ca7557e41e500fe57141a5fec33a9c8fe608f49d",
      "parents": [
        "1aeb272cf09f9e2cbc62163b9f37a9b4d1c7e81d"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@crashcourse.ca",
        "time": "Tue Apr 29 00:59:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:04 2008 -0700"
      },
      "message": "Remove superfluous include of string.h from percpu.h\n\nThere\u0027s nothing in percpu.h that requires an explicit inclusion of\nstring.h.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3242151906372f30f57feaa43b4cac96a23edb1",
      "tree": "d258219aa13dfeae8d9fb5db1fd220a0664a680d",
      "parents": [
        "e7ca2d41a029577a8cff453d1445951d4f96bfd8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Feb 06 01:37:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:04 2008 -0800"
      },
      "message": "PERCPU : __percpu_alloc_mask() can dynamically size percpu_data storage\n\nInstead of allocating a fix sized array of NR_CPUS pointers for percpu_data,\nwe can use nr_cpu_ids, which is generally \u003c NR_CPUS.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05991bef104051d47e2160ee9499186aff7da5ad",
      "tree": "ff6b00b2d407acd0b743d4272f4577e97e09c823",
      "parents": [
        "3afc620229ccc8214ef96fd0e7db26d79f788167"
      ],
      "author": {
        "name": "travis@sgi.com",
        "email": "travis@sgi.com",
        "time": "Wed Jan 30 23:27:58 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 23:27:58 2008 +0100"
      },
      "message": "ia64: use generic percpu\n\nia64 has a special processor specific mapping that can be used to locate the\noffset for the current per cpu area.\n\nCc: linux-ia64@vger.kernel.org\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nAcked-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5280e004fc22314122c84978c0b6a741cf96dc0f",
      "tree": "008b96d81a924be764629f62f98fa5f7c9e04773",
      "parents": [
        "b32ef636a59aad12f9f9b5dc34c93222842c58ba"
      ],
      "author": {
        "name": "travis@sgi.com",
        "email": "travis@sgi.com",
        "time": "Wed Jan 30 13:32:52 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:32:52 2008 +0100"
      },
      "message": "percpu: move arch XX_PER_CPU_XX definitions into linux/percpu.h\n\n- Special consideration for IA64: Add the ability to specify\n  arch specific per cpu flags\n\n- remove .data.percpu attribute from DEFINE_PER_CPU for non-smp case.\n\nThe arch definitions are all the same. So move them into linux/percpu.h.\n\nWe cannot move DECLARE_PER_CPU since some include files just include\nasm/percpu.h to avoid include recursion problems.\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0a3021f4e249fbdb5f30d614707b5e02022e4c9b",
      "tree": "c01b80fa03dbb4a853b46f182864384736a54088",
      "parents": [
        "9aacd599342fdfc1fb9422f37e900609b7a46249"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sun Jul 15 23:39:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:42 2007 -0700"
      },
      "message": "Remove unnecessary includes of spinlock.h under include/linux\n\nRemove the obviously unnecessary includes of \u003clinux/spinlock.h\u003e under the\ninclude/linux/ directory, and fix the couple errors that are introduced as\na result of that.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b00742d399513a4100c24cc2accefdc1bb1e0b15",
      "tree": "57551a08eb218ed4aadb0a90806f33826df27f8a",
      "parents": [
        "bbba11c35baaad3f70f32e185a2c1d40d7901fe9"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "message": "[PATCH] x86-64: Account for module percpu space separately from kernel percpu\n\nRather than using a single constant PERCPU_ENOUGH_ROOM, compute it as\nthe sum of kernel_percpu + PERCPU_MODULE_RESERVE.  This is now common\nto all architectures; if an architecture wants to set\nPERCPU_ENOUGH_ROOM to something special, then it may do so (ia64 is\nthe only one which does).\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "a666ecfbf512dbd63a60f65d2ad6733a9a1b12ee",
      "tree": "670d0bd90f424101a8f05639ff517e464c4005c6",
      "parents": [
        "dc366708b3b022050f139347a44c65a102e4835d"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Fri Oct 06 00:43:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 06 08:53:41 2006 -0700"
      },
      "message": "[PATCH] Fix typo in \"syntax error if percpu macros are incorrectly used\" patch\n\nTrivial typo fix in the \"syntax error if percpu macros are incorrectly\nused\" patch.  I misspelled \"identifier\" in all places.  D\u0027Oh!\n\nThanks to Dirk Mueller to point this out.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0891a8d706d6e6838a926b6dec42f95581747d0e",
      "tree": "dc926aef2b56cbe4ddf3a974c51a99f70d39c1ea",
      "parents": [
        "3dcbbcda7c5b77c400791b26facd6593c5b176e0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Fri Sep 29 01:58:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:02 2006 -0700"
      },
      "message": "[PATCH] __percpu_alloc_mask() has to be __always_inline in UP case\n\n...  or we\u0027ll end up with cpu_online_map being evaluated on UP.  In\nmodules.  cpumask.h is very careful to avoid that, and for a very good\nreason.  So should we...\n\nPS: yes, it really triggers (on alpha).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7ff6f08295d90ab20d25200ef485ebb45b1b8d71",
      "tree": "4c3410dcf5191ab574304f3ffbafd675545c2297",
      "parents": [
        "8bc719d3cab8414938f9ea6e33b58d8810d18068"
      ],
      "author": {
        "name": "Martin Peschke",
        "email": "mp3@de.ibm.com",
        "time": "Mon Sep 25 23:31:21 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:47 2006 -0700"
      },
      "message": "[PATCH] CPU hotplug compatible alloc_percpu()\n\nThis patch splits alloc_percpu() up into two phases.  Likewise for\nfree_percpu().  This allows clients to limit initial allocations to online\ncpu\u0027s, and to populate or depopulate per-cpu data at run time as needed:\n\n  struct my_struct *obj;\n\n  /* initial allocation for online cpu\u0027s */\n  obj \u003d percpu_alloc(sizeof(struct my_struct), GFP_KERNEL);\n\n  ...\n\n  /* populate per-cpu data for cpu coming online */\n  ptr \u003d percpu_populate(obj, sizeof(struct my_struct), GFP_KERNEL, cpu);\n\n  ...\n\n  /* access per-cpu object */\n  ptr \u003d percpu_ptr(obj, smp_processor_id());\n\n  ...\n\n  /* depopulate per-cpu data for cpu going offline */\n  percpu_depopulate(obj, cpu);\n\n  ...\n\n  /* final removal */\n  percpu_free(obj);\n\nSigned-off-by: Martin Peschke \u003cmp3@de.ibm.com\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": "632bbfeee4f042c05bc65150b4433a297d3fe387",
      "tree": "ce67b5fa4bec38610fc0ecb9b20be6aa69763bb3",
      "parents": [
        "0a2966b48fb784e437520e400ddc94874ddbd4e8"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Mon Sep 25 23:30:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] trigger a syntax error if percpu macros are incorrectly used\n\nget_cpu_var()/per_cpu()/__get_cpu_var() arguments must be simple\nidentifiers.  Otherwise the arch dependent implementations might break.\n\nThis patch enforces the correct usage of the macros by producing a syntax\nerror if the variable is not a simple identifier.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f867bac65419a98c9682f4409e087582d29ec5f6",
      "tree": "c65e5663259ae2df77179683c8189e6c3de3b9fe",
      "parents": [
        "e78c9a004aadebe22306c81d1a7f1d1278dc37f9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Jan 08 01:03:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:59 2006 -0800"
      },
      "message": "[PATCH] remove unused blkp field in percpu_data\n\nI found that blkp field was not used in kernel tree.\n\nAs most of the times NR_CPUS is a power of two and kmalloc() memory blocks\ntoo, this extra field basically doubles the memory space allocated in\n__alloc_percpu() to store the \u0027struct percpu_data\u0027\n\n(for example, if NR_CPUS\u003d8 on i386, kmalloc(4*8+4) returns a 64 bytes block\ninstead of a 32 bytes block after this patch)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f9f7500521b25dbf1aba476b81230489ad8e2c4b",
      "tree": "f2bf2f64023c4968ac8d08da54b8aaef86354591",
      "parents": [
        "b792de39d892e06b18ddea85be076bae123d6bf6"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Jan 08 01:00:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:39 2006 -0800"
      },
      "message": "[PATCH] slab: remove unused align parameter from alloc_percpu\n\n__alloc_percpu and alloc_percpu both take an \u0027align\u0027 argument which is\ncompletely ignored.  snmp6_mib_init() in net/ipv6/af_inet6.c attempts to use\nit, but it will be ignored.  Therefore, remove the \u0027align\u0027 argument and fixup\nthe lone caller.\n\nSigned-off-by: Matthew Dobson \u003ccolpatch@us.ibm.com\u003e\nAcked-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "66341a905ef5b3e7aea65b5d9bd1b0361b0ccc61",
      "tree": "e993af70651ea563a3d960b2297301ddeb2616bd",
      "parents": [
        "0f5c79f2920cbc21c718daeb0b12d69acf4de163"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Sun Nov 13 16:07:21 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:15 2005 -0800"
      },
      "message": "[PATCH] Shut up per_cpu_ptr() on UP\n\nCurrently per_cpu_ptr() doesn\u0027t really do anything with \u0027cpu\u0027 in the UP\ncase.  This is problematic in the cases where this is the only place the\nvariable is referenced:\n\n  CC      kernel/workqueue.o\n  kernel/workqueue.c: In function `current_is_keventd\u0027:\n  kernel/workqueue.c:460: warning: unused variable `cpu\u0027\n\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"
    }
  ]
}
