)]}'
{
  "commit": "7b6efc2bc4f19952b25ebf9b236e5ac43cd386c2",
  "tree": "bae674bd95329a498a5f2cc5d9c23bf5a4a54305",
  "parents": [
    "ebed48460be5abd86d9a24fa7c66378e58109f30"
  ],
  "author": {
    "name": "Andrea Arcangeli",
    "email": "aarcange@redhat.com",
    "time": "Mon Oct 31 17:08:26 2011 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Oct 31 17:30:48 2011 -0700"
  },
  "message": "mremap: avoid sending one IPI per page\n\nThis replaces ptep_clear_flush() with ptep_get_and_clear() and a single\nflush_tlb_range() at the end of the loop, to avoid sending one IPI for\neach page.\n\nThe mmu_notifier_invalidate_range_start/end section is enlarged\naccordingly but this is not going to fundamentally change things.  It was\nmore by accident that the region under mremap was for the most part still\navailable for secondary MMUs: the primary MMU was never allowed to\nreliably access that region for the duration of the mremap (modulo\ntrapping SIGSEGV on the old address range which sounds unpractical and\nflakey).  If users wants secondary MMUs not to lose access to a large\nregion under mremap they should reduce the mremap size accordingly in\nuserland and run multiple calls.  Overall this will run faster so it\u0027s\nactually going to reduce the time the region is under mremap for the\nprimary MMU which should provide a net benefit to apps.\n\nFor KVM this is a noop because the guest physical memory is never\nmremapped, there\u0027s just no point it ever moving it while guest runs.  One\ntarget of this optimization is JVM GC (so unrelated to the mmu notifier\nlogic).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\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": "195e866568e04d312224f4a674e0873c46e3d2eb",
      "old_mode": 33188,
      "old_path": "mm/mremap.c",
      "new_id": "a184f3732e1e8a7c37e8a350bc8e508831f7661c",
      "new_mode": 33188,
      "new_path": "mm/mremap.c"
    }
  ]
}
