)]}'
{
  "commit": "7f184275aa306046fe7edcbef3229754f0d97402",
  "tree": "e2f82957072dd1ada3a4bc6c0281a6296123d8a0",
  "parents": [
    "f49f23abf3dd786ddcac1c1e7db3c2013b07413f"
  ],
  "author": {
    "name": "Huang Ying",
    "email": "ying.huang@intel.com",
    "time": "Wed Jul 13 13:14:24 2011 +0800"
  },
  "committer": {
    "name": "Len Brown",
    "email": "len.brown@intel.com",
    "time": "Wed Aug 03 11:15:57 2011 -0400"
  },
  "message": "lib, Make gen_pool memory allocator lockless\n\nThis version of the gen_pool memory allocator supports lockless\noperation.\n\nThis makes it safe to use in NMI handlers and other special\nunblockable contexts that could otherwise deadlock on locks.  This is\nimplemented by using atomic operations and retries on any conflicts.\nThe disadvantage is that there may be livelocks in extreme cases.  For\nbetter scalability, one gen_pool allocator can be used for each CPU.\n\nThe lockless operation only works if there is enough memory available.\nIf new memory is added to the pool a lock has to be still taken.  So\nany user relying on locklessness has to ensure that sufficient memory\nis preallocated.\n\nThe basic atomic operation of this allocator is cmpxchg on long.  On\narchitectures that don\u0027t have NMI-safe cmpxchg implementation, the\nallocator can NOT be used in NMI handler.  So code uses the allocator\nin NMI handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nReviewed-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dcafe0bf0005ac11e10dbcb0f3cc6f756221e60e",
      "old_mode": 33188,
      "old_path": "include/linux/bitmap.h",
      "new_id": "907dd58aa2289428e47911387c2d033edc1b7045",
      "new_mode": 33188,
      "new_path": "include/linux/bitmap.h"
    },
    {
      "type": "modify",
      "old_id": "5bbebda78b025d8bc63b2c24e960d20733fa2613",
      "old_mode": 33188,
      "old_path": "include/linux/genalloc.h",
      "new_id": "5e98eeb2af3b970220c7743016f9f85b0213ae8b",
      "new_mode": 33188,
      "new_path": "include/linux/genalloc.h"
    },
    {
      "type": "modify",
      "old_id": "3f3b68199d744bd4fc9b94dcb9ca6e831502b0f2",
      "old_mode": 33188,
      "old_path": "lib/bitmap.c",
      "new_id": "e3c9e999501e43f8ae0a66876c869c45bdaaf923",
      "new_mode": 33188,
      "new_path": "lib/bitmap.c"
    },
    {
      "type": "modify",
      "old_id": "577ddf8059758b05ecf9871c2409e3c8d346b5c6",
      "old_mode": 33188,
      "old_path": "lib/genalloc.c",
      "new_id": "f352cc42f4f8a58b8e4c8304de32cb31b4e29b67",
      "new_mode": 33188,
      "new_path": "lib/genalloc.c"
    }
  ]
}
