)]}'
{
  "log": [
    {
      "commit": "fcc16882ac4532aaa644bff444f0c5d6228ba71e",
      "tree": "7104729ed7fd136a26ea47462e716410666aa1f6",
      "parents": [
        "787314c35fbb97e02823a1b8eb8cfa58f366cd49"
      ],
      "author": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Wed Dec 19 23:39:48 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 20 13:50:16 2012 -0800"
      },
      "message": "lib: atomic64: Initialize locks statically to fix early users\n\nThe atomic64 library uses a handful of static spin locks to implement\natomic 64-bit operations on architectures without support for atomic\n64-bit instructions.\n\nUnfortunately, the spinlocks are initialized in a pure initcall and that\nis too late for the vfs namespace code which wants to use atomic64\noperations before the initcall is run.\n\nThis became a problem as of commit 8823c079ba71: \"vfs: Add setns support\nfor the mount namespace\".\n\nThis leads to BUG messages such as:\n\n  BUG: spinlock bad magic on CPU#0, swapper/0/0\n   lock: atomic64_lock+0x240/0x400, .magic: 00000000, .owner: \u003cnone\u003e/-1, .owner_cpu: 0\n    do_raw_spin_lock+0x158/0x198\n    _raw_spin_lock_irqsave+0x4c/0x58\n    atomic64_add_return+0x30/0x5c\n    alloc_mnt_ns.clone.14+0x44/0xac\n    create_mnt_ns+0xc/0x54\n    mnt_init+0x120/0x1d4\n    vfs_caches_init+0xe0/0x10c\n    start_kernel+0x29c/0x300\n\ncoming out early on during boot when spinlock debugging is enabled.\n\nFix this by initializing the spinlocks statically at compile time.\n\nReported-and-tested-by: Vaibhav Bedia \u003cvaibhav.bedia@ti.com\u003e\nTested-by: Tony Lindgren \u003ctony@atomide.com\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bc3bcc93a2b4e47d5d410146f6546bca6171663",
      "tree": "101f55a96f751749041c90c32ef1ba89f94dc4d1",
      "parents": [
        "630d9c47274aa89bfa77fe6556d7818bdcb12992"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 16 21:29:17 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Mar 07 15:04:04 2012 -0500"
      },
      "message": "lib: reduce the use of module.h wherever possible\n\nFor files only using THIS_MODULE and/or EXPORT_SYMBOL, map\nthem onto including export.h -- or if the file isn\u0027t even\nusing those, then just delete the include.  Fix up any implicit\ninclude dependencies that were being masked by module.h along\nthe way.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "cb475de3d12df6912bc95048202ae8c280d4cad5",
      "tree": "31c799e706534bb2e3387a544ff4784e74d63967",
      "parents": [
        "f59ca05871a055a73f8e626f2d868f0da248e22c"
      ],
      "author": {
        "name": "Yong Zhang",
        "email": "yong.zhang0@gmail.com",
        "time": "Wed Sep 14 15:49:24 2011 +0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Sep 14 13:14:11 2011 +0200"
      },
      "message": "lib: atomic64: Change the type of local lock to raw_spinlock_t\n\nThere are still some leftovers of commit f59ca058\n[locking, lib/atomic64: Annotate atomic64_lock::lock as raw]\n\n[ tglx: Seems I picked the wrong version of that patch :( ]\n\nSigned-off-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Shan Hai \u003chaishan.bai@gmail.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nLink: http://lkml.kernel.org/r/20110914074924.GA16096@zhy\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f59ca05871a055a73f8e626f2d868f0da248e22c",
      "tree": "dd077b2cbbf92f9dbda925d8bff9e567f5a56b3f",
      "parents": [
        "3b8f40481513a7b6123def5a02db4cff96ae2198"
      ],
      "author": {
        "name": "Shan Hai",
        "email": "haishan.bai@gmail.com",
        "time": "Thu Sep 01 11:32:03 2011 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 13 11:12:22 2011 +0200"
      },
      "message": "locking, lib/atomic64: Annotate atomic64_lock::lock as raw\n\nThe spinlock protected atomic64 operations must be irq safe as they\nare used in hard interrupt context and cannot be preempted on -rt:\n\n NIP [c068b218] rt_spin_lock_slowlock+0x78/0x3a8\n  LR [c068b1e0] rt_spin_lock_slowlock+0x40/0x3a8\n Call Trace:\n  [eb459b90] [c068b1e0] rt_spin_lock_slowlock+0x40/0x3a8 (unreliable)\n  [eb459c20] [c068bdb0] rt_spin_lock+0x40/0x98\n  [eb459c40] [c03d2a14] atomic64_read+0x48/0x84\n  [eb459c60] [c001aaf4] perf_event_interrupt+0xec/0x28c\n  [eb459d10] [c0010138] performance_monitor_exception+0x7c/0x150\n  [eb459d30] [c0014170] ret_from_except_full+0x0/0x4c\n\nSo annotate it.\n\nIn mainline this change documents the low level nature of\nthe lock - otherwise there\u0027s no functional difference. Lockdep\nand Sparse checking will work as usual.\n\nSigned-off-by: Shan Hai \u003chaishan.bai@gmail.com\u003e\nReviewed-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97577896f6b9c056fa0a5e9f6a608110cb3dcd33",
      "tree": "a77e4063575d59e946211a31019719230fb68da4",
      "parents": [
        "6e6104fe085026e6ef82cc5cc303d6c8ceb7e411"
      ],
      "author": {
        "name": "Luca Barbieri",
        "email": "luca@luca-barbieri.com",
        "time": "Mon Mar 01 19:55:47 2010 +0100"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Mon Mar 01 11:38:46 2010 -0800"
      },
      "message": "lib: Fix atomic64_add_unless return value convention\n\natomic64_add_unless must return 1 if it perfomed the add and 0 otherwise.\nThe generic implementation did the opposite thing.\n\nReported-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nConfirmed-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Luca Barbieri \u003cluca@luca-barbieri.com\u003e\nLKML-Reference: \u003c1267469749-11878-4-git-send-email-luca@luca-barbieri.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "3fc7b4b220c7e830a5b3ce0ea5f85a635e0c50f0",
      "tree": "f30750093bda1a0bd233b025f30891bf4010926d",
      "parents": [
        "e4c6f8bed01f9f9a5c607bd689bf67e7b8a36bd8"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "rdreier@cisco.com",
        "time": "Wed Jul 29 15:04:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 29 19:10:35 2009 -0700"
      },
      "message": "lib: export generic atomic64_t functions\n\nThe generic atomic64_t implementation in lib/ did not export the functions\nit defined, which means that modules that use atomic64_t would not link on\nplatforms (such as 32-bit powerpc).  For example, trying to build a kernel\nwith CONFIG_NET_RDS on such a platform would fail with:\n\n    ERROR: \"atomic64_read\" [net/rds/rds.ko] undefined!\n    ERROR: \"atomic64_set\" [net/rds/rds.ko] undefined!\n\nFix this by exporting the atomic64_t functions to modules.  (I export the\nentire API even if it\u0027s not all currently used by in-tree modules to avoid\nhaving to continue fixing this in dribs and drabs)\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\nAcked-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "09d4e0edd4614e787393acc582ac701c6ec3565b",
      "tree": "77f3b85e0f59a168ac78639e510ebcbd3791b3d2",
      "parents": [
        "4c75f84f2c781beb230031234ed961d28771a764"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Fri Jun 12 21:10:05 2009 +0000"
      },
      "committer": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Jun 15 13:27:38 2009 +1000"
      },
      "message": "lib: Provide generic atomic64_t implementation\n\nMany processor architectures have no 64-bit atomic instructions, but\nwe need atomic64_t in order to support the perf_counter subsystem.\n\nThis adds an implementation of 64-bit atomic operations using hashed\nspinlocks to provide atomicity.  For each atomic operation, the address\nof the atomic64_t variable is hashed to an index into an array of 16\nspinlocks.  That spinlock is taken (with interrupts disabled) around the\noperation, which can then be coded non-atomically within the lock.\n\nOn UP, all the spinlock manipulation goes away and we simply disable\ninterrupts around each operation.  In fact gcc eliminates the whole\natomic64_lock variable as well.\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n"
    }
  ]
}
