VirtualBox

Changeset 88370 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Apr 5, 2021 12:16:49 PM (4 years ago)
Author:
vboxsync
Message:

Intel IOMMU: bugref:9967 WIP.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Bus/DevIommuIntel.cpp

    r88367 r88370  
    112112    /** DMAR registers (group 1). */
    113113    uint8_t                     abRegs1[DMAR_MMIO_GROUP_1_SIZE];
     114
     115#ifdef VBOX_WITH_STATISTICS
     116    STAMCOUNTER                 StatMmioReadR3;         /**< Number of MMIO reads in R3. */
     117    STAMCOUNTER                 StatMmioReadRZ;         /**< Number of MMIO reads in RZ. */
     118    STAMCOUNTER                 StatMmioWriteR3;        /**< Number of MMIO writes in R3. */
     119    STAMCOUNTER                 StatMmioWriteRZ;        /**< Number of MMIO writes in RZ. */
     120
     121    STAMCOUNTER                 StatMsiRemapR3;         /**< Number of MSI remap requests in R3. */
     122    STAMCOUNTER                 StatMsiRemapRZ;         /**< Number of MSI remap requests in RZ. */
     123
     124    STAMCOUNTER                 StatMemReadR3;          /**< Number of memory read translation requests in R3. */
     125    STAMCOUNTER                 StatMemReadRZ;          /**< Number of memory read translation requests in RZ. */
     126    STAMCOUNTER                 StatMemWriteR3;         /**< Number of memory write translation requests in R3. */
     127    STAMCOUNTER                 StatMemWriteRZ;         /**< Number of memory write translation requests in RZ. */
     128
     129    STAMCOUNTER                 StatMemBulkReadR3;      /**< Number of memory read bulk translation requests in R3. */
     130    STAMCOUNTER                 StatMemBulkReadRZ;      /**< Number of memory read bulk translation requests in RZ. */
     131    STAMCOUNTER                 StatMemBulkWriteR3;     /**< Number of memory write bulk translation requests in R3. */
     132    STAMCOUNTER                 StatMemBulkWriteRZ;     /**< Number of memory write bulk translation requests in RZ. */
     133#endif
    114134} DMAR;
    115135/** Pointer to the DMAR device state. */
     
    666686    DMAR_ASSERT_MMIO_ACCESS_RET(off, cb);
    667687
    668     PDMAR          pThis   = PDMDEVINS_2_DATA(pDevIns, PDMAR);
     688    PDMAR pThis = PDMDEVINS_2_DATA(pDevIns, PDMAR);
     689    STAM_COUNTER_INC(&pThis->CTX_SUFF_Z(StatMmioWrite));
     690
    669691    uint16_t const offReg  = off;
    670692    uint16_t const offLast = offReg + cb - 1;
     
    699721    DMAR_ASSERT_MMIO_ACCESS_RET(off, cb);
    700722
    701     PDMAR          pThis   = PDMDEVINS_2_DATA(pDevIns, PDMAR);
     723    PDMAR pThis = PDMDEVINS_2_DATA(pDevIns, PDMAR);
     724    STAM_COUNTER_INC(&pThis->CTX_SUFF_Z(StatMmioRead));
     725
    702726    uint16_t const offReg  = off;
    703727    uint16_t const offLast = offReg + cb - 1;
     
    834858    AssertRCReturn(rc, rc);
    835859
    836     LogRel(("%s: Cap=%#RX64 Ext. Cap=%#RX64\n", DMAR_LOG_PFX, dmarRegRead64(pThis, VTD_MMIO_OFF_CAP_REG),
     860# ifdef VBOX_WITH_STATISTICS
     861    /*
     862     * Statistics.
     863     */
     864    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMmioReadR3,  STAMTYPE_COUNTER, "R3/MmioRead",  STAMUNIT_OCCURENCES, "Number of MMIO reads in R3");
     865    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMmioReadRZ,  STAMTYPE_COUNTER, "RZ/MmioRead",  STAMUNIT_OCCURENCES, "Number of MMIO reads in RZ.");
     866
     867    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMmioWriteR3, STAMTYPE_COUNTER, "R3/MmioWrite", STAMUNIT_OCCURENCES, "Number of MMIO writes in R3.");
     868    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMmioWriteRZ, STAMTYPE_COUNTER, "RZ/MmioWrite", STAMUNIT_OCCURENCES, "Number of MMIO writes in RZ.");
     869
     870    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMsiRemapR3, STAMTYPE_COUNTER, "R3/MsiRemap", STAMUNIT_OCCURENCES, "Number of interrupt remap requests in R3.");
     871    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMsiRemapRZ, STAMTYPE_COUNTER, "RZ/MsiRemap", STAMUNIT_OCCURENCES, "Number of interrupt remap requests in RZ.");
     872
     873    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemReadR3,  STAMTYPE_COUNTER, "R3/MemRead",  STAMUNIT_OCCURENCES, "Number of memory read translation requests in R3.");
     874    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemReadRZ,  STAMTYPE_COUNTER, "RZ/MemRead",  STAMUNIT_OCCURENCES, "Number of memory read translation requests in RZ.");
     875
     876    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemWriteR3,  STAMTYPE_COUNTER, "R3/MemWrite",  STAMUNIT_OCCURENCES, "Number of memory write translation requests in R3.");
     877    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemWriteRZ,  STAMTYPE_COUNTER, "RZ/MemWrite",  STAMUNIT_OCCURENCES, "Number of memory write translation requests in RZ.");
     878
     879    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemBulkReadR3,  STAMTYPE_COUNTER, "R3/MemBulkRead",  STAMUNIT_OCCURENCES, "Number of memory bulk read translation requests in R3.");
     880    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemBulkReadRZ,  STAMTYPE_COUNTER, "RZ/MemBulkRead",  STAMUNIT_OCCURENCES, "Number of memory bulk read translation requests in RZ.");
     881
     882    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemBulkWriteR3, STAMTYPE_COUNTER, "R3/MemBulkWrite", STAMUNIT_OCCURENCES, "Number of memory bulk write translation requests in R3.");
     883    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMemBulkWriteRZ, STAMTYPE_COUNTER, "RZ/MemBulkWrite", STAMUNIT_OCCURENCES, "Number of memory bulk write translation requests in RZ.");
     884# endif
     885
     886    LogRel(("%s: Capabilities=%#RX64 Extended-Capabilities=%#RX64\n", DMAR_LOG_PFX, dmarRegRead64(pThis, VTD_MMIO_OFF_CAP_REG),
    837887            dmarRegRead64(pThis, VTD_MMIO_OFF_ECAP_REG)));
    838888    return VINF_SUCCESS;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette