)]}'
{
  "commit": "e57778a1e30470c9f5b79e370511b9af29b59c48",
  "tree": "01239f16b016d57206ba8bdfcbd443d8a26cd5e4",
  "parents": [
    "08b882c627aeeeb3cfd3c4354f0d360d7949549d"
  ],
  "author": {
    "name": "Jeremy Fitzhardinge",
    "email": "jeremy@goop.org",
    "time": "Mon Jun 16 04:30:02 2008 -0700"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Wed Jun 25 15:17:23 2008 +0200"
  },
  "message": "xen: implement ptep_modify_prot_start/commit\n\nXen has a pte update function which will update a pte while preserving\nits accessed and dirty bits.  This means that ptep_modify_prot_start() can be\nimplemented as a simple read of the pte value.  The hardware may\nupdate the pte in the meantime, but ptep_modify_prot_commit() updates it while\npreserving any changes that may have happened in the meantime.\n\nThe updates in ptep_modify_prot_commit() are batched if we\u0027re currently in lazy\nmmu mode.\n\nThe mmu_update hypercall can take a batch of updates to perform, but\nthis code doesn\u0027t make particular use of that feature, in favour of\nusing generic multicall batching to get them all into the hypervisor.\n\nThe net effect of this is that each mprotect pte update turns from two\nexpensive trap-and-emulate faults into they hypervisor into a single\nhypercall whose cost is amortized in a batched multicall.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0b7553cbc529028c1677b031cf96a586770f4886",
      "old_mode": 33188,
      "old_path": "arch/x86/xen/enlighten.c",
      "new_id": "bd74229081c3c4614f80319449cfb74f423e9ccc",
      "new_mode": 33188,
      "new_path": "arch/x86/xen/enlighten.c"
    },
    {
      "type": "modify",
      "old_id": "8132aa8c5d49d2797b1a3c30333cb89df6cbe9fd",
      "old_mode": 33188,
      "old_path": "arch/x86/xen/mmu.c",
      "new_id": "846dad7d54a5ed6162c41a5fa1da9b2646b09300",
      "new_mode": 33188,
      "new_path": "arch/x86/xen/mmu.c"
    },
    {
      "type": "modify",
      "old_id": "e3dd09e25c63716793951718d4d418944fddd023",
      "old_mode": 33188,
      "old_path": "arch/x86/xen/mmu.h",
      "new_id": "297bf9f5b8bc3c5a709ff811078c874ffe9b2bab",
      "new_mode": 33188,
      "new_path": "arch/x86/xen/mmu.h"
    },
    {
      "type": "modify",
      "old_id": "d73228d164883c494fb778a47d7e231dc5ec7bcd",
      "old_mode": 33188,
      "old_path": "include/xen/interface/features.h",
      "new_id": "f51b6413b05469abab7724717b465f7277137612",
      "new_mode": 33188,
      "new_path": "include/xen/interface/features.h"
    },
    {
      "type": "modify",
      "old_id": "819a0331cda9d440fd368f16d38941db371caa8c",
      "old_mode": 33188,
      "old_path": "include/xen/interface/xen.h",
      "new_id": "2befa3e2f1bce59edaddfb25ce1b301aa6e554e3",
      "new_mode": 33188,
      "new_path": "include/xen/interface/xen.h"
    }
  ]
}
