VirtualBox

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


Ignore:
Timestamp:
Dec 27, 2010 10:38:34 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
69217
Message:

VMM, Main: PCI passthrough work

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

Legend:

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

    r35346 r35357  
    28092809    *ppHpetHlpR3 = &g_pdmR3DevHpetHlp;
    28102810    LogFlow(("pdmR3DevHlp_HPETRegister: caller='%s'/%d: returns %Rrc\n", pDevIns->pReg->szName, pDevIns->iInstance, VINF_SUCCESS));
     2811    return VINF_SUCCESS;
     2812}
     2813
     2814/** @interface_method_impl{PDMDEVHLPR3,pfnPciRawRegister} */
     2815static DECLCALLBACK(int) pdmR3DevHlp_PciRawRegister(PPDMDEVINS pDevIns, PPDMPCIRAWREG pPciRawReg, PCPDMPCIRAWHLPR3 *ppPciRawHlpR3)
     2816{
     2817    PDMDEV_ASSERT_DEVINS(pDevIns);
     2818    VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3);
     2819    LogFlow(("pdmR3DevHlp_PciRawRegister: caller='%s'/%d:\n"));
     2820
     2821    /*
     2822     * Validate input.
     2823     */
     2824    if (pPciRawReg->u32Version != PDM_PCIRAWREG_VERSION)
     2825    {
     2826        AssertMsgFailed(("u32Version=%#x expected %#x\n", pPciRawReg->u32Version, PDM_PCIRAWREG_VERSION));
     2827        LogFlow(("pdmR3DevHlp_PciRawRegister: caller='%s'/%d: returns %Rrc (version)\n", pDevIns->pReg->szName, pDevIns->iInstance, VERR_INVALID_PARAMETER));
     2828        return VERR_INVALID_PARAMETER;
     2829    }
     2830
     2831    if (!ppPciRawHlpR3)
     2832    {
     2833        Assert(ppPciRawHlpR3);
     2834        LogFlow(("pdmR3DevHlp_PciRawRegister: caller='%s'/%d: returns %Rrc (ppApicHlpR3)\n", pDevIns->pReg->szName, pDevIns->iInstance, VERR_INVALID_PARAMETER));
     2835        return VERR_INVALID_PARAMETER;
     2836    }
     2837
     2838    /* set the helper pointer and return. */
     2839    *ppPciRawHlpR3 = &g_pdmR3DevPciRawHlp;
     2840    LogFlow(("pdmR3DevHlp_PciRawRegister: caller='%s'/%d: returns %Rrc\n", pDevIns->pReg->szName, pDevIns->iInstance, VINF_SUCCESS));
    28112841    return VINF_SUCCESS;
    28122842}
     
    31823212    pdmR3DevHlp_IOAPICRegister,
    31833213    pdmR3DevHlp_HPETRegister,
     3214    pdmR3DevHlp_PciRawRegister,
    31843215    pdmR3DevHlp_DMACRegister,
    31853216    pdmR3DevHlp_DMARegister,
     
    33923423    pdmR3DevHlp_IOAPICRegister,
    33933424    pdmR3DevHlp_HPETRegister,
     3425    pdmR3DevHlp_PciRawRegister,
    33943426    pdmR3DevHlp_DMACRegister,
    33953427    pdmR3DevHlp_DMARegister,
     
    34693501
    34703502/** @} */
    3471 
  • trunk/src/VBox/VMM/VMMR3/PDMDevMiscHlp.cpp

    r35346 r35357  
    652652
    653653
     654/** @interface_method_impl{PDMPCIRAWHLPR3,pfnGetRCHelpers} */
     655static DECLCALLBACK(PCPDMPCIRAWHLPRC) pdmR3PciRawHlp_GetRCHelpers(PPDMDEVINS pDevIns)
     656{
     657    PDMDEV_ASSERT_DEVINS(pDevIns);
     658    VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3);
     659    RTRCPTR pRCHelpers = 0;
     660    int rc = PDMR3LdrGetSymbolRC(pDevIns->Internal.s.pVMR3, NULL, "g_pdmRCPciRawHlp", &pRCHelpers);
     661    AssertReleaseRC(rc);
     662    AssertRelease(pRCHelpers);
     663    LogFlow(("pdmR3PciRawHlp_GetGCHelpers: caller='%s'/%d: returns %RRv\n",
     664             pDevIns->pReg->szName, pDevIns->iInstance, pRCHelpers));
     665    return pRCHelpers;
     666}
     667
     668
     669/** @interface_method_impl{PDMPCIRAWHLPR3,pfnGetR0Helpers} */
     670static DECLCALLBACK(PCPDMPCIRAWHLPR0) pdmR3PciRawHlp_GetR0Helpers(PPDMDEVINS pDevIns)
     671{
     672    PDMDEV_ASSERT_DEVINS(pDevIns);
     673    VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3);
     674    PCPDMHPETHLPR0 pR0Helpers = 0;
     675    int rc = PDMR3LdrGetSymbolR0(pDevIns->Internal.s.pVMR3, NULL, "g_pdmR0PciRawHlp", &pR0Helpers);
     676    AssertReleaseRC(rc);
     677    AssertRelease(pR0Helpers);
     678    LogFlow(("pdmR3PciRawHlp_GetR0Helpers: caller='%s'/%d: returns %RHv\n",
     679             pDevIns->pReg->szName, pDevIns->iInstance, pR0Helpers));
     680    return pR0Helpers;
     681}
     682
     683/**
     684 * Raw PCI Device Helpers.
     685 */
     686const PDMPCIRAWHLPR3 g_pdmR3DevPciRawHlp =
     687{
     688    PDM_PCIRAWHLPR3_VERSION,
     689    pdmR3PciRawHlp_GetRCHelpers,
     690    pdmR3PciRawHlp_GetR0Helpers,
     691    PDM_PCIRAWHLPR3_VERSION, /* the end */
     692};
    654693
    655694/* none yet */
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