Index: /trunk/src/VBox/Devices/EFI/DevEFI.cpp
===================================================================
--- /trunk/src/VBox/Devices/EFI/DevEFI.cpp	(revision 73141)
+++ /trunk/src/VBox/Devices/EFI/DevEFI.cpp	(revision 73142)
@@ -1804,10 +1804,4 @@
     RT_NOREF(enmCtx);
     PDEVEFI pThis = PDMINS_2_DATA(pDevIns, PDEVEFI);
-
-    /*
-     * Plant some structures in RAM.
-     */
-    if (pThis->u8IOAPIC)
-        FwCommonPlantMpsFloatPtr(pDevIns);
 
     /*
@@ -2432,7 +2426,10 @@
 
     if (pThis->u8IOAPIC)
+    {
         FwCommonPlantMpsTable(pDevIns,
-                              pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE + VBOX_DMI_HDR_SIZE,
+                              pThis->au8DMIPage /* aka VBOX_DMI_TABLE_BASE */ + VBOX_DMI_TABLE_SIZE + VBOX_DMI_HDR_SIZE,
                               _4K - VBOX_DMI_TABLE_SIZE - VBOX_DMI_HDR_SIZE, pThis->cCpus);
+        FwCommonPlantMpsFloatPtr(pDevIns, VBOX_DMI_TABLE_BASE + VBOX_DMI_TABLE_SIZE + VBOX_DMI_HDR_SIZE);
+    }
 
     rc = PDMDevHlpROMRegister(pDevIns, VBOX_DMI_TABLE_BASE, _4K, pThis->au8DMIPage, _4K,
Index: /trunk/src/VBox/Devices/PC/DevFwCommon.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevFwCommon.cpp	(revision 73141)
+++ /trunk/src/VBox/Devices/PC/DevFwCommon.cpp	(revision 73142)
@@ -1169,7 +1169,8 @@
  * Only applicable if IOAPIC is active!
  *
- * @param   pDevIns    The device instance data.
+ * @param   pDevIns         The device instance data.
+ * @param   u32MpTableAddr  The MP table physical address.
  */
-void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns)
+void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns, uint32_t u32MpTableAddr)
 {
     MPSFLOATPTR floatPtr;
@@ -1178,5 +1179,5 @@
     floatPtr.au8Signature[2]       = 'P';
     floatPtr.au8Signature[3]       = '_';
-    floatPtr.u32MPSAddr            = VBOX_MPS_TABLE_BASE;
+    floatPtr.u32MPSAddr            = u32MpTableAddr;
     floatPtr.u8Length              = 1; /* structure size in paragraphs */
     floatPtr.u8SpecRev             = 4; /* MPS revision 1.4 */
Index: /trunk/src/VBox/Devices/PC/DevFwCommon.h
===================================================================
--- /trunk/src/VBox/Devices/PC/DevFwCommon.h	(revision 73141)
+++ /trunk/src/VBox/Devices/PC/DevFwCommon.h	(revision 73142)
@@ -21,10 +21,4 @@
 #include "DevPcBios.h"
 
-/** @def VBOX_MPS_TABLE_BASE
- *
- * Must be located in the same page as the DMI table.
- */
-#define VBOX_MPS_TABLE_BASE          (VBOX_DMI_TABLE_BASE+VBOX_DMI_TABLE_SIZE)
-
 /* Plant DMI table */
 int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, PCRTUUID pUuid, PCFGMNODE pCfg, uint16_t cCpus, uint16_t *pcbDmiTables, uint16_t *pcNumDmiTables);
@@ -33,5 +27,5 @@
 /* Plant MPS table */
 void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, uint16_t cCpus);
-void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns);
+void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns, uint32_t u32MpTableAddr);
 
 #endif
Index: /trunk/src/VBox/Devices/PC/DevPcBios.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevPcBios.cpp	(revision 73141)
+++ /trunk/src/VBox/Devices/PC/DevPcBios.cpp	(revision 73142)
@@ -1037,7 +1037,4 @@
     PDEVPCBIOS pThis = PDMINS_2_DATA(pDevIns, PDEVPCBIOS);
     LogFlow(("pcbiosMemSetup:\n"));
-
-    if (pThis->u8IOAPIC)
-        FwCommonPlantMpsFloatPtr(pDevIns);
 
     /*
@@ -1608,6 +1605,7 @@
     if (pThis->u8IOAPIC)
     {
-        FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE,
+        FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage /* aka VBOX_DMI_TABLE_BASE */ + VBOX_DMI_TABLE_SIZE,
                               _4K - VBOX_DMI_TABLE_SIZE, pThis->cCpus);
+        FwCommonPlantMpsFloatPtr(pDevIns, VBOX_DMI_TABLE_BASE + VBOX_DMI_TABLE_SIZE);
         LogRel(("PcBios: MPS table at %08x\n", VBOX_DMI_TABLE_BASE + VBOX_DMI_TABLE_SIZE));
     }
