)]}'
{
  "commit": "e88301d338aaeb6814653a9a9c57e8bb5ee2d49b",
  "tree": "cb028e6c87dd694717e23597db9de0ce83972327",
  "parents": [
    "9cacfafb6850a144ae33523993e3870fc8b6220d"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Fri Jan 13 17:13:43 2017 -0500"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Wed Jan 18 10:00:02 2017 -0500"
  },
  "message": "x86: vmm: Rework VMRESUME logic\n\nThe old code assumed that if we found a loaded VMCS (non-partial TF, VMCS\nstill sitting around), then it was ready to be resumed.  This would only be\ntrue if we previously actually ran the VMCS.\n\nIt\u0027s possible for us to have the VMCS loaded, but never launched.  This was\npretty easy to do: launch it as an SCP.  Then the first time we tried to\nrun the VM, it was on Core 0, where it had been created and was still\nsitting around.\n\nWhen dealing with a VMCS, we must do the following:\n- load it\n- launch it\n- resume it.\n\nThe old code thought that \u0027loaded\u0027 (lingering on the core) meant \u0027ready to\nresume.\u0027\n\nThe bug was pretty easy to find and sort out, once I had VMEXITs reflected\nto userspace (instead of locking up the machine), and I could see the error\nnumber.  (exit_qual \u003d\u003d 5 -\u003e VMRESUME with non-launched VMCS).\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6d3c677b936356933adefd023f84558ba013f432",
      "old_mode": 33188,
      "old_path": "kern/arch/x86/process64.c",
      "new_id": "f065dc1c3a936fb2081d81d1dc19cca46d4088d9",
      "new_mode": 33188,
      "new_path": "kern/arch/x86/process64.c"
    },
    {
      "type": "modify",
      "old_id": "2debc1bdbf37bb7ffeac1977e12aa1014a2c25b9",
      "old_mode": 33188,
      "old_path": "kern/arch/x86/vmm/intel/vmx.c",
      "new_id": "8e1033db482c43131305179cec5eb710a10a69f1",
      "new_mode": 33188,
      "new_path": "kern/arch/x86/vmm/intel/vmx.c"
    },
    {
      "type": "modify",
      "old_id": "631fc5ad66fcb1b6705ec6ff465c3650001ae58c",
      "old_mode": 33188,
      "old_path": "kern/arch/x86/vmm/intel/vmx.h",
      "new_id": "38d6b7f45f8c654c5766453ccacbc29d9c75a776",
      "new_mode": 33188,
      "new_path": "kern/arch/x86/vmm/intel/vmx.h"
    },
    {
      "type": "modify",
      "old_id": "01bcaf8d25f4ab21366ee30a73773fe81f6a0541",
      "old_mode": 33188,
      "old_path": "kern/arch/x86/vmm/vmm.c",
      "new_id": "2694800f7b31a4cc94370bee068d941019953428",
      "new_mode": 33188,
      "new_path": "kern/arch/x86/vmm/vmm.c"
    },
    {
      "type": "modify",
      "old_id": "9505de7d5e9e616480d03bd18e0b54aebb9bc99c",
      "old_mode": 33188,
      "old_path": "kern/arch/x86/vmm/vmm.h",
      "new_id": "5c043fe0fcc0797820ad663113fbd106179320a5",
      "new_mode": 33188,
      "new_path": "kern/arch/x86/vmm/vmm.h"
    }
  ]
}
