Changeset 3237 in vbox
- Timestamp:
- Jun 22, 2007 8:21:36 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 22229
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/VMMDev/VBoxDev.cpp
r3110 r3237 1649 1649 * Initialize data (most of it anyway). 1650 1650 */ 1651 /* Save PDM device instance data for future reference. */ 1652 pData->pDevIns = pDevIns; 1653 1651 1654 /* PCI vendor, just a free bogus value */ 1652 1655 pData->dev.config[0x00] = 0xee; … … 1668 1671 */ 1669 1672 rc = PDMDevHlpIOPortRegister(pDevIns, RTLOG_DEBUG_PORT, 1, NULL, vmmdevBackdoorLog, NULL, NULL, NULL, "VMMDev backdoor logging"); 1673 AssertRCReturn(rc, rc); 1670 1674 1671 1675 #ifdef TIMESYNC_BACKDOOR … … 1674 1678 */ 1675 1679 rc = PDMDevHlpIOPortRegister(pDevIns, 0x505, 1, NULL, vmmdevTimesyncBackdoorWrite, vmmdevTimesyncBackdoorRead, NULL, NULL, "VMMDev timesync backdoor"); 1680 AssertRCReturn(rc, rc); 1676 1681 #endif 1677 1682 … … 1712 1717 #endif 1713 1718 1714 /* * Get the corresponding connector interface 1715 */ 1716 rc = PDMDevHlpDriverAttach(pDevIns, 0, &pData->Base, &pData->pDrvBase, "VMM Driver Port"); 1717 if (VBOX_SUCCESS(rc)) 1718 { 1719 pData->pDrv = (PPDMIVMMDEVCONNECTOR)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_VMMDEV_CONNECTOR); 1720 if (!pData->pDrv) 1721 { 1722 AssertMsgFailed(("LUN #0 doesn't have a VMMDev connector interface! rc=%Vrc\n", rc)); 1723 rc = VERR_PDM_MISSING_INTERFACE; 1724 } 1719 /* 1720 * Get the corresponding connector interface 1721 */ 1722 rc = PDMDevHlpDriverAttach(pDevIns, 0, &pData->Base, &pData->pDrvBase, "VMM Driver Port"); 1723 if (VBOX_SUCCESS(rc)) 1724 { 1725 pData->pDrv = (PPDMIVMMDEVCONNECTOR)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_VMMDEV_CONNECTOR); 1726 if (!pData->pDrv) 1727 AssertMsgFailedReturn(("LUN #0 doesn't have a VMMDev connector interface!\n"), VERR_PDM_MISSING_INTERFACE); 1725 1728 #ifdef VBOX_HGCM 1726 else 1727 { 1728 pData->pHGCMDrv = (PPDMIHGCMCONNECTOR)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_HGCM_CONNECTOR); 1729 if (!pData->pHGCMDrv) 1730 { 1731 Log(("LUN #0 doesn't have a HGCM connector interface, HGCM is not supported. rc=%Vrc\n", rc)); 1732 /* this is not actually an error, just means that there is no support for HGCM */ 1733 } 1734 } 1729 pData->pHGCMDrv = (PPDMIHGCMCONNECTOR)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_HGCM_CONNECTOR); 1730 if (!pData->pHGCMDrv) 1731 { 1732 Log(("LUN #0 doesn't have a HGCM connector interface, HGCM is not supported. rc=%Vrc\n", rc)); 1733 /* this is not actually an error, just means that there is no support for HGCM */ 1734 } 1735 1735 #endif 1736 } 1737 else if (rc == VERR_PDM_NO_ATTACHED_DRIVER) 1738 { 1739 Log(("%s/%d: warning: no driver attached to LUN #0!\n", pDevIns->pDevReg->szDeviceName, pDevIns->iInstance)); 1740 rc = VINF_SUCCESS; 1741 } 1742 else 1743 AssertMsgFailed(("Failed to attach LUN #0! rc=%Vrc\n", rc)); 1744 1736 } 1737 else if (rc == VERR_PDM_NO_ATTACHED_DRIVER) 1738 { 1739 Log(("%s/%d: warning: no driver attached to LUN #0!\n", pDevIns->pDevReg->szDeviceName, pDevIns->iInstance)); 1740 rc = VINF_SUCCESS; 1741 } 1742 else 1743 AssertMsgFailedReturn(("Failed to attach LUN #0! rc=%Vrc\n", rc), rc); 1744 1745 /* 1746 * Register saved state and init the HGCM CmdList critsect. 1747 */ 1745 1748 rc = PDMDevHlpSSMRegister(pDevIns, "VMMDev", iInstance, VMMDEV_SSM_VERSION, sizeof(*pData), 1746 NULL, vmmdevSaveState, NULL, 1747 NULL, vmmdevLoadState, vmmdevLoadStateDone); 1748 1749 /* Save PDM device instance data for future reference. */ 1750 pData->pDevIns = pDevIns; 1751 1749 NULL, vmmdevSaveState, NULL, 1750 NULL, vmmdevLoadState, vmmdevLoadStateDone); 1751 AssertRCReturn(rc, rc); 1752 1753 #ifdef VBOX_HGCM 1754 rc = RTCritSectInit(&pData->critsectHGCMCmdList); 1755 AssertRCReturn(rc, rc); 1756 #endif /* VBOX_HGCM */ 1752 1757 1753 1758 /* … … 1756 1761 /** @todo freeing of the RAM. */ 1757 1762 rc = SUPPageAlloc(VMMDEV_RAM_SIZE >> PAGE_SHIFT, (void **)&pData->pVMMDevRAMHC); 1758 if (VBOX_FAILURE(rc)) 1759 { 1760 AssertMsgFailed(("VMMDev SUPPageAlloc(%#x,) -> %d\n", VMMDEV_RAM_SIZE, rc)); 1761 } 1762 1763 #ifdef VBOX_HGCM 1764 rc = RTCritSectInit(&pData->critsectHGCMCmdList); 1765 AssertRC(rc); 1766 #endif /* VBOX_HGCM */ 1763 AssertMsgRCReturn(rc, ("VMMDev SUPPageAlloc(%#x,) -> %Vrc\n", VMMDEV_RAM_SIZE, rc), rc); 1767 1764 1768 1765 /* initialize the VMMDev memory */ 1769 memset (pData->pVMMDevRAMHC, 0, sizeof (VMMDevMemory));1770 1766 pData->pVMMDevRAMHC->u32Size = sizeof (VMMDevMemory); 1771 1767 pData->pVMMDevRAMHC->u32Version = VMMDEV_MEMORY_VERSION; … … 1800 1796 if (pData->pVMMDevRAMHC) 1801 1797 { 1802 memset (pData->pVMMDevRAMHC, 0, sizeof (VMMDevMemory)); 1798 /* re-initialize the VMMDev memory */ 1799 memset (pData->pVMMDevRAMHC, 0, VMMDEV_RAM_SIZE); 1800 pData->pVMMDevRAMHC->u32Size = sizeof (VMMDevMemory); 1801 pData->pVMMDevRAMHC->u32Version = VMMDEV_MEMORY_VERSION; 1803 1802 } 1804 1803
Note:
See TracChangeset
for help on using the changeset viewer.