Index: trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 49047)
+++ trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 49058)
@@ -921,5 +921,5 @@
   <enum
     name="CPUPropertyType"
-    uuid="24d356a6-2f45-4abd-b977-1cbe9c4701f5"
+    uuid="52bc41f4-a279-45da-88ab-3a1d86fb73eb"
     >
     <desc>
@@ -947,4 +947,10 @@
         This setting determines whether VirtualBox will advertise long mode
         (i.e. 64-bit guest support) and let the guest enter it.
+      </desc>
+    </const>
+    <const name="TripleFaultReset"     value="4">
+      <desc>
+        This setting determines whether a triple fault within a guest will trigger an internal
+        error condition and stop the VM (default) or reset the virtual CPU and continue execution.
       </desc>
     </const>
Index: trunk/src/VBox/Main/src-server/MachineImpl.cpp
===================================================================
--- trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 49047)
+++ trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 49058)
@@ -188,4 +188,5 @@
     mLongMode =  HC_ARCH_BITS == 64 ? settings::Hardware::LongMode_Enabled : settings::Hardware::LongMode_Disabled;
     mSyntheticCpu = false;
+    mTripleFaultReset = false;
     mHPETEnabled = false;
 
@@ -2239,4 +2240,8 @@
             break;
 
+        case CPUPropertyType_TripleFaultReset:
+            *aVal = mHWData->mTripleFaultReset;
+            break;
+
         default:
             return E_INVALIDARG;
@@ -2273,4 +2278,10 @@
             mHWData.backup();
             mHWData->mLongMode = !aVal ? settings::Hardware::LongMode_Disabled : settings::Hardware::LongMode_Enabled;
+            break;
+
+        case CPUPropertyType_TripleFaultReset:
+            setModified(IsModified_MachineData);
+            mHWData.backup();
+            mHWData->mTripleFaultReset = !!aVal;
             break;
 
@@ -9214,4 +9225,5 @@
         mHWData->mSyntheticCpu                = data.fSyntheticCpu;
         mHWData->mLongMode                    = data.enmLongMode;
+        mHWData->mTripleFaultReset            = data.fTripleFaultReset;
         mHWData->mCPUCount                    = data.cCPUs;
         mHWData->mCPUHotPlugEnabled           = data.fCpuHotPlug;
@@ -10539,4 +10551,5 @@
         data.enmLongMode            = mHWData->mLongMode;
         data.fSyntheticCpu          = !!mHWData->mSyntheticCpu;
+        data.fTripleFaultReset      = !!mHWData->mTripleFaultReset;
 
         /* Standard and Extended CPUID leafs. */
Index: trunk/src/VBox/Main/xml/Settings.cpp
===================================================================
--- trunk/src/VBox/Main/xml/Settings.cpp	(revision 49047)
+++ trunk/src/VBox/Main/xml/Settings.cpp	(revision 49058)
@@ -1885,4 +1885,5 @@
           fPAE(false),
           enmLongMode(HC_ARCH_BITS == 64 ? Hardware::LongMode_Enabled : Hardware::LongMode_Disabled),
+          fTripleFaultReset(false),
           cCPUs(1),
           fCpuHotPlug(false),
@@ -1955,4 +1956,5 @@
                   && (fPAE                      == h.fPAE)
                   && (enmLongMode               == h.enmLongMode)
+                  && (fTripleFaultReset         == h.fTripleFaultReset)
                   && (cCPUs                     == h.cCPUs)
                   && (fCpuHotPlug               == h.fCpuHotPlug)
@@ -2712,4 +2714,8 @@
             if ((pelmCPUChild = pelmHwChild->findChildElement("SyntheticCpu")))
                 pelmCPUChild->getAttributeValue("enabled", hw.fSyntheticCpu);
+
+            if ((pelmCPUChild = pelmHwChild->findChildElement("TripleFaultReset")))
+                pelmCPUChild->getAttributeValue("enabled", hw.fTripleFaultReset);
+
             if ((pelmCPUChild = pelmHwChild->findChildElement("CpuIdTree")))
                 readCpuIdTree(*pelmCPUChild, hw.llCpuIdLeafs);
@@ -3957,4 +3963,6 @@
     if (hw.fSyntheticCpu)
         pelmCPU->createChild("SyntheticCpu")->setAttribute("enabled", hw.fSyntheticCpu);
+    if (hw.fTripleFaultReset)
+        pelmCPU->createChild("TripleFaultReset")->setAttribute("enabled", hw.fTripleFaultReset);
     pelmCPU->setAttribute("count", hw.cCPUs);
     if (hw.ulCpuExecutionCap != 100)
