Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 75958)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 75959)
@@ -468,6 +468,7 @@
         if (pSystemPage)
         {
-            /* Nested Paging: */
-            if (pSystemPage->isNestedPagingEnabled())
+            /* Nested Paging || Nested HW Virt Ex: */
+            if (   pSystemPage->isNestedPagingEnabled()
+                || pSystemPage->isNestedHWVirtExEnabled())
             {
                 /* Enable HW Virt Ex if supported: */
@@ -475,4 +476,13 @@
                     && !pSystemPage->isHWVirtExEnabled())
                     m_machine.SetHWVirtExProperty(KHWVirtExPropertyType_Enabled, true);
+            }
+
+            /* Nested HW Virt Ex: */
+            if (pSystemPage->isNestedHWVirtExEnabled())
+            {
+                /* Enable Nested Paging if supported: */
+                if (   pSystemPage->isHWVirtExSupported()
+                    && !pSystemPage->isNestedPagingEnabled())
+                    m_machine.SetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging, true);
             }
         }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 75958)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 75959)
@@ -72,4 +72,5 @@
         /* Support flags: */
         : m_fSupportedPAE(false)
+        , m_fSupportedNestedHwVirtEx(false)
         , m_fSupportedHwVirtEx(false)
         , m_fSupportedNestedPaging(false)
@@ -86,4 +87,5 @@
         , m_iCPUExecCap(-1)
         , m_fEnabledPAE(false)
+        , m_fEnabledNestedHwVirtEx(false)
         /* Acceleration data: */
         , m_paravirtProvider(KParavirtProvider_None)
@@ -98,4 +100,5 @@
                /* Support flags: */
                && (m_fSupportedPAE == other.m_fSupportedPAE)
+               && (m_fSupportedNestedHwVirtEx == other.m_fSupportedNestedHwVirtEx)
                && (m_fSupportedHwVirtEx == other.m_fSupportedHwVirtEx)
                && (m_fSupportedNestedPaging == other.m_fSupportedNestedPaging)
@@ -112,4 +115,5 @@
                && (m_iCPUExecCap == other.m_iCPUExecCap)
                && (m_fEnabledPAE == other.m_fEnabledPAE)
+               && (m_fEnabledNestedHwVirtEx == other.m_fEnabledNestedHwVirtEx)
                /* Acceleration data: */
                && (m_paravirtProvider == other.m_paravirtProvider)
@@ -126,4 +130,6 @@
     /** Holds whether the PAE is supported. */
     bool  m_fSupportedPAE;
+    /** Holds whether the Nested HW Virt Ex is supported. */
+    bool  m_fSupportedNestedHwVirtEx;
     /** Holds whether the HW Virt Ex is supported. */
     bool  m_fSupportedHwVirtEx;
@@ -152,4 +158,6 @@
     /** Holds whether the PAE is enabled. */
     bool  m_fEnabledPAE;
+    /** Holds whether the Nested HW Virt Ex is enabled. */
+    bool  m_fEnabledNestedHwVirtEx;
 
     /** Holds the paravirtualization provider. */
@@ -200,4 +208,15 @@
 }
 
+bool UIMachineSettingsSystem::isNestedHWVirtExSupported() const
+{
+    AssertPtrReturn(m_pCache, false);
+    return m_pCache->base().m_fSupportedNestedHwVirtEx;
+}
+
+bool UIMachineSettingsSystem::isNestedHWVirtExEnabled() const
+{
+    return m_pCheckBoxNestedVirtualization->isChecked();
+}
+
 bool UIMachineSettingsSystem::isHIDEnabled() const
 {
@@ -241,4 +260,5 @@
     /* Gather support flags: */
     oldSystemData.m_fSupportedPAE = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_PAE);
+    oldSystemData.m_fSupportedNestedHwVirtEx = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_NestedHWVirt);
     oldSystemData.m_fSupportedHwVirtEx = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_HWVirtEx);
     oldSystemData.m_fSupportedNestedPaging = vboxGlobal().host().GetProcessorFeature(KProcessorFeature_NestedPaging);
@@ -282,4 +302,5 @@
     oldSystemData.m_iCPUExecCap = m_machine.GetCPUExecutionCap();
     oldSystemData.m_fEnabledPAE = m_machine.GetCPUProperty(KCPUPropertyType_PAE);
+    oldSystemData.m_fEnabledNestedHwVirtEx = m_machine.GetCPUProperty(KCPUPropertyType_HWVirt);
 
     /* Gather old 'Acceleration' data: */
@@ -330,4 +351,5 @@
     m_pSliderCPUExecCap->setValue(oldSystemData.m_iCPUExecCap);
     m_pCheckBoxPAE->setChecked(oldSystemData.m_fEnabledPAE);
+    m_pCheckBoxNestedVirtualization->setChecked(oldSystemData.m_fEnabledNestedHwVirtEx);
 
     /* Load old 'Acceleration' data from the cache: */
@@ -351,4 +373,5 @@
     /* Gather support flags: */
     newSystemData.m_fSupportedPAE = m_pCache->base().m_fSupportedPAE;
+    newSystemData.m_fSupportedNestedHwVirtEx = isNestedHWVirtExSupported();
     newSystemData.m_fSupportedHwVirtEx = isHWVirtExSupported();
     newSystemData.m_fSupportedNestedPaging = isNestedPagingSupported();
@@ -377,4 +400,5 @@
     newSystemData.m_iCPUExecCap = m_pSliderCPUExecCap->value();
     newSystemData.m_fEnabledPAE = m_pCheckBoxPAE->isChecked();
+    newSystemData.m_fEnabledNestedHwVirtEx = isNestedHWVirtExEnabled();
 
     /* Gather 'Acceleration' data: */
@@ -516,4 +540,26 @@
             {
                 message.second << tr("Lowering the processor execution cap may result in a decline in performance.");
+            }
+        }
+
+        /* Nested HW Virt Ex: */
+        if (isNestedHWVirtExEnabled())
+        {
+            /* HW Virt Ex test: */
+            if (isHWVirtExSupported() && !isHWVirtExEnabled())
+            {
+                message.second << tr(
+                    "The hardware virtualization is not currently enabled in the Acceleration section of the System page. "
+                    "This is needed to support nested hardware virtualization. "
+                    "It will be enabled automatically if you confirm your changes.");
+            }
+
+            /* Nested Paging test: */
+            if (isHWVirtExSupported() && isNestedPagingSupported() && !isNestedPagingEnabled())
+            {
+                message.second << tr(
+                    "The nested paging is not currently enabled in the Acceleration section of the System page. "
+                    "This is needed to support nested hardware virtualization. "
+                    "It will be enabled automatically if you confirm your changes.");
             }
         }
@@ -587,5 +633,6 @@
     /* Configure navigation for 'acceleration' tab: */
     setTabOrder(m_pComboParavirtProvider, m_pCheckBoxPAE);
-    setTabOrder(m_pCheckBoxPAE, m_pCheckBoxVirtualization);
+    setTabOrder(m_pCheckBoxPAE, m_pCheckBoxNestedVirtualization);
+    setTabOrder(m_pCheckBoxNestedVirtualization, m_pCheckBoxVirtualization);
     setTabOrder(m_pCheckBoxVirtualization, m_pCheckBoxNestedPaging);
 }
@@ -655,4 +702,6 @@
     m_pLabelCPUExtended->setEnabled(isMachineOffline());
     m_pCheckBoxPAE->setEnabled(isMachineOffline() && systemData.m_fSupportedPAE);
+    m_pCheckBoxNestedVirtualization->setEnabled(   (systemData.m_fSupportedNestedHwVirtEx && isMachineOffline())
+                                                || (systemData.m_fEnabledNestedHwVirtEx && isMachineOffline()));
 
     /* Polish 'Acceleration' availability: */
@@ -1025,8 +1074,12 @@
     connect(m_pSliderCPUExecCap, SIGNAL(valueChanged(int)), this, SLOT(sltHandleCPUExecCapSliderChange()));
     connect(m_pEditorCPUExecCap, SIGNAL(valueChanged(int)), this, SLOT(sltHandleCPUExecCapEditorChange()));
+    connect(m_pCheckBoxNestedVirtualization, &QCheckBox::stateChanged,
+            this, &UIMachineSettingsSystem::revalidate);
 
     /* Configure 'Acceleration' connections: */
     connect(m_pCheckBoxVirtualization, &QCheckBox::stateChanged,
             this, &UIMachineSettingsSystem::sltHandleHwVirtExToggle);
+    connect(m_pCheckBoxNestedPaging, &QCheckBox::stateChanged,
+            this, &UIMachineSettingsSystem::revalidate);
 }
 
@@ -1261,4 +1314,10 @@
             fSuccess = m_machine.isOk();
         }
+        /* Save whether Nested HW Virt Ex is enabled: */
+        if (fSuccess && isMachineOffline() && newSystemData.m_fEnabledNestedHwVirtEx != oldSystemData.m_fEnabledNestedHwVirtEx)
+        {
+            m_machine.SetCPUProperty(KCPUPropertyType_HWVirt, newSystemData.m_fEnabledNestedHwVirtEx);
+            fSuccess = m_machine.isOk();
+        }
         /* Save CPU execution cap: */
         if (fSuccess && newSystemData.m_iCPUExecCap != oldSystemData.m_iCPUExecCap)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.h	(revision 75958)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.h	(revision 75959)
@@ -49,4 +49,9 @@
     /** Returns whether the Nested Paging is enabled. */
     bool isNestedPagingEnabled() const;
+
+    /** Returns whether the Nested HW Virt Ex is supported. */
+    bool isNestedHWVirtExSupported() const;
+    /** Returns whether the Nested HW Virt Ex is enabled. */
+    bool isNestedHWVirtExEnabled() const;
 
     /** Returns whether the HID is enabled. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.ui	(revision 75958)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.ui	(revision 75959)
@@ -511,5 +511,15 @@
         </widget>
        </item>
-       <item row="5" column="0" colspan="3">
+       <item row="5" column="1" colspan="2">
+        <widget class="QCheckBox" name="m_pCheckBoxNestedVirtualization">
+         <property name="whatsThis">
+          <string>When checked, the nested hardware virtualization CPU feature will be exposed to the virtual machine.</string>
+         </property>
+         <property name="text">
+          <string>Enable nested &amp;VT-x/AMD-V</string>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="0" colspan="3">
         <spacer name="m_pSpacerVertical3">
          <property name="orientation">
