)]}'
{
  "log": [
    {
      "commit": "945feb174b14e7098cc7ecf0cf4768d35bc52f9c",
      "tree": "9810b2ff0efe8edbfb1506f65834ea0d553e2848",
      "parents": [
        "fd3e0bbc6052ca9747a5332b382584ece83aab6d"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu Apr 17 14:35:01 2008 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Fri Apr 18 15:38:47 2008 +1000"
      },
      "message": "[POWERPC] irqtrace support for 64-bit powerpc\n\nThis adds the low level irq tracing hooks to the powerpc architecture\nneeded to enable full lockdep functionality.\n\nThis is partly based on Johannes Berg\u0027s initial version.  I removed\nthe asm trampoline that isn\u0027t needed (thus improving performance) and\nmodified all sorts of bits and pieces, reworking most of the assembly,\netc...\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "cdc39363d33506b0e067d41fc91f89d186bdf7f7",
      "tree": "abbc303abbccd730b56c35bd021f8ff57e4f5929",
      "parents": [
        "ef6edc9746dc2bfdacf44eefd5f881179971c478"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Sat Sep 30 23:27:44 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 powerpc\n\nPowerpc already has a directed yield for CONFIG_PREEMPT\u003d\"n\".  To make it\nwork with CONFIG_PREEMPT\u003d\"y\" as well the _raw_{spin,read,write}_relax\nprimitives need to be defined to call __spin_yield() for spinlocks and\n__rw_yield() for rw-locks.\n\nAcked-by: Paul Mackerras \u003cpaulus@samba.org\u003e\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": "f007cacffc8870702a1473d83ba5e4922d54e17c",
      "tree": "7faa1dbd7ccd2c4536f29852e0fedf7499d90508",
      "parents": [
        "2e8e8dacc566cc91cd8707cb092e76c7bbfab178"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Wed Sep 13 22:08:26 2006 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Wed Sep 13 22:08:26 2006 +1000"
      },
      "message": "[POWERPC] Fix MMIO ops to provide expected barrier behaviour\n\nThis changes the writeX family of functions to have a sync instruction\nbefore the MMIO store rather than after, because the generally expected\nbehaviour is that the device receiving the MMIO store can be guaranteed\nto see the effects of any preceding writes to normal memory.\n\nTo preserve ordering between writeX and readX, and to preserve ordering\nbetween preceding stores and the readX, the readX family of functions\nhave had an sync added before the load.\n\nAlthough writeX followed by spin_unlock is not officially guaranteed\nto keep the writeX inside the spin-locked region unless an mmiowb()\nis used, there are currently drivers that depend on the previous\nbehaviour on powerpc, which was that the mmiowb wasn\u0027t actually required.\nTherefore we have a per-cpu flag that is set by writeX, cleared by\n__raw_spin_lock and mmiowb, and tested by __raw_spin_unlock.  If it is\nset, __raw_spin_unlock does a sync and clears it.\n\nThis changes both 32-bit and 64-bit readX/writeX.  32-bit already has a\nsync in __raw_spin_unlock (since lwsync doesn\u0027t exist on 32-bit), and thus\ndoesn\u0027t need the per-cpu flag.\n\nTested on G5 (PPC970) and POWER5.\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e"
    },
    {
      "commit": "144b9c135b963bcb7f242c7b83bff930620d3161",
      "tree": "4b454f3e5e5921c5a528131dfa51df542259d918",
      "parents": [
        "3356bb9f7ba378a6e2709f9df95f4ea52111f4df"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Fri Jan 13 15:37:17 2006 +1100"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Fri Jan 13 21:18:50 2006 +1100"
      },
      "message": "[PATCH] powerpc: use lwsync in atomics, bitops, lock functions\n\neieio is only a store - store ordering. When used to order an unlock\noperation loads may leak out of the critical region. This is potentially\nbuggy, one example is if a user wants to atomically read a couple of\nvalues.\n\nWe can solve this with an lwsync which orders everything except store - load.\n\nI removed the (now unused) EIEIO_ON_SMP macros and the c versions\nisync_on_smp and eieio_on_smp now we dont use them. I also removed some\nold comments that were used to identify inline spinlocks in assembly,\nthey dont make sense now our locks are out of line.\n\nAnother interesting thing was that read_unlock was using an eieio even\nthough the rest of the spinlock code had already been converted to\nuse lwsync.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "3356bb9f7ba378a6e2709f9df95f4ea52111f4df",
      "tree": "84f370df6e58cec63132f9acce492d585226e671",
      "parents": [
        "e58c3495e6007af59382540bb21ee941e470d88d"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Fri Jan 13 10:26:42 2006 +1100"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Fri Jan 13 21:17:39 2006 +1100"
      },
      "message": "[PATCH] powerpc: Remove lppaca structure from the PACA\n\nAt present the lppaca - the structure shared with the iSeries\nhypervisor and phyp - is contained within the PACA, our own low-level\nper-cpu structure.  This doesn\u0027t have to be so, the patch below\nremoves it, making a separate array of lppaca structures.\n\nThis saves approximately 500*NR_CPUS bytes of image size and kernel\nmemory, because we don\u0027t need aligning gap between the Linux and\nhypervisor portions of every PACA.  On the other hand it means an\nextra level of dereference in many accesses to the lppaca.\n\nThe patch also gets rid of several places where we assign the paca\naddress to a local variable for no particular reason.\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "88ced0314938814e1772b4d0d7ab20c52e4472b6",
      "tree": "3e06de882c0bf5706ee7a8994e06eb8c9ed3feca",
      "parents": [
        "e1333803c3a8fb167ba67ffc5540dbb53fa7deb3"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Dec 16 22:43:46 2005 +0100"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Mon Jan 09 15:13:08 2006 +1100"
      },
      "message": "[PATCH] powerpc: sanitize header files for user space includes\n\ninclude/asm-ppc/ had #ifdef __KERNEL__ in all header files that\nare not meant for use by user space, include/asm-powerpc does\nnot have this yet.\n\nThis patch gets us a lot closer there. There are a few cases\nwhere I was not sure, so I left them out. I have verified\nthat no CONFIG_* symbols are used outside of __KERNEL__\nany more and that there are no obvious compile errors when\nincluding any of the headers in user space libraries.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "0212ddd839470f7a54cccccbaecd4833b4123da2",
      "tree": "3e18fc4852768c840131155eea84e2f70ebbbb07",
      "parents": [
        "21a6290220679d94912a068c75db2c5cd9c6552a"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Sat Nov 19 20:50:46 2005 +1100"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Sat Nov 19 20:50:46 2005 +1100"
      },
      "message": "powerpc: Merge spinlock.h\n\nThe result is mostly similar to the original ppc64 version but with\nsome adaptations for 32-bit compilation.\n\ninclude/asm-ppc64 is now empty!\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "1da44037883c0405154d53fe76da27e078456664",
      "tree": "db6f579831b89c55e0e0c095345b4d1e5bdd0500",
      "parents": [
        "e2f2e58e7968f8446b1078a20a18bf8ea12b4fbc"
      ],
      "author": {
        "name": "Kelly Daly",
        "email": "kelly@au.ibm.com",
        "time": "Tue Nov 01 16:59:20 2005 +1100"
      },
      "committer": {
        "name": "Kelly Daly",
        "email": "kelly@au.ibm.com",
        "time": "Tue Nov 01 16:59:20 2005 +1100"
      },
      "message": "merge filename and modify references to iseries/hv_call.h\n\nSigned-off-by: Kelly Daly \u003ckelly@au.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": "d637413f3f05b41f678f8004225b33b62274183f",
      "tree": "08a2240395ffef19a3d61ea7de4f55704f8046fe",
      "parents": [
        "d59dd4620fb8d6422555a9e2b82a707718e68327"
      ],
      "author": {
        "name": "Jake Moilanen",
        "email": "moilanen@austin.ibm.com",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "message": "[PATCH] ppc64: reverse prediction on spinlock busy loop code\n\nOn our raw spinlocks, we currently have an attempt at the lock, and if we do\nnot get it we enter a spin loop.  This spinloop will likely continue for\nawhile, and we pridict likely.\n\nShouldn\u0027t we predict that we will get out of the loop so our next instructions\nare already prefetched.  Even when we miss because the lock is still held, it\nwon\u0027t matter since we are waiting anyways.\n\nI did a couple quick benchmarks, but the results are inconclusive.\n\n\t16-way 690 running specjbb with original code\n\t# ./specjbb 3000 16 1 1 19 30 120\n\t    ...\n\tValid run, Score is 59282\n\n\t16-way 690 running specjbb with unlikely code\n\t# ./specjbb 3000 16 1 1 19 30 120\n\t    ...\n\tValid run, Score is 59541\n\nI saw a smaller increase on a JS20 (~1.6%)\n\n\tJS20 specjbb w/ original code\n\t# ./specjbb 400 2 1 1 19 30 120\n\t   ...\n\tValid run, Score is 20460\n\n\tJS20 specjbb w/ unlikely code\n\t# ./specjbb 400 2 1 1 19 30 120\n\t   ...\n\tValid run, Score is 20803\n\nAnton said:\n\nMispredicting the spinlock busy loop also means we slow down the rate at which\nwe do the loads which can be good for heavily contended locks.\n\nNote: There are some gcc issues with our default build and branch prediction,\nbut a CONFIG_POWER4_ONLY build should emit them correctly.  I\u0027m working with\nAlan Modra on it now.\n\nSigned-off-by: Jake Moilanen \u003cmoilanen@austin.ibm.com\u003e\nSigned-off-by: Anton Blanchard \u003canton@samba.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"
    }
  ]
}
