)]}'
{
  "commit": "d2dc8cffaa638d37f9cb368621cac880859bb41d",
  "tree": "26784bed8e55ab2395eeac0266b640d49aaf5553",
  "parents": [
    "e11b3eb75680500cc0bb67130bbf435fc04b769f"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Fri Jan 13 15:50:47 2017 -0500"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Wed Jan 18 10:00:02 2017 -0500"
  },
  "message": "x86: vmm: Mark the vmtf as partial when popping\n\nThe GPC is loaded when we attempt vmenter (launch/resume).  If we fail,\nwe\u0027ll reflect the context.  However, we need to unload the GPC to restore\nthings to sanity.  Specifically, MSRs like MSR_STAR need to be set back to\nnormal.  Normally, this is done when we finalize a context, (done during\nreflect_current_ctx(), during copy_current_ctx_to()).\n\nPreviously, once we attempt to launch the context, it wasn\u0027t necessarily\nmarked as partial.  It could have been, if it was originally partial when\nwe launched it.  No guarantees though.\n\nSince we loaded the GPC, we ought to track the context as partial, which\nwill be undone when the TF is reflected.\n\nThis was a nasty find.  If you ran a VM as an SCP, the entire machine would\nappear to lock up.  However, Core 0 was just spinning in an uninterruptible\nmess.  I was able to poke it from core 1.  ($ m monitor 1; vmrunkernel).\n\nI bisected the problem to the lazy VMCS unloading, and saw it was dying\non the first pop.  I had an unrelated VMENTER (launch/resume) error, which\nwas triggering the failed pop.  I somewhat suspected a bad VMENTER, since\nthe VMCS was involved, and I recalled having issues in that area.  printks\nand while(1) eventually pointed me to the sysret of the reflected SW TF,\nwhich sounded like the MSRs weren\u0027t reset (meaning, no GPC unload).\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9ad7ba5cde8d81efaca5455a8b5a79b196f5b254",
      "old_mode": 33188,
      "old_path": "kern/arch/x86/process64.c",
      "new_id": "6d3c677b936356933adefd023f84558ba013f432",
      "new_mode": 33188,
      "new_path": "kern/arch/x86/process64.c"
    }
  ]
}
