)]}'
{
  "log": [
    {
      "commit": "65ee8f0a7fc2f2267b983f1f0349acb8f19db6e6",
      "tree": "a74a9c7683957545c67777aee644ef14801975a2",
      "parents": [
        "56f335c89e28c488b1bfea3e5e697fce805c784d"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Fri Sep 08 05:43:44 2006 -0600"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@parisc-linux.org",
        "time": "Wed Oct 04 06:48:17 2006 -0600"
      },
      "message": "[PARISC] Enable interrupts while spinning\n\nUse the __raw_spin_lock_flags routine so we can take an interrupt while\nspinning.  This re-fixes a bug jejb found on 2005-10-20:\n\nCPU0 does a flush_tlb_all holding the vmlist_lock for write.\nCPU1 tries a cat of /proc/meminfo which tries to acquire vmlist_lock for read\nCPU1 is now spinning with interrupts disabled\nCPU0 tries to execute a smp_call_function to flush the local tlb caches\nThis is now a deadlock because CPU1 is spinning with interrupts disabled and\ncan never receive the IPI\n\nSigned-off-by: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n"
    },
    {
      "commit": "6e071852a10ec02570c472052f07b5facb5ad857",
      "tree": "9b90611da8782225df48b12a2c83e0992fef6d4d",
      "parents": [
        "9c2c54574e724589858ad656a507be29f9034943"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Sat Sep 02 07:54:58 2006 -0600"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@parisc-linux.org",
        "time": "Wed Oct 04 06:47:25 2006 -0600"
      },
      "message": "[PARISC] Improve rwlock implementation\n\nRewrite rwlock implementation to avoid various deadlocks in the current\nscheme.\n\nSigned-off-by: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n"
    },
    {
      "commit": "ef6edc9746dc2bfdacf44eefd5f881179971c478",
      "tree": "e8670e918a852978b2e93e189936f327be072284",
      "parents": [
        "e3e5fc91d9828a9b94a3992de47d47d2d2e34ec6"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Sep 30 23:27:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:21 2006 -0700"
      },
      "message": "[PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks\n\nOn systems running with virtual cpus there is optimization potential in\nregard to spinlocks and rw-locks.  If the virtual cpu that has taken a lock\nis known to a cpu that wants to acquire the same lock it is beneficial to\nyield the timeslice of the virtual cpu in favour of the cpu that has the\nlock (directed yield).\n\nWith CONFIG_PREEMPT\u003d\"n\" this can be implemented by the architecture without\ncommon code changes.  Powerpc already does this.\n\nWith CONFIG_PREEMPT\u003d\"y\" the lock loops are coded with _raw_spin_trylock,\n_raw_read_trylock and _raw_write_trylock in kernel/spinlock.c.  If the lock\ncould not be taken cpu_relax is called.  A directed yield is not possible\nbecause cpu_relax doesn\u0027t know anything about the lock.  To be able to\nyield the lock in favour of the current lock holder variants of cpu_relax\nfor spinlocks and rw-locks are needed.  The new _raw_spin_relax,\n_raw_read_relax and _raw_write_relax primitives differ from cpu_relax\ninsofar that they have an argument: a pointer to the lock structure.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bc8846c522264d2522b0082321ec8c2051a4536f",
      "tree": "a35d34fef7473635b58f4de04d50c5c897e74ce3",
      "parents": [
        "102c8c76f787add0790406d5c47e03cb6f8765c2"
      ],
      "author": {
        "name": "Kyle McMartin",
        "email": "kyle@parisc-linux.org",
        "time": "Fri Mar 24 21:22:02 2006 -0700"
      },
      "committer": {
        "name": "Kyle McMartin",
        "email": "kyle@hera.kernel.org",
        "time": "Thu Mar 30 17:48:53 2006 +0000"
      },
      "message": "[PARISC] More useful readwrite lock helpers\n\nspinlock.c needs _can_lock helpers. Rewrite _is_locked helpers to be\n_can_lock helpers.\n\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n"
    },
    {
      "commit": "08dc2ca61e683e9119ff534dfcd0fd555401fcf7",
      "tree": "d891918b735a8896caf1a4cf193125cf01d0e520",
      "parents": [
        "4269b0d371c43bc8f3c9e183847a08258587cf06"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "jejb@parisc-linux.org",
        "time": "Thu Nov 17 16:35:09 2005 -0500"
      },
      "committer": {
        "name": "Kyle McMartin",
        "email": "kyle@parisc-linux.org",
        "time": "Thu Nov 17 16:35:09 2005 -0500"
      },
      "message": "[PARISC] Fix our spinlock implementation\n\nWe actually have two separate bad bugs\n\n1. The read_lock implementation spins with disabled interrupts.  This is\ncompletely wrong\n2. Our spin_lock_irqsave should check to see if interrupts were enabled\nbefore the call and re-enable interrupts around the inner spin loop.\n\nThe problem is that if we spin with interrupts off, we can\u0027t receive\nIPIs. This has resulted in a bug where SMP machines suddenly spit\nsmp_call_function timeout messages and hang.\n\nThe scenario I\u0027ve caught is\n\nCPU0 does a flush_tlb_all holding the vmlist_lock for write.\nCPU1 tries a cat of /proc/meminfo which tries to acquire vmlist_lock for\n     read\nCPU1 is now spinning with interrupts disabled\nCPU0 tries to execute a smp_call_function to flush the local tlb caches\n\nThis is now a deadlock because CPU1 is spinning with interrupts disabled\nand can never receive the IPI\n\nSigned-off-by: James Bottomley \u003cjejb@parisc-linux.org\u003e\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n"
    },
    {
      "commit": "14e256c107304367eff401d20f2ab9fa72e33136",
      "tree": "beff45e23977abbb89aa3cc4851ad4f98b283bff",
      "parents": [
        "04d472dc83388c59deb6241e9aed841926aa1c8c"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "willy@parisc-linux.org",
        "time": "Fri Oct 21 22:41:25 2005 -0400"
      },
      "committer": {
        "name": "Kyle McMartin",
        "email": "kyle@parisc-linux.org",
        "time": "Fri Oct 21 22:41:25 2005 -0400"
      },
      "message": "[PARISC] Update spinlocks from parisc tree\n\nNeaten up the CONFIG_PA20 ifdefs\n\nMore merge fixes, this time for SMP\n\nSigned-off-by: Matthew Wilcox \u003cwilly@parisc-linux.org\u003e\n\nPrettify the CONFIG_DEBUG_SPINLOCK __SPIN_LOCK_UNLOCKED initializers.\n\nClean up some warnings with CONFIG_DEBUG_SPINLOCK enabled.\n\nFix build with spinlock debugging turned on. Patch is cleaner like this,\ntoo.\n\nRemove mandatory 16-byte alignment requirement on PA2.0 processors by\nusing the ldcw,CO completer. Provides a nice insn savings.\n\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n"
    },
    {
      "commit": "fb1c8f93d869b34cacb8b8932e2b83d96a19d720",
      "tree": "a006d078aa02e421a7dc4793c335308204859d36",
      "parents": [
        "4327edf6b8a7ac7dce144313947995538842d8fd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 10 00:25:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:21 2005 -0700"
      },
      "message": "[PATCH] spinlock consolidation\n\nThis patch (written by me and also containing many suggestions of Arjan van\nde Ven) does a major cleanup of the spinlock code.  It does the following\nthings:\n\n - consolidates and enhances the spinlock/rwlock debugging code\n\n - simplifies the asm/spinlock.h files\n\n - encapsulates the raw spinlock type and moves generic spinlock\n   features (such as -\u003ebreak_lock) into the generic code.\n\n - cleans up the spinlock code hierarchy to get rid of the spaghetti.\n\nMost notably there\u0027s now only a single variant of the debugging code,\nlocated in lib/spinlock_debug.c.  (previously we had one SMP debugging\nvariant per architecture, plus a separate generic one for UP builds)\n\nAlso, i\u0027ve enhanced the rwlock debugging facility, it will now track\nwrite-owners.  There is new spinlock-owner/CPU-tracking on SMP builds too.\nAll locks have lockup detection now, which will work for both soft and hard\nspin/rwlock lockups.\n\nThe arch-level include files now only contain the minimally necessary\nsubset of the spinlock code - all the rest that can be generalized now\nlives in the generic headers:\n\n include/asm-i386/spinlock_types.h       |   16\n include/asm-x86_64/spinlock_types.h     |   16\n\nI have also split up the various spinlock variants into separate files,\nmaking it easier to see which does what. The new layout is:\n\n   SMP                         |  UP\n   ----------------------------|-----------------------------------\n   asm/spinlock_types_smp.h    |  linux/spinlock_types_up.h\n   linux/spinlock_types.h      |  linux/spinlock_types.h\n   asm/spinlock_smp.h          |  linux/spinlock_up.h\n   linux/spinlock_api_smp.h    |  linux/spinlock_api_up.h\n   linux/spinlock.h            |  linux/spinlock.h\n\n/*\n * here\u0027s the role of the various spinlock/rwlock related include files:\n *\n * on SMP builds:\n *\n *  asm/spinlock_types.h: contains the raw_spinlock_t/raw_rwlock_t and the\n *                        initializers\n *\n *  linux/spinlock_types.h:\n *                        defines the generic type and initializers\n *\n *  asm/spinlock.h:       contains the __raw_spin_*()/etc. lowlevel\n *                        implementations, mostly inline assembly code\n *\n *   (also included on UP-debug builds:)\n *\n *  linux/spinlock_api_smp.h:\n *                        contains the prototypes for the _spin_*() APIs.\n *\n *  linux/spinlock.h:     builds the final spin_*() APIs.\n *\n * on UP builds:\n *\n *  linux/spinlock_type_up.h:\n *                        contains the generic, simplified UP spinlock type.\n *                        (which is an empty structure on non-debug builds)\n *\n *  linux/spinlock_types.h:\n *                        defines the generic type and initializers\n *\n *  linux/spinlock_up.h:\n *                        contains the __raw_spin_*()/etc. version of UP\n *                        builds. (which are NOPs on non-debug, non-preempt\n *                        builds)\n *\n *   (included on UP-non-debug builds:)\n *\n *  linux/spinlock_api_up.h:\n *                        builds the _spin_*() APIs.\n *\n *  linux/spinlock.h:     builds the final spin_*() APIs.\n */\n\nAll SMP and UP architectures are converted by this patch.\n\narm, i386, ia64, ppc, ppc64, s390/s390x, x64 was build-tested via\ncrosscompilers.  m32r, mips, sh, sparc, have not been tested yet, but should\nbe mostly fine.\n\nFrom: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\n\n  Booted and lightly tested on a500-44 (64-bit, SMP kernel, dual CPU).\n  Builds 32-bit SMP kernel (not booted or tested).  I did not try to build\n  non-SMP kernels.  That should be trivial to fix up later if necessary.\n\n  I converted bit ops atomic_hash lock to raw_spinlock_t.  Doing so avoids\n  some ugly nesting of linux/*.h and asm/*.h files.  Those particular locks\n  are well tested and contained entirely inside arch specific code.  I do NOT\n  expect any new issues to arise with them.\n\n If someone does ever need to use debug/metrics with them, then they will\n  need to unravel this hairball between spinlocks, atomic ops, and bit ops\n  that exist only because parisc has exactly one atomic instruction: LDCW\n  (load and clear word).\n\nFrom: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\n\n   ia64 fix\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjanv@infradead.org\u003e\nSigned-off-by: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nSigned-off-by: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nSigned-off-by: Mikael Pettersson \u003cmikpe@csd.uu.se\u003e\nSigned-off-by: Benoit Boissinot \u003cbenoit.boissinot@ens-lyon.org\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"
    }
  ]
}
