)]}'
{
  "log": [
    {
      "commit": "677243d7494d09bfa782425f063a6013de53c35b",
      "tree": "5126d575a6097d0038a893119d05057a22bf03e6",
      "parents": [
        "db7829c6cc32f3c0c9a324118d743acb1abff081"
      ],
      "author": {
        "name": "Brian Gerst",
        "email": "brgerst@gmail.com",
        "time": "Thu Sep 09 18:17:26 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 10 10:56:51 2010 +0200"
      },
      "message": "percpu: Optimize __get_cpu_var()\n\nRedefine __get_cpu_var() using this_cpu_ptr() which can be\narch-optimized.\n\nSigned-off-by: Brian Gerst \u003cbrgerst@gmail.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "db7829c6cc32f3c0c9a324118d743acb1abff081",
      "tree": "dd40c271aeda63843819072c753af74fefc1413c",
      "parents": [
        "fc1481a956181d0360d3eb129965302489895a1b"
      ],
      "author": {
        "name": "Brian Gerst",
        "email": "brgerst@gmail.com",
        "time": "Thu Sep 09 18:17:26 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 10 10:56:47 2010 +0200"
      },
      "message": "x86, percpu: Optimize this_cpu_ptr\n\nAllow arches to implement __this_cpu_ptr, and provide an x86 version.\n\nBefore:\n\tmovq $foo, %rax\n\tmovq %gs:this_cpu_off, %rdx\n\taddq %rdx, %rax\n\nAfter:\n\tmovq $foo, %rax\n\taddq %gs:this_cpu_off, %rax\n\nThe benefit is doing it in one less instruction and not clobbering\na temporary register.\n\ntj: * Beefed up the comment a bit and renamed in-macro temp variable\n      to match neighboring macros.\n\n    * Folded fix for const pointer case found in linux-next.\n\n    * Fixed sparse notation.\n\nSigned-off-by: Brian Gerst \u003cbrgerst@gmail.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "18cb2aef91b37dbce2bec2f39bb1dddd0e9dd838",
      "tree": "f0290a76bc8bb08f47daa888dbd1296f34476268",
      "parents": [
        "4a386c3e177ca2fbc70c9283d0b46537844763a0"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Sat Aug 07 03:26:23 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Aug 07 14:20:53 2010 +0200"
      },
      "message": "percpu: handle __percpu notations in UP accessors\n\nUP accessors didn\u0027t take care of __percpu notations leading to a lot\nof spurious sparse warnings on UP configurations.  Fix it.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1f73897861b8ef0be64ff4b801f8d6f830f683b5",
      "tree": "b4bae8f12e1422113910d8cb00a19d010dc4a52f",
      "parents": [
        "b904d7131d116900524bd36ec170dcd97846bfd3",
        "64ffc9ff424c65adcffe7d590018cc75e2d5d42a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild\n\n* \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild: (81 commits)\n  kbuild: Revert part of e8d400a to resolve a conflict\n  kbuild: Fix checking of scm-identifier variable\n  gconfig: add support to show hidden options that have prompts\n  menuconfig: add support to show hidden options which have prompts\n  gconfig: remove show_debug option\n  gconfig: remove dbg_print_ptype() and dbg_print_stype()\n  kconfig: fix zconfdump()\n  kconfig: some small fixes\n  add random binaries to .gitignore\n  kbuild: Include gen_initramfs_list.sh and the file list in the .d file\n  kconfig: recalc symbol value before showing search results\n  .gitignore: ignore *.lzo files\n  headerdep: perlcritic warning\n  scripts/Makefile.lib: Align the output of LZO\n  kbuild: Generate modules.builtin in make modules_install\n  Revert \"kbuild: specify absolute paths for cscope\"\n  kbuild: Do not unnecessarily regenerate modules.builtin\n  headers_install: use local file handles\n  headers_check: fix perl warnings\n  export_report: fix perl warnings\n  ...\n"
    },
    {
      "commit": "3d9a854c2dac3e888393b23ba7adafcce4d6d4b9",
      "tree": "5159c52a0718d80f66ef8bed299bde2690e7b82e",
      "parents": [
        "dafb9320671316fbd030b1d2e0ab9b96597223cb"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Sat Feb 20 01:03:43 2010 +0100"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Wed Mar 03 11:26:00 2010 +0100"
      },
      "message": "Rename .data[.percpu][.XXX] to .data[..percpu][..XXX].\n\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\n"
    },
    {
      "commit": "545695fb41da117928ab946067a42d9e15fd009d",
      "tree": "1ea32c45a6f6efb03a88f99278f065054a5de3e2",
      "parents": [
        "e0fdb0e050eae331046385643618f12452aa7e73"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "message": "percpu: make accessors check for percpu pointer in sparse\n\nThe previous patch made sparse warn about percpu variables being used\ndirectly without going through percpu accessors.  This patch\nimplements the other half - checking whether non percpu variable is\npassed into percpu accessors.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e0fdb0e050eae331046385643618f12452aa7e73",
      "tree": "6156f577879764fd75cf8c46ca7980433de0e59d",
      "parents": [
        "f7b64fe806029e0a0454df132eec3c5ab576102c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "message": "percpu: add __percpu for sparse.\n\nWe have to make __kernel \"__attribute__((address_space(0)))\" so we can\ncast to it.\n\ntj: * put_cpu_var() update.\n\n    * Annotations added to dynamic allocator interface.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "dd17c8f72993f9461e9c19250e3f155d6d99df22",
      "tree": "c33eedf0cf2862e9feeb796e94d49a2ccdce0149",
      "parents": [
        "390dfd95c5df1ab3921dd388d11b2aee332c3f2c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:15 2009 +0900"
      },
      "message": "percpu: remove per_cpu__ prefix.\n\nNow that the return from alloc_percpu is compatible with the address\nof per-cpu vars, it makes sense to hand around the address of per-cpu\nvariables.  To make this sane, we remove the per_cpu__ prefix we used\ncreated to stop people accidentally using these vars directly.\n\nNow we have sparse, we can use that (next patch).\n\ntj: * Updated to convert stuff which were missed by or added after the\n      original patch.\n\n    * Kill per_cpu_var() macro.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7340a0b15280c9d902c7dd0608b8e751b5a7c403",
      "tree": "4046c9cfc2f7d48610bd6c8aa9caeb8f440bea5f",
      "parents": [
        "23fb064bb96f001ecb8682129f7ee1bc1ca691bc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Sat Oct 03 19:48:22 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Oct 03 19:48:22 2009 +0900"
      },
      "message": "this_cpu: Introduce this_cpu_ptr() and generic this_cpu_* operations\n\nThis patch introduces two things: First this_cpu_ptr and then per cpu\natomic operations.\n\nthis_cpu_ptr\n------------\n\nA common operation when dealing with cpu data is to get the instance of the\ncpu data associated with the currently executing processor. This can be\noptimized by\n\nthis_cpu_ptr(xx) \u003d per_cpu_ptr(xx, smp_processor_id).\n\nThe problem with per_cpu_ptr(x, smp_processor_id) is that it requires\nan array lookup to find the offset for the cpu. Processors typically\nhave the offset for the current cpu area in some kind of (arch dependent)\nefficiently accessible register or memory location.\n\nWe can use that instead of doing the array lookup to speed up the\ndetermination of the address of the percpu variable. This is particularly\nsignificant because these lookups occur in performance critical paths\nof the core kernel. this_cpu_ptr() can avoid memory accesses and\n\nthis_cpu_ptr comes in two flavors. The preemption context matters since we\nare referring the the currently executing processor. In many cases we must\ninsure that the processor does not change while a code segment is executed.\n\n__this_cpu_ptr \t-\u003e Do not check for preemption context\nthis_cpu_ptr\t-\u003e Check preemption context\n\nThe parameter to these operations is a per cpu pointer. This can be the\naddress of a statically defined per cpu variable (\u0026per_cpu_var(xxx)) or\nthe address of a per cpu variable allocated with the per cpu allocator.\n\nper cpu atomic operations: this_cpu_*(var, val)\n-----------------------------------------------\nthis_cpu_* operations (like this_cpu_add(struct-\u003ey, value) operate on\nabitrary scalars that are members of structures allocated with the new\nper cpu allocator. They can also operate on static per_cpu variables\nif they are passed to per_cpu_var() (See patch to use this_cpu_*\noperations for vm statistics).\n\nThese operations are guaranteed to be atomic vs preemption when modifying\nthe scalar. The calculation of the per cpu offset is also guaranteed to\nbe atomic at the same time. This means that a this_cpu_* operation can be\nsafely used to modify a per cpu variable in a context where interrupts are\nenabled and preemption is allowed. Many architectures can perform such\na per cpu atomic operation with a single instruction.\n\nNote that the atomicity here is different from regular atomic operations.\nAtomicity is only guaranteed for data accessed from the currently executing\nprocessor. Modifications from other processors are still possible. There\nmust be other guarantees that the per cpu data is not modified from another\nprocessor when using these instruction. The per cpu atomicity is created\nby the fact that the processor either executes and instruction or not.\nEmbedded in the instruction is the relocation of the per cpu address to\nthe are reserved for the current processor and the RMW action. Therefore\ninterrupts or preemption cannot occur in the mids of this processing.\n\nGeneric fallback functions are used if an arch does not define optimized\nthis_cpu operations. The functions come also come in the two flavors used\nfor this_cpu_ptr().\n\nThe firstparameter is a scalar that is a member of a structure allocated\nthrough allocpercpu or a per cpu variable (use per_cpu_var(xxx)). The\noperations are similar to what percpu_add() and friends do.\n\nthis_cpu_read(scalar)\nthis_cpu_write(scalar, value)\nthis_cpu_add(scale, value)\nthis_cpu_sub(scalar, value)\nthis_cpu_inc(scalar)\nthis_cpu_dec(scalar)\nthis_cpu_and(scalar, value)\nthis_cpu_or(scalar, value)\nthis_cpu_xor(scalar, value)\n\nArch code can override the generic functions and provide optimized atomic\nper cpu operations. These atomic operations must provide both the relocation\n(x86 does it through a segment override) and the operation on the data in a\nsingle instruction. Otherwise preempt needs to be disabled and there is no\ngain from providing arch implementations.\n\nA third variant is provided prefixed by irqsafe_. These variants are safe\nagainst hardware interrupts on the *same* processor (all per cpu atomic\nprimitives are *always* *only* providing safety for code running on the\n*same* processor!). The increment needs to be implemented by the hardware\nin such a way that it is a single RMW instruction that is either processed\nbefore or after an interrupt.\n\ncc: David Howells \u003cdhowells@redhat.com\u003e\ncc: Ingo Molnar \u003cmingo@elte.hu\u003e\ncc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\ncc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "53f824520b6d84ca5b4a8fd71addc91dbf64357e",
      "tree": "fc62733de8040f13cf450b6cae967976da31827b",
      "parents": [
        "1ea0d14e480c245683927eecc03a70faf06e80c8"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Thu Sep 03 14:31:44 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 04 07:10:31 2009 +0200"
      },
      "message": "x86/i386: Put aligned stack-canary in percpu shared_aligned section\n\nPack aligned things together into a special section to minimize\npadding holes.\n\nSuggested-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nLKML-Reference: \u003c4AA035C0.9070202@goop.org\u003e\n[ queued up in tip:x86/asm because it depends on this commit:\n  x86/i386: Make sure stack-protector segment base is cache aligned ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b01e8dc34379f4ba2f454390e340a025edbaaa7e",
      "tree": "8498a81a819180b7308e2dcbc4d078b45898ccdf",
      "parents": [
        "15e3252464432a29c5461325cb5243471bd2a219"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 30 11:41:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 30 18:55:59 2009 -0700"
      },
      "message": "alpha: fix percpu build breakage\n\nalpha percpu access requires custom SHIFT_PERCPU_PTR() definition for\nmodules to work around addressing range limitation.  This is done via\ngenerating inline assembly using C preprocessing which forces the\nassembler to generate external reference.  This happens behind the\ncompiler\u0027s back and makes the compiler think that static percpu variables\nin modules are unused.\n\nThis used to be worked around by using __unused attribute for percpu\nvariables which prevent the compiler from omitting the variable; however,\nrecent declare/definition attribute unification change broke this as\n__used can\u0027t be used for declaration.  Also, in the process,\nPER_CPU_ATTRIBUTES definition in alpha percpu.h got broken.\n\nThis patch adds PER_CPU_DEF_ATTRIBUTES which is only used for definitions\nand make alpha use it to add __used for percpu variables in modules.  This\nalso fixes the PER_CPU_ATTRIBUTES double definition bug.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: maximilian attems \u003cmax@stro.at\u003e\nAcked-by: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "6dbde3530850d4d8bfc1b6bd4006d92786a2787f",
      "tree": "08c6dd55e860827311b889e2ecfe3de9f51421a0",
      "parents": [
        "004aa322f855a765741d9437a98dd8fe2e4f32a6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 15 22:15:53 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 16 14:20:31 2009 +0100"
      },
      "message": "percpu: add optimized generic percpu accessors\n\nIt is an optimization and a cleanup, and adds the following new\ngeneric percpu methods:\n\n  percpu_read()\n  percpu_write()\n  percpu_add()\n  percpu_sub()\n  percpu_and()\n  percpu_or()\n  percpu_xor()\n\nand implements support for them on x86. (other architectures will fall\nback to a default implementation)\n\nThe advantage is that for example to read a local percpu variable,\ninstead of this sequence:\n\n return __get_cpu_var(var);\n\n ffffffff8102ca2b:\t48 8b 14 fd 80 09 74 \tmov    -0x7e8bf680(,%rdi,8),%rdx\n ffffffff8102ca32:\t81\n ffffffff8102ca33:\t48 c7 c0 d8 59 00 00 \tmov    $0x59d8,%rax\n ffffffff8102ca3a:\t48 8b 04 10          \tmov    (%rax,%rdx,1),%rax\n\nWe can get a single instruction by using the optimized variants:\n\n return percpu_read(var);\n\n ffffffff8102ca3f:\t65 48 8b 05 91 8f fd \tmov    %gs:0x7efd8f91(%rip),%rax\n\nI also cleaned up the x86-specific APIs and made the x86 code use\nthese new generic percpu primitives.\n\ntj: * fixed generic percpu_sub() definition as Roel Kluin pointed out\n    * added percpu_and() for completeness\u0027s sake\n    * made generic percpu ops atomic against preemption\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1e8352784abaedb424e63fa700e93e6c1307785f",
      "tree": "eb7ba51fa40e209ed2a1636b3404cca58141bed1",
      "parents": [
        "3a2d5b700132f35401f1d9e22fe3c2cab02c2549"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Feb 23 19:40:17 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 12:09:28 2008 -0800"
      },
      "message": "percpu: fix DEBUG_PREEMPT per_cpu checking\n\n2.6.25-rc1 percpu changes broke CONFIG_DEBUG_PREEMPT\u0027s per_cpu checking\non several architectures.  On s390, sparc64 and x86 it\u0027s been weakened to\nnot checking at all; whereas on powerpc64 it\u0027s become too strict, issuing\nwarnings from __raw_get_cpu_var in io_schedule and init_timer for example.\n\nFix this by weakening powerpc\u0027s __my_cpu_offset to use the non-checking\nlocal_paca instead of get_paca (which itself contains such a check);\nand strengthening the generic my_cpu_offset to go the old slow way via\nsmp_processor_id when CONFIG_DEBUG_PREEMPT (debug_smp_processor_id is\nwhere all the knowledge of what\u0027s correct when lives).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReviewed-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd5af90a7f3d79e04b7eace9a98644dbf2038f4d",
      "tree": "22327ba385c830b7be391c76821dc5ec26863f2e",
      "parents": [
        "3212bff370c2f22e4987c6679ba485654cefb178"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Jan 30 13:33:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:33:32 2008 +0100"
      },
      "message": "x86/non-x86: percpu, node ids, apic ids x86.git fixup\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "acdac87202a408133ee8f7985076de9d2e0dc5ab",
      "tree": "55948448c7f179713fc8d1d1ae01ad53adec9c2b",
      "parents": [
        "5280e004fc22314122c84978c0b6a741cf96dc0f"
      ],
      "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: make the asm-generic/percpu.h more \"generic\"\n\n- add support for PER_CPU_ATTRIBUTES\n\n- fix generic smp percpu_modcopy to use per_cpu_offset() macro.\n\nAdd the ability to use generic/percpu even if the arch needs to override\nseveral aspects of its operations. This will enable the use of generic\npercpu.h for all arches.\n\nAn arch may define:\n\n__per_cpu_offset\tDo not use the generic pointer array. Arch must\n\t\t\tdefine per_cpu_offset(cpu) (used by x86_64, s390).\n\n__my_cpu_offset\t\tCan be defined to provide an optimized way to determine\n\t\t\tthe offset for variables of the currently executing\n\t\t\tprocessor. Used by ia64, x86_64, x86_32, sparc64, s/390.\n\nSHIFT_PTR(ptr, offset)\tIf an arch defines it then special handling\n\t\t\tof pointer arithmentic may be implemented. Used\n\t\t\tby s/390.\n\n(Some of these special percpu arch implementations may be later consolidated\nso that there are less cases to deal with.)\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": "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": "b32ef636a59aad12f9f9b5dc34c93222842c58ba",
      "tree": "6857cac9a741be756608793ab1b481bfa32d2c2e",
      "parents": [
        "cf8fa920cb4271f17e0265c863d64bea1b31941a"
      ],
      "author": {
        "name": "travis@sgi.com",
        "email": "travis@sgi.com",
        "time": "Wed Jan 30 13:32:51 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:32:51 2008 +0100"
      },
      "message": "percpu: use a kconfig variable to signal arch specific percpu setup\n\nThe use of the __GENERIC_PERCPU is a bit problematic since arches\nmay want to run their own percpu setup while using the generic\npercpu definitions. Replace it through a kconfig variable.\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": "5fb7dc37dc16fbc8b80d81318a582201ef7e280d",
      "tree": "4d6bb4441ece64380e7186ebadd35ad2f5486f9f",
      "parents": [
        "3d7e33825d8799115dd2495c9944badd3272a623"
      ],
      "author": {
        "name": "Fenghua Yu",
        "email": "fenghua.yu@intel.com",
        "time": "Thu Jul 19 01:48:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "define new percpu interface for shared data\n\nper cpu data section contains two types of data.  One set which is\nexclusively accessed by the local cpu and the other set which is per cpu,\nbut also shared by remote cpus.  In the current kernel, these two sets are\nnot clearely separated out.  This can potentially cause the same data\ncacheline shared between the two sets of data, which will result in\nunnecessary bouncing of the cacheline between cpus.\n\nOne way to fix the problem is to cacheline align the remotely accessed per\ncpu data, both at the beginning and at the end.  Because of the padding at\nboth ends, this will likely cause some memory wastage and also the\ninterface to achieve this is not clean.\n\nThis patch:\n\nMoves the remotely accessed per cpu data (which is currently marked\nas ____cacheline_aligned_in_smp) into a different section, where all the data\nelements are cacheline aligned. And as such, this differentiates the local\nonly data and remotely accessed data cleanly.\n\nSigned-off-by: Fenghua Yu \u003cfenghua.yu@intel.com\u003e\nAcked-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae1ee11be77f51cedb6c569887dddc70c163ab6d",
      "tree": "e579a6a6d10c6835cab9af47a2795bf40f669da6",
      "parents": [
        "8f9aeca7a081d81c4c9862be1e04f15b5ab5461f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "message": "[PATCH] i386: Use per-cpu variables for GDT, PDA\n\nAllocating PDA and GDT at boot is a pain.  Using simple per-cpu variables adds\nhappiness (although we need the GDT page-aligned for Xen, which we do in a\nfollowup patch).\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\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": "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": "a875a69f8b00a38b4f40d9632a4fc71a159f0e0d",
      "tree": "5c9296441514663354a4d70ab2320f7e185d7c10",
      "parents": [
        "8d8fdf5c76816e5263073008f03f097ffc713db3"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:00 2006 -0700"
      },
      "message": "[PATCH] lockdep: add per_cpu_offset()\n\nAdd the per_cpu_offset() generic method. (used by the lock validator)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bfe5d834195b3089b8846577311340376cc0f450",
      "tree": "52470de0fe87ff8372700e3472735cd5c14cee9d",
      "parents": [
        "6ceab8a936c302c0cea2bfe55617c76e2f5746fa"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Sun Jun 25 05:47:14 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:01 2006 -0700"
      },
      "message": "[PATCH] Define __raw_get_cpu_var and use it\n\nThere are several instances of per_cpu(foo, raw_smp_processor_id()), which\nis semantically equivalent to __get_cpu_var(foo) but without the warning\nthat smp_processor_id() can give if CONFIG_DEBUG_PREEMPT is enabled.  For\nthose architectures with optimized per-cpu implementations, namely ia64,\npowerpc, s390, sparc64 and x86_64, per_cpu() turns into more and slower\ncode than __get_cpu_var(), so it would be preferable to use __get_cpu_var\non those platforms.\n\nThis defines a __raw_get_cpu_var(x) macro which turns into per_cpu(x,\nraw_smp_processor_id()) on architectures that use the generic per-cpu\nimplementation, and turns into __get_cpu_var(x) on the architectures that\nhave an optimized per-cpu implementation.\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0a945022778f100115d0cb6234eb28fc1b15ccaf",
      "tree": "85df4b5f7dd8bf59557091379c59b23b09115bf6",
      "parents": [
        "631d6747e1d877a4baa924cb373b8b9511a53e5e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Mar 28 01:56:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:05 2006 -0800"
      },
      "message": "[PATCH] for_each_possible_cpu: fixes for generic part\n\nreplaces for_each_cpu with for_each_possible_cpu().\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "394e3902c55e667945f6f1c2bdbc59842cce70f7",
      "tree": "f4bca0bdc0c291fda6f6949265aacec0669b9084",
      "parents": [
        "63872f87a151413100678f110d1556026002809e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Mar 23 03:01:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:17 2006 -0800"
      },
      "message": "[PATCH] more for_each_cpu() conversions\n\nWhen we stop allocating percpu memory for not-possible CPUs we must not touch\nthe percpu data for not-possible CPUs at all.  The correct way of doing this\nis to test cpu_possible() or to use for_each_cpu().\n\nThis patch is a kernel-wide sweep of all instances of NR_CPUS.  I found very\nfew instances of this bug, if any.  But the patch converts lots of open-coded\ntest to use the preferred helper macros.\n\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\nCc: Anton Blanchard \u003canton@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Christian Zankel \u003cchris@zankel.net\u003e\nCc: Philippe Elie \u003cphil.el@wanadoo.fr\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Jens Axboe \u003caxboe@suse.de\u003e\nCc: 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": "11c80c8367db0a9d342529ed74464670cd86a1f6",
      "tree": "d4625a9565866dc6565972b069c57cdedb7e0f27",
      "parents": [
        "c7ea4b31fd962b4baadb42c0b8d7c6851c584102"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Thu Jun 23 00:09:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:28 2005 -0700"
      },
      "message": "[PATCH] adjust per_cpu definition in non-SMP case\n\nFix (in the architectures I\u0027m actually building for) the UP definition of\nper_cpu so that the cpu specified may be any expression, not just an\nidentifier or a suffix expression.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\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"
    }
  ]
}
