)]}'
{
  "log": [
    {
      "commit": "833af8427be4b217b5bc522f61afdbd3f1d282c2",
      "tree": "7af86f8c599c4513f81c9b37ec34926cb4728316",
      "parents": [
        "4a6cc4bd32e580722882115d4c8b964d732c11e4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 11 15:35:18 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 13 00:55:35 2009 +0900"
      },
      "message": "percpu: restructure pcpu_extend_area_map() to fix bugs and improve readability\n\npcpu_extend_area_map() had the following two bugs.\n\n* It should return 1 if pcpu_lock was dropped and reacquired but it\n  returned 0.  This could lead to oops if free_percpu() races with\n  area map extension.\n\n* pcpu_mem_free() was called under pcpu_lock.  pcpu_mem_free() might\n  end up calling vfree() which isn\u0027t IRQ safe.  This could lead to\n  deadlock through lock order inversion via IRQ.\n\nIn addition, Linus pointed out that the temporary lock dropping and\nsubtle three-way return value of pcpu_extend_area_map() was very ugly\nand suggested to split the function into two - pcpu_need_to_extend()\nand pcpu_extend_area_map().\n\nThis patch restructures pcpu_extend_area_map() as suggested and fixes\nthe two bugs.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "403a91b1659cb149dbddc5885f892734ae4542d8",
      "tree": "c953c271057033b5fbc47b8ddb77c78d926c221e",
      "parents": [
        "1a0c3298d6c6bfc357c38772e7f32d193c60c77d"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Oct 29 00:25:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 00:25:59 2009 +0900"
      },
      "message": "percpu: allow pcpu_alloc() to be called with IRQs off\n\npcpu_alloc() and pcpu_extend_area_map() perform a series of\nspin_lock_irq()/spin_unlock_irq() calls, which make them unsafe\nwith respect to being called from contexts which have IRQs off.\n\nThis patch converts the code to perform save/restore of flags instead,\nmaking pcpu_alloc() (or __alloc_percpu() respectively) to be called\nfrom early kernel startup stage, where IRQs are off.\n\nThis is needed for proper initialization of per-cpu rq_weight data from\nsched_init().\n\ntj: added comment explaining why irqsave/restore is used in alloc path.\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1a0c3298d6c6bfc357c38772e7f32d193c60c77d",
      "tree": "dc39e4615cb321689176b75b6ddb6bf70c7ff569",
      "parents": [
        "f2badb0c950ed308be9b321203b9c8d341690cd4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Oct 04 09:31:05 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 12 17:04:42 2009 +0900"
      },
      "message": "percpu: fix compile warnings\n\nFix the following two compile warnings which show up on i386.\n\nmm/percpu.c:1873: warning: comparison of distinct pointer types lacks a cast\nmm/percpu.c:1879: warning: format \u0027%lx\u0027 expects type \u0027long unsigned int\u0027, but argument 2 has type \u0027size_t\u0027\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "f2badb0c950ed308be9b321203b9c8d341690cd4",
      "tree": "5da0e7493192f97be604e257fd10847ae3a27504",
      "parents": [
        "635b75fc18858d3522e481c043de764766db923c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 29 09:17:58 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 29 09:17:58 2009 +0900"
      },
      "message": "percpu: make allocation failures more verbose\n\nWarn and dump stack when percpu allocation fails.  percpu allocator is\nstill young and unchecked NULL percpu pointer usage can result in\nrandom memory corruption when combined with the pointer shifting in\naccess macros.  Allocation failures should be rare and the warning\nmessage will be disabled after certain times.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "635b75fc18858d3522e481c043de764766db923c",
      "tree": "0bd2dc916bac8d0188bdd3ba15d0a1b00aa86e48",
      "parents": [
        "6ea529a2037ce662fc6bfa572b46d47407d08805"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 24 09:43:11 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 29 09:17:57 2009 +0900"
      },
      "message": "percpu: make pcpu_setup_first_chunk() failures more verbose\n\nThe parameters to pcpu_setup_first_chunk() come from different sources\ndepending on architecture and can be quite complex.  The function runs\nvarious sanity checks on the parameters and triggers BUG() if\nsomething isn\u0027t right.  However, this is very early during the boot\nand not reporting exactly what the problem is makes debugging even\nharder.\n\nAdd PCPU_SETUP_BUG() macro which prints out enough information about\nthe parameters.  As the macro still puts separate BUG() for each\ncheck, it won\u0027t lose any information even on the situations where only\nthe program counter can be retrieved.\n\nWhile at it, also bump pcpu_dump_alloc_info() message to KERN_INFO so\nthat it\u0027s visible on the console if boot fails to complete.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6ea529a2037ce662fc6bfa572b46d47407d08805",
      "tree": "b9e8721eb4edc563ae0e40500a58dfa053ceed39",
      "parents": [
        "a70c691376c7c7f94af41395848066f59501fffd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 24 18:46:01 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 29 09:17:57 2009 +0900"
      },
      "message": "percpu: make embedding first chunk allocator check vmalloc space size\n\nEmbedding first chunk allocator maintains the distances between units\nin the vmalloc area and thus needs vmalloc space to be larger than the\nmaximum distances between units; otherwise, it wouldn\u0027t be able to\ncreate any dynamic chunks.  This patch makes the embedding first chunk\nallocator check vmalloc space size and if the maximum distance between\nunits is larger than 75% of it, print warning and, if page mapping\nallocator is available, fail initialization so that the system falls\nback onto it.\n\nThis should work around percpu allocation failure problems on certain\nsparc64 configurations where distances between NUMA nodes are larger\nthan the vmalloc area and makes percpu allocator more robust for\nfuture configurations.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "fb59e72e7e10fd9d31f4e522f1b28254c2cc8a6c",
      "tree": "56d4dccd4bafd1fbd61744cd09888f6d4c80abb5",
      "parents": [
        "ffe0d5a575459ffe664b0762130b557f826fcace"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 24 18:50:34 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 29 09:17:57 2009 +0900"
      },
      "message": "percpu: make pcpu_build_alloc_info() clear static buffers\n\npcpu_build_alloc_info() may be called multiple times when percpu is\nfalling back to different first chunk allocator.  Make it clear static\nbuffers so that they don\u0027t contain values from previous runs.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "ffe0d5a575459ffe664b0762130b557f826fcace",
      "tree": "af581934a717c510a2c6897ca4ed7fcefd440578",
      "parents": [
        "17d857be649a21ca90008c6dc425d849fa83db5c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 29 09:17:56 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 29 09:17:56 2009 +0900"
      },
      "message": "percpu: fix unit_map[] verification in pcpu_setup_first_chunk()\n\npcpu_setup_first_chunk() incorrectly used NR_CPUS as the impossible\nunit number while unit number can equal and go over NR_CPUS with\nsparse unit map.  This triggers BUG_ON() spuriously on machines which\nhave non-power-of-two number of cpus.  Use UINT_MAX instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-and-tested-by: Tony Vroon \u003ctony@linx.net\u003e\n"
    },
    {
      "commit": "5579fd7e6aed8860ea0c8e3f11897493153b10ad",
      "tree": "8f797ccd0f1a2c88f1605ae9e90b3ac17485de27",
      "parents": [
        "04a13c7c632e1fe04a5f6e6c83565d2559e37598",
        "c2a7e818019f20a5cf7fb26a6eb59e212e6c0cd8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 15 09:57:19 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 15 09:57:19 2009 +0900"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\n* pcpu_chunk_page_occupied() doesn\u0027t exist in for-next.\n* pcpu_chunk_addr_search() updated to use raw_smp_processor_id().\n\nConflicts:\n\tmm/percpu.c\n"
    },
    {
      "commit": "04a13c7c632e1fe04a5f6e6c83565d2559e37598",
      "tree": "5f0d78abea4655a58c06c70f106d6265b97fae74",
      "parents": [
        "142d44b0dd6741a64a7bdbe029110e7c1dcf1d23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 01 21:12:28 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Sep 01 21:23:18 2009 +0900"
      },
      "message": "percpu: don\u0027t assume existence of cpu0\n\npercpu incorrectly assumed that cpu0 was always there which led to the\nfollowing warning and eventual oops on sparc machines w/o cpu0.\n\n  WARNING: at mm/percpu.c:651 pcpu_map+0xdc/0x100()\n  Modules linked in:\n  Call Trace:\n    [000000000045eb70] warn_slowpath_common+0x50/0xa0\n    [000000000045ebdc] warn_slowpath_null+0x1c/0x40\n    [00000000004d493c] pcpu_map+0xdc/0x100\n    [00000000004d59a4] pcpu_alloc+0x3e4/0x4e0\n    [00000000004d5af8] __alloc_percpu+0x18/0x40\n    [00000000005b112c] __percpu_counter_init+0x4c/0xc0\n  ...\n  Unable to handle kernel NULL pointer dereference\n  ...\n   I7: \u003csysfs_new_dirent+0x30/0x120\u003e\n   Disabling lock debugging due to kernel taint\n   Caller[000000000053c1b0]: sysfs_new_dirent+0x30/0x120\n   Caller[000000000053c7a4]: create_dir+0x24/0xc0\n   Caller[000000000053c870]: sysfs_create_dir+0x30/0x80\n   Caller[00000000005990e8]: kobject_add_internal+0xc8/0x200\n  ...\n   Kernel panic - not syncing: Attempted to kill the idle task!\n\nThis patch fixes the problem by backporting parts from devel branch to\nmake percpu core not depend on the existence of cpu0.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nCc: David Miller \u003cdavem@davemloft.net\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": "6563297ceafab6bbcc931b52e2a9e660fbb21fb2",
      "tree": "bcd5593a9b3088f609adc26185b179ff22b45535",
      "parents": [
        "ca23e405e06d5fffb005df004c72781f76062f51"
      ],
      "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: use group information to allocate vmap areas sparsely\n\nai-\u003egroups[] contains which units need to be put consecutively and at\nwhat offset from the chunk base address.  Compile this information\ninto pcpu_group_offsets[] and pcpu_group_sizes[] in\npcpu_setup_first_chunk() and use them to allocate sparse vm areas\nusing pcpu_get_vm_areas().\n\nThis will be used to allow directly using sparse NUMA memories as\npercpu areas.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\n"
    },
    {
      "commit": "bba174f5e03a40a4ab1c63a2272ea5530b98a067",
      "tree": "ea3607d0730cf4a0b938b4bc7574ae02dc138792",
      "parents": [
        "fb435d5233f8b6f9b93c11d6304d8e98fed03234"
      ],
      "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 chunk-\u003ebase_addr\n\nThe only thing percpu allocator wants to know about a vmalloc area is\nthe base address.  Instead of requiring chunk-\u003evm, add\nchunk-\u003ebase_addr which contains the necessary value.  This simplifies\nthe code a bit and makes the dummy first_vm unnecessary.  This change\nwill ease allowing a chunk to be mapped by multiple vms.\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": "004018e2c06b9c650e88dddd973ae36799ed72b9",
      "tree": "90516f54173bbb4cbded6031fa62ebce14e5ff5a",
      "parents": [
        "971f3918a5a8febbbab355079972fb31ee7c0f33"
      ],
      "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: improve boot messages\n\nImprove percpu boot messages such that they\u0027re uniform and contain\nmore information.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "971f3918a5a8febbbab355079972fb31ee7c0f33",
      "tree": "dc7909e934473d6b63460c5aa8d0a37ba62a4f79",
      "parents": [
        "384be2b18a5f9475eab9ca2bdfa95cc1a04ef59c"
      ],
      "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: fix pcpu_reclaim() locking\n\npcpu_reclaim() calls pcpu_depopulate_chunk() which makes use of pages\narray and bitmap returned by pcpu_get_pages_and_bitmap() and thus\nshould be called under pcpu_alloc_mutex.  pcpu_reclaim() released the\nmutex before calling depopulate leading to double free and other\nstrange problems caused by the unexpected concurrent usages of pages\narray and bitmap.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "384be2b18a5f9475eab9ca2bdfa95cc1a04ef59c",
      "tree": "04c93f391a1b65c8bf8d7ba8643c07d26c26590a",
      "parents": [
        "a76761b621bcd8336065c4fe3a74f046858bc34c",
        "142d44b0dd6741a64a7bdbe029110e7c1dcf1d23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 14:41:02 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 14:45:31 2009 +0900"
      },
      "message": "Merge branch \u0027percpu-for-linus\u0027 into percpu-for-next\n\nConflicts:\n\tarch/sparc/kernel/smp_64.c\n\tarch/x86/kernel/cpu/perf_counter.c\n\tarch/x86/kernel/setup_percpu.c\n\tdrivers/cpufreq/cpufreq_ondemand.c\n\tmm/percpu.c\n\nConflicts in core and arch percpu codes are mostly from commit\ned78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many\nnum_possible_cpus() with nr_cpu_ids.  As for-next branch has moved all\nthe first chunk allocators into mm/percpu.c, the changes are moved\nfrom arch code to mm/percpu.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "142d44b0dd6741a64a7bdbe029110e7c1dcf1d23",
      "tree": "7c3c0b58ecb8bddf71bb9c387721ec5d534007de",
      "parents": [
        "74d46d6b2d23d44d72c37df4c6a5d2e782f7b088"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Thu Aug 13 02:00:13 2009 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 13:21:10 2009 +0900"
      },
      "message": "percpu: use the right flag for get_vm_area()\n\nget_vm_area() only accepts VM_* flags, not GFP_*.\n\nAnd according to the doc of get_vm_area(), here should be\nVM_ALLOC.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "74d46d6b2d23d44d72c37df4c6a5d2e782f7b088",
      "tree": "bcc468968e738394b9c4a44b8936a0e6037be163",
      "parents": [
        "d6647bdf98a0de19963de8d5d9698d469ed72097"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 21 17:11:50 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 13:20:53 2009 +0900"
      },
      "message": "percpu, sparc64: fix sparse possible cpu map handling\n\npercpu code has been assuming num_possible_cpus() \u003d\u003d nr_cpu_ids which\nis incorrect if cpu_possible_map contains holes.  This causes percpu\ncode to access beyond allocated memories and vmalloc areas.  On a\nsparc64 machine with cpus 0 and 2 (u60), this triggers the following\nwarning or fails boot.\n\n WARNING: at /devel/tj/os/work/mm/vmalloc.c:106 vmap_page_range_noflush+0x1f0/0x240()\n Modules linked in:\n Call Trace:\n  [00000000004b17d0] vmap_page_range_noflush+0x1f0/0x240\n  [00000000004b1840] map_vm_area+0x20/0x60\n  [00000000004b1950] __vmalloc_area_node+0xd0/0x160\n  [0000000000593434] deflate_init+0x14/0xe0\n  [0000000000583b94] __crypto_alloc_tfm+0xd4/0x1e0\n  [00000000005844f0] crypto_alloc_base+0x50/0xa0\n  [000000000058b898] alg_test_comp+0x18/0x80\n  [000000000058dad4] alg_test+0x54/0x180\n  [000000000058af00] cryptomgr_test+0x40/0x60\n  [0000000000473098] kthread+0x58/0x80\n  [000000000042b590] kernel_thread+0x30/0x60\n  [0000000000472fd0] kthreadd+0xf0/0x160\n ---[ end trace 429b268a213317ba ]---\n\nThis patch fixes generic percpu functions and sparc64\nsetup_per_cpu_areas() so that they handle sparse cpu_possible_map\nproperly.\n\nPlease note that on x86, cpu_possible_map() doesn\u0027t contain holes and\nthus num_possible_cpus() \u003d\u003d nr_cpu_ids and this patch doesn\u0027t cause\nany behavior difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "c8a51be4cabb7009db5f865169389242d49c4c60",
      "tree": "c049dc4811a36fefa4108444a950dbf70623a420",
      "parents": [
        "38a6be525460f52ac6f2de1c3f73c5615a8853cd"
      ],
      "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: reorder a few functions in mm/percpu.c\n\n(de)populate functions are about to be reimplemented to drop\npcpu_chunk-\u003epage array.  Move a few functions so that the rewrite\npatch doesn\u0027t have code movement making it more difficult to read.\n\n[ Impact: code movement ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "8f05a6a65d944f2fed4eb384fb58aa8c8e5a9bab",
      "tree": "433e2bc9f937778376a9b38e3d9816862292bb51",
      "parents": [
        "d4b95f80399471e4bce5e992700ff7f06ef91f6a"
      ],
      "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: make 4k first chunk allocator map memory\n\nAt first, percpu first chunk was always setup page-by-page by the\ngeneric code.  To add other allocators, different parts of the generic\ninitialization was made optional.  Now we have three allocators -\nembed, remap and 4k.  embed and remap fully handle allocation and\nmapping of the first chunk while 4k still depends on generic code for\nthose.  This makes the generic alloc/map paths specifci to 4k and\nmakes the code unnecessary complicated with optional generic\nbehaviors.\n\nThis patch makes the 4k allocator to allocate and map memory directly\ninstead of depending on the generic code.  The only outside visible\nchange is that now dynamic area in the first chunk is allocated\nup-front instead of on-demand.  This doesn\u0027t make any meaningful\ndifference as the area is minimal (usually less than a page, just\nenough to fill the alignment) on 4k allocator.  Plus, dynamic area in\nthe first chunk usually gets fully used anyway.\n\nThis will allow simplification of pcpu_setpu_first_chunk() and removal\nof chunk-\u003epage array.\n\n[ Impact: no outside visible change other than up-front allocation of dyn area ]\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": "79ba6ac825fac187894e236c9df1ba5fcbf53fd3",
      "tree": "384d4c09259161d0b7e2ee894cb82696ebb8e997",
      "parents": [
        "c43768cbb7655ea5ff782ae250f6e2ef4297cf98"
      ],
      "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": "x86: make pcpu_chunk_addr_search() matching stricter\n\nThe @addr passed into pcpu_chunk_addr_search() is unit0 based address\nand thus should be matched inside unit0 area.  Currently, when it uses\nchunk size when determining whether the address falls in the first\nchunk.  Addresses in unitN where N\u003e0 shouldn\u0027t be passed in anyway, so\nthis doesn\u0027t cause any malfunction but fix it for consistency.\n\n[ Impact: mostly cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\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": "fa8a7094ba1679b4b9b443e0ac9f5e046c79ee8d",
      "tree": "cda9df47b1a84581685d8f4e0cd8ce66cac1d234",
      "parents": [
        "e59a1bb2fdfb745c685f5b40ffbed126331d3223"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 22 11:56:24 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 22 11:56:24 2009 +0900"
      },
      "message": "x86: implement percpu_alloc kernel parameter\n\nAccording to Andi, it isn\u0027t clear whether lpage allocator is worth the\ntrouble as there are many processors where PMD TLB is far scarcer than\nPTE TLB.  The advantage or disadvantage probably depends on the actual\nsize of percpu area and specific processor.  As performance\ndegradation due to TLB pressure tends to be highly workload specific\nand subtle, it is difficult to decide which way to go without more\ndata.\n\nThis patch implements percpu_alloc kernel parameter to allow selecting\nwhich first chunk allocator to use to ease debugging and testing.\n\nWhile at it, make sure all the failure paths report why something\nfailed to help determining why certain allocator isn\u0027t working.  Also,\nkill the \"Great future plan\" comment which had already been realized\nquite some time ago.\n\n[ Impact: allow explicit percpu first chunk allocator selection ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "85ae87c1ad8e18a421e7448a99a42ecda183f29f",
      "tree": "8fcf3fe5bc9a96a1c16244950d944d4a4e7130c5",
      "parents": [
        "f234012f52a37e48f2330e1ca2df69800e797c3b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 22 11:56:23 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 22 11:56:23 2009 +0900"
      },
      "message": "percpu: fix too lazy vunmap cache flushing\n\nIn pcpu_unmap(), flushing virtual cache on vunmap can\u0027t be delayed as\nthe page is going to be returned to the page allocator.  Only TLB\nflushing can be put off such that vmalloc code can handle it lazily.\nFix it.\n\n[ Impact: fix subtle virtual cache flush bug ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e1b9aa3f47242e757c776a3771bb6613e675bf9c",
      "tree": "aa81121a42fdc7f2f1cc916db67558ec3d0f5017",
      "parents": [
        "ae9e6bc9f74f8247cbca50a6a93c80e0d686fa19"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Thu Apr 02 13:21:44 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 08 18:31:31 2009 +0200"
      },
      "message": "percpu: remove rbtree and use page-\u003eindex instead\n\nImpact: use page-\u003eindex for addr to chunk mapping instead of dedicated rbtree\n\nThe rbtree is used to determine the chunk from the virtual address.\nHowever, we can already determine the page struct from a virtual\naddress and there are several unused fields in page struct used by\nvmalloc.  Use the index field to store a pointer to the chunk. Then\nthere is no need anymore for an rbtree.\n\ntj: * s/(set|get)_chunk/pcpu_\\1_page_chunk/\n\n    * Drop inline from the above two functions and moved them upwards\n      so that they are with other simple helpers.\n\n    * Initial pages might not (actually most of the time don\u0027t) live\n      in the vmalloc area.  With the previous patch to manually\n      reverse-map both first chunks, this is no longer an issue.\n      Removed pcpu_set_chunk() call on initial pages.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: rusty@rustcorp.com.au\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: rmk@arm.linux.org.uk\nCc: starvik@axis.com\nCc: ralf@linux-mips.org\nCc: davem@davemloft.net\nCc: cooloney@kernel.org\nCc: kyle@mcmartin.ca\nCc: matthew@wil.cx\nCc: grundler@parisc-linux.org\nCc: takata@linux-m32r.org\nCc: benh@kernel.crashing.org\nCc: rth@twiddle.net\nCc: ink@jurassic.park.msu.ru\nCc: heiko.carstens@de.ibm.com\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nLKML-Reference: \u003c49D43D58.4050102@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ae9e6bc9f74f8247cbca50a6a93c80e0d686fa19",
      "tree": "6644b5ea22c27b78d9c062186e77fb9d56468090",
      "parents": [
        "577c9c456f0e1371cbade38eaf91ae8e8a308555"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 02 13:19:54 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 08 18:31:30 2009 +0200"
      },
      "message": "percpu: don\u0027t put the first chunk in reverse-map rbtree\n\nImpact: both first chunks don\u0027t use rbtree, no functional change\n\nThere can be two first chunks - reserved and dynamic with the former\none being optional.  Dynamic first chunk was linked on reverse-mapping\nrbtree while the reserved one was mapped manually using the start\naddress and reserved offset limit.\n\nThis patch makes both first chunks to be looked up manually without\nusing the rbtree.  This is to help getting rid of the rbtree.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: rusty@rustcorp.com.au\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: rmk@arm.linux.org.uk\nCc: starvik@axis.com\nCc: ralf@linux-mips.org\nCc: davem@davemloft.net\nCc: cooloney@kernel.org\nCc: kyle@mcmartin.ca\nCc: matthew@wil.cx\nCc: grundler@parisc-linux.org\nCc: takata@linux-m32r.org\nCc: benh@kernel.crashing.org\nCc: rth@twiddle.net\nCc: ink@jurassic.park.msu.ru\nCc: heiko.carstens@de.ibm.com\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nLKML-Reference: \u003c49D43CEA.3040609@kernel.org\u003e\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": "e01009833e22dc87075d770554b34d797843ed23",
      "tree": "63462a60b24fd018c94c51ee882aa8848a7accdf",
      "parents": [
        "19390c4d03688b9940a1836f06b76ec622b9cd6f"
      ],
      "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: make x86 addr \u003c-\u003e pcpu ptr conversion macros generic\n\nImpact: generic addr \u003c-\u003e pcpu ptr conversion macros\n\nThere\u0027s nothing arch specific about x86 __addr_to_pcpu_ptr() and\n__pcpu_ptr_to_addr().  With proper __per_cpu_load and __per_cpu_start\ndefined, they\u0027ll do the right thing regardless of actual layout.\n\nMove these macros from arch/x86/include/asm/percpu.h to mm/percpu.c\nand allow archs to override it as necessary.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "ccea34b5d0fbab081496d1860f31acee99fa8a6d",
      "tree": "e7066b5dde0e83a216768569e57cd71cc83fe912",
      "parents": [
        "a56dbddf06b653ef9c04ca3767f260fd31ccebab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:13 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 14:46:35 2009 +0900"
      },
      "message": "percpu: finer grained locking to break deadlock and allow atomic free\n\nImpact: fix deadlock and allow atomic free\n\nPercpu allocation always uses GFP_KERNEL and whole alloc/free paths\nwere protected by single mutex.  All percpu allocations have been from\nGFP_KERNEL-safe context and the original allocator had this assumption\ntoo.  However, by protecting both alloc and free paths with the same\nmutex, the new allocator creates free -\u003e alloc -\u003e GFP_KERNEL\ndependency which the original allocator didn\u0027t have.  This can lead to\ndeadlock if free is called from FS or IO paths.  Also, in general,\nallocators are expected to allow free to be called from atomic\ncontext.\n\nThis patch implements finer grained locking to break the deadlock and\nallow atomic free.  For details, please read the \"Synchronization\nrules\" comment.\n\nWhile at it, also add CONTEXT: to function comments to describe which\ncontext they expect to be called from and what they do to it.\n\nThis problem was reported by Thomas Gleixner and Peter Zijlstra.\n\n  http://thread.gmane.org/gmane.linux.kernel/802384\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReported-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "a56dbddf06b653ef9c04ca3767f260fd31ccebab",
      "tree": "803293315a281a88f807fa3506ac5bef0a910ba4",
      "parents": [
        "9f7dcf224bd09ec9ebcbfb383bf2c465e0e0b03d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:11 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:11 2009 +0900"
      },
      "message": "percpu: move fully free chunk reclamation into a work\n\nImpact: code reorganization for later changes\n\nDo fully free chunk reclamation using a work.  This change is to\nprepare for locking changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "9f7dcf224bd09ec9ebcbfb383bf2c465e0e0b03d",
      "tree": "9e8b07047080fbdb4f4c8f1554d5208570e64fe2",
      "parents": [
        "1880d93b80acc3171850e9df5048bcb26b75c2f5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "message": "percpu: move chunk area map extension out of area allocation\n\nImpact: code reorganization for later changes\n\nSeparate out chunk area map extension into a separate function -\npcpu_extend_area_map() - and call it directly from pcpu_alloc() such\nthat pcpu_alloc_area() is guaranteed to have enough area map slots on\ninvocation.\n\nWith this change, pcpu_alloc_area() does only area allocation and the\nonly failure mode is when the chunk doens\u0027t have enough room, so\nthere\u0027s no need to distinguish it from memory allocation failures.\nMake it return -1 on such cases instead of hacky -ENOSPC.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1880d93b80acc3171850e9df5048bcb26b75c2f5",
      "tree": "e7b564cabf70ef4d711b71ebf0634536ca5a9e15",
      "parents": [
        "6b19b0c2400437a3c10059ede0e59b517092e1bd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "message": "percpu: replace pcpu_realloc() with pcpu_mem_alloc() and pcpu_mem_free()\n\nImpact: code reorganization for later changes\n\nWith static map handling moved to pcpu_split_block(), pcpu_realloc()\nonly clutters the code and it\u0027s also unsuitable for scheduled locking\nchanges.  Implement and use pcpu_mem_alloc/free() instead.\n\nSigned-off-by: Tejun Heo \u003ctj@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": "3e24aa58907c62bc79d1094e941a374568f62522",
      "tree": "1398a21daab0d20a32d7dd04bb8ecadae2e0df82",
      "parents": [
        "9a4f8a878b68d5a5d9ee60908a52cf6a55e1b823"
      ],
      "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: add an indirection ptr for chunk page map access\n\nImpact: allow sharing page map, no functional difference yet\n\nMake chunk-\u003epage access indirect by adding a pointer and renaming the\nactual array to page_ar.  This will be used by future changes.\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": "61ace7fa2fff9c4b6641c506b6b3f1a9394a1b11",
      "tree": "214d0e04227239c31f93ba6948cf58d67cfedcee",
      "parents": [
        "2441d15c97d498b18f03ae9fba262ffeae42a08b"
      ],
      "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: improve first chunk initial area map handling\n\nImpact: no functional change\n\nWhen the first chunk is created, its initial area map is not allocated\nbecause kmalloc isn\u0027t online yet.  The map is allocated and\ninitialized on the first allocation request on the chunk.  This works\nfine but the scattering of initialization logic between the init\nfunction and allocation path is a bit confusing.\n\nThis patch makes the first chunk initialize and use minimal statically\nallocated map from pcpu_setpu_first_chunk().  The map resizing path\nstill needs to handle this specially but it\u0027s more straight-forward\nand gives more latitude to the init path.  This will ease future\nchanges.\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": "02d51fdfb2bfcf6bbd776f983177f55868aa0a79",
      "tree": "0237b1e965f91198955aa637025263ca66c2ce5c",
      "parents": [
        "0093b108a6853d8398e1acf9021bcbd4666f4594"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Mar 01 15:42:36 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Mar 01 15:42:36 2009 +0900"
      },
      "message": "percpu: kill compile warning in pcpu_populate_chunk()\n\nImpact: remove compile warning\n\nMark local variable map_end in pcpu_populate_chunk() with\nuninitialized_var().  The variable is always used in tandem with\nmap_start and guaranteed to be initialized before use but gcc doesn\u0027t\nunderstand that.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "40150d37be7f7949b2ec07d511244da856647d84",
      "tree": "6edc4e8d0a0302328f5e65ec6378b703cb6c2e35",
      "parents": [
        "8ac837571491e239e64bd87863c1679d8002e8a2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 12:32:28 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 14:24:30 2009 +0900"
      },
      "message": "percpu: add __read_mostly to variables which are mostly read only\n\nMost global variables in percpu allocator are initialized during boot\nand read only from that point on.  Add __read_mostly as per Rusty\u0027s\nsuggestion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\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": "d9b55eeb1d55ef2dc5a4fdbff9604c2c68cb5649",
      "tree": "1f81884066512810be81731a76fb5e041ac62c22",
      "parents": [
        "458a3e644c3327be529393982e24277eda8f1ac7"
      ],
      "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: remove unit_size power-of-2 restriction\n\nImpact: allow unit_size to be arbitrary multiple of PAGE_SIZE\n\nIn dynamic percpu allocator, there is no reason the unit size should\nbe power of two.  Remove the restriction.\n\nAs non-power-of-two unit size means that empty chunks fall into the\nsame slot index as lightly occupied chunks which is bad for reclaming.\nReserve an extra slot for empty chunks.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c0c0a29379b5848aec2e8f1c58d853d3cb7118b8",
      "tree": "521d4c8ae5756652e7ed3f7242c516b79df76aa2",
      "parents": [
        "2d0aae41695257603fc281b519677131ab5a752b"
      ],
      "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": "vmalloc: add @align to vm_area_register_early()\n\nImpact: allow larger alignment for early vmalloc area allocation\n\nSome early vmalloc users might want larger alignment, for example, for\ncustom large page mapping.  Add @align to vm_area_register_early().\nWhile at it, drop docbook comment on non-existent @size.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\n"
    },
    {
      "commit": "cb83b42e23bd6c4bf91793a320fbe83787c13596",
      "tree": "7f2b83bccf1be9548f84fa74867043aaad0a3e45",
      "parents": [
        "cae3aeb83fef5a7c9c8ac40e653e59dd9a35469c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:20 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:20 2009 +0900"
      },
      "message": "percpu: fix pcpu_chunk_struct_size\n\nImpact: fix short allocation leading to memory corruption\n\nWhile dropping rvalue wrapping macros around global parameters,\npcpu_chunk_struct_size was set incorrectly resulting in shorter page\npointer array.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "cae3aeb83fef5a7c9c8ac40e653e59dd9a35469c",
      "tree": "373e23d2e7339efed747a77ebd8aa1323c05f6e6",
      "parents": [
        "11124411aa95827404d6bfdfc14c908e1b54513c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 21 16:56:23 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 21 16:56:23 2009 +0900"
      },
      "message": "percpu: clean up size usage\n\nAndrew was concerned about the unit of variables named or have suffix\nsize.  Every usage in percpu allocator is in bytes but make it super\nclear by adding comments.\n\nWhile at it, make pcpu_depopulate_chunk() take int @off and @size like\neveryone else.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.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"
    }
  ]
}
