)]}'
{
  "commit": "cc6d4fbcef328acdc9fa7023e69f39f753f72fe1",
  "tree": "860672e7da1a3516e36dd40f962552451ef0bcf2",
  "parents": [
    "4614a3a3b638dfd7a67d0237944f6a76331af61d"
  ],
  "author": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Mon Oct 22 11:03:30 2007 +1000"
  },
  "committer": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Tue Oct 23 15:49:52 2007 +1000"
  },
  "message": "Introduce \"hcall\" pointer to indicate pending hypercall.\n\nCurrently we look at the \"trapnum\" to see if the Guest wants a\nhypercall.  But once the hypercall is done we have to reset trapnum to\na bogus value, otherwise if we exit to userspace and return, we\u0027d run\nthe same hypercall twice (that was a nasty bug to find!).\n\nThis has two main effects:\n\n1) When Jes\u0027s patch changes the hypercall args to be a generic \"struct\n   hcall_args\" we simply change the type of \"lg-\u003ehcall\".  It\u0027s set by\n   arch code, so if it has to copy args or something it can do so, and\n   point \"hcall\" into lg-\u003earch somewhere.\n\n2) Async hypercalls only get run when an actual hypercall is pending.\n   This simplfies the code a little and is a more logical semantic.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "06869a2d3b40477c99f46ba1d79f86d9740d5627",
      "old_mode": 33188,
      "old_path": "drivers/lguest/core.c",
      "new_id": "02556bae9e9f30a2f4fafbb77be5a787489ed78c",
      "new_mode": 33188,
      "new_path": "drivers/lguest/core.c"
    },
    {
      "type": "modify",
      "old_id": "8bde20934f91e16d623b58ef94d4823e7f53a2c6",
      "old_mode": 33188,
      "old_path": "drivers/lguest/hypercalls.c",
      "new_id": "0175a9f033479bdbd9c60e897f40c14cdb5a18c2",
      "new_mode": 33188,
      "new_path": "drivers/lguest/hypercalls.c"
    },
    {
      "type": "modify",
      "old_id": "203d3100c3b451456ca762a4dc582d10adc0be6c",
      "old_mode": 33188,
      "old_path": "drivers/lguest/lg.h",
      "new_id": "662994b776cc8f7414a38b3e221ad5a7b9e82a28",
      "new_mode": 33188,
      "new_path": "drivers/lguest/lg.h"
    },
    {
      "type": "modify",
      "old_id": "e2f46b16ce3149d50ed7d26f3108a886bc5896b3",
      "old_mode": 33188,
      "old_path": "drivers/lguest/x86/core.c",
      "new_id": "0cc251cbc72a61ad4d6932310e0603ce4550f64f",
      "new_mode": 33188,
      "new_path": "drivers/lguest/x86/core.c"
    }
  ]
}
