SPDX-License-Identifier: BSD-2-Clause-Patent\r
**/\r
\r
+#include <Uefi/UefiBaseType.h>\r
+#include <Uefi/UefiMultiPhase.h>\r
+#include <Pi/PiBootMode.h>\r
+#include <Pi/PiHob.h>\r
+#include <Library/HobLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/IoLib.h>\r
#include <Library/PcdLib.h>\r
#include <Library/PciLib.h>\r
+#include <Library/PlatformInitLib.h>\r
#include <OvmfPlatforms.h>\r
\r
//\r
VOID\r
)\r
{\r
- UINT16 HostBridgeDevId;\r
- UINTN Pmba;\r
+ UINT16 HostBridgeDevId;\r
+ UINTN Pmba;\r
+ EFI_HOB_GUID_TYPE *GuidHob;\r
+ EFI_HOB_PLATFORM_INFO *PlatformInfoHob = NULL;\r
\r
//\r
// Query Host Bridge DID to determine platform type\r
+ // Tdx guest stores the HostBridgePciDevId in a GuidHob.\r
+ // So we first check if this HOB exists\r
//\r
- HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);\r
+ GuidHob = GetFirstGuidHob (&gUefiOvmfPkgPlatformInfoGuid);\r
+ if (GuidHob != NULL) {\r
+ PlatformInfoHob = (EFI_HOB_PLATFORM_INFO *)GET_GUID_HOB_DATA (GuidHob);\r
+ HostBridgeDevId = PlatformInfoHob->HostBridgeDevId;\r
+ } else {\r
+ DEBUG ((DEBUG_ERROR, "PlatformInfoHob is not found.\n"));\r
+ ASSERT (FALSE);\r
+ return RETURN_UNSUPPORTED;\r
+ }\r
+\r
switch (HostBridgeDevId) {\r
case INTEL_82441_DEVICE_ID:\r
Pmba = POWER_MGMT_REGISTER_PIIX4 (PIIX4_PMBA);\r