Index: trunk/include/VBox/vmm/pdmdev.h
===================================================================
--- trunk/include/VBox/vmm/pdmdev.h	(revision 84652)
+++ trunk/include/VBox/vmm/pdmdev.h	(revision 84677)
@@ -48,4 +48,5 @@
 #include <VBox/vmm/pgm.h> /* PGMR3HandlerPhysicalTypeRegister() argument types. */
 #include <VBox/err.h>  /* VINF_EM_DBG_STOP, also 120+ source files expecting this. */
+#include <VBox/msi.h>
 #include <iprt/stdarg.h>
 #include <iprt/list.h>
@@ -1291,13 +1292,10 @@
      * @param   pDevIns     The IOMMU device instance.
      * @param   uDevId      The device identifier (bus, device, function).
-     * @param   GCPhysIn    The source MSI address.
-     * @param   uDataIn     The source MSI data.
-     * @param   pGCPhysOut  Where to store the remapped MSI address.
-     * @param   puDataOut   Where to store the remapped MSI data.
+     * @param   pMsiIn      The source MSI.
+     * @param   pMsiOut     Where to store the remapped MSI.
      *
      * @thread  Any.
      */
-    DECLR0CALLBACKMEMBER(int, pfnMsiRemap,(PPDMDEVINS pDevIns, uint16_t uDevId, RTGCPHYS GCPhysIn, uint32_t uDataIn,
-                                           PRTGCPHYS pGCPhysOut, uint32_t *puDataOut));
+    DECLR0CALLBACKMEMBER(int, pfnMsiRemap,(PPDMDEVINS pDevIns, uint16_t uDevId, PCMSIMSG pMsiIn, PMSIMSG pMsiOut));
 
     /** Just a safety precaution. */
@@ -1358,13 +1356,10 @@
      * @param   pDevIns     The IOMMU device instance.
      * @param   uDevId      The device identifier (bus, device, function).
-     * @param   GCPhysIn    The source MSI address.
-     * @param   uDataIn     The source MSI data.
-     * @param   pGCPhysOut  Where to store the remapped MSI address.
-     * @param   puDataOut   Where to store the remapped MSI data.
+     * @param   pMsiIn      The source MSI.
+     * @param   pMsiOut     Where to store the remapped MSI.
      *
      * @thread  Any.
      */
-    DECLRCCALLBACKMEMBER(int, pfnMsiRemap,(PPDMDEVINS pDevIns, uint16_t uDevId, RTGCPHYS GCPhysIn, uint32_t uDataIn,
-                                           PRTGCPHYS pGCPhysOut, uint32_t *puDataOut));
+    DECLRCCALLBACKMEMBER(int, pfnMsiRemap,(PPDMDEVINS pDevIns, uint16_t uDevId, PCMSIMSG pMsiIn, PMSIMSG pMsiOut));
 
     /** Just a safety precaution. */
@@ -1425,13 +1420,10 @@
      * @param   pDevIns     The IOMMU device instance.
      * @param   uDevId      The device identifier (bus, device, function).
-     * @param   GCPhysIn    The source MSI address.
-     * @param   uDataIn     The source MSI data.
-     * @param   pGCPhysOut  Where to store the remapped MSI address.
-     * @param   puDataOut   Where to store the remapped MSI data.
+     * @param   pMsiIn      The source MSI.
+     * @param   pMsiOut     Where to store the remapped MSI.
      *
      * @thread  Any.
      */
-    DECLR3CALLBACKMEMBER(int, pfnMsiRemap,(PPDMDEVINS pDevIns, uint16_t uDevId, RTGCPHYS GCPhysIn, uint32_t uDataIn,
-                                           PRTGCPHYS pGCPhysOut, uint32_t *puDataOut));
+    DECLR3CALLBACKMEMBER(int, pfnMsiRemap,(PPDMDEVINS pDevIns, uint16_t uDevId, PCMSIMSG pMsiIn, PMSIMSG pMsiOut));
 
     /** Just a safety precaution. */
@@ -1793,4 +1785,17 @@
     DECLCALLBACKMEMBER(void,  pfnUnlock)(PPDMDEVINS pDevIns);
 
+    /**
+     * Private interface between the IOAPIC and IOMMU.
+     *
+     * @returns status code.
+     * @param   pDevIns     Device instance of the IOAPIC.
+     * @param   uDevId      The device ID (bus, device, function) for the source MSI.
+     * @param   pMsiIn      The source MSI.
+     * @param   pMsiOut     Where to store the remapped MSI.
+     *
+     * @sa      iommuAmdDeviceMsiRemap().
+     */
+    DECLCALLBACKMEMBER(int, pfnIommuMsiRemap)(PPDMDEVINS pDevIns, uint16_t uDevIt, PCMSIMSG pMsiIn, PMSIMSG pMsiOut);
+
     /** Just a safety precaution. */
     uint32_t                u32TheEnd;
@@ -1802,5 +1807,5 @@
 
 /** Current PDMIOAPICHLP version number. */
-#define PDM_IOAPICHLP_VERSION                   PDM_VERSION_MAKE(0xfff0, 2, 0)
+#define PDM_IOAPICHLP_VERSION                   PDM_VERSION_MAKE(0xfff0, 2, 1)
 
 
