)]}'
{
  "log": [
    {
      "commit": "ec7015840ad7a8cdc87f52367ffe9c0b0401d919",
      "tree": "4d0d7dc6f4ab1e364521a866e0150794d9739a28",
      "parents": [
        "9f741cb8fecef923cce1dff820ac6aa78c12d136"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Feb 08 04:19:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:31 2008 -0800"
      },
      "message": "Remove fastcall from linux/include\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "95c354fe9f7d6decc08a92aa26eb233ecc2155bf",
      "tree": "ec9267032ea875e84216cfb20acb2cfc7c62149f",
      "parents": [
        "a95d67f87e1a5f1b4429be3ba3bf7b4051657908"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "message": "spinlock: lockbreak cleanup\n\nThe break_lock data structure and code for spinlocks is quite nasty.\nNot only does it double the size of a spinlock but it changes locking to\na potentially less optimal trylock.\n\nPut all of that under CONFIG_GENERIC_LOCKBREAK, and introduce a\n__raw_spin_is_contended that uses the lock data itself to determine whether\nthere are waiters on the lock, to be used if CONFIG_GENERIC_LOCKBREAK is\nnot set.\n\nRename need_lockbreak to spin_needbreak, make it use spin_is_contended to\ndecouple it from the spinlock implementation, and make it typesafe (rwlocks\ndo not have any need_lockbreak sites -- why do they even get bloated up\nwith that break_lock then?).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e1f4a88c5a15a86124a95ea712213bb7dab2ad99",
      "tree": "7ec29d5eb850629ee11c2ec8cc467877430e9039",
      "parents": [
        "b5d425c97f7d4e92151167b01ca038e7853c6b37"
      ],
      "author": {
        "name": "Satyam Sharma",
        "email": "ssatyam@cse.iitk.ac.in",
        "time": "Sun Jul 15 23:39:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:40 2007 -0700"
      },
      "message": "introduce write_trylock_irqsave()\n\nIntroduce a write_trylock_irqsave() implementation.  Similar in style to\nthe implementation of spin_trylock_irqsave() in mainline.\n\nSigned-off-by: Satyam Sharma \u003cssatyam@cse.iitk.ac.in\u003e\nCc: Sripathi Kodi \u003csripathik@in.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e81ce1f7ecdaed2844c75313b09af791d44e6373",
      "tree": "49e70223f9ca808c6c7fed5cf7ce00125ccca84a",
      "parents": [
        "6bb74df481223731af6c7e0ff3adb31f6442cfcd"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Mon Mar 05 00:30:51 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 05 07:57:53 2007 -0800"
      },
      "message": "[PATCH] timer/hrtimer: take per cpu locks in sane order\n\nDoing something like this on a two cpu system\n\n  # echo 0 \u003e /sys/devices/system/cpu/cpu0/online\n  # echo 1 \u003e /sys/devices/system/cpu/cpu0/online\n  # echo 0 \u003e /sys/devices/system/cpu/cpu1/online\n\nwill give me this:\n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  [ INFO: possible circular locking dependency detected ]\n  2.6.21-rc2-g562aa1d4-dirty #7\n  -------------------------------------------------------\n  bash/1282 is trying to acquire lock:\n   (\u0026cpu_base-\u003elock_key){.+..}, at: [\u003c000000000005f17e\u003e] hrtimer_cpu_notify+0xc6/0x240\n\n  but task is already holding lock:\n   (\u0026cpu_base-\u003elock_key#2){.+..}, at: [\u003c000000000005f174\u003e] hrtimer_cpu_notify+0xbc/0x240\n\n  which lock already depends on the new lock.\n\nThis happens because we have the following code in kernel/hrtimer.c:\n\n  migrate_hrtimers(int cpu)\n  [...]\n  old_base \u003d \u0026per_cpu(hrtimer_bases, cpu);\n  new_base \u003d \u0026get_cpu_var(hrtimer_bases);\n  [...]\n  spin_lock(\u0026new_base-\u003elock);\n  spin_lock(\u0026old_base-\u003elock);\n\nWhich means the spinlocks are taken in an order which depends on which cpu\ngets shut down from which other cpu. Therefore lockdep complains that there\nmight be an ABBA deadlock. Since migrate_hrtimers() gets only called on\ncpu hotplug it\u0027s safe to assume that it isn\u0027t executed concurrently on a\n\nThe same problem exists in kernel/timer.c: migrate_timers().\n\nAs pointed out by Christian Borntraeger one possible solution to avoid\nthe locking order complaints would be to make sure that the locks are\nalways taken in the same order. E.g. by taking the lock of the cpu with\nthe lower number first.\n\nTo achieve this we introduce two new spinlock functions double_spin_lock\nand double_spin_unlock which lock or unlock two locks in a given order.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Christian Borntraeger \u003ccborntra@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c75fb88dbcc470e6041a20b1457b4835b9a0a48a",
      "tree": "efe63dd4feaccc0007c9dccadec057c0bca7d5d9",
      "parents": [
        "aa0f030374228407bc4e3f5482eeab787ba53c8a"
      ],
      "author": {
        "name": "Pavel Roskin",
        "email": "proski@gnu.org",
        "time": "Sat Feb 10 01:46:37 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 11:18:07 2007 -0800"
      },
      "message": "[PATCH] Fix sparse annotation of spin unlock macros in one case\n\nSMP systems without premption and spinlock debugging enabled use unlock\nmacros that don\u0027t tell sparse that the lock is being released.  Add sparse\nannotations in this case.\n\nSigned-off-by: Pavel Roskin \u003cproski@gnu.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "676dcb8bc2ec78d80091037773598d6ec8c673d6",
      "tree": "70a82f63dcda34f8907ffd9e92898e8a8a5fef87",
      "parents": [
        "620034c84d1d939717bdfbe02c51a3fee43541c3"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Dec 06 20:31:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] add bottom_half.h\n\nWith CONFIG_SMP\u003dn:\n\n  drivers/input/ff-memless.c:384: warning: implicit declaration of function \u0027local_bh_disable\u0027\n  drivers/input/ff-memless.c:393: warning: implicit declaration of function \u0027local_bh_enable\u0027\n\nReally linux/spinlock.h should include linux/interrupt.h.  But interrupt.h\nincludes sched.h which will need spinlock.h.\n\nSo the patch breaks the _bh declarations out into a separate header and\nincludes it in both interrupt.h and spinlock.h.\n\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \u003cstable@kernel.org\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": "b8e6ec865fd1d8838b6ce9516977b65e9f08f876",
      "tree": "9203493fc47d1ff55bee5c2a68884215257ad0bf",
      "parents": [
        "137b529e4df7b9cd6b235654a3f1a8f280e3463d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Nov 26 16:27:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Nov 26 16:27:17 2006 -0800"
      },
      "message": "Revert \"[PATCH] Enforce \"unsigned long flags;\" when spinlocking\"\n\nThis reverts commit ee3ce191e8eaa4cc15c51a28b34143b36404c4f5, since it\nbroke on at least ARM, MIPS and PA-RISC due to complicated header file\ndependencies.\n\nConflicts in include/linux/spinlock.h (due to the \"nested\" variety\nfixes) fixed up by hand.\n\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\nCc: Russell King \u003crmk+lkml@arm.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cfd3ef2346f924d6c0e82236c20fdb3a8840136a",
      "tree": "f0289367f0dbf80a5bcfa2969f428c605c54dd6a",
      "parents": [
        "ee3ce191e8eaa4cc15c51a28b34143b36404c4f5"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sat Nov 25 11:09:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Nov 25 13:28:34 2006 -0800"
      },
      "message": "[PATCH] lockdep: spin_lock_irqsave_nested()\n\nIntroduce spin_lock_irqsave_nested(); implementation from:\n http://lkml.org/lkml/2006/6/1/122\nPatch from:\n http://lkml.org/lkml/2006/9/13/258\n\n[akpm@osdl.org: two compile fixes]\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Jiri Kosina \u003cjikos@jikos.cz\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: 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": "ee3ce191e8eaa4cc15c51a28b34143b36404c4f5",
      "tree": "557c5ade9b92e91f095e4017d97ffe7afd83383f",
      "parents": [
        "5e66b0b5f187c811419ff10cfb5668c028a64d57"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Nov 25 11:09:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Nov 25 13:28:34 2006 -0800"
      },
      "message": "[PATCH] Enforce \"unsigned long flags;\" when spinlocking\n\nMake it break or warn if you pass to spin_lock_irqsave() and friends\nsomething different from \"unsigned long flags;\".  Suprisingly large amount\nof these was caught by recent commit\nc53421b18f205c5f97c604ae55c6a921f034b0f6 and others.\n\nIdea is largely from FRV typechecking. Suggestions from Andrew Morton.\nAll stupid typos in first version fixed.\n\nPasses allmodconfig on i386, x86_64, alpha, arm as well as my usual config.\n\nNote #1: checking with sparse is still needed, because a driver can save\n\t and pass around flags or something. So far patch is very intrusive.\nNote #2: techically, we should break only if\n\t\tsizeof(flags) \u003c sizeof(unsigned long),\n\t however, the more pain for getting suspicious code into kernel,\n\t the better.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.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": "dcc8e559ee5ae03fa6bdb8611d76d86d0083e793",
      "tree": "8847aba4ed68074ec9ab0ef28ee2cdd7937f51d9",
      "parents": [
        "7d2c502f141042f6e5d145aa40107685d751e5a3"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Fri Sep 29 02:01:03 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:20 2006 -0700"
      },
      "message": "[PATCH] Pass a lock expression to __cond_lock, like __acquire and __release\n\nCurrently, __acquire and __release take a lock expression, but __cond_lock\ntakes only a condition, not the lock acquired if the expression evaluates\nto true.  Change __cond_lock to accept a lock expression, and change all\nthe callers to pass in a lock expression.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "303912e2a32aa73785b4c4dee15466d944a38a46",
      "tree": "e98f5cda14643fd705b69e318ad86f854edbb18b",
      "parents": [
        "9f50b93f066f8dc339de9b0eb78a22a75e6c8f8f"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Fri Sep 29 02:01:00 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:19 2006 -0700"
      },
      "message": "[PATCH] Replace _spin_trylock with spin_trylock in the IRQ variants to use __cond_lock\n\nspin_trylock_irq and spin_trylock_irqsave use _spin_trylock, which does not\nuse the __cond_lock wrapper annotation and thus does not affect the lock\ncontext; change them to use spin_trylock instead, which does use\n__cond_lock.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\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": "8a25d5debff2daee280e83e09d8c25d67c26a972",
      "tree": "3bccfef9acb66fc62863bfd6c16493c5e8c8e394",
      "parents": [
        "4ea2176dfa714882e88180b474e4cbcd888b70af"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:54 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:04 2006 -0700"
      },
      "message": "[PATCH] lockdep: prove spinlock rwlock locking correctness\n\nUse the lock validator framework to prove spinlock and rwlock locking\ncorrectness.\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": "f83b5e323f57d6e1f35a839d663e91cebe985e54",
      "tree": "59e19500a8204abd8e77620b7e80138d5f7fda68",
      "parents": [
        "4d99f93bdaa1ab49188cac67b4aae9180f8e3960"
      ],
      "author": {
        "name": "Ustyugov Roman",
        "email": "dr_unique@ymg.ru",
        "time": "Fri Sep 23 08:42:11 2005 +0400"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@mars.ravnborg.org",
        "time": "Mon Dec 26 00:33:41 2005 +0100"
      },
      "message": "kbuild: set correct KBUILD_MODNAME when using well known kernel symbols as module names\n\nThis patch fixes a problem when we use well known kernel symbols as module\nnames.\n\nFor example, if module source name is current.c, idle_stack.c or etc.,\nwe have a bad KBUILD_MODNAME value.\nFor example, KBUILD_MODNAME will be \"get_current()\" instead of \"current\", or\n\"(init_thread_union.stack)\" instead of \"idle_task\".\n\nThe trick is to define a stringify macro on the commandline - named\nKBUILD_STR for namespace reasons - and then to stringify the module\nname.\n\nThere are a few uses of KBUILD_MODNAME throughout the tree but the usage\nis for debug and will not be harmed by this change so left untouched for now.\n\nWhile at it KBUILD_BASENAME was changed too. Any spinlock usage in the\nunix module would have created wrong section names without it.\nUsage in spinlock.h fixed so it no longer stringify KBUILD_BASENAME.\n\nOriginal patch from Ustyogov Roman - all bugs introduced by me.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "bda98685b855f71f7e2fc5378aa3cdfb24a9db65",
      "tree": "c1660300d19e1fba7bda619bfe2d3802c1aee12f",
      "parents": [
        "c53117815771e1e84e6ba80a42fa1f8e330adb4d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Oct 30 14:59:44 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:13 2005 -0800"
      },
      "message": "[PATCH] x86: inline spin_unlock if !CONFIG_DEBUG_SPINLOCK and !CONFIG_PREEMPT\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.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": "10f02d1c59e55f529140dda3a92f0099d748451c",
      "tree": "6b5a5804503401624171aff65b09ff022a9f0103",
      "parents": [
        "9636273dae265b9354b861b373cd43cd76a6d0fe"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@labri.fr",
        "time": "Sat May 21 17:50:15 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat May 21 10:46:48 2005 -0700"
      },
      "message": "[PATCH] spin_unlock_bh() and preempt_check_resched()\n\nIn _spin_unlock_bh(lock):\n\tdo { \\\n\t\t_raw_spin_unlock(lock); \\\n\t\tpreempt_enable(); \\\n\t\tlocal_bh_enable(); \\\n\t\t__release(lock); \\\n\t} while (0)\n\nthere is no reason for using preempt_enable() instead of a simple\npreempt_enable_no_resched()\n\nSince we know bottom halves are disabled, preempt_schedule() will always\nreturn at once (preempt_count!\u003d0), and hence preempt_check_resched() is\nuseless here...\n\nThis fixes it by using \"preempt_enable_no_resched()\" instead of the\n\"preempt_enable()\", and thus avoids the useless preempt_check_resched()\njust before re-enabling bottom halves.\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.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"
    }
  ]
}
