VirtualBox

Changeset 64327 in vbox for trunk/src/VBox/VMM/include


Ignore:
Timestamp:
Oct 19, 2016 5:42:18 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
111406
Message:

PGM: Allow pre-registered MMIO regions up to 1TB in size by using multiple registration chunks (just like we do for RAM). The limits are now defined in VBox/param.h instead of being hardcoded in the sources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/PGMInternal.h

    r64115 r64327  
    17091709    /** Pointer to the next range - R3. */
    17101710    R3PTRTYPE(struct PGMREGMMIORANGE *) pNextR3;
    1711     /** Whether this is MMIO2 or plain MMIO. */
    1712     bool                                fMmio2;
    1713     /** Whether it's mapped or not. */
    1714     bool                                fMapped;
    1715     /** Whether it's overlapping or not. */
    1716     bool                                fOverlapping;
     1711    /** Flags (PGMREGMMIORANGE_F_XXX). */
     1712    uint16_t                            fFlags;
    17171713    /** The PCI region number.
    17181714     * @remarks This ASSUMES that nobody will ever really need to have multiple
     
    17241720    uint8_t                             idMmio2;
    17251721    /** Alignment padding for putting the ram range on a PGMPAGE alignment boundary. */
    1726     uint8_t                             abAlignment[HC_ARCH_BITS == 32 ? 6 : 2];
     1722    uint8_t                             abAlignment[HC_ARCH_BITS == 32 ? 7 : 3];
    17271723    /** Pointer to the physical handler for MMIO. */
    17281724    R3PTRTYPE(PPGMPHYSHANDLER)          pPhysHandlerR3;
     
    17351731/** Pointer to a MMIO2 or pre-registered MMIO range. */
    17361732typedef PGMREGMMIORANGE *PPGMREGMMIORANGE;
     1733
     1734/** @name PGMREGMMIORANGE_F_XXX - Registered MMIO range flags.
     1735 * @{ */
     1736/** Set if it's an MMIO2 range. */
     1737#define PGMREGMMIORANGE_F_MMIO2             UINT16_C(0x0001)
     1738/** Set if this is the first chunk in the MMIO2 range. */
     1739#define PGMREGMMIORANGE_F_FIRST_CHUNK       UINT16_C(0x0002)
     1740/** Set if this is the last chunk in the MMIO2 range. */
     1741#define PGMREGMMIORANGE_F_LAST_CHUNK        UINT16_C(0x0004)
     1742/** Set if the whole range is mapped. */
     1743#define PGMREGMMIORANGE_F_MAPPED            UINT16_C(0x0008)
     1744/** Set if it's overlapping, clear if not. */
     1745#define PGMREGMMIORANGE_F_OVERLAPPING       UINT16_C(0x0010)
     1746/** @} */
     1747
    17371748
    17381749/** @name Internal MMIO2 constants.
     
    41464157int             pgmHandlerPhysicalExCreate(PVM pVM, PGMPHYSHANDLERTYPE hType, RTR3PTR pvUserR3, RTR0PTR pvUserR0,
    41474158                                           RTRCPTR pvUserRC, R3PTRTYPE(const char *) pszDesc, PPGMPHYSHANDLER *ppPhysHandler);
     4159int             pgmHandlerPhysicalExDup(PVM pVM, PPGMPHYSHANDLER pPhysHandlerSrc, PPGMPHYSHANDLER *ppPhysHandler);
    41484160int             pgmHandlerPhysicalExRegister(PVM pVM, PPGMPHYSHANDLER pPhysHandler, RTGCPHYS GCPhys, RTGCPHYS GCPhysLast);
    41494161int             pgmHandlerPhysicalExDeregister(PVM pVM, PPGMPHYSHANDLER pPhysHandler);
Note: See TracChangeset for help on using the changeset viewer.

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