VirtualBox

Changeset 80706 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Sep 10, 2019 3:47:03 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133246
Message:

PDM: Check new device registration fields when creating the ring-0 instances. Sketched in PCI device allocation, but haven't implemented it yet. bugref:9218

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp

    r80704 r80706  
    12731273 * Worker for PDMR0DeviceCreate that does the actual instantiation.
    12741274 *
    1275  * Allocates a memory object and devides it up as follows:
     1275 * Allocates a memory object and divides it up as follows:
    12761276 * @verbatim
    1277  *   ----------------------
    1278  *   ring-0 devins
    1279  *   ----------------------
    1280  *   ring-0 instance data
    1281  *   ----------------------
    1282  *   page alignment padding
    1283  *   ----------------------
    1284  *   ring-3 devins
    1285  *   ----------------------
    1286  *   ring-3 instance data
    1287  *   ----------------------
    1288  *  [page alignment padding] -
    1289  *  [----------------------]  \
    1290  *  [raw-mode devins       ]   - Optional, only when raw-mode is enabled.
    1291  *  [----------------------]  /
    1292  *  [raw-mode instance data] -
    1293  *   ----------------------
    1294  *   shared instance data
    1295  *   ----------------------
    1296  *   default crit section
    1297  *   ----------------------
    1298  * @endverbatim
     1277   -----------------------------------
     1278   ring-0 devins
     1279   -----------------------------------
     1280   ring-0 instance data
     1281   -----------------------------------
     1282   ring-0 PCI device data (optional) ?
     1283   -----------------------------------
     1284   page alignment padding
     1285   -----------------------------------
     1286   ring-3 devins
     1287   -----------------------------------
     1288   ring-3 instance data
     1289   -----------------------------------
     1290   ring-3 PCI device data (optional) ?
     1291   -----------------------------------
     1292  [page alignment padding             ] -
     1293  [-----------------------------------]  \
     1294  [raw-mode devins                    ]   \
     1295  [-----------------------------------]   - Optional, only when raw-mode is enabled.
     1296  [raw-mode instance data             ]   /
     1297  [-----------------------------------]  /
     1298  [raw-mode PCI device data (optional)] -
     1299   -----------------------------------
     1300   shared instance data
     1301   -----------------------------------
     1302   default crit section
     1303   -----------------------------------
     1304   shared PCI device data (optional)
     1305   -----------------------------------
     1306   @endverbatim
    12991307 *
    13001308 * @returns VBox status code.
     
    14971505    AssertReturn(pReq->cbInstanceRC <= _512K, VERR_OUT_OF_RANGE);
    14981506    AssertReturn(pReq->iInstance < 1024, VERR_OUT_OF_RANGE);
     1507    AssertReturn(pReq->iInstance < pReq->cMaxInstances, VERR_OUT_OF_RANGE);
     1508    AssertReturn(pReq->cMaxPciDevices <= 8, VERR_OUT_OF_RANGE);
     1509    AssertReturn(pReq->cMaxMsixVectors <= VBOX_MSIX_MAX_ENTRIES, VERR_OUT_OF_RANGE);
    14991510
    15001511    /*
     
    15511562                        && pReq->fFlags           == pDevReg->fFlags
    15521563                        && pReq->fClass           == pDevReg->fClass
    1553                         && pReq->cMaxInstances    == pDevReg->cMaxInstances)
     1564                        && pReq->cMaxInstances    == pDevReg->cMaxInstances
     1565                        && pReq->cMaxPciDevices   == pDevReg->cMaxPciDevices
     1566                        && pReq->cMaxMsixVectors  == pDevReg->cMaxMsixVectors)
    15541567                    {
    15551568                        rc = pdmR0DeviceCreateWorker(pGVM, pDevReg, pReq->iInstance, pReq->fRCEnabled,
     
    15671580                                "            fFlags: %#x vs %#x\n"
    15681581                                "            fClass: %#x vs %#x\n"
    1569                                 "     cMaxInstances: %#x vs %#x\n",
     1582                                "     cMaxInstances: %#x vs %#x\n"
     1583                                "    cMaxPciDevices: %#x vs %#x\n"
     1584                                "   cMaxMsixVectors: %#x vs %#x\n"
     1585                                ,
    15701586                                pReq->szDevName,
    15711587                                pReq->uSharedVersion,   pDevReg->uSharedVersion,
     
    15741590                                pReq->fFlags,           pDevReg->fFlags,
    15751591                                pReq->fClass,           pDevReg->fClass,
    1576                                 pReq->cMaxInstances,    pDevReg->cMaxInstances));
     1592                                pReq->cMaxInstances,    pDevReg->cMaxInstances,
     1593                                pReq->cMaxPciDevices,   pDevReg->cMaxPciDevices,
     1594                                pReq->cMaxMsixVectors,  pDevReg->cMaxMsixVectors));
    15771595                        rc = VERR_INCOMPATIBLE_CONFIG;
    15781596                    }
  • trunk/src/VBox/VMM/VMMR3/PDMDevice.cpp

    r80704 r80706  
    350350            Req.cbInstanceR3     = pReg->cbInstanceCC;
    351351            Req.cbInstanceRC     = pReg->cbInstanceRC;
     352            Req.cMaxPciDevices   = pReg->cMaxPciDevices;
     353            Req.cMaxMsixVectors  = pReg->cMaxMsixVectors;
    352354            Req.iInstance        = paDevs[i].iInstance;
    353355            Req.fRCEnabled       = fRCEnabled;
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