Index: /trunk/src/VBox/VMM/VMMAll/APICAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/APICAll.cpp	(revision 60745)
+++ /trunk/src/VBox/VMM/VMMAll/APICAll.cpp	(revision 60746)
@@ -2327,5 +2327,6 @@
              */
             uint8_t const uTpr = pXApicPage->tpr.u8Tpr;
-            if (uTpr > 0 && XAPIC_TPR_GET_TP(uVector) <= XAPIC_TPR_GET_TP(uTpr))
+            if (   uTpr > 0
+                && XAPIC_TPR_GET_TP(uVector) <= XAPIC_TPR_GET_TP(uTpr))
             {
                 Log2(("APIC%u: APICGetInterrupt: Interrupt masked. uVector=%#x uTpr=%#x SpuriousVector=%#x\n", pVCpu->idCpu,
@@ -2336,5 +2337,6 @@
 
             /*
-             * The PPR should be up-to-date at this point and we're on EMT (so no parallel updates).
+             * The PPR should be up-to-date at this point through apicSetEoi().
+             * We're on EMT so no parallel updates possible.
              * Subject the pending vector to PPR prioritization.
              */
Index: /trunk/src/VBox/VMM/VMMR3/APIC.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/APIC.cpp	(revision 60745)
+++ /trunk/src/VBox/VMM/VMMR3/APIC.cpp	(revision 60746)
@@ -355,6 +355,5 @@
 
     uint32_t cPending = 0;
-    pHlp->pfnPrintf(pHlp, "    Pending:\n");
-    pHlp->pfnPrintf(pHlp, "     ");
+    pHlp->pfnPrintf(pHlp, "    Pending:");
     for (ssize_t i = cFragments - 1; i >= 0; i--)
     {
@@ -369,5 +368,5 @@
 
                 idxSetBit += (i * cBitsPerFragment);
-                pHlp->pfnPrintf(pHlp, " %02x", idxSetBit);
+                pHlp->pfnPrintf(pHlp, " %#02x", idxSetBit);
                 ++cPending;
             } while (uFragment);
@@ -377,4 +376,32 @@
         pHlp->pfnPrintf(pHlp, " None");
     pHlp->pfnPrintf(pHlp, "\n");
+}
+
+
+/**
+ * Helper for dumping an APIC pending-interrupt bitmap.
+ *
+ * @param   pApicPib        The pending-interrupt bitmap.
+ * @param   pHlp            The debug output helper.
+ */
+static void apicR3DbgInfoPib(PCAPICPIB pApicPib, PCDBGFINFOHLP pHlp)
+{
+    /* Copy the pending-interrupt bitmap as an APIC 256-bit sparse register. */
+    XAPIC256BITREG ApicReg;
+    RT_ZERO(ApicReg);
+    ssize_t const cFragmentsDst = RT_ELEMENTS(ApicReg.u);
+    ssize_t const cFragmentsSrc = RT_ELEMENTS(pApicPib->aVectorBitmap);
+    AssertCompile(RT_ELEMENTS(ApicReg.u) == 2 * RT_ELEMENTS(pApicPib->aVectorBitmap));
+    for (ssize_t idxPib = cFragmentsSrc - 1, idxReg = cFragmentsDst - 1; idxPib >= 0; idxPib--, idxReg -= 2)
+    {
+        uint64_t const uFragment   = pApicPib->aVectorBitmap[idxPib];
+        uint32_t const uFragmentLo = RT_LO_U32(uFragment);
+        uint32_t const uFragmentHi = RT_HI_U32(uFragment);
+        ApicReg.u[idxReg].u32Reg     = uFragmentHi;
+        ApicReg.u[idxReg - 1].u32Reg = uFragmentLo;
+    }
+
+    /* Dump it. */
+    apicR3DbgInfo256BitReg(&ApicReg, pHlp);
 }
 
@@ -441,4 +468,8 @@
     pHlp->pfnPrintf(pHlp, "  IRR\n");
     apicR3DbgInfo256BitReg(&pXApicPage->irr, pHlp);
+    pHlp->pfnPrintf(pHlp, "  PIB\n");
+    apicR3DbgInfoPib((PCAPICPIB)pApicCpu->pvApicPibR3, pHlp);
+    pHlp->pfnPrintf(pHlp, "  Level PIB\n");
+    apicR3DbgInfoPib(&pApicCpu->ApicPibLevel, pHlp);
     pHlp->pfnPrintf(pHlp, "  ESR Internal                  = %#x\n",      pApicCpu->uEsrInternal);
     pHlp->pfnPrintf(pHlp, "  ESR                           = %#x\n",      pXApicPage->esr.all.u32Errors);
