)]}'
{
  "log": [
    {
      "commit": "894cdde26b538c77b9943bc72f0570abf6e58e37",
      "tree": "335f75460bd947c4969c9b7a1ec5764b98bf1d2b",
      "parents": [
        "dab5209cd878c146d9f6923f061d1c2725ff210f"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Sat Jan 26 14:11:28 2008 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Jan 26 14:11:31 2008 +0100"
      },
      "message": "[S390] do local_irq_restore while spinning in spin_lock_irqsave.\n\nIn s390\u0027s spin_lock_irqsave, interrupts remain disabled while\nspinning. In other architectures like x86 and powerpc, interrupts are\nre-enabled while spinning if IRQ is not masked before spin_lock_irqsave\nis called.\n\nThe following patch re-enables interrupts through local_irq_restore\nwhile spinning for a lock acquisition.\nThis can improve system response.\n\n[heiko.carstens@de.ibm.com: removed saving of pc]\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "3b4beb31759765efdda9f9431aebfedf828bbfe0",
      "tree": "9d8a7de6c484f8f2bbda874f41ebcad4af7c9d53",
      "parents": [
        "9f4b0ba81f158df459fa2cfc98ab1475c090f29c"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Sat Jan 26 14:11:03 2008 +0100"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Jan 26 14:11:14 2008 +0100"
      },
      "message": "[S390] Remove owner_pc member from raw_spinlock_t.\n\nUsed to contain the address of the holder of the lock. But since the\nspinlock code is not inlined anymore all locks contain the same address\nanyway. And since in addtition nobody complained about that for ages\nits obviously unused. So remove it.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "42e47eeb8fb3f9d2abe653cc7f185816068a057d",
      "tree": "6c2564789cac15c949b03ed7ae123f697f0556b4",
      "parents": [
        "8abfe01dae8c0ed7ca6bfb153a7fcab47df72a52"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Oct 04 20:02:12 2006 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Oct 04 20:02:12 2006 +0200"
      },
      "message": "[S390] incorrect placement of include.\n\nThe include of linux/smp.h needs to be done before the #if that\nchecks for the compiler version. Seems like fallout from the\ninline assembly cleanup patch vs. the directed yield patch.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "3c1fcfe229e99752c74efb945a4a3f560be04204",
      "tree": "44085d9b599e06a92426141811a6f712beac17aa",
      "parents": [
        "cdc39363d33506b0e067d41fc91f89d186bdf7f7"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Sep 30 23:27:45 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:22 2006 -0700"
      },
      "message": "[PATCH] Directed yield: direct yield of spinlocks for s390.\n\nUse the new diagnose 0x9c in the spinlock implementation for s390.  It\nyields the remaining timeslice of the virtual cpu that tries to acquire a\nlock to the virtual cpu that is the current holder of the lock.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.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": "94c12cc7d196bab34aaa98d38521549fa1e5ef76",
      "tree": "8e0cec0ed44445d74a2cb5160303d6b4dfb1bc31",
      "parents": [
        "25d83cbfaa44e1b9170c0941c3ef52ca39f54ccc"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu Sep 28 16:56:43 2006 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu Sep 28 16:56:43 2006 +0200"
      },
      "message": "[S390] Inline assembly cleanup.\n\nMajor cleanup of all s390 inline assemblies. They now have a common\ncoding style. Quite a few have been shortened, mainly by using register\nasm variables. Use of the EX_TABLE macro helps  as well. The atomic ops,\nbit ops and locking inlines new use the Q-constraint if a newer gcc\nis used.  That results in slightly better code.\n\nThanks to Christian Borntraeger for proof reading the changes.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\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": "9513e5e3f5a6b429da8a9fd4330f71f1e547c8e0",
      "tree": "7585e2271d2fc3393aa2368cd7dad85d7552cd97",
      "parents": [
        "c563077e526d130b8c9aab4e75116551eb5fdc2d"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Sat Sep 03 15:58:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:06:29 2005 -0700"
      },
      "message": "[PATCH] s390: spinlock corner case\n\nOn s390 the lock value used for spinlocks consists of the lower 32 bits of the\nPSW that holds the lock.  If this address happens to be on a four gigabyte\nboundary the lock is left unlocked.  This allows other cpus to grab the same\nlock and enter a lock protected code path concurrently.  In theory this can\nhappen if the vmalloc area for the code of a module crosses a 4 GB boundary.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "951f22d5b1f0eaae35dafc669e3774a0c2084d10",
      "tree": "66c0131b576dadb98026da11d624df453c4c9a7c",
      "parents": [
        "8449d003f323ca7a00eec38905d984ba5ec83a29"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Jul 27 11:44:57 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 27 16:26:04 2005 -0700"
      },
      "message": "[PATCH] s390: spin lock retry\n\nSplit spin lock and r/w lock implementation into a single try which is done\ninline and an out of line function that repeatedly tries to get the lock\nbefore doing the cpu_relax().  Add a system control to set the number of\nretries before a cpu is yielded.\n\nThe reason for the spin lock retry is that the diagnose 0x44 that is used to\ngive up the virtual cpu is quite expensive.  For spin locks that are held only\nfor a short period of time the costs of the diagnoses outweights the savings\nfor spin locks that are held for a longer timer.  The default retry count is\n1000.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.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"
    }
  ]
}
