VirtualBox

Changeset 87371 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Jan 22, 2021 2:42:17 PM (4 years ago)
Author:
vboxsync
Message:

AMD IOMMU: bugref:9654 Handle the case where an access might result in non-contiguous physical addresses after address translation via the IOMMU.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmdev.h

    r87127 r87371  
    12831283     *
    12841284     * @returns VBox status code.
    1285      * @param   pDevIns     The IOMMU device instance.
    1286      * @param   uDevId      The device identifier (bus, device, function).
    1287      * @param   uIova       The I/O virtual address being accessed.
    1288      * @param   cbAccess    The number of bytes being accessed.
    1289      * @param   fFlags      Access flags, see PDMIOMMU_MEM_F_XXX.
    1290      * @param   pGCPhysSpa  Where to store the translated system physical address.
     1285     * @param   pDevIns         The IOMMU device instance.
     1286     * @param   uDevId          The device identifier (bus, device, function).
     1287     * @param   uIova           The I/O virtual address being accessed.
     1288     * @param   cbAccess        The number of bytes being accessed.
     1289     * @param   fFlags          Access flags, see PDMIOMMU_MEM_F_XXX.
     1290     * @param   pGCPhysSpa      Where to store the translated system physical address.
     1291     * @param   pcbContiguous   Where to store the number of contiguous bytes translated
     1292     *                          and permission-checked.
    12911293     *
    12921294     * @thread  Any.
    12931295     */
    12941296    DECLR0CALLBACKMEMBER(int, pfnMemAccess,(PPDMDEVINS pDevIns, uint16_t uDevId, uint64_t uIova, size_t cbAccess,
    1295                                             uint32_t fFlags, PRTGCPHYS pGCPhysSpa));
     1297                                            uint32_t fFlags, PRTGCPHYS pGCPhysSpa, size_t *pcbContiguous));
    12961298
    12971299    /**
     
    13331335
    13341336/** Current PDMIOMMUREG version number. */
    1335 #define PDM_IOMMUREGR0_VERSION                      PDM_VERSION_MAKE(0xff10, 2, 0)
     1337#define PDM_IOMMUREGR0_VERSION                      PDM_VERSION_MAKE(0xff10, 3, 0)
    13361338
    13371339
     
    13511353     *
    13521354     * @returns VBox status code.
    1353      * @param   pDevIns     The IOMMU device instance.
    1354      * @param   uDevId      The device identifier (bus, device, function).
    1355      * @param   uIova       The I/O virtual address being accessed.
    1356      * @param   cbAccess    The number of bytes being accessed.
    1357      * @param   fFlags      Access flags, see PDMIOMMU_MEM_F_XXX.
    1358      * @param   pGCPhysSpa  Where to store the translated system physical address.
     1355     * @param   pDevIns         The IOMMU device instance.
     1356     * @param   uDevId          The device identifier (bus, device, function).
     1357     * @param   uIova           The I/O virtual address being accessed.
     1358     * @param   cbAccess        The number of bytes being accessed.
     1359     * @param   fFlags          Access flags, see PDMIOMMU_MEM_F_XXX.
     1360     * @param   pGCPhysSpa      Where to store the translated system physical address.
     1361     * @param   pcbContiguous   Where to store the number of contiguous bytes translated
     1362     *                          and permission-checked.
    13591363     *
    13601364     * @thread  Any.
    13611365     */
    13621366    DECLRCCALLBACKMEMBER(int, pfnMemAccess,(PPDMDEVINS pDevIns, uint16_t uDevId, uint64_t uIova, size_t cbAccess,
    1363                                             uint32_t fFlags, PRTGCPHYS pGCPhysSpa));
     1367                                            uint32_t fFlags, PRTGCPHYS pGCPhysSpa, size_t *pcbContiguous));
    13641368
    13651369    /**
     
    14011405
    14021406/** Current PDMIOMMUREG version number. */
    1403 #define PDM_IOMMUREGRC_VERSION                      PDM_VERSION_MAKE(0xff11, 2, 0)
     1407#define PDM_IOMMUREGRC_VERSION                      PDM_VERSION_MAKE(0xff11, 3, 0)
    14041408
    14051409
     
    14191423     *
    14201424     * @returns VBox status code.
    1421      * @param   pDevIns     The IOMMU device instance.
    1422      * @param   uDevId      The device identifier (bus, device, function).
    1423      * @param   uIova       The I/O virtual address being accessed.
    1424      * @param   cbAccess    The number of bytes being accessed.
    1425      * @param   fFlags      Access flags, see PDMIOMMU_MEM_F_XXX.
    1426      * @param   pGCPhysSpa  Where to store the translated system physical address.
     1425     * @param   pDevIns         The IOMMU device instance.
     1426     * @param   uDevId          The device identifier (bus, device, function).
     1427     * @param   uIova           The I/O virtual address being accessed.
     1428     * @param   cbAccess        The number of bytes being accessed.
     1429     * @param   fFlags          Access flags, see PDMIOMMU_MEM_F_XXX.
     1430     * @param   pGCPhysSpa      Where to store the translated system physical address.
     1431     * @param   pcbContiguous   Where to store the number of contiguous bytes translated
     1432     *                          and permission-checked.
    14271433     *
    14281434     * @thread  Any.
    14291435     */
    14301436    DECLR3CALLBACKMEMBER(int, pfnMemAccess,(PPDMDEVINS pDevIns, uint16_t uDevId, uint64_t uIova, size_t cbAccess,
    1431                                             uint32_t fFlags, PRTGCPHYS pGCPhysSpa));
     1437                                            uint32_t fFlags, PRTGCPHYS pGCPhysSpa, size_t *pcbContiguous));
    14321438
    14331439    /**
     
    14691475
    14701476/** Current PDMIOMMUREG version number. */
    1471 #define PDM_IOMMUREGR3_VERSION                      PDM_VERSION_MAKE(0xff12, 2, 0)
     1477#define PDM_IOMMUREGR3_VERSION                      PDM_VERSION_MAKE(0xff12, 3, 0)
    14721478
    14731479/** IOMMU registration structure for the current context. */
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