Index: /trunk/src/VBox/VMM/PDMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/PDMInternal.h	(revision 19784)
+++ /trunk/src/VBox/VMM/PDMInternal.h	(revision 19785)
@@ -613,8 +613,6 @@
 typedef enum PDMQUEUETYPE
 {
-    /** Uninitialized. */
-    PDMQUEUETYPE_UNINIT = 0,
     /** Device consumer. */
-    PDMQUEUETYPE_DEV,
+    PDMQUEUETYPE_DEV = 1,
     /** Driver consumer. */
     PDMQUEUETYPE_DRV,
@@ -1022,5 +1020,5 @@
 int         pdmLockEx(PVM pVM, int rc);
 void        pdmUnlock(PVM pVM);
-bool        pdmIsLockOwner(PVM pVM);
+
 /** @} */
 
Index: /trunk/src/VBox/VMM/PDMQueue.cpp
===================================================================
--- /trunk/src/VBox/VMM/PDMQueue.cpp	(revision 19784)
+++ /trunk/src/VBox/VMM/PDMQueue.cpp	(revision 19785)
@@ -92,12 +92,11 @@
      * Initialize the data fields.
      */
-    pQueue->pVMR3   = pVM;
-    pQueue->pVMR0   = fRZEnabled ? pVM->pVMR0 : NIL_RTR0PTR;
-    pQueue->pVMRC   = fRZEnabled ? pVM->pVMRC : NIL_RTRCPTR;
-    pQueue->enmType = PDMQUEUETYPE_UNINIT;
+    pQueue->pVMR3 = pVM;
+    pQueue->pVMR0 = fRZEnabled ? pVM->pVMR0 : NIL_RTR0PTR;
+    pQueue->pVMRC = fRZEnabled ? pVM->pVMRC : NIL_RTRCPTR;
     pQueue->cMilliesInterval = cMilliesInterval;
     //pQueue->pTimer = NULL;
-    pQueue->cbItem  = cbItem;
-    pQueue->cItems  = cItems;
+    pQueue->cbItem = cbItem;
+    pQueue->cItems = cItems;
     //pQueue->pPendingR3 = NULL;
     //pQueue->pPendingR0 = NULL;
@@ -145,8 +144,6 @@
          * Insert into the queue list for timer driven queues.
          */
-        pdmLock(pVM);
         pQueue->pNext = pVM->pdm.s.pQueuesTimer;
         pVM->pdm.s.pQueuesTimer = pQueue;
-        pdmUnlock(pVM);
     }
     else
@@ -162,5 +159,4 @@
          *   problem any longer. The priority might be a nice feature for later though.
          */
-        pdmLock(pVM);
         if (!pVM->pdm.s.pQueuesForced)
             pVM->pdm.s.pQueuesForced = pQueue;
@@ -172,5 +168,4 @@
             pPrev->pNext = pQueue;
         }
-        pdmUnlock(pVM);
     }
 
@@ -397,5 +392,4 @@
      * Unlink it.
      */
-    pdmLock(pVM);
     if (pQueue->pTimer)
     {
@@ -438,5 +432,4 @@
     pQueue->pNext = NULL;
     pQueue->pVMR3 = NULL;
-    pdmUnlock(pVM);
 
     /*
@@ -483,5 +476,4 @@
      * Unlink it.
      */
-    pdmLock(pVM);
     PPDMQUEUE pQueueNext = pVM->pdm.s.pQueuesTimer;
     PPDMQUEUE pQueue = pVM->pdm.s.pQueuesForced;
@@ -507,6 +499,4 @@
     } while (pQueue);
 
-    pdmUnlock(pVM);
-
     return VINF_SUCCESS;
 }
@@ -535,5 +525,4 @@
      * Unlink it.
      */
-    pdmLock(pVM);
     PPDMQUEUE pQueueNext = pVM->pdm.s.pQueuesTimer;
     PPDMQUEUE pQueue = pVM->pdm.s.pQueuesForced;
@@ -558,5 +547,4 @@
         pQueueNext = NULL;
     } while (pQueue);
-    pdmUnlock(pVM);
 
     return VINF_SUCCESS;
@@ -575,5 +563,4 @@
      * Process the queues.
      */
-    pdmLock(pVM);
     PPDMQUEUE pQueueNext = pVM->pdm.s.pQueuesTimer;
     PPDMQUEUE pQueue = pVM->pdm.s.pQueuesForced;
@@ -615,5 +602,4 @@
         pQueueNext = NULL;
     } while (pQueue);
-    pdmUnlock(pVM);
 }
 
@@ -631,9 +617,7 @@
     LogFlow(("PDMR3QueuesFlush:\n"));
 
-    Assert(!pdmIsLockOwner(pVM));
     /* Use atomic test and clear to prevent useless checks; pdmR3QueueFlush is SMP safe. */
     if (VM_FF_TESTANDCLEAR(pVM, VM_FF_PDM_QUEUES_BIT))
     {
-        pdmLock(pVM);
         for (PPDMQUEUE pCur = pVM->pdm.s.pQueuesForced; pCur; pCur = pCur->pNext)
         {
@@ -648,5 +632,4 @@
             }
         }
-        pdmUnlock(pVM);
     }
 }
@@ -670,5 +653,5 @@
 
     AssertMsg(pItems || pItemsRC || pItemsR0, ("ERROR: can't all be NULL now!\n"));
-    Assert(pdmIsLockOwner(pQueue->pVMR3));
+
 
     /*
@@ -818,5 +801,4 @@
     VM_ASSERT_EMT(pVM);
 
-    pdmLock(pVM);
     /*
      * Flush the queue.
@@ -850,5 +832,4 @@
             }
     }
-    pdmUnlock(pVM);
 }
 
@@ -859,6 +840,4 @@
  * @param   pQueue  The queue.
  * @param   pItem   The item.
- *
- * Note: SMP safe
  */
 DECLINLINE(void) pdmR3QueueFree(PPDMQUEUE pQueue, PPDMQUEUEITEMCORE pItem)
@@ -893,14 +872,9 @@
     PPDMQUEUE pQueue = (PPDMQUEUE)pvUser;
     Assert(pTimer == pQueue->pTimer); NOREF(pTimer);
-    Assert(!pdmIsLockOwner(pVM));
 
     if (    pQueue->pPendingR3
         ||  pQueue->pPendingR0
         ||  pQueue->pPendingRC)
-    {
-        pdmLock(pVM);
         pdmR3QueueFlush(pQueue);
-        pdmUnlock(pVM);
-    }
     int rc = TMTimerSetMillies(pQueue->pTimer, pQueue->cMilliesInterval);
     AssertRC(rc);
Index: /trunk/src/VBox/VMM/VMMAll/PDMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PDMAll.cpp	(revision 19784)
+++ /trunk/src/VBox/VMM/VMMAll/PDMAll.cpp	(revision 19785)
@@ -349,15 +349,4 @@
 }
 
-/**
- * Check if this VCPU currently owns the PDM lock.
- *
- * @returns bool owner/not owner
- * @param   pVM         The VM to operate on.
- */
-bool pdmIsLockOwner(PVM pVM)
-{
-    return PDMCritSectIsOwner(&pVM->pdm.s.CritSect);
-}
-
 
 /**
Index: /trunk/src/VBox/VMM/VMMAll/PDMAllQueue.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PDMAllQueue.cpp	(revision 19784)
+++ /trunk/src/VBox/VMM/VMMAll/PDMAllQueue.cpp	(revision 19785)
@@ -47,6 +47,4 @@
  * @param   pQueue      The queue handle.
  * @thread  Any thread.
- *
- * Note: SMP safe
  */
 VMMDECL(PPDMQUEUEITEMCORE) PDMQueueAlloc(PPDMQUEUE pQueue)
@@ -76,6 +74,4 @@
  * @param   pItem       The item to insert.
  * @thread  Any thread.
- *
- * Note: SMP safe
  */
 VMMDECL(void) PDMQueueInsert(PPDMQUEUE pQueue, PPDMQUEUEITEMCORE pItem)
@@ -196,5 +192,4 @@
 #else /* IN_RING3: */
     PVMREQ pReq;
-    Assert(!pdmIsLockOwner(pVM));
     VMR3ReqCall(pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT, (PFNRT)PDMR3QueueFlushWorker, 2, pVM, pQueue);
     VMR3ReqFree(pReq);
Index: /trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAllBth.h	(revision 19784)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAllBth.h	(revision 19785)
@@ -421,7 +421,5 @@
                                 && !(uErr & X86_TRAP_PF_P))
                             {
-                                pgmLock(pVM);
                                 rc = PGM_BTH_NAME(SyncPage)(pVCpu, PdeSrc, pvFault, PGM_SYNC_NR_PAGES, uErr);
-                                pgmUnlock(pVM);
                                 if (    RT_FAILURE(rc)
                                     || !(uErr & X86_TRAP_PF_RW)
@@ -469,7 +467,5 @@
                             && !(uErr & X86_TRAP_PF_P))
                         {
-                            pgmLock(pVM);
                             rc = PGM_BTH_NAME(SyncPage)(pVCpu, PdeSrc, pvFault, PGM_SYNC_NR_PAGES, uErr);
-                            pgmUnlock(pVM);
                             if (    RT_FAILURE(rc)
                                 ||  rc == VINF_PGM_SYNCPAGE_MODIFIED_PDE
@@ -565,7 +561,5 @@
                         &&  !(uErr & X86_TRAP_PF_P))
                     {
-                        pgmLock(pVM);
                         rc = PGM_BTH_NAME(SyncPage)(pVCpu, PdeSrc, pvFault, PGM_SYNC_NR_PAGES, uErr);
-                        pgmUnlock(pVM);
                         if (    RT_FAILURE(rc)
                             ||  rc == VINF_PGM_SYNCPAGE_MODIFIED_PDE
@@ -701,7 +695,5 @@
                                  */
                                 LogFlow(("CSAM ring 3 job\n"));
-                                pgmLock(pVM);
                                 int rc2 = PGM_BTH_NAME(SyncPage)(pVCpu, PdeSrc, pvFault, 1, uErr);
-                                pgmUnlock(pVM);
                                 AssertRC(rc2);
 
@@ -751,7 +743,5 @@
                 }
 #   endif /* PGM_WITH_PAGING(PGM_GST_TYPE, PGM_SHW_TYPE) && !defined(IN_RING0) */
-                pgmLock(pVM);
                 rc = PGM_BTH_NAME(SyncPage)(pVCpu, PdeSrc, pvFault, PGM_SYNC_NR_PAGES, uErr);
-                pgmUnlock(pVM);
                 if (RT_SUCCESS(rc))
                 {
@@ -798,7 +788,5 @@
                      *       page is not present, which is not true in this case.
                      */
-                    pgmLock(pVM);
                     rc = PGM_BTH_NAME(SyncPage)(pVCpu, PdeSrc, pvFault, 1, uErr);
-                    pgmUnlock(pVM);
                     if (RT_SUCCESS(rc))
                     {
@@ -1233,10 +1221,8 @@
                     PGM_BTH_NAME(SyncPageWorkerTrackDeref)(pShwPage, pPT->a[iPTEDst].u & SHW_PTE_PG_MASK);
 #  endif
-                    ASMAtomicWriteSize(&pPT->a[iPTEDst], 0);
+                    pPT->a[iPTEDst].u = 0;
                 }
 # else /* Syncing it here isn't 100% safe and it's probably not worth spending time syncing it. */
-                pgmLock(pVM);
                 rc = PGM_BTH_NAME(SyncPage)(pVCpu, PdeSrc, GCPtrPage, 1, 0);
-                pgmUnlock(pVM);
                 if (RT_SUCCESS(rc))
                     rc = VINF_SUCCESS;
@@ -1624,5 +1610,4 @@
     LogFlow(("SyncPage: GCPtrPage=%RGv cPages=%u uErr=%#x\n", GCPtrPage, cPages, uErr));
 
-    Assert(PGMIsLockOwner(pVM));
 #if    (   PGM_GST_TYPE == PGM_TYPE_32BIT  \
         || PGM_GST_TYPE == PGM_TYPE_PAE    \
