Index: /trunk/include/VBox/err.h
===================================================================
--- /trunk/include/VBox/err.h	(revision 37793)
+++ /trunk/include/VBox/err.h	(revision 37794)
@@ -1738,4 +1738,18 @@
 /** @} */
 
+/** @name PCI Passtrhough Status Codes
+ * @{
+ */
+/** RamPreAlloc not set.
+ * RAM pre-allocation is currently a requirement for PCI passthrough. */
+#define VERR_PCI_PASSTHROUGH_NO_RAM_PREALLOC       (-7000)
+/** VT-x/AMD-V not active.
+ * PCI passthrough currently works only if VT-x/AMD-V is active. */
+#define VERR_PCI_PASSTHROUGH_NO_HWACCM             (-7001)
+/** Nested paging not active.
+ * PCI passthrough currently works only if nested paging is active. */
+#define VERR_PCI_PASSTHROUGH_NO_NESTED_PAGING      (-7002)
+/** @} */
+
 /* SED-END */
 
Index: /trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp	(revision 37793)
+++ /trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp	(revision 37794)
@@ -462,5 +462,5 @@
 {
     HRESULT hrc = S_OK;
-    PCFGMNODE pInst, pCfg, pLunL0;
+    PCFGMNODE pInst, pCfg, pLunL0, pLunL1;
 
     SafeIfaceArray<IPciDeviceAttachment> assignments;
@@ -561,9 +561,13 @@
         InsertConfigInteger(pCfg,      "GuestPCIFunctionNo", GuestPciAddress.miFn);
 
+        /* the driver */
+        InsertConfigNode(pInst,        "LUN#0",   &pLunL0);
+        InsertConfigString(pLunL0,     "Driver", "pciraw");
+        InsertConfigNode(pLunL0,       "AttachedDriver", &pLunL1);
+
         /* the Main driver */
+        InsertConfigString(pLunL1,     "Driver", "MainPciRaw");
+        InsertConfigNode(pLunL1,       "Config", &pCfg);
         PciRawDev* pMainDev = new PciRawDev(pConsole);
-        InsertConfigNode(pInst,        "LUN#0",   &pLunL0);
-        InsertConfigString(pLunL0,     "Driver",  "pciraw");
-        InsertConfigNode(pLunL0,       "Config" , &pCfg);
         InsertConfigInteger(pCfg,      "Object", (uintptr_t)pMainDev);
     }
Index: /trunk/src/VBox/VMM/VMMR3/PGM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PGM.cpp	(revision 37793)
+++ /trunk/src/VBox/VMM/VMMR3/PGM.cpp	(revision 37794)
@@ -2162,7 +2162,7 @@
             if (pVM->pgm.s.fPciPassthrough)
             {
-                AssertLogRelReturn(pVM->pgm.s.fRamPreAlloc, VERR_INVALID_PARAMETER);
-                AssertLogRelReturn(HWACCMIsEnabled(pVM), VERR_INVALID_PARAMETER);
-                AssertLogRelReturn(HWACCMIsNestedPagingActive(pVM), VERR_INVALID_PARAMETER);
+                AssertLogRelReturn(pVM->pgm.s.fRamPreAlloc, VERR_PCI_PASSTHROUGH_NO_RAM_PREALLOC);
+                AssertLogRelReturn(HWACCMIsEnabled(pVM), VERR_PCI_PASSTHROUGH_NO_HWACCM);
+                AssertLogRelReturn(HWACCMIsNestedPagingActive(pVM), VERR_PCI_PASSTHROUGH_NO_NESTED_PAGING);
 
                 /*
Index: /trunk/src/VBox/VMM/VMMR3/VM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/VM.cpp	(revision 37793)
+++ /trunk/src/VBox/VMM/VMMR3/VM.cpp	(revision 37794)
@@ -342,4 +342,12 @@
                                   "support and remote desktop) are only available from an 'extension "
                                   "pack' which must be downloaded and installed separately");
+                    break;
+
+                case VERR_PCI_PASSTHROUGH_NO_HWACCM:
+                    pszError = N_("PCI passthrough requires VT-x/AMD-V");
+                    break;
+
+                case VERR_PCI_PASSTHROUGH_NO_NESTED_PAGING:
+                    pszError = N_("PCI passthrough requires nested paging");
                     break;
 
