VirtualBox

Changeset 91928 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Oct 21, 2021 9:09:51 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
147733
Message:

VMM,Devices: Eliminate direct calls to PGMHandlerPhysical* APIs and introduce callbacks in the device helper callback table, bugref:10074

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp

    r91926 r91928  
    763763
    764764    Log(("pdmR3DevHlp_PGMHandlerPhysicalTypeRegister: caller='%s'/%d: returns %Rrc\n",
     765         pDevIns->pReg->szName, pDevIns->iInstance, rc));
     766    return rc;
     767}
     768
     769
     770/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalRegister} */
     771static DECLCALLBACK(int) pdmR3DevHlp_PGMHandlerPhysicalRegister(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, RTGCPHYS GCPhysLast,
     772                                                                PGMPHYSHANDLERTYPE hType, RTR3PTR pvUserR3, RTR0PTR pvUserR0,
     773                                                                RTRCPTR pvUserRC, R3PTRTYPE(const char *) pszDesc)
     774{
     775    PDMDEV_ASSERT_DEVINS(pDevIns);
     776    PVM  pVM = pDevIns->Internal.s.pVMR3;
     777    LogFlow(("pdmR3DevHlp_PGMHandlerPhysicalRegister: caller='%s'/%d: GCPhys=%RGp GCPhysLast=%RGp hType=%u pvUserR3=%p pvUserR0=%llx pvUsereRC=%llx pszDesc=%p:{%s}\n",
     778             pDevIns->pReg->szName, pDevIns->iInstance, GCPhys, GCPhysLast, hType, pvUserR3, pvUserR0, pvUserRC, pszDesc, pszDesc));
     779
     780    int rc = PGMHandlerPhysicalRegister(pVM, GCPhys, GCPhysLast, hType, pvUserR3, pvUserR0, pvUserRC, pszDesc);
     781
     782    Log(("pdmR3DevHlp_PGMHandlerPhysicalRegister: caller='%s'/%d: returns %Rrc\n",
     783         pDevIns->pReg->szName, pDevIns->iInstance, rc));
     784    return rc;
     785}
     786
     787
     788/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalDeregister} */
     789static DECLCALLBACK(int) pdmR3DevHlp_PGMHandlerPhysicalDeregister(PPDMDEVINS pDevIns, RTGCPHYS GCPhys)
     790{
     791    PDMDEV_ASSERT_DEVINS(pDevIns);
     792    PVM  pVM = pDevIns->Internal.s.pVMR3;
     793    LogFlow(("pdmR3DevHlp_PGMHandlerPhysicalDeregister: caller='%s'/%d: GCPhys=%RGp\n", pDevIns->pReg->szName, pDevIns->iInstance, GCPhys));
     794
     795    int rc = PGMHandlerPhysicalDeregister(pVM, GCPhys);
     796
     797    Log(("pdmR3DevHlp_PGMHandlerPhysicalDeregister: caller='%s'/%d: returns %Rrc\n",
     798         pDevIns->pReg->szName, pDevIns->iInstance, rc));
     799    return rc;
     800}
     801
     802
     803/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalPageTempOff} */
     804static DECLCALLBACK(int) pdmR3DevHlp_PGMHandlerPhysicalPageTempOff(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, RTGCPHYS GCPhysPage)
     805{
     806    PDMDEV_ASSERT_DEVINS(pDevIns);
     807    PVM  pVM = pDevIns->Internal.s.pVMR3;
     808    LogFlow(("pdmR3DevHlp_PGMHandlerPhysicalPageTempOff: caller='%s'/%d: GCPhys=%RGp\n", pDevIns->pReg->szName, pDevIns->iInstance, GCPhys));
     809
     810    int rc = PGMHandlerPhysicalPageTempOff(pVM, GCPhys, GCPhysPage);
     811
     812    Log(("pdmR3DevHlp_PGMHandlerPhysicalPageTempOff: caller='%s'/%d: returns %Rrc\n",
     813         pDevIns->pReg->szName, pDevIns->iInstance, rc));
     814    return rc;
     815}
     816
     817
     818/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalReset} */
     819static DECLCALLBACK(int) pdmR3DevHlp_PGMHandlerPhysicalReset(PPDMDEVINS pDevIns, RTGCPHYS GCPhys)
     820{
     821    PDMDEV_ASSERT_DEVINS(pDevIns);
     822    PVM  pVM = pDevIns->Internal.s.pVMR3;
     823    LogFlow(("pdmR3DevHlp_PGMHandlerPhysicalReset: caller='%s'/%d: GCPhys=%RGp\n", pDevIns->pReg->szName, pDevIns->iInstance, GCPhys));
     824
     825    int rc = PGMHandlerPhysicalReset(pVM, GCPhys);
     826
     827    Log(("pdmR3DevHlp_PGMHandlerPhysicalReset: caller='%s'/%d: returns %Rrc\n",
    765828         pDevIns->pReg->szName, pDevIns->iInstance, rc));
    766829    return rc;
     
    48454908    pdmR3DevHlp_QueryGenericUserObject,
    48464909    pdmR3DevHlp_PGMHandlerPhysicalTypeRegister,
     4910    pdmR3DevHlp_PGMHandlerPhysicalRegister,
     4911    pdmR3DevHlp_PGMHandlerPhysicalDeregister,
     4912    pdmR3DevHlp_PGMHandlerPhysicalPageTempOff,
     4913    pdmR3DevHlp_PGMHandlerPhysicalReset,
    48474914    pdmR3DevHlp_VMMRegisterPatchMemory,
    48484915    pdmR3DevHlp_VMMDeregisterPatchMemory,
     
    52205287    pdmR3DevHlp_QueryGenericUserObject,
    52215288    pdmR3DevHlp_PGMHandlerPhysicalTypeRegister,
     5289    pdmR3DevHlp_PGMHandlerPhysicalRegister,
     5290    pdmR3DevHlp_PGMHandlerPhysicalDeregister,
     5291    pdmR3DevHlp_PGMHandlerPhysicalPageTempOff,
     5292    pdmR3DevHlp_PGMHandlerPhysicalReset,
    52225293    pdmR3DevHlp_VMMRegisterPatchMemory,
    52235294    pdmR3DevHlp_VMMDeregisterPatchMemory,
     
    53825453    PDMDEV_ASSERT_DEVINS(pDevIns);
    53835454    RT_NOREF(enmKind, pfnHandlerR3, pszHandlerR0, pszPfHandlerR0, pszHandlerRC, pszPfHandlerRC, pszDesc, phType);
     5455    AssertReleaseMsgFailed(("Untrusted device called trusted helper! '%s'/%d\n",
     5456                            pDevIns->pReg->szName, pDevIns->iInstance));
     5457    return VERR_ACCESS_DENIED;
     5458}
     5459
     5460
     5461/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalRegister} */
     5462static DECLCALLBACK(int) pdmR3DevHlp_Untrusted_PGMHandlerPhysicalRegister(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, RTGCPHYS GCPhysLast,
     5463                                                                          PGMPHYSHANDLERTYPE hType, RTR3PTR pvUserR3, RTR0PTR pvUserR0,
     5464                                                                          RTRCPTR pvUserRC, R3PTRTYPE(const char *) pszDesc)
     5465{
     5466    PDMDEV_ASSERT_DEVINS(pDevIns);
     5467    RT_NOREF(GCPhys, GCPhysLast, hType, pvUserR3, pvUserR0, pvUserRC, pszDesc);
     5468    AssertReleaseMsgFailed(("Untrusted device called trusted helper! '%s'/%d\n",
     5469                            pDevIns->pReg->szName, pDevIns->iInstance));
     5470    return VERR_ACCESS_DENIED;
     5471}
     5472
     5473
     5474/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalDeregister} */
     5475static DECLCALLBACK(int) pdmR3DevHlp_Untrusted_PGMHandlerPhysicalDeregister(PPDMDEVINS pDevIns, RTGCPHYS GCPhys)
     5476{
     5477    PDMDEV_ASSERT_DEVINS(pDevIns);
     5478    RT_NOREF(GCPhys);
     5479    AssertReleaseMsgFailed(("Untrusted device called trusted helper! '%s'/%d\n",
     5480                            pDevIns->pReg->szName, pDevIns->iInstance));
     5481    return VERR_ACCESS_DENIED;
     5482}
     5483
     5484
     5485/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalPageTempOff} */
     5486static DECLCALLBACK(int) pdmR3DevHlp_Untrusted_PGMHandlerPhysicalPageTempOff(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, RTGCPHYS GCPhysPage)
     5487{
     5488    PDMDEV_ASSERT_DEVINS(pDevIns);
     5489    RT_NOREF(GCPhys, GCPhysPage);
     5490    AssertReleaseMsgFailed(("Untrusted device called trusted helper! '%s'/%d\n",
     5491                            pDevIns->pReg->szName, pDevIns->iInstance));
     5492    return VERR_ACCESS_DENIED;
     5493}
     5494
     5495
     5496/** @interface_method_impl{PDMDEVHLPR3,pfnPGMHandlerPhysicalReset} */
     5497static DECLCALLBACK(int) pdmR3DevHlp_Untrusted_PGMHandlerPhysicalReset(PPDMDEVINS pDevIns, RTGCPHYS GCPhys)
     5498{
     5499    PDMDEV_ASSERT_DEVINS(pDevIns);
     5500    RT_NOREF(GCPhys);
    53845501    AssertReleaseMsgFailed(("Untrusted device called trusted helper! '%s'/%d\n",
    53855502                            pDevIns->pReg->szName, pDevIns->iInstance));
     
    58205937    pdmR3DevHlp_Untrusted_QueryGenericUserObject,
    58215938    pdmR3DevHlp_Untrusted_PGMHandlerPhysicalTypeRegister,
     5939    pdmR3DevHlp_Untrusted_PGMHandlerPhysicalRegister,
     5940    pdmR3DevHlp_Untrusted_PGMHandlerPhysicalDeregister,
     5941    pdmR3DevHlp_Untrusted_PGMHandlerPhysicalPageTempOff,
     5942    pdmR3DevHlp_Untrusted_PGMHandlerPhysicalReset,
    58225943    pdmR3DevHlp_Untrusted_VMMRegisterPatchMemory,
    58235944    pdmR3DevHlp_Untrusted_VMMDeregisterPatchMemory,
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