From 670e263419eb875fd8dce0c8d18dd3ab02b83ba0 Mon Sep 17 00:00:00 2001 From: Chasel Chiu Date: Thu, 12 Sep 2024 15:42:41 -0700 Subject: [PATCH] UefiPayloadPkg: Move FADT check to consumer coode. ACPI FADT HW register interface fields are optional but current UPL common entry code made it as mandatory which caused compatibility issue on some platforms. Solution is to move those FADT HW register fields check code to consumer code so only ASSERT when those fields are consumed with error. Currently only AcpiTimerLib and ResetSystemLib consuming those register fields so if platforms configured UPL to different library instances the FADT HW register fields are not consumed thus will not cause ASSERT. Signed-off-by: Chasel Chiu --- UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.c | 1 + UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.c | 6 ++++++ UefiPayloadPkg/UefiPayloadEntry/AcpiTable.c | 9 --------- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.c b/UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.c index 1ed589a6a2db..8c4136609dbc 100644 --- a/UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.c +++ b/UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.c @@ -47,6 +47,7 @@ AcpiTimerLibConstructor ( pAcpiBoardInfo = (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob); mPmTimerReg = (UINTN)pAcpiBoardInfo->PmTimerRegBase; + ASSERT (pAcpiBoardInfo->PmTimerRegBase != 0); return EFI_SUCCESS; } diff --git a/UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.c b/UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.c index 1f2882069f3e..f252855cfb2d 100644 --- a/UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.c +++ b/UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.c @@ -40,6 +40,12 @@ ResetSystemLibConstructor ( AcpiBoardInfoPtr = (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob); CopyMem (&mAcpiBoardInfo, AcpiBoardInfoPtr, sizeof (ACPI_BOARD_INFO)); + ASSERT (mAcpiBoardInfo.ResetRegAddress != 0); + ASSERT (mAcpiBoardInfo.ResetValue != 0); + ASSERT (mAcpiBoardInfo.PmGpeEnBase != 0); + ASSERT (mAcpiBoardInfo.PmEvtBase != 0); + ASSERT (mAcpiBoardInfo.PmCtrlRegBase != 0); + return EFI_SUCCESS; } diff --git a/UefiPayloadPkg/UefiPayloadEntry/AcpiTable.c b/UefiPayloadPkg/UefiPayloadEntry/AcpiTable.c index 8e3032b440c5..a7ee00f3e9d6 100644 --- a/UefiPayloadPkg/UefiPayloadEntry/AcpiTable.c +++ b/UefiPayloadPkg/UefiPayloadEntry/AcpiTable.c @@ -125,15 +125,6 @@ ParseAcpiInfo ( DEBUG ((DEBUG_INFO, "PcieBaseAddr 0x%lx\n", AcpiBoardInfo->PcieBaseAddress)); DEBUG ((DEBUG_INFO, "PcieBaseSize 0x%lx\n", AcpiBoardInfo->PcieBaseSize)); - // - // Verify values for proper operation - // - // ASSERT (Fadt->Pm1aCntBlk != 0); - // ASSERT (Fadt->PmTmrBlk != 0); - // ASSERT (Fadt->ResetReg.Address != 0); - // ASSERT (Fadt->Pm1aEvtBlk != 0); - // ASSERT (Fadt->Gpe0Blk != 0); - return RETURN_SUCCESS; }