Index: /trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp
===================================================================
--- /trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp	(revision 87292)
+++ /trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp	(revision 87293)
@@ -327,4 +327,6 @@
     STAMCOUNTER             StatCmdCompletePprReq;      /**< Number of Complete PPR Requests commands processed. */
     STAMCOUNTER             StatCmdInvIommuAll;         /**< Number of Invalidate IOMMU All commands processed. */
+
+    STAMPROFILEADV          StatDteLookup;              /**< Profiling of device table entry lookup (uncached). */
     /** @} */
 #endif
@@ -2650,4 +2652,5 @@
 {
     PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU);
+    STAM_PROFILE_ADV_START(&pThis->StatDteLookup, a);
 
     /* Read the device table entry from memory. */
@@ -2663,4 +2666,5 @@
             /** @todo IOMMU: Add to IOLTB cache. */
             *pGCPhysSpa = uIova;
+            STAM_PROFILE_ADV_STOP(&pThis->StatDteLookup, a);
             return VINF_SUCCESS;
         }
@@ -2678,4 +2682,5 @@
             iommuAmdInitIllegalDteEvent(uDevId, uIova, true /* fRsvdNotZero */, enmOp, &Event);
             iommuAmdRaiseIllegalDteEvent(pDevIns, enmOp, &Event, kIllegalDteType_RsvdNotZero);
+            STAM_PROFILE_ADV_STOP(&pThis->StatDteLookup, a);
             return VERR_IOMMU_ADDR_TRANSLATION_FAILED;
         }
@@ -2689,4 +2694,5 @@
             /** @todo IOMMU: Add to IOLTB cache. */
             *pGCPhysSpa = uIova;
+            STAM_PROFILE_ADV_STOP(&pThis->StatDteLookup, a);
             return VINF_SUCCESS;
         }
@@ -2739,12 +2745,15 @@
                      uBaseIova, fAccess, rc));
                 *pGCPhysSpa = NIL_RTGCPHYS;
+                STAM_PROFILE_ADV_STOP(&pThis->StatDteLookup, a);
                 return rc;
             }
         }
 
+        STAM_PROFILE_ADV_STOP(&pThis->StatDteLookup, a);
         return rc;
     }
 
     LogFunc(("Failed to read device table entry. uDevId=%#x rc=%Rrc\n", uDevId, rc));
+    STAM_PROFILE_ADV_STOP(&pThis->StatDteLookup, a);
     return VERR_IOMMU_ADDR_TRANSLATION_FAILED;
 }
@@ -4732,4 +4741,6 @@
     PDMDevHlpSTAMRegister(pDevIns, &pThis->StatCmdCompletePprReq, STAMTYPE_COUNTER, "R3/Commands/CompletePprReq", STAMUNIT_OCCURENCES, "Number of Complete PPR Requests commands processed.");
     PDMDevHlpSTAMRegister(pDevIns, &pThis->StatCmdInvIommuAll, STAMTYPE_COUNTER, "R3/Commands/InvIommuAll", STAMUNIT_OCCURENCES, "Number of Invalidate IOMMU All commands processed.");
+
+    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatDteLookup, STAMTYPE_PROFILE, "DteLookup", STAMUNIT_TICKS_PER_CALL, "Profiling device table entry lookup (uncached).");
 # endif
 
