)]}'
{
  "commit": "e4eed03fd06578571c01d4f1478c874bb432c815",
  "tree": "9cfd16247d8208a1fe55ad81b0d4d85c17b80415",
  "parents": [
    "abca7c4965845924f65d40e0aa1092bdd895e314"
  ],
  "author": {
    "name": "Andrea Arcangeli",
    "email": "aarcange@redhat.com",
    "time": "Wed Jun 20 12:52:57 2012 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Jun 20 14:39:35 2012 -0700"
  },
  "message": "thp: avoid atomic64_read in pmd_read_atomic for 32bit PAE\n\nIn the x86 32bit PAE CONFIG_TRANSPARENT_HUGEPAGE\u003dy case while holding the\nmmap_sem for reading, cmpxchg8b cannot be used to read pmd contents under\nXen.\n\nSo instead of dealing only with \"consistent\" pmdvals in\npmd_none_or_trans_huge_or_clear_bad() (which would be conceptually\nsimpler) we let pmd_none_or_trans_huge_or_clear_bad() deal with pmdvals\nwhere the low 32bit and high 32bit could be inconsistent (to avoid having\nto use cmpxchg8b).\n\nThe only guarantee we get from pmd_read_atomic is that if the low part of\nthe pmd was found null, the high part will be null too (so the pmd will be\nconsidered unstable).  And if the low part of the pmd is found \"stable\"\nlater, then it means the whole pmd was read atomically (because after a\npmd is stable, neither MADV_DONTNEED nor page faults can alter it anymore,\nand we read the high part after the low part).\n\nIn the 32bit PAE x86 case, it is enough to read the low part of the pmdval\natomically to declare the pmd as \"stable\" and that\u0027s true for THP and no\nTHP, furthermore in the THP case we also have a barrier() that will\nprevent any inconsistent pmdvals to be cached by a later re-read of the\n*pmd.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Jonathan Nieder \u003cjrnieder@gmail.com\u003e\nCc: Ulrich Obergfell \u003cuobergfe@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Petr Matousek \u003cpmatouse@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Jan Beulich \u003cjbeulich@suse.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nTested-by: Andrew Jones \u003cdrjones@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\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": "43876f16caf1ca8981288089d57b362e017bafbf",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/pgtable-3level.h",
      "new_id": "cb00ccc7d571f2b5245f935bde849c5c5e289635",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/pgtable-3level.h"
    },
    {
      "type": "modify",
      "old_id": "6f2b45a9b6bc425b7df6231f474516e1bd4c1344",
      "old_mode": 33188,
      "old_path": "include/asm-generic/pgtable.h",
      "new_id": "ff4947b7a9762b6ea414aa8b0159af8abb90e9dc",
      "new_mode": 33188,
      "new_path": "include/asm-generic/pgtable.h"
    }
  ]
}
