Index: /trunk/include/VBox/vmm/pdmdev.h
===================================================================
--- /trunk/include/VBox/vmm/pdmdev.h	(revision 88566)
+++ /trunk/include/VBox/vmm/pdmdev.h	(revision 88567)
@@ -1510,4 +1510,12 @@
     DECLR0CALLBACKMEMBER(void,  pfnUnlock,(PPDMDEVINS pDevIns));
 
+    /**
+     * Check whether the threads owns the PDM lock.
+     *
+     * @returns @c true if the PDM lock is owned, @c false otherwise.
+     * @param   pDevIns         The PCI device instance.
+     */
+    DECLR0CALLBACKMEMBER(bool,  pfnLockIsOwner,(PPDMDEVINS pDevIns));
+
     /** Just a safety precaution. */
     uint32_t                u32TheEnd;
@@ -1519,5 +1527,5 @@
 
 /** Current PDMIOMMUHLPR0 version number. */
-#define PDM_IOMMUHLPR0_VERSION                      PDM_VERSION_MAKE(0xff13, 2, 0)
+#define PDM_IOMMUHLPR0_VERSION                      PDM_VERSION_MAKE(0xff13, 3, 0)
 
 
@@ -1546,4 +1554,12 @@
      */
     DECLRCCALLBACKMEMBER(void,  pfnUnlock,(PPDMDEVINS pDevIns));
+
+    /**
+     * Check whether the threads owns the PDM lock.
+     *
+     * @returns @c true if the PDM lock is owned, @c false otherwise.
+     * @param   pDevIns         The PCI device instance.
+     */
+    DECLRCCALLBACKMEMBER(bool,  pfnLockIsOwner,(PPDMDEVINS pDevIns));
 
     /** Just a safety precaution. */
@@ -1556,5 +1572,5 @@
 
 /** Current PDMIOMMUHLPRC version number. */
-#define PDM_IOMMUHLPRC_VERSION                      PDM_VERSION_MAKE(0xff14, 2, 0)
+#define PDM_IOMMUHLPRC_VERSION                      PDM_VERSION_MAKE(0xff14, 3, 0)
 
 
@@ -1583,4 +1599,12 @@
      */
     DECLR3CALLBACKMEMBER(void,  pfnUnlock,(PPDMDEVINS pDevIns));
+
+    /**
+     * Check whether the threads owns the PDM lock.
+     *
+     * @returns @c true if the PDM lock is owned, @c false otherwise.
+     * @param   pDevIns         The PCI device instance.
+     */
+    DECLR3CALLBACKMEMBER(bool,  pfnLockIsOwner,(PPDMDEVINS pDevIns));
 
     /** Just a safety precaution. */
@@ -1593,5 +1617,5 @@
 
 /** Current PDMIOMMUHLPR3 version number. */
-#define PDM_IOMMUHLPR3_VERSION                      PDM_VERSION_MAKE(0xff15, 2, 0)
+#define PDM_IOMMUHLPR3_VERSION                      PDM_VERSION_MAKE(0xff15, 3, 0)
 
 
Index: /trunk/src/VBox/VMM/VMMR0/PDMR0DevHlp.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/PDMR0DevHlp.cpp	(revision 88566)
+++ /trunk/src/VBox/VMM/VMMR0/PDMR0DevHlp.cpp	(revision 88567)
@@ -1689,4 +1689,12 @@
 
 
+/** @interface_method_impl{PDMIOMMUHLPR0,pfnLock} */
+static DECLCALLBACK(bool) pdmR0IommuHlp_LockIsOwner(PPDMDEVINS pDevIns)
+{
+    PDMDEV_ASSERT_DEVINS(pDevIns);
+    return pdmLockIsOwner(pDevIns->Internal.s.pGVM);
+}
+
+
 /**
  * The Ring-0 IOMMU Helper Callbacks.
@@ -1697,4 +1705,5 @@
     pdmR0IommuHlp_Lock,
     pdmR0IommuHlp_Unlock,
+    pdmR0IommuHlp_LockIsOwner,
     PDM_IOMMUHLPR0_VERSION, /* the end */
 };
Index: /trunk/src/VBox/VMM/VMMR3/PDMDevMiscHlp.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PDMDevMiscHlp.cpp	(revision 88566)
+++ /trunk/src/VBox/VMM/VMMR3/PDMDevMiscHlp.cpp	(revision 88567)
@@ -282,4 +282,13 @@
 
 
+/** @interface_method_impl{PDMIOMMUHLPR3,pfnLockIsOwner} */
+static DECLCALLBACK(bool) pdmR3IommuHlp_LockIsOwner(PPDMDEVINS pDevIns)
+{
+    PDMDEV_ASSERT_DEVINS(pDevIns);
+    LogFlowFunc(("caller='%s'/%d:\n", pDevIns->pReg->szName, pDevIns->iInstance));
+    return pdmLockIsOwner(pDevIns->Internal.s.pVMR3);
+}
+
+
 /**
  * IOMMU Device Helpers.
@@ -290,4 +299,5 @@
     pdmR3IommuHlp_Lock,
     pdmR3IommuHlp_Unlock,
+    pdmR3IommuHlp_LockIsOwner,
     PDM_IOMMUHLPR3_VERSION /* the end */
 };
