Index: /trunk/src/VBox/Devices/Audio/DevHDA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDA.cpp	(revision 80691)
+++ /trunk/src/VBox/Devices/Audio/DevHDA.cpp	(revision 80692)
@@ -603,9 +603,5 @@
     LogFunc(("fInterrupt=%RTbool\n", fInterrupt));
 
-# ifndef LOG_ENABLED
-    hdaProcessInterrupt(pThis);
-# else
-    hdaProcessInterrupt(pThis, __FUNCTION__);
-# endif
+    HDA_PROCESS_INTERRUPT(pThis->pDevInsR3, pThis);
 }
 #endif /* IN_RING3 */
@@ -890,9 +886,5 @@
                 HDA_REG(pThis, RIRBSTS) |= HDA_RIRBSTS_RINTFL;
 
-# ifndef LOG_ENABLED
-                rc = hdaProcessInterrupt(pThis);
-# else
-                rc = hdaProcessInterrupt(pThis, __FUNCTION__);
-# endif
+                rc = HDA_PROCESS_INTERRUPT(pThis->pDevInsR3, pThis);
             }
         }
@@ -1537,9 +1529,5 @@
     }
 
-# ifndef LOG_ENABLED
-    hdaProcessInterrupt(pThis);
-# else
-    hdaProcessInterrupt(pThis, __FUNCTION__);
-# endif
+    HDA_PROCESS_INTERRUPT(pDevIns, pThis);
 
     const uint64_t tsNow = TMTimerGet(pThis->pTimer[uSD]);
@@ -2262,9 +2250,5 @@
     HDA_REG(pThis, RIRBSTS) &= ~(v & u32Value);
 
-#ifndef LOG_ENABLED
-    int rc = hdaProcessInterrupt(pThis);
-#else
-    int rc = hdaProcessInterrupt(pThis, __FUNCTION__);
-#endif
+    int rc = HDA_PROCESS_INTERRUPT(pDevIns, pThis);
 
     DEVHDA_UNLOCK(pDevIns, pThis);
@@ -4763,15 +4747,4 @@
 
 /**
- * @interface_method_impl{PDMDEVREG,pfnRelocate}
- */
-static DECLCALLBACK(void) hdaR3Relocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
-{
-    NOREF(offDelta);
-    PHDASTATE pThis = PDMINS_2_DATA(pDevIns, PHDASTATE);
-    pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
-}
-
-
-/**
  * @interface_method_impl{PDMDEVREG,pfnDestruct}
  */
@@ -4906,6 +4879,4 @@
      */
     pThis->pDevInsR3                = pDevIns;
-    pThis->pDevInsR0                = PDMDEVINS_2_R0PTR(pDevIns);
-    pThis->pDevInsRC                = PDMDEVINS_2_RCPTR(pDevIns);
     /* IBase */
     pThis->IBase.pfnQueryInterface  = hdaR3QueryInterface;
@@ -5361,5 +5332,5 @@
     /* .pfnConstruct = */           hdaR3Construct,
     /* .pfnDestruct = */            hdaR3Destruct,
-    /* .pfnRelocate = */            hdaR3Relocate,
+    /* .pfnRelocate = */            NULL,
     /* .pfnMemSetup = */            NULL,
     /* .pfnPowerOn = */             NULL,
Index: /trunk/src/VBox/Devices/Audio/DevHDA.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDA.h	(revision 80691)
+++ /trunk/src/VBox/Devices/Audio/DevHDA.h	(revision 80692)
@@ -105,14 +105,8 @@
     /** The PCI device structure. */
     PDMPCIDEV               PciDev;
+    /** Critical section protecting the HDA state. */
+    PDMCRITSECT             CritSect;
     /** R3 Pointer to the device instance. */
     PPDMDEVINSR3            pDevInsR3;
-    /** R0 Pointer to the device instance. */
-    PPDMDEVINSR0            pDevInsR0;
-    /** R0 Pointer to the device instance. */
-    PPDMDEVINSRC            pDevInsRC;
-    /** Padding for alignment. */
-    uint32_t                u32Padding;
-    /** Critical section protecting the HDA state. */
-    PDMCRITSECT             CritSect;
     /** The base interface for LUN\#0. */
     PDMIBASE                IBase;
@@ -151,11 +145,4 @@
     /** The stream timers for pumping data thru the attached LUN drivers. */
     PTMTIMERR3              pTimer[HDA_MAX_STREAMS];
-#ifdef VBOX_WITH_STATISTICS
-    STAMPROFILE             StatTimer;
-    STAMPROFILE             StatIn;
-    STAMPROFILE             StatOut;
-    STAMCOUNTER             StatBytesRead;
-    STAMCOUNTER             StatBytesWritten;
-#endif
     /** Pointer to HDA codec to use. */
     R3PTRTYPE(PHDACODEC)    pCodec;
@@ -211,4 +198,11 @@
     uint8_t                 au8Padding3[3];
     HDASTATEDBGINFO         Dbg;
+#ifdef VBOX_WITH_STATISTICS
+    STAMPROFILE             StatTimer;
+    STAMPROFILE             StatIn;
+    STAMPROFILE             StatOut;
+    STAMCOUNTER             StatBytesRead;
+    STAMCOUNTER             StatBytesWritten;
+#endif
     /** This is for checking that the build was correctly configured in all contexts.
      *  This is set to HDASTATE_ALIGNMENT_CHECK_MAGIC. */
Index: /trunk/src/VBox/Devices/Audio/DevHDACommon.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDACommon.cpp	(revision 80691)
+++ /trunk/src/VBox/Devices/Audio/DevHDACommon.cpp	(revision 80692)
@@ -34,22 +34,16 @@
 
 
-#ifndef LOG_ENABLED
 /**
  * Processes (de/asserts) the interrupt according to the HDA's current state.
  *
  * @returns IPRT status code.
- * @param   pThis               HDA state.
- */
-int hdaProcessInterrupt(PHDASTATE pThis)
-#else
-/**
- * Processes (de/asserts) the interrupt according to the HDA's current state.
- * Debug version.
- *
- * @returns IPRT status code.
+ * @param   pDevIns             The device instance.
  * @param   pThis               HDA state.
  * @param   pszSource           Caller information.
  */
-int hdaProcessInterrupt(PHDASTATE pThis, const char *pszSource)
+#if defined(LOG_ENABLED) || defined(DOXYGEN_RUNNING)
+int hdaProcessInterrupt(PPDMDEVINS pDevIns, PHDASTATE pThis, const char *pszSource)
+#else
+int hdaProcessInterrupt(PPDMDEVINS pDevIns, PHDASTATE pThis)
 #endif
 {
@@ -67,5 +61,5 @@
         Log3Func(("Asserted (%s)\n", pszSource));
 
-        PDMDevHlpPCISetIrq(pThis->CTX_SUFF(pDevIns), 0, 1 /* Assert */);
+        PDMDevHlpPCISetIrq(pDevIns, 0, 1 /* Assert */);
         pThis->u8IRQL = 1;
 
@@ -79,5 +73,5 @@
         Log3Func(("Deasserted (%s)\n", pszSource));
 
-        PDMDevHlpPCISetIrq(pThis->CTX_SUFF(pDevIns), 0, 0 /* Deassert */);
+        PDMDevHlpPCISetIrq(pDevIns, 0, 0 /* Deassert */);
         pThis->u8IRQL = 0;
     }
Index: /trunk/src/VBox/Devices/Audio/DevHDACommon.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDACommon.h	(revision 80691)
+++ /trunk/src/VBox/Devices/Audio/DevHDACommon.h	(revision 80692)
@@ -601,7 +601,9 @@
  */
 #ifdef LOG_ENABLED
-int           hdaProcessInterrupt(PHDASTATE pThis, const char *pszSource);
+int           hdaProcessInterrupt(PPDMDEVINS pDevIns, PHDASTATE pThis, const char *pszSource);
+# define HDA_PROCESS_INTERRUPT(a_pDevIns, a_pThis)  hdaProcessInterrupt((a_pDevIns), (a_pThis), __FUNCTION__)
 #else
-int           hdaProcessInterrupt(PHDASTATE pThis);
+int           hdaProcessInterrupt(PPDMDEVINS pDevIns, PHDASTATE pThis);
+# define HDA_PROCESS_INTERRUPT(a_pDevIns, a_pThis)  hdaProcessInterrupt((a_pDevIns), (a_pThis))
 #endif
 /** @} */
Index: /trunk/src/VBox/Devices/Audio/HDAStream.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/HDAStream.cpp	(revision 80691)
+++ /trunk/src/VBox/Devices/Audio/HDAStream.cpp	(revision 80692)
@@ -1334,9 +1334,5 @@
         /* Trigger an interrupt first and let hdaRegWriteSDSTS() deal with
          * ending / beginning a period. */
-#ifndef LOG_ENABLED
-        hdaProcessInterrupt(pThis);
-#else
-        hdaProcessInterrupt(pThis, __FUNCTION__);
-#endif
+        HDA_PROCESS_INTERRUPT(pThis->pDevInsR3, pThis);
     }
     else /* Transfer still in-flight -- schedule the next timing slot. */
