diff options
Diffstat (limited to 'src/VBox/Devices/EFI/DevEFI.cpp')
-rw-r--r-- | src/VBox/Devices/EFI/DevEFI.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/VBox/Devices/EFI/DevEFI.cpp b/src/VBox/Devices/EFI/DevEFI.cpp index e14f6858..35b6cca7 100644 --- a/src/VBox/Devices/EFI/DevEFI.cpp +++ b/src/VBox/Devices/EFI/DevEFI.cpp @@ -201,6 +201,8 @@ typedef struct DEVEFIR3 uint64_t u64McfgBase; /** Length of PCI config space MMIO region */ uint64_t cbMcfgLength; + /** Physical address of the TPM PPI area. */ + uint64_t u64TpmPpiBase; /** Size of the configured NVRAM device. */ uint32_t cbNvram; /** Start address of the NVRAM flash. */ @@ -331,6 +333,7 @@ static uint32_t efiInfoSize(PDEVEFIR3 pThisCC) case EFI_INFO_INDEX_TSC_FREQUENCY: case EFI_INFO_INDEX_MCFG_BASE: case EFI_INFO_INDEX_MCFG_SIZE: + case EFI_INFO_INDEX_TPM_PPI_BASE: return 8; case EFI_INFO_INDEX_APIC_MODE: return 1; @@ -433,6 +436,7 @@ static uint8_t efiInfoNextByte(PDEVEFIR3 pThisCC) case EFI_INFO_INDEX_MCFG_BASE: return efiInfoNextByteU64(pThisCC, pThisCC->u64McfgBase); case EFI_INFO_INDEX_MCFG_SIZE: return efiInfoNextByteU64(pThisCC, pThisCC->cbMcfgLength); case EFI_INFO_INDEX_APIC_MODE: return efiInfoNextByteU8(pThisCC, pThisCC->u8APIC); + case EFI_INFO_INDEX_TPM_PPI_BASE: return efiInfoNextByteU64(pThisCC, pThisCC->u64TpmPpiBase); default: PDMDevHlpDBGFStop(pThisCC->pDevIns, RT_SRC_POS, "%#x", pThisCC->iInfoSelector); @@ -1567,7 +1571,8 @@ static DECLCALLBACK(int) efiConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMN "UgaHorizontalResolution|" // legacy "UgaVerticalResolution|" // legacy "GraphicsResolution|" - "NvramFile", ""); + "NvramFile|" + "TpmPpiBase", ""); /* CPU count (optional). */ rc = pHlp->pfnCFGMQueryU32Def(pCfg, "NumCPUs", &pThisCC->cCpus, 1); @@ -1765,6 +1770,11 @@ static DECLCALLBACK(int) efiConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMN return PDMDEV_SET_ERROR(pDevIns, rc, N_("Configuration error: Querying \"NvramFile\" as a string failed")); + rc = pHlp->pfnCFGMQueryU64Def(pCfg, "TpmPpiBase", &pThisCC->u64TpmPpiBase, 0); + if (RT_FAILURE(rc)) + return PDMDEV_SET_ERROR(pDevIns, rc, + N_("Configuration error: Querying \"TpmPpiBase\" as integer failed")); + /* * Load firmware volume and thunk ROM. */ |