Changeset 99554 in vbox for trunk/src/VBox/Devices/Security
- Timestamp:
- Apr 28, 2023 7:36:38 AM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 157063
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Security/DevTpm.cpp
r99313 r99554 1454 1454 1455 1455 1456 /** 1457 * Resets the shared hardware TPM state. 1458 * 1459 * @returns nothing. 1460 * @param pThis Pointer to the shared TPM device. 1461 */ 1462 static void tpmR3HwReset(PDEVTPM pThis) 1463 { 1464 pThis->enmState = DEVTPMSTATE_IDLE; 1465 pThis->bLoc = TPM_NO_LOCALITY_SELECTED; 1466 pThis->bmLocReqAcc = 0; 1467 pThis->bmLocSeizedAcc = 0; 1468 pThis->offCmdResp = 0; 1469 RT_ZERO(pThis->abCmdResp); 1470 1471 for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aLoc); i++) 1472 { 1473 PDEVTPMLOCALITY pLoc = &pThis->aLoc[i]; 1474 pLoc->uRegIntEn = 0; 1475 pLoc->uRegIntSts = 0; 1476 } 1477 } 1478 1479 1456 1480 /* -=-=-=-=-=-=-=-=- Saved State -=-=-=-=-=-=-=-=- */ 1457 1481 … … 1611 1635 1612 1636 /** 1637 * @interface_method_impl{PDMDEVREG,pfnPowerOn} 1638 */ 1639 static DECLCALLBACK(void) tpmR3PowerOn(PPDMDEVINS pDevIns) 1640 { 1641 PDEVTPM pThis = PDMDEVINS_2_DATA(pDevIns, PDEVTPM); 1642 PDEVTPMCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PDEVTPMCC); 1643 1644 if (pThisCC->pDrvTpm) 1645 { 1646 pThis->fEstablishmentSet = pThisCC->pDrvTpm->pfnGetEstablishedFlag(pThisCC->pDrvTpm); 1647 pThis->cbCmdResp = RT_MIN(pThisCC->pDrvTpm->pfnGetBufferSize(pThisCC->pDrvTpm), TPM_DATA_BUFFER_SIZE_MAX); 1648 } 1649 } 1650 1651 1652 /** 1613 1653 * @interface_method_impl{PDMDEVREG,pfnReset} 1614 1654 */ … … 1616 1656 { 1617 1657 PDEVTPM pThis = PDMDEVINS_2_DATA(pDevIns, PDEVTPM); 1618 1619 pThis->enmState = DEVTPMSTATE_IDLE; 1620 pThis->bLoc = TPM_NO_LOCALITY_SELECTED; 1621 pThis->bmLocReqAcc = 0; 1622 pThis->bmLocSeizedAcc = 0; 1623 pThis->offCmdResp = 0; 1624 RT_ZERO(pThis->abCmdResp); 1625 1626 for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aLoc); i++) 1658 PDEVTPMCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PDEVTPMCC); 1659 1660 tpmR3HwReset(pThis); 1661 if (pThisCC->pDrvTpm) 1627 1662 { 1628 PDEVTPMLOCALITY pLoc = &pThis->aLoc[i]; 1629 pLoc->uRegIntEn = 0; 1630 pLoc->uRegIntSts = 0; 1663 pThis->fEstablishmentSet = pThisCC->pDrvTpm->pfnGetEstablishedFlag(pThisCC->pDrvTpm); 1664 pThis->cbCmdResp = RT_MIN(pThisCC->pDrvTpm->pfnGetBufferSize(pThisCC->pDrvTpm), TPM_DATA_BUFFER_SIZE_MAX); 1631 1665 } 1632 1666 } … … 1721 1755 AssertLogRelMsgReturn(pThisCC->pDrvTpm, ("TPM#%d: Driver is missing the TPM interface.\n", iInstance), VERR_PDM_MISSING_INTERFACE); 1722 1756 1723 pThis->fLocChangeSup = pThisCC->pDrvTpm->pfnGetLocalityMax(pThisCC->pDrvTpm) > 0; 1724 pThis->fEstablishmentSet = pThisCC->pDrvTpm->pfnGetEstablishedFlag(pThisCC->pDrvTpm); 1725 pThis->cbCmdResp = RT_MIN(pThisCC->pDrvTpm->pfnGetBufferSize(pThisCC->pDrvTpm), TPM_DATA_BUFFER_SIZE_MAX); 1757 pThis->fLocChangeSup = pThisCC->pDrvTpm->pfnGetLocalityMax(pThisCC->pDrvTpm) > 0; 1726 1758 1727 1759 pThis->enmTpmVers = pThisCC->pDrvTpm->pfnGetVersion(pThisCC->pDrvTpm); … … 1754 1786 AssertRCReturn(rc, rc); 1755 1787 1756 tpmR3 Reset(pDevIns);1788 tpmR3HwReset(pThis); 1757 1789 return VINF_SUCCESS; 1758 1790 } … … 1801 1833 /* .pfnRelocate = */ NULL, 1802 1834 /* .pfnMemSetup = */ NULL, 1803 /* .pfnPowerOn = */ NULL,1804 /* .pfnReset = */ NULL,1835 /* .pfnPowerOn = */ tpmR3PowerOn, 1836 /* .pfnReset = */ tpmR3Reset, 1805 1837 /* .pfnSuspend = */ NULL, 1806 1838 /* .pfnResume = */ NULL,
Note:
See TracChangeset
for help on using the changeset viewer.