Changeset 88765 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Apr 29, 2021 7:10:23 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 144095
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Bus/DevIommuIntel.cpp
r88764 r88765 562 562 563 563 /** 564 * Gets the number of supported adjusted guest-address width (SAGAW) in bits given a565 * CAP_REG.SAGAW value.564 * Returns the number of supported adjusted guest-address width (SAGAW) in bits 565 * given a CAP_REG.SAGAW value. 566 566 * 567 567 * @returns Number of SAGAW bits. … … 577 577 578 578 /** 579 * Gets the supported adjusted guest-address width (SAGAW) given the maximum guest580 * address width (MGAW).579 * Returns the supported adjusted guest-address width (SAGAW) given the maximum 580 * guest address width (MGAW). 581 581 * 582 582 * @returns The CAP_REG.SAGAW value. … … 592 592 } 593 593 return 0; 594 } 595 596 597 /** 598 * Returns table translation mode's descriptive name. 599 * 600 * @returns The descriptive name. 601 * @param uTtm The RTADDR_REG.TTM value. 602 */ 603 static const char* vtdRtaddrRegGetTtmDesc(uint8_t uTtm) 604 { 605 Assert(!(uTtm & 3)); 606 static const char* s_apszTtmNames[] = 607 { 608 "Legacy Mode", 609 "Scalable Mode", 610 "Reserved", 611 "Abort-DMA Mode" 612 }; 613 return s_apszTtmNames[uTtm & (RT_ELEMENTS(s_apszTtmNames) - 1)]; 594 614 } 595 615 … … 1624 1644 * temporaries and release the lock ASAP. 1625 1645 * 1626 * Order of register being read and outputted is in according with the 1627 * Intel VT-d spec. 10.4 "Register Descriptions" for no particular reason. 1646 * Order of register being read and outputted is in accordance with the 1647 * spec. for no particular reason. 1648 * See Intel VT-d spec. 10.4 "Register Descriptions". 1628 1649 */ 1629 1650 DMAR_LOCK(pDevIns, pThisR3); … … 1675 1696 pHlp->pfnPrintf(pHlp, "Intel-IOMMU:\n"); 1676 1697 pHlp->pfnPrintf(pHlp, " Diag = %s\n", pszDiag); 1677 pHlp->pfnPrintf(pHlp, " VER_REG = %#RX32\n", uVerReg); 1678 pHlp->pfnPrintf(pHlp, " CAP_REG = %#RX64\n", uCapReg); 1679 pHlp->pfnPrintf(pHlp, " ECAP_REG = %#RX64\n", uEcapReg); 1680 pHlp->pfnPrintf(pHlp, " GCMD_REG = %#RX32\n", uGcmdReg); 1681 pHlp->pfnPrintf(pHlp, " GSTS_REG = %#RX32\n", uGstsReg); 1682 pHlp->pfnPrintf(pHlp, " RTADDR_REG = %#RX64\n", uRtaddrReg); 1683 pHlp->pfnPrintf(pHlp, " CCMD_REG = %#RX64\n", uCcmdReg); 1684 pHlp->pfnPrintf(pHlp, " FSTS_REG = %#RX32\n", uFstsReg); 1685 pHlp->pfnPrintf(pHlp, " FECTL_REG = %#RX32\n", uFectlReg); 1686 pHlp->pfnPrintf(pHlp, " FEDATA_REG = %#RX32\n", uFedataReg); 1687 pHlp->pfnPrintf(pHlp, " FEADDR_REG = %#RX32\n", uFeaddrReg); 1688 pHlp->pfnPrintf(pHlp, " FEUADDR_REG = %#RX32\n", uFeuaddrReg); 1689 pHlp->pfnPrintf(pHlp, " AFLOG_REG = %#RX64\n", uAflogReg); 1690 pHlp->pfnPrintf(pHlp, " PMEN_REG = %#RX32\n", uPmenReg); 1691 pHlp->pfnPrintf(pHlp, " PLMBASE_REG = %#RX32\n", uPlmbaseReg); 1692 pHlp->pfnPrintf(pHlp, " PLMLIMIT_REG = %#RX32\n", uPlmlimitReg); 1693 pHlp->pfnPrintf(pHlp, " PHMBASE_REG = %#RX64\n", uPhmbaseReg); 1694 pHlp->pfnPrintf(pHlp, " PHMLIMIT_REG = %#RX64\n", uPhmlimitReg); 1695 pHlp->pfnPrintf(pHlp, " IQH_REG = %#RX64\n", uIqhReg); 1696 pHlp->pfnPrintf(pHlp, " IQT_REG = %#RX64\n", uIqtReg); 1697 pHlp->pfnPrintf(pHlp, " IQA_REG = %#RX64\n", uIqaReg); 1698 pHlp->pfnPrintf(pHlp, " ICS_REG = %#RX32\n", uIcsReg); 1699 pHlp->pfnPrintf(pHlp, " IECTL_REG = %#RX32\n", uIectlReg); 1700 pHlp->pfnPrintf(pHlp, " IEDATA_REG = %#RX32\n", uIedataReg); 1701 pHlp->pfnPrintf(pHlp, " IEADDR_REG = %#RX32\n", uIeaddrReg); 1702 pHlp->pfnPrintf(pHlp, " IEUADDR_REG = %#RX32\n", uIeuaddrReg); 1703 pHlp->pfnPrintf(pHlp, " IQERCD_REG = %#RX64\n", uIqercdReg); 1704 pHlp->pfnPrintf(pHlp, " IRTA_REG = %#RX64\n", uIrtaReg); 1705 pHlp->pfnPrintf(pHlp, " PQH_REG = %#RX64\n", uPqhReg); 1706 pHlp->pfnPrintf(pHlp, " PQT_REG = %#RX64\n", uPqtReg); 1707 pHlp->pfnPrintf(pHlp, " PQA_REG = %#RX64\n", uPqaReg); 1708 pHlp->pfnPrintf(pHlp, " PRS_REG = %#RX32\n", uPrsReg); 1709 pHlp->pfnPrintf(pHlp, " PECTL_REG = %#RX32\n", uPectlReg); 1710 pHlp->pfnPrintf(pHlp, " PEDATA_REG = %#RX32\n", uPedataReg); 1711 pHlp->pfnPrintf(pHlp, " PEADDR_REG = %#RX32\n", uPeaddrReg); 1712 pHlp->pfnPrintf(pHlp, " PEUADDR_REG = %#RX32\n", uPeuaddrReg); 1713 pHlp->pfnPrintf(pHlp, " MTRRCAP_REG = %#RX64\n", uMtrrcapReg); 1714 pHlp->pfnPrintf(pHlp, " MTRRDEF_REG = %#RX64\n", uMtrrdefReg); 1715 pHlp->pfnPrintf(pHlp, "\n"); 1698 if (!fVerbose) 1699 { 1700 pHlp->pfnPrintf(pHlp, " VER_REG = %#RX32\n", uVerReg); 1701 pHlp->pfnPrintf(pHlp, " CAP_REG = %#RX64\n", uCapReg); 1702 pHlp->pfnPrintf(pHlp, " ECAP_REG = %#RX64\n", uEcapReg); 1703 pHlp->pfnPrintf(pHlp, " GCMD_REG = %#RX32\n", uGcmdReg); 1704 pHlp->pfnPrintf(pHlp, " GSTS_REG = %#RX32\n", uGstsReg); 1705 pHlp->pfnPrintf(pHlp, " RTADDR_REG = %#RX64\n", uRtaddrReg); 1706 pHlp->pfnPrintf(pHlp, " CCMD_REG = %#RX64\n", uCcmdReg); 1707 pHlp->pfnPrintf(pHlp, " FSTS_REG = %#RX32\n", uFstsReg); 1708 pHlp->pfnPrintf(pHlp, " FECTL_REG = %#RX32\n", uFectlReg); 1709 pHlp->pfnPrintf(pHlp, " FEDATA_REG = %#RX32\n", uFedataReg); 1710 pHlp->pfnPrintf(pHlp, " FEADDR_REG = %#RX32\n", uFeaddrReg); 1711 pHlp->pfnPrintf(pHlp, " FEUADDR_REG = %#RX32\n", uFeuaddrReg); 1712 pHlp->pfnPrintf(pHlp, " AFLOG_REG = %#RX64\n", uAflogReg); 1713 pHlp->pfnPrintf(pHlp, " PMEN_REG = %#RX32\n", uPmenReg); 1714 pHlp->pfnPrintf(pHlp, " PLMBASE_REG = %#RX32\n", uPlmbaseReg); 1715 pHlp->pfnPrintf(pHlp, " PLMLIMIT_REG = %#RX32\n", uPlmlimitReg); 1716 pHlp->pfnPrintf(pHlp, " PHMBASE_REG = %#RX64\n", uPhmbaseReg); 1717 pHlp->pfnPrintf(pHlp, " PHMLIMIT_REG = %#RX64\n", uPhmlimitReg); 1718 pHlp->pfnPrintf(pHlp, " IQH_REG = %#RX64\n", uIqhReg); 1719 pHlp->pfnPrintf(pHlp, " IQT_REG = %#RX64\n", uIqtReg); 1720 pHlp->pfnPrintf(pHlp, " IQA_REG = %#RX64\n", uIqaReg); 1721 pHlp->pfnPrintf(pHlp, " ICS_REG = %#RX32\n", uIcsReg); 1722 pHlp->pfnPrintf(pHlp, " IECTL_REG = %#RX32\n", uIectlReg); 1723 pHlp->pfnPrintf(pHlp, " IEDATA_REG = %#RX32\n", uIedataReg); 1724 pHlp->pfnPrintf(pHlp, " IEADDR_REG = %#RX32\n", uIeaddrReg); 1725 pHlp->pfnPrintf(pHlp, " IEUADDR_REG = %#RX32\n", uIeuaddrReg); 1726 pHlp->pfnPrintf(pHlp, " IQERCD_REG = %#RX64\n", uIqercdReg); 1727 pHlp->pfnPrintf(pHlp, " IRTA_REG = %#RX64\n", uIrtaReg); 1728 pHlp->pfnPrintf(pHlp, " PQH_REG = %#RX64\n", uPqhReg); 1729 pHlp->pfnPrintf(pHlp, " PQT_REG = %#RX64\n", uPqtReg); 1730 pHlp->pfnPrintf(pHlp, " PQA_REG = %#RX64\n", uPqaReg); 1731 pHlp->pfnPrintf(pHlp, " PRS_REG = %#RX32\n", uPrsReg); 1732 pHlp->pfnPrintf(pHlp, " PECTL_REG = %#RX32\n", uPectlReg); 1733 pHlp->pfnPrintf(pHlp, " PEDATA_REG = %#RX32\n", uPedataReg); 1734 pHlp->pfnPrintf(pHlp, " PEADDR_REG = %#RX32\n", uPeaddrReg); 1735 pHlp->pfnPrintf(pHlp, " PEUADDR_REG = %#RX32\n", uPeuaddrReg); 1736 pHlp->pfnPrintf(pHlp, " MTRRCAP_REG = %#RX64\n", uMtrrcapReg); 1737 pHlp->pfnPrintf(pHlp, " MTRRDEF_REG = %#RX64\n", uMtrrdefReg); 1738 pHlp->pfnPrintf(pHlp, "\n"); 1739 } 1740 else 1741 { 1742 pHlp->pfnPrintf(pHlp, " VER_REG = %#RX32\n", uVerReg); 1743 { 1744 pHlp->pfnPrintf(pHlp, " MAJ = %#x\n", RT_BF_GET(uVerReg, VTD_BF_VER_REG_MAX)); 1745 pHlp->pfnPrintf(pHlp, " MIN = %#x\n", RT_BF_GET(uVerReg, VTD_BF_VER_REG_MIN)); 1746 } 1747 pHlp->pfnPrintf(pHlp, " CAP_REG = %#RX64\n", uCapReg); 1748 { 1749 uint8_t const uSagaw = RT_BF_GET(uCapReg, VTD_BF_CAP_REG_SAGAW); 1750 uint8_t const uMgaw = RT_BF_GET(uCapReg, VTD_BF_CAP_REG_MGAW); 1751 uint8_t const uNfr = RT_BF_GET(uCapReg, VTD_BF_CAP_REG_NFR); 1752 pHlp->pfnPrintf(pHlp, " ND = %#x\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_ND)); 1753 pHlp->pfnPrintf(pHlp, " AFL = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_AFL)); 1754 pHlp->pfnPrintf(pHlp, " RWBF = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_RWBF)); 1755 pHlp->pfnPrintf(pHlp, " PLMR = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_PLMR)); 1756 pHlp->pfnPrintf(pHlp, " PHMR = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_PHMR)); 1757 pHlp->pfnPrintf(pHlp, " CM = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_CM)); 1758 pHlp->pfnPrintf(pHlp, " SAGAW = %#x (%u bits)\n", uSagaw, vtdCapRegGetSagawBits(uSagaw)); 1759 pHlp->pfnPrintf(pHlp, " MGAW = %#x (%u bits)\n", uMgaw, uMgaw + 1); 1760 pHlp->pfnPrintf(pHlp, " ZLR = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_ZLR)); 1761 pHlp->pfnPrintf(pHlp, " FRO = %#x bytes\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_FRO)); 1762 pHlp->pfnPrintf(pHlp, " SLLPS = %#x\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_SLLPS)); 1763 pHlp->pfnPrintf(pHlp, " PSI = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_PSI)); 1764 pHlp->pfnPrintf(pHlp, " NFR = %#x (%u FRCD register%s)\n", uNfr, uNfr + 1, uNfr > 0 ? "s" : ""); 1765 pHlp->pfnPrintf(pHlp, " MAMV = %#x\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_MAMV)); 1766 pHlp->pfnPrintf(pHlp, " DWD = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_DWD)); 1767 pHlp->pfnPrintf(pHlp, " DRD = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_DRD)); 1768 pHlp->pfnPrintf(pHlp, " FL1GP = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_FL1GP)); 1769 pHlp->pfnPrintf(pHlp, " PI = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_PI)); 1770 pHlp->pfnPrintf(pHlp, " FL5LP = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_FL5LP)); 1771 pHlp->pfnPrintf(pHlp, " ESIRTPS = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_ESIRTPS)); 1772 pHlp->pfnPrintf(pHlp, " ESRTPS = %RTbool\n", RT_BF_GET(uCapReg, VTD_BF_CAP_REG_ESRTPS)); 1773 } 1774 pHlp->pfnPrintf(pHlp, " ECAP_REG = %#RX64\n", uEcapReg); 1775 { 1776 uint8_t const uPss = RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_PSS); 1777 pHlp->pfnPrintf(pHlp, " C = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_C)); 1778 pHlp->pfnPrintf(pHlp, " QI = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_QI)); 1779 pHlp->pfnPrintf(pHlp, " DT = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_DT)); 1780 pHlp->pfnPrintf(pHlp, " IR = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_IR)); 1781 pHlp->pfnPrintf(pHlp, " EIM = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_EIM)); 1782 pHlp->pfnPrintf(pHlp, " PT = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_PT)); 1783 pHlp->pfnPrintf(pHlp, " SC = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_SC)); 1784 pHlp->pfnPrintf(pHlp, " IRO = %#x bytes\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_IRO)); 1785 pHlp->pfnPrintf(pHlp, " MHMV = %#x\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_MHMV)); 1786 pHlp->pfnPrintf(pHlp, " MTS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_MTS)); 1787 pHlp->pfnPrintf(pHlp, " NEST = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_NEST)); 1788 pHlp->pfnPrintf(pHlp, " PRS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_PRS)); 1789 pHlp->pfnPrintf(pHlp, " ERS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_ERS)); 1790 pHlp->pfnPrintf(pHlp, " SRS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_SRS)); 1791 pHlp->pfnPrintf(pHlp, " NWFS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_NWFS)); 1792 pHlp->pfnPrintf(pHlp, " EAFS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_EAFS)); 1793 pHlp->pfnPrintf(pHlp, " PSS = %#x (%u bits)\n", uPss, uPss > 0 ? uPss + 1 : 0); 1794 pHlp->pfnPrintf(pHlp, " PASID = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_PASID)); 1795 pHlp->pfnPrintf(pHlp, " DIT = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_DIT)); 1796 pHlp->pfnPrintf(pHlp, " PDS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_PDS)); 1797 pHlp->pfnPrintf(pHlp, " SMTS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_SMTS)); 1798 pHlp->pfnPrintf(pHlp, " VCS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_VCS)); 1799 pHlp->pfnPrintf(pHlp, " SLADS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_SLADS)); 1800 pHlp->pfnPrintf(pHlp, " SLTS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_SLTS)); 1801 pHlp->pfnPrintf(pHlp, " FLTS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_FLTS)); 1802 pHlp->pfnPrintf(pHlp, " SMPWCS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_SMPWCS)); 1803 pHlp->pfnPrintf(pHlp, " RPS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_RPS)); 1804 pHlp->pfnPrintf(pHlp, " ADMS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_ADMS)); 1805 pHlp->pfnPrintf(pHlp, " RPRIVS = %RTbool\n", RT_BF_GET(uEcapReg, VTD_BF_ECAP_REG_RPRIVS)); 1806 } 1807 pHlp->pfnPrintf(pHlp, " GCMD_REG = %#RX32\n", uGcmdReg); 1808 { 1809 uint8_t const fCfi = RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_CFI); 1810 pHlp->pfnPrintf(pHlp, " CFI = %u (%s)\n", fCfi, fCfi ? "Bypass interrupt remapping" 1811 : "Block compatible format interrupts"); 1812 pHlp->pfnPrintf(pHlp, " SIRTP = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_SIRTP)); 1813 pHlp->pfnPrintf(pHlp, " IRE = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_IRE)); 1814 pHlp->pfnPrintf(pHlp, " QIE = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_QIE)); 1815 pHlp->pfnPrintf(pHlp, " WBF = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_WBF)); 1816 pHlp->pfnPrintf(pHlp, " EAFL = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_SFL)); 1817 pHlp->pfnPrintf(pHlp, " SFL = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_SFL)); 1818 pHlp->pfnPrintf(pHlp, " SRTP = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_SRTP)); 1819 pHlp->pfnPrintf(pHlp, " TE = %u\n", RT_BF_GET(uGcmdReg, VTD_BF_GCMD_REG_TE)); 1820 } 1821 pHlp->pfnPrintf(pHlp, " GSTS_REG = %#RX32\n", uGstsReg); 1822 { 1823 uint8_t const fCfis = RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_CFIS); 1824 pHlp->pfnPrintf(pHlp, " CFIS = %u (%s)\n", fCfis, fCfis ? "Bypass interrupt remapping" 1825 : "Block compatible format interrupts"); 1826 pHlp->pfnPrintf(pHlp, " IRTPS = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_IRTPS)); 1827 pHlp->pfnPrintf(pHlp, " IRES = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_IRES)); 1828 pHlp->pfnPrintf(pHlp, " QIES = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_QIES)); 1829 pHlp->pfnPrintf(pHlp, " WBFS = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_WBFS)); 1830 pHlp->pfnPrintf(pHlp, " AFLS = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_AFLS)); 1831 pHlp->pfnPrintf(pHlp, " FLS = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_FLS)); 1832 pHlp->pfnPrintf(pHlp, " RTPS = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_RTPS)); 1833 pHlp->pfnPrintf(pHlp, " TES = %u\n", RT_BF_GET(uGstsReg, VTD_BF_GSTS_REG_TES)); 1834 } 1835 pHlp->pfnPrintf(pHlp, " RTADDR_REG = %#RX64\n", uRtaddrReg); 1836 { 1837 uint8_t const uTtm = RT_BF_GET(uRtaddrReg, VTD_BF_RTADDR_REG_TTM); 1838 pHlp->pfnPrintf(pHlp, " TTM = %u (%s)\n", uTtm, vtdRtaddrRegGetTtmDesc(uTtm)); 1839 pHlp->pfnPrintf(pHlp, " RTA = %#RX64\n", RT_BF_GET(uRtaddrReg, VTD_BF_RTADDR_REG_RTA)); 1840 } 1841 pHlp->pfnPrintf(pHlp, " CCMD_REG = %#RX64\n", uCcmdReg); 1842 pHlp->pfnPrintf(pHlp, " FSTS_REG = %#RX32\n", uFstsReg); 1843 { 1844 pHlp->pfnPrintf(pHlp, " PFO = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_PFO)); 1845 pHlp->pfnPrintf(pHlp, " PPF = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_PPF)); 1846 pHlp->pfnPrintf(pHlp, " AFO = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_AFO)); 1847 pHlp->pfnPrintf(pHlp, " APF = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_APF)); 1848 pHlp->pfnPrintf(pHlp, " IQE = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_IQE)); 1849 pHlp->pfnPrintf(pHlp, " ICS = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_ICE)); 1850 pHlp->pfnPrintf(pHlp, " ITE = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_ITE)); 1851 pHlp->pfnPrintf(pHlp, " FRI = %u\n", RT_BF_GET(uFstsReg, VTD_BF_FSTS_REG_FRI)); 1852 } 1853 1854 /** @todo Verbose others as needed during debugging/rainy day. */ 1855 pHlp->pfnPrintf(pHlp, " FECTL_REG = %#RX32\n", uFectlReg); 1856 pHlp->pfnPrintf(pHlp, " FEDATA_REG = %#RX32\n", uFedataReg); 1857 pHlp->pfnPrintf(pHlp, " FEADDR_REG = %#RX32\n", uFeaddrReg); 1858 pHlp->pfnPrintf(pHlp, " FEUADDR_REG = %#RX32\n", uFeuaddrReg); 1859 pHlp->pfnPrintf(pHlp, " AFLOG_REG = %#RX64\n", uAflogReg); 1860 pHlp->pfnPrintf(pHlp, " PMEN_REG = %#RX32\n", uPmenReg); 1861 pHlp->pfnPrintf(pHlp, " PLMBASE_REG = %#RX32\n", uPlmbaseReg); 1862 pHlp->pfnPrintf(pHlp, " PLMLIMIT_REG = %#RX32\n", uPlmlimitReg); 1863 pHlp->pfnPrintf(pHlp, " PHMBASE_REG = %#RX64\n", uPhmbaseReg); 1864 pHlp->pfnPrintf(pHlp, " PHMLIMIT_REG = %#RX64\n", uPhmlimitReg); 1865 pHlp->pfnPrintf(pHlp, " IQH_REG = %#RX64\n", uIqhReg); 1866 pHlp->pfnPrintf(pHlp, " IQT_REG = %#RX64\n", uIqtReg); 1867 pHlp->pfnPrintf(pHlp, " IQA_REG = %#RX64\n", uIqaReg); 1868 pHlp->pfnPrintf(pHlp, " ICS_REG = %#RX32\n", uIcsReg); 1869 pHlp->pfnPrintf(pHlp, " IECTL_REG = %#RX32\n", uIectlReg); 1870 pHlp->pfnPrintf(pHlp, " IEDATA_REG = %#RX32\n", uIedataReg); 1871 pHlp->pfnPrintf(pHlp, " IEADDR_REG = %#RX32\n", uIeaddrReg); 1872 pHlp->pfnPrintf(pHlp, " IEUADDR_REG = %#RX32\n", uIeuaddrReg); 1873 pHlp->pfnPrintf(pHlp, " IQERCD_REG = %#RX64\n", uIqercdReg); 1874 pHlp->pfnPrintf(pHlp, " IRTA_REG = %#RX64\n", uIrtaReg); 1875 pHlp->pfnPrintf(pHlp, " PQH_REG = %#RX64\n", uPqhReg); 1876 pHlp->pfnPrintf(pHlp, " PQT_REG = %#RX64\n", uPqtReg); 1877 pHlp->pfnPrintf(pHlp, " PQA_REG = %#RX64\n", uPqaReg); 1878 pHlp->pfnPrintf(pHlp, " PRS_REG = %#RX32\n", uPrsReg); 1879 pHlp->pfnPrintf(pHlp, " PECTL_REG = %#RX32\n", uPectlReg); 1880 pHlp->pfnPrintf(pHlp, " PEDATA_REG = %#RX32\n", uPedataReg); 1881 pHlp->pfnPrintf(pHlp, " PEADDR_REG = %#RX32\n", uPeaddrReg); 1882 pHlp->pfnPrintf(pHlp, " PEUADDR_REG = %#RX32\n", uPeuaddrReg); 1883 pHlp->pfnPrintf(pHlp, " MTRRCAP_REG = %#RX64\n", uMtrrcapReg); 1884 pHlp->pfnPrintf(pHlp, " MTRRDEF_REG = %#RX64\n", uMtrrdefReg); 1885 pHlp->pfnPrintf(pHlp, "\n"); 1886 } 1716 1887 } 1717 1888
Note:
See TracChangeset
for help on using the changeset viewer.