)]}'
{
  "log": [
    {
      "commit": "4f988f152ee087831ea5c1c77cda4454cacc052c",
      "tree": "9078ecf501ebeb4412a0f91ff3125f41fb2535ac",
      "parents": [
        "2f624278626677bfaf73fef97f86b37981621f5c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 04 15:13:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 04 15:13:54 2012 -0700"
      },
      "message": "seqlock: add \u0027raw_seqcount_begin()\u0027 function\n\nThe normal read_seqcount_begin() function will wait for any current\nwriters to exit their critical region by looping until the sequence\ncount is even.\n\nThat \"wait for sequence count to stabilize\" is the right thing to do if\nthe read-locker will just retry the whole operation on contention: no\npoint in doing a potentially expensive reader sequence if we know at the\nbeginning that we\u0027ll just end up re-doing it all.\n\nHOWEVER.  Some users don\u0027t actually retry the operation, but instead\nwill abort and do the operation with proper locking.  So the sequence\ncount case may be the optimistic quick case, but in the presense of\nwriters you may want to do full locking in order to guarantee forward\nprogress.  The prime example of this would be the RCU name lookup.\n\nAnd in that case, you may well be better off without the \"retry early\",\nand are in a rush to instead get to the failure handling.  Thus this\n\"raw\" interface that just returns the sequence number without testing it\n- it just forces the low bit to zero so that read_seqcount_retry() will\nalways fail such a \"active concurrent writer\" scenario.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f624278626677bfaf73fef97f86b37981621f5c",
      "tree": "011d5b7d5a6a74d476a80b513f3dd4d78762ed03",
      "parents": [
        "f0f376f204b6047bbb405180f796e93cc8444f09"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 04 14:46:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 04 14:46:02 2012 -0700"
      },
      "message": "Fix __read_seqcount_begin() to use ACCESS_ONCE for sequence value read\n\nWe really need to use a ACCESS_ONCE() on the sequence value read in\n__read_seqcount_begin(), because otherwise the compiler might end up\nreloading the value in between the test and the return of it.  As a\nresult, it might end up returning an odd value (which means that a write\nis in progress).\n\nIf the reader is then fast enough that that odd value is still the\ncurrent one when the read_seqcount_retry() is done, we might end up with\na \"successful\" read sequence, even despite the concurrent write being\nactive.\n\nIn practice this probably never really happens - there just isn\u0027t\nanything else going on around the read of the sequence count, and the\ncommon case is that we end up having a read barrier immediately\nafterwards.\n\nSo the code sequence in which gcc might decide to reaload from memory is\nsmall, and there\u0027s no reason to believe it would ever actually do the\nreload.  But if the compiler ever were to decide to do so, it would be\nincredibly annoying to debug.  Let\u0027s just make sure.\n\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56a210526adb2854d5b7c398a40260720390ee05",
      "tree": "f900de2637a55b1d2b8d21e71d0a12061483ccbe",
      "parents": [
        "45694c2895c194ffa74becde4120af6eb6afeefe"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Jun 11 12:29:58 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 11 13:17:28 2011 -0700"
      },
      "message": "linux/seqlock.h should #include asm/processor.h for cpu_relax()\n\nIt uses cpu_relax(), and so needs \u003casm/processor.h\u003e\n\nWithout this patch, I see:\n\n   CC      arch/mn10300/kernel/asm-offsets.s\n  In file included from include/linux/time.h:8,\n                   from include/linux/timex.h:56,\n                   from include/linux/sched.h:57,\n                   from arch/mn10300/kernel/asm-offsets.c:7:\n  include/linux/seqlock.h: In function \u0027read_seqbegin\u0027:\n  include/linux/seqlock.h:91: error: implicit declaration of function \u0027cpu_relax\u0027\n\nwhilst building asb2364_defconfig on MN10300.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4dbe54ed7296ac3249c415d512dd6d649f66f4b",
      "tree": "7dcbce1bceccb31963869b347afbb86dfd11e709",
      "parents": [
        "d762f4383100c2a87b1a3f2d678cd3b5425655b4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue May 24 14:08:08 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 24 15:22:17 2011 +0200"
      },
      "message": "seqlock: Get rid of SEQLOCK_UNLOCKED\n\nAll static seqlock should be initialized with the lockdep friendly\n__SEQLOCK_UNLOCKED() macro.\n\nRemove legacy SEQLOCK_UNLOCKED() macro.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nLink: http://lkml.kernel.org/r/%3C1306238888.3026.31.camel%40edumazet-laptop%3E\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5db1256a5131d3b133946fa02ac9770a784e6eb2",
      "tree": "173c3e011e8ed2f2ed0bb02d1ce7d9fe031be509",
      "parents": [
        "e11feaa1192a079ba8e88a12121e9b12d55d4239"
      ],
      "author": {
        "name": "Milton Miller",
        "email": "miltonm@bga.com",
        "time": "Thu May 12 04:13:54 2011 -0500"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu May 12 12:13:43 2011 +0200"
      },
      "message": "seqlock: Don\u0027t smp_rmb in seqlock reader spin loop\n\nMove the smp_rmb after cpu_relax loop in read_seqlock and add\nACCESS_ONCE to make sure the test and return are consistent.\n\nA multi-threaded core in the lab didn\u0027t like the update\nfrom 2.6.35 to 2.6.36, to the point it would hang during\nboot when multiple threads were active.  Bisection showed\naf5ab277ded04bd9bc6b048c5a2f0e7d70ef0867 (clockevents:\nRemove the per cpu tick skew) as the culprit and it is\nsupported with stack traces showing xtime_lock waits including\ntick_do_update_jiffies64 and/or update_vsyscall.\n\nExperimentation showed the combination of cpu_relax and smp_rmb\nwas significantly slowing the progress of other threads sharing\nthe core, and this patch is effective in avoiding the hang.\n\nA theory is the rmb is affecting the whole core while the\ncpu_relax is causing a resource rebalance flush, together they\ncause an interfernce cadance that is unbroken when the seqlock\nreader has interrupts disabled.\n\nAt first I was confused why the refactor in\n3c22cd5709e8143444a6d08682a87f4c57902df3 (kernel: optimise\nseqlock) didn\u0027t affect this patch application, but after some\nstudy that affected seqcount not seqlock. The new seqcount was\nnot factored back into the seqlock.  I defer that the future.\n\nWhile the removal of the timer interrupt offset created\ncontention for the xtime lock while a cpu does the\nadditonal work to update the system clock, the seqlock\nimplementation with the tight rmb spin loop goes back much\nfurther, and is just waiting for the right trigger.\n\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Milton Miller \u003cmiltonm@bga.com\u003e\nCc: \u003clinuxppc-dev@lists.ozlabs.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Anton Blanchard \u003canton@samba.org\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nLink: http://lkml.kernel.org/r/%3Cseqlock-rmb%40mdm.bga.com%3E\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "3c22cd5709e8143444a6d08682a87f4c57902df3",
      "tree": "6d245491d9103a1d77a3128ed5d1d996d3794300",
      "parents": [
        "ff0c7d15f9787b7e8c601533c015295cc68329f8"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:51 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:27 2011 +1100"
      },
      "message": "kernel: optimise seqlock\n\nAdd branch annotations for seqlock read fastpath, and introduce\n__read_seqcount_begin and __read_seqcount_end functions, that can avoid the\nsmp_rmb() if used carefully. These will be used by store-free path walking\nalgorithm performance is critical and seqlocks are in use.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "88a411c07b6fedcfc97b8dc51ae18540bd2beda0",
      "tree": "9aa732fdcaeadcde06c931672aa7da7b168bd82c",
      "parents": [
        "b69d3987f4360a5e7e9e55465b3cdd0cc204b79e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 03 09:06:13 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 25 00:25:08 2008 +0200"
      },
      "message": "seqlock: livelock fix\n\nThomas Gleixner debugged a particularly ugly seqlock related livelock:\ndo not process the seq-read section if we know it beforehand that the\ntest at the end of the section will fail ...\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "20f09390b2da2432309afe8aaa0bd64ec64c4584",
      "tree": "07882e28d0c4d92af141c2fe76491609891b566f",
      "parents": [
        "b928ed56182b8ea59bd43f2d5b865f13a54d5719"
      ],
      "author": {
        "name": "Daniel Walker",
        "email": "dwalker@mvista.com",
        "time": "Thu Apr 26 09:46:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 27 10:44:42 2007 -0700"
      },
      "message": "seqlocks: trivial remove weird whitespace\n\nSigned-off-by: Daniel Walker \u003cdwalker@mvista.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d08df601a30df9e36c29f3214315f4f0c8784c68",
      "tree": "cc40826467113f1bfd2e666bb51670e31f436355",
      "parents": [
        "6340aa61b1f1d9c2aadb20594778a5f849bcbb69"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sat Feb 17 19:07:33 2007 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sat Feb 17 19:07:33 2007 +0100"
      },
      "message": "Various typo fixes.\n\nCorrect mis-spellings of \"algorithm\", \"appear\", \"consistent\" and\n(shame, shame) \"kernel\".\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "99a3eb3845f034eb55640a3da73e5e28349678c6",
      "tree": "9a6704ac9d8bb0ab2b3649cb05999daa0e96175c",
      "parents": [
        "d907dd2efd69195f4a5fc584a0eaecc599ca4c2c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 12 12:10:28 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Tue Dec 12 08:10:44 2006 -0800"
      },
      "message": "[PATCH] lockdep: fix seqlock_init()\n\nseqlock_init() needs to use spin_lock_init() for dynamic locks, so that\nlockdep is notified about the presence of a new lock.\n\n(this is a fallout of the recent networking merge, which started using\nthe so-far unused seqlock_init() API.)\n\nThis fix solves the following lockdep-internal warning on current -git:\n\n INFO: trying to register non-static key.\n the code is fine but needs lockdep annotation.\n turning off the locking correctness validator.\n     __lock_acquire+0x10c/0x9f9\n     lock_acquire+0x56/0x72\n     _spin_lock+0x35/0x42\n     neigh_destroy+0x9d/0x12e\n     neigh_periodic_timer+0x10a/0x15c\n     run_timer_softirq+0x126/0x18e\n     __do_softirq+0x6b/0xe6\n     do_softirq+0x64/0xd2\n     ksoftirqd+0x82/0x138\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e4d919188554a77c798a267e098059bc9aa39726",
      "tree": "bb5e47e09f5d107db44358ad668988f5ae768ade",
      "parents": [
        "9cebb5526833059f327d237a032422c762378b2a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:02 2006 -0700"
      },
      "message": "[PATCH] lockdep: locking init debugging improvement\n\nLocking init improvement:\n\n - introduce and use __SPIN_LOCK_UNLOCKED for array initializations,\n   to pass in the name string of locks, used by debugging\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "62c4f0a2d5a188f73a94f2cb8ea0dba3e7cf0a7f",
      "tree": "e85ca2d0dd43f90dccf758338764c3caa55f333f",
      "parents": [
        "089f26d5e31b7bf42a9a8fefec08b30cd27f4b0e"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "message": "Don\u0027t include linux/config.h from anywhere else in include/\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "cde227afe6b997dce08bcfc2aa6e373fb56857b0",
      "tree": "45b0bc04f54a830d0c3cd3a5afb46fcf7679a4dc",
      "parents": [
        "44b940c299dfaaf25b7aad683ff55cb213502ddd"
      ],
      "author": {
        "name": "mao, bibo",
        "email": "bibo.mao@intel.com",
        "time": "Tue Apr 11 12:54:54 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:38:57 2006 -0700"
      },
      "message": "[PATCH] x86_64: inline function prefix with __always_inline in vsyscall\n\nIn vsyscall function do_vgettimeofday(), some functions are declared as\ninlined, which is a hint for gcc to compile the function inlined but it\nnot forced.  Sometimes compiler does not compile the function as\ninlined, so here inline is replaced by __always_inline prefix.\n\nIt does not happen in gcc compiler actually, but it possibly happens.\n\nSigned-off-by: bibo mao \u003cbibo.mao@intel.com\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"
    }
  ]
}
