* [Patch V3 1/2] UefiPayloadPkg: Fix the bug in dump guid HOB info functions
2021-09-10 8:01 [Patch V3 0/2] Fix and enhancement in Payload Entry DumpHob funcs duntan
@ 2021-09-10 8:01 ` duntan
2021-09-10 8:01 ` [Patch V3 2/2] UefiPayloadPkg: Dump hob info from gEdkiiBootManagerMenuFileGuid duntan
1 sibling, 0 replies; 3+ messages in thread
From: duntan @ 2021-09-10 8:01 UTC (permalink / raw)
To: devel; +Cc: duntan, Guo Dong, Ray Ni, Maurice Ma, Benjamin You, Zhiguang Liu
From: duntan <dun.tan@intel.com>
The input HobLength of PrintHandler should be data size instead of whole length of HOB
Cc: Guo Dong <guo.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Reviewed-by: Zhiguang Liu <zhiguang.liu@intel.com>
Signed-off-by: Dun Tan <dun.tan@intel.com>
---
UefiPayloadPkg/UefiPayloadEntry/PrintHob.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c b/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c
index 5fb638d4a4..f93aeec472 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c
+++ b/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c
@@ -317,9 +317,11 @@ PrintPciRootBridgeInfoGuidHob (
{
UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES *PciRootBridges;
UINTN Index;
+ UINTN Length;
Index = 0;
PciRootBridges = (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES *) GET_GUID_HOB_DATA (HobRaw);
- ASSERT (HobLength >= sizeof (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES));
+ Length = sizeof (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES) + PciRootBridges->Count * sizeof (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGE);
+ ASSERT (HobLength >= Length);
DEBUG ((DEBUG_INFO, " Revision = 0x%x\n", PciRootBridges->Header.Revision));
DEBUG ((DEBUG_INFO, " Length = 0x%x\n", PciRootBridges->Header.Length));
DEBUG ((DEBUG_INFO, " Count = 0x%x\n", PciRootBridges->Count));
@@ -369,10 +371,12 @@ PrintExtraDataGuidHob (
{
UNIVERSAL_PAYLOAD_EXTRA_DATA *ExtraData;
UINTN Index;
+ UINTN Length;
Index = 0;
ExtraData = (UNIVERSAL_PAYLOAD_EXTRA_DATA *) GET_GUID_HOB_DATA (HobRaw);
- ASSERT (HobLength >= ExtraData->Header.Length);
+ Length = sizeof (UNIVERSAL_PAYLOAD_EXTRA_DATA) + ExtraData->Count * sizeof (UNIVERSAL_PAYLOAD_EXTRA_DATA_ENTRY);
+ ASSERT (HobLength >= Length);
DEBUG ((DEBUG_INFO, " Revision = 0x%x\n", ExtraData->Header.Revision));
DEBUG ((DEBUG_INFO, " Length = 0x%x\n", ExtraData->Header.Length));
DEBUG ((DEBUG_INFO, " Count = 0x%x\n", ExtraData->Count));
@@ -443,7 +447,7 @@ PrintGuidHob (
for (Index = 0; Index < ARRAY_SIZE (GuidHobPrintHandleTable); Index++) {
if (CompareGuid (&Hob.Guid->Name, GuidHobPrintHandleTable[Index].Guid)) {
DEBUG ((DEBUG_INFO, " Guid = %a\n", GuidHobPrintHandleTable[Index].GuidName));
- Status = GuidHobPrintHandleTable[Index].PrintHandler (Hob.Raw, Hob.Header->HobLength);
+ Status = GuidHobPrintHandleTable[Index].PrintHandler (Hob.Raw, GET_GUID_HOB_DATA_SIZE (Hob.Raw));
return Status;
}
}
--
2.31.1.windows.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Patch V3 2/2] UefiPayloadPkg: Dump hob info from gEdkiiBootManagerMenuFileGuid
2021-09-10 8:01 [Patch V3 0/2] Fix and enhancement in Payload Entry DumpHob funcs duntan
2021-09-10 8:01 ` [Patch V3 1/2] UefiPayloadPkg: Fix the bug in dump guid HOB info functions duntan
@ 2021-09-10 8:01 ` duntan
1 sibling, 0 replies; 3+ messages in thread
From: duntan @ 2021-09-10 8:01 UTC (permalink / raw)
To: devel; +Cc: duntan, Guo Dong, Ray Ni, Maurice Ma, Benjamin You, Zhiguang Liu
From: duntan <dun.tan@intel.com>
V1: Dump this hob infomation from gEdkiiBootManagerMenuFileGuid
V2: Delete the duplicated assertions
V3: Add input parameter in Comment
Cc: Guo Dong <guo.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Reviewed-by: Zhiguang Liu <zhiguang.liu@intel.com>
Signed-off-by: Dun Tan <dun.tan@intel.com>
---
UefiPayloadPkg/UefiPayloadEntry/PrintHob.c | 26 +++++++++++++++++++++++++-
UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry.inf | 1 +
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c b/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c
index f93aeec472..265d47ca9d 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c
+++ b/UefiPayloadPkg/UefiPayloadEntry/PrintHob.c
@@ -10,6 +10,7 @@
#include <UniversalPayload/ExtraData.h>
#include <Guid/MemoryTypeInformation.h>
#include <Guid/AcpiBoardInfoGuid.h>
+#include <Guid/BootManagerMenu.h>
#define ROW_LIMITER 16
@@ -410,6 +411,28 @@ PrintMemoryTypeInfoGuidHob (
return EFI_SUCCESS;
}
+/**
+ Print the information in EdkiiBootManagerMenuFileGuid.
+ @param[in] HobRaw A pointer to the start of gEdkiiBootManagerMenuFileGuid HOB.
+ @param[in] HobLength The size of the data buffer.
+ @retval EFI_SUCCESS If it completed successfully.
+**/
+EFI_STATUS
+PrintBootManagerMenuGuidHob (
+ IN UINT8 *HobRaw,
+ IN UINT16 HobLength
+ )
+{
+ UNIVERSAL_PAYLOAD_BOOT_MANAGER_MENU *BootManagerMenuFile;
+
+ BootManagerMenuFile = (UNIVERSAL_PAYLOAD_BOOT_MANAGER_MENU *) GET_GUID_HOB_DATA (HobRaw);
+ ASSERT (HobLength >= sizeof (*BootManagerMenuFile));
+ DEBUG ((DEBUG_INFO, " Revision = 0x%x\n", BootManagerMenuFile->Header.Revision));
+ DEBUG ((DEBUG_INFO, " Length = 0x%x\n", BootManagerMenuFile->Header.Length));
+ DEBUG ((DEBUG_INFO, " FileName = %g\n", &BootManagerMenuFile->FileName));
+ return EFI_SUCCESS;
+}
+
//
// Mappint table for dump Guid Hob information.
// This table can be easily extented.
@@ -422,7 +445,8 @@ GUID_HOB_PRINT_HANDLE GuidHobPrintHandleTable[] = {
{&gUefiAcpiBoardInfoGuid, PrintAcpiBoardInfoGuidHob, "gUefiAcpiBoardInfoGuid(Acpi Guid)"},
{&gUniversalPayloadPciRootBridgeInfoGuid, PrintPciRootBridgeInfoGuidHob, "gUniversalPayloadPciRootBridgeInfoGuid(Pci Guid)"},
{&gEfiMemoryTypeInformationGuid, PrintMemoryTypeInfoGuidHob, "gEfiMemoryTypeInformationGuid(Memory Type Information Guid)"},
- {&gUniversalPayloadExtraDataGuid, PrintExtraDataGuidHob, "gUniversalPayloadExtraDataGuid(PayLoad Extra Data Guid)"}
+ {&gUniversalPayloadExtraDataGuid, PrintExtraDataGuidHob, "gUniversalPayloadExtraDataGuid(PayLoad Extra Data Guid)"},
+ {&gEdkiiBootManagerMenuFileGuid, PrintBootManagerMenuGuidHob, "gEdkiiBootManagerMenuFileGuid(Boot Manager Menu File Guid)"}
};
/**
diff --git a/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry.inf b/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry.inf
index 416a620598..3ee449219d 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry.inf
+++ b/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry.inf
@@ -70,6 +70,7 @@
gUniversalPayloadAcpiTableGuid
gUniversalPayloadPciRootBridgeInfoGuid
gUniversalPayloadSmbios3TableGuid
+ gEdkiiBootManagerMenuFileGuid
[FeaturePcd.IA32]
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES
--
2.31.1.windows.1
^ permalink raw reply related [flat|nested] 3+ messages in thread