Index: /trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp
===================================================================
--- /trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp	(revision 83683)
+++ /trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp	(revision 83684)
@@ -2302,5 +2302,7 @@
 static DECLCALLBACK(int) iommuAmdR3CmdThreadWakeUp(PPDMDEVINS pDevIns, PPDMTHREAD pThread)
 {
-    RT_NOREF(pDevIns, pThread);
+    NOREF(pThread);
+    PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU);
+    return PDMDevHlpSUPSemEventSignal(pDevIns, pThis->hEvtCmdThread);
 }
 
@@ -3336,5 +3338,14 @@
 static DECLCALLBACK(int) iommuAmdR3Destruct(PPDMDEVINS pDevIns)
 {
-    NOREF(pDevIns);
+    PDMDEV_CHECK_VERSIONS_RETURN_QUIET(pDevIns);
+    PIOMMU   pThis   = PDMDEVINS_2_DATA(pDevIns, PIOMMU);
+    LogFlowFunc(("\n"));
+
+    /* Close the command thread semaphore. */
+    if (pThis->hEvtCmdThread != NIL_SUPSEMEVENT)
+    {
+        PDMDevHlpSUPSemEventClose(pDevIns, pThis->hEvtCmdThread);
+        pThis->hEvtCmdThread = NIL_SUPSEMEVENT;
+    }
     return VINF_SUCCESS;
 }
