)]}'
{
  "commit": "8a942fdea560d4ac0e9d9fabcd5201ad20e0c382",
  "tree": "452c0f5acccf96ffc54748a44ab5bc788f7dbffc",
  "parents": [
    "d70ddd7a5d9aa335f9b4b0c3d879e1e70ee1e4e3"
  ],
  "author": {
    "name": "Mel Gorman",
    "email": "mgorman@suse.de",
    "time": "Tue Jun 30 14:56:55 2015 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue Jun 30 19:44:56 2015 -0700"
  },
  "message": "mm: meminit: make __early_pfn_to_nid SMP-safe and introduce meminit_pfn_in_nid\n\n__early_pfn_to_nid() use static variables to cache recent lookups as\nmemblock lookups are very expensive but it assumes that memory\ninitialisation is single-threaded.  Parallel initialisation of struct\npages will break that assumption so this patch makes __early_pfn_to_nid()\nSMP-safe by requiring the caller to cache recent search information.\nearly_pfn_to_nid() keeps the same interface but is only safe to use early\nin boot due to the use of a global static variable.  meminit_pfn_in_nid()\nis an SMP-safe version that callers must maintain their own state for.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nTested-by: Nate Zimmer \u003cnzimmer@sgi.com\u003e\nTested-by: Waiman Long \u003cwaiman.long@hp.com\u003e\nTested-by: Daniel J Blueman \u003cdaniel@numascale.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Robin Holt \u003crobinmholt@gmail.com\u003e\nCc: Nate Zimmer \u003cnzimmer@sgi.com\u003e\nCc: Dave Hansen \u003cdave.hansen@intel.com\u003e\nCc: Waiman Long \u003cwaiman.long@hp.com\u003e\nCc: Scott Norton \u003cscott.norton@hp.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ea21d4cad540eb8207f29d19fb01dd5517843f4a",
      "old_mode": 33188,
      "old_path": "arch/ia64/mm/numa.c",
      "new_id": "aa19b7ac8222a2fb604b90fc9edd3d3b86ef483c",
      "new_mode": 33188,
      "new_path": "arch/ia64/mm/numa.c"
    },
    {
      "type": "modify",
      "old_id": "d662af2d0d0127af1b94c5d667f2161c58d1b3a1",
      "old_mode": 33188,
      "old_path": "include/linux/mm.h",
      "new_id": "2e872f92dbac0cecc2c5b3a65fbe7ff8678e48d5",
      "new_mode": 33188,
      "new_path": "include/linux/mm.h"
    },
    {
      "type": "modify",
      "old_id": "54d74f6eb233521d6cb84b2720a15c3cb2e6b734",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "b2473d8225490312ed9ec020f7c41c86b9280436",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "c2ee4ecad083f897d9ce181492502f48645e0bc3",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "ffdb2308848d495fecaa375821f9eac92dad3e4a",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    }
  ]
}
