)]}'
{
  "commit": "9a1c439dbbb95dd110892e139ce9dee639476884",
  "tree": "20528b219c47b8b4b526a991f1100aae8412f07d",
  "parents": [
    "446203ffe66fef5a6674e86162609e5dec4795d5"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Thu Aug 22 14:46:45 2019 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Thu Aug 22 14:46:45 2019 -0400"
  },
  "message": "vmm: refactor userspace\u0027s emsr_fakewrite()\n\nThe old fakewrite would attempt to do a readmsr, which will fail.\nHowever, we only need to do a readmsr if we read before writing.  Most\nuses of this will do a write first.\n\nNote that rdmsr and wrmsr will fail from userspace.  The MSR emulation\ncode is mostly just an unused copy of the kernel\u0027s, but it\u0027s useful to\nprototype changes in userspace without requiring a kernel reboot.  i.e.\nthis is for debugging.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "67f7032a979ea84467615bc9d37727c304753a36",
      "old_mode": 33188,
      "old_path": "user/vmm/vmxmsr.c",
      "new_id": "03b8a13fae69974f34858e8b42a5c102bf49a29b",
      "new_mode": 33188,
      "new_path": "user/vmm/vmxmsr.c"
    }
  ]
}
