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