* [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c @ 2024-04-03 21:19 Sam Kaynor 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c Sam Kaynor ` (3 more replies) 0 siblings, 4 replies; 11+ messages in thread From: Sam Kaynor @ 2024-04-03 21:19 UTC (permalink / raw) To: devel Cc: Ray Ni, Zhichao Gao, Michael D Kinney, Liming Gao, Zhiguang Liu, Stuart Yoder This adds an additional option to the dmem UEFI shell command for verbose dumping of a couple of UEFI tables. The tables specified are the RT Properties Table, the Image Execution Table, and the Conformance Profiles table. Supporting objects are added in the .inf and .uni files relating to Dmem.c and an additional header file for the Conformance Profiles table was added. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 v3->v4: - Resolved crash when RT Properties table isn't present - Added output to help command to include -verbose option - Changed Image Exe Table output to more closely match spec Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Stuart Yoder <stuart.yoder@arm.com> Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> Sam Kaynor (3): ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table in Dmem.c ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles in Dmem.c MdePkg/MdePkg.dec | 5 + ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf | 3 + MdePkg/Include/Guid/ConformanceProfiles.h | 56 +++++ ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 266 ++++++++++++++++++++ ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 31 ++- 5 files changed, 359 insertions(+), 2 deletions(-) create mode 100644 MdePkg/Include/Guid/ConformanceProfiles.h -- 2.34.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c 2024-04-03 21:19 [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Sam Kaynor @ 2024-04-03 21:19 ` Sam Kaynor 2024-04-04 21:26 ` Stuart Yoder 2024-04-04 21:31 ` Stuart Yoder 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table " Sam Kaynor ` (2 subsequent siblings) 3 siblings, 2 replies; 11+ messages in thread From: Sam Kaynor @ 2024-04-03 21:19 UTC (permalink / raw) To: devel; +Cc: Ray Ni, Zhichao Gao REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 Implemented the dumping of the UEFI RT Properties Table using Dmem.c Added new entry to the help command for the -verbose option Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> --- Notes: v4: - fixed crash when RTProperties table not present - expanded help output to include -verbose option v3: - fixed build errors - properly using Address variable ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 63 ++++++++++++++++++++ ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 23 ++++++- 2 files changed, 84 insertions(+), 2 deletions(-) diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c index a609971f345e..52a0630f1cdc 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c @@ -84,8 +84,64 @@ DisplayMmioMemory ( return (ShellStatus); } +/** + Display the RtPropertiesTable entries + + @param[in] Address The pointer to the RtPropertiesTable. +**/ +SHELL_STATUS +DisplayRtProperties ( + IN UINT64 Address + ) +{ + EFI_RT_PROPERTIES_TABLE *RtPropertiesTable; + UINT32 RtServices; + SHELL_STATUS ShellStatus; + EFI_STATUS Status; + + ShellStatus = SHELL_SUCCESS; + + if (Address != 0) { + RtPropertiesTable = (EFI_RT_PROPERTIES_TABLE *)Address; + + RtServices = (UINT32)RtPropertiesTable->RuntimeServicesSupported; + Status = ShellPrintHiiEx ( + -1, + -1, + NULL, + STRING_TOKEN (STR_DMEM_RT_PROPERTIES), + gShellDebug1HiiHandle, + EFI_RT_PROPERTIES_TABLE_VERSION, + (RtServices & EFI_RT_SUPPORTED_GET_TIME) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_SET_TIME) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_GET_WAKEUP_TIME) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_SET_WAKEUP_TIME) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_GET_VARIABLE) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_SET_VARIABLE) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_SET_VIRTUAL_ADDRESS_MAP) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_CONVERT_POINTER) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_GET_NEXT_HIGH_MONOTONIC_COUNT) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_RESET_SYSTEM) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_UPDATE_CAPSULE) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_QUERY_CAPSULE_CAPABILITIES) ? 1 : 0, + (RtServices & EFI_RT_SUPPORTED_QUERY_VARIABLE_INFO) ? 1 : 0 + ); + + if (EFI_ERROR (Status)) { + ShellStatus = SHELL_ABORTED; + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_GET_FAIL), gShellDebug1HiiHandle, L"RtPropertiesTable"); + } + } else { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_NOT_FOUND), gShellDebug1HiiHandle, L"RtPropertiesTable"); + } + + return (ShellStatus); +} + STATIC CONST SHELL_PARAM_ITEM ParamList[] = { { L"-mmio", TypeFlag }, + { L"-verbose", TypeFlag }, { NULL, TypeMax } }; @@ -308,6 +364,13 @@ ShellCommandRunDmem ( ConformanceProfileTableAddress ); } + + if (ShellCommandLineGetFlag (Package, L"-verbose")) { + if (ShellStatus == SHELL_SUCCESS) { + ShellStatus = DisplayRtProperties (RtPropertiesTableAddress); + } + } + } else { ShellStatus = DisplayMmioMemory (Address, (UINTN)Size); } diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni index 4041f0cd483e..a2241614f109 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni @@ -126,8 +126,26 @@ "Memory Range Capsule %016LX\r\n" "Hii Database Export Buffer %016LX\r\n" "Conformance Profile Table %016LX\r\n" - - +#string STR_DMEM_RT_PROPERTIES #language en-US "\r\nRT Properties Table\r\n" + "----------------------------------------\r\n" + "Version 0x%01LX\r\n" + "Runtime Services Supported:\r\n" + " GET_TIME %d\r\n" + " GET_WAKEUP_TIME %d\r\n" + " SET_TIME %d\r\n" + " SET_WAKEUP_TIME %d\r\n" + " GET_VARIABLE %d\r\n" + " GET_NEXT_VARIABLE_NAME %d\r\n" + " SET_VARIABLE %d\r\n" + " SET_VIRTUAL_ADDRESS_MAP %d\r\n" + " CONVERT_POINTERS %d\r\n" + " GET_NEXT_HIGH_MONOTONIC_COUNT %d\r\n" + " RESET_SYSTEM %d\r\n" + " UPDATE_CAPSULE %d\r\n" + " QUERY_CAPSULE_CAPABILITIES %d\r\n" + " QUERY_VARIABLE_INFO %d\r\n" +#string STR_DMEM_ERR_NOT_FOUND #language en-US "\r\n%H%s%N: Table address not found.\r\n" +#string STR_DMEM_ERR_GET_FAIL #language en-US "\r\n%H%s%N: Unable to get table information.\r\n" #string STR_LOAD_PCI_ROM_RES #language en-US "Image '%B%s%N' load result: %r\r\n" #string STR_LOADPCIROM_CORRUPT #language en-US "%H%s%N: File '%B%s%N' Image %d is corrupt.\r\n" @@ -589,6 +607,7 @@ " \r\n" " -b - Displays one screen at a time.\r\n" " -MMIO - Forces address cycles to the PCI bus.\r\n" +" -verbose - Displays contents of certain EFI System Tables.\r\n" " address - Specifies a starting address in hexadecimal format.\r\n" " size - Specifies the number of bytes to display in hexadecimal format.\r\n" ".SH DESCRIPTION\r\n" -- 2.34.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c Sam Kaynor @ 2024-04-04 21:26 ` Stuart Yoder 2024-04-04 21:31 ` Stuart Yoder 1 sibling, 0 replies; 11+ messages in thread From: Stuart Yoder @ 2024-04-04 21:26 UTC (permalink / raw) To: devel, sam.kaynor; +Cc: Ray Ni, Zhichao Gao Reviewed-by: Stuart Yoder <stuart.yoder@arm.com> On 4/3/24 4:19 PM, Sam Kaynor via groups.io wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 > > Implemented the dumping of the UEFI RT Properties Table using Dmem.c > > Added new entry to the help command for the -verbose option > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> > --- > > Notes: > v4: > - fixed crash when RTProperties table not present > - expanded help output to include -verbose option > v3: > - fixed build errors > - properly using Address variable > > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 63 ++++++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 23 ++++++- > 2 files changed, 84 insertions(+), 2 deletions(-) > > diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > index a609971f345e..52a0630f1cdc 100644 > --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > @@ -84,8 +84,64 @@ DisplayMmioMemory ( > return (ShellStatus); > } > > +/** > + Display the RtPropertiesTable entries > + > + @param[in] Address The pointer to the RtPropertiesTable. > +**/ > +SHELL_STATUS > +DisplayRtProperties ( > + IN UINT64 Address > + ) > +{ > + EFI_RT_PROPERTIES_TABLE *RtPropertiesTable; > + UINT32 RtServices; > + SHELL_STATUS ShellStatus; > + EFI_STATUS Status; > + > + ShellStatus = SHELL_SUCCESS; > + > + if (Address != 0) { > + RtPropertiesTable = (EFI_RT_PROPERTIES_TABLE *)Address; > + > + RtServices = (UINT32)RtPropertiesTable->RuntimeServicesSupported; > + Status = ShellPrintHiiEx ( > + -1, > + -1, > + NULL, > + STRING_TOKEN (STR_DMEM_RT_PROPERTIES), > + gShellDebug1HiiHandle, > + EFI_RT_PROPERTIES_TABLE_VERSION, > + (RtServices & EFI_RT_SUPPORTED_GET_TIME) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_SET_TIME) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_GET_WAKEUP_TIME) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_SET_WAKEUP_TIME) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_GET_VARIABLE) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_SET_VARIABLE) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_SET_VIRTUAL_ADDRESS_MAP) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_CONVERT_POINTER) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_GET_NEXT_HIGH_MONOTONIC_COUNT) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_RESET_SYSTEM) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_UPDATE_CAPSULE) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_QUERY_CAPSULE_CAPABILITIES) ? 1 : 0, > + (RtServices & EFI_RT_SUPPORTED_QUERY_VARIABLE_INFO) ? 1 : 0 > + ); > + > + if (EFI_ERROR (Status)) { > + ShellStatus = SHELL_ABORTED; > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_GET_FAIL), gShellDebug1HiiHandle, L"RtPropertiesTable"); > + } > + } else { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_NOT_FOUND), gShellDebug1HiiHandle, L"RtPropertiesTable"); > + } > + > + return (ShellStatus); > +} > + > STATIC CONST SHELL_PARAM_ITEM ParamList[] = { > { L"-mmio", TypeFlag }, > + { L"-verbose", TypeFlag }, > { NULL, TypeMax } > }; > > @@ -308,6 +364,13 @@ ShellCommandRunDmem ( > ConformanceProfileTableAddress > ); > } > + > + if (ShellCommandLineGetFlag (Package, L"-verbose")) { > + if (ShellStatus == SHELL_SUCCESS) { > + ShellStatus = DisplayRtProperties (RtPropertiesTableAddress); > + } > + } > + > } else { > ShellStatus = DisplayMmioMemory (Address, (UINTN)Size); > } > diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > index 4041f0cd483e..a2241614f109 100644 > --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > @@ -126,8 +126,26 @@ > "Memory Range Capsule %016LX\r\n" > "Hii Database Export Buffer %016LX\r\n" > "Conformance Profile Table %016LX\r\n" > - > - > +#string STR_DMEM_RT_PROPERTIES #language en-US "\r\nRT Properties Table\r\n" > + "----------------------------------------\r\n" > + "Version 0x%01LX\r\n" > + "Runtime Services Supported:\r\n" > + " GET_TIME %d\r\n" > + " GET_WAKEUP_TIME %d\r\n" > + " SET_TIME %d\r\n" > + " SET_WAKEUP_TIME %d\r\n" > + " GET_VARIABLE %d\r\n" > + " GET_NEXT_VARIABLE_NAME %d\r\n" > + " SET_VARIABLE %d\r\n" > + " SET_VIRTUAL_ADDRESS_MAP %d\r\n" > + " CONVERT_POINTERS %d\r\n" > + " GET_NEXT_HIGH_MONOTONIC_COUNT %d\r\n" > + " RESET_SYSTEM %d\r\n" > + " UPDATE_CAPSULE %d\r\n" > + " QUERY_CAPSULE_CAPABILITIES %d\r\n" > + " QUERY_VARIABLE_INFO %d\r\n" > +#string STR_DMEM_ERR_NOT_FOUND #language en-US "\r\n%H%s%N: Table address not found.\r\n" > +#string STR_DMEM_ERR_GET_FAIL #language en-US "\r\n%H%s%N: Unable to get table information.\r\n" > > #string STR_LOAD_PCI_ROM_RES #language en-US "Image '%B%s%N' load result: %r\r\n" > #string STR_LOADPCIROM_CORRUPT #language en-US "%H%s%N: File '%B%s%N' Image %d is corrupt.\r\n" > @@ -589,6 +607,7 @@ > " \r\n" > " -b - Displays one screen at a time.\r\n" > " -MMIO - Forces address cycles to the PCI bus.\r\n" > +" -verbose - Displays contents of certain EFI System Tables.\r\n" > " address - Specifies a starting address in hexadecimal format.\r\n" > " size - Specifies the number of bytes to display in hexadecimal format.\r\n" > ".SH DESCRIPTION\r\n" -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117444): https://edk2.groups.io/g/devel/message/117444 Mute This Topic: https://groups.io/mt/105318209/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c Sam Kaynor 2024-04-04 21:26 ` Stuart Yoder @ 2024-04-04 21:31 ` Stuart Yoder 1 sibling, 0 replies; 11+ messages in thread From: Stuart Yoder @ 2024-04-04 21:31 UTC (permalink / raw) To: devel, sam.kaynor; +Cc: Ray Ni, Zhichao Gao On 4/3/24 4:19 PM, Sam Kaynor via groups.io wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 > > Implemented the dumping of the UEFI RT Properties Table using Dmem.c > > Added new entry to the help command for the -verbose option > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> > --- > > Notes: > v4: > - fixed crash when RTProperties table not present > - expanded help output to include -verbose option > v3: > - fixed build errors > - properly using Address variable > > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 63 ++++++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 23 ++++++- > 2 files changed, 84 insertions(+), 2 deletions(-) Tested-by: Stuart Yoder <stuart.yoder@arm.com> RT properties is not implemented in EDK2, but is in the EFI implementation in u-boot. Output looks like this: RT Properties Table ---------------------------------------- Version 0x1 Runtime Services Supported: GET_TIME 0 GET_WAKEUP_TIME 0 SET_TIME 0 SET_WAKEUP_TIME 0 GET_VARIABLE 1 GET_NEXT_VARIABLE_NAME 1 SET_VARIABLE 0 SET_VIRTUAL_ADDRESS_MAP 1 CONVERT_POINTERS 1 GET_NEXT_HIGH_MONOTONIC_COUNT 0 RESET_SYSTEM 1 UPDATE_CAPSULE 0 QUERY_CAPSULE_CAPABILITIES 0 QUERY_VARIABLE_INFO 0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117447): https://edk2.groups.io/g/devel/message/117447 Mute This Topic: https://groups.io/mt/105318209/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 11+ messages in thread
* [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table in Dmem.c 2024-04-03 21:19 [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Sam Kaynor 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c Sam Kaynor @ 2024-04-03 21:19 ` Sam Kaynor 2024-04-04 21:26 ` Stuart Yoder 2024-04-04 21:32 ` Stuart Yoder 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles " Sam Kaynor 2024-04-09 8:00 ` [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Gao, Zhichao 3 siblings, 2 replies; 11+ messages in thread From: Sam Kaynor @ 2024-04-03 21:19 UTC (permalink / raw) To: devel; +Cc: Ray Ni, Zhichao Gao REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 Implemented dumping of the Image Execution Table using Dmem.c Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> --- Notes: v4: - changed Image Execution output to match spec v3: - fixed build erros - added setwidth formatting to output - properly using Address variable ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 134 ++++++++++++++++++++ ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 3 + 2 files changed, 137 insertions(+) diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c index 52a0630f1cdc..813759a9055d 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c @@ -139,6 +139,137 @@ DisplayRtProperties ( return (ShellStatus); } +/** + Retrieve the ImageExecutionTable Entry ImageName from Device Path + + @param[in] Address The pointer to the ImageExecutionTable. +**/ +EFI_STATUS +GetBaseName ( + IN CHAR16 *FileName, + OUT CHAR16 **BaseName + ) +{ + UINT32 StrLen; + CHAR16 *StrTail; + + StrLen = StrSize(FileName); + + for (StrTail = FileName + StrLen - 1; StrTail != FileName && *StrTail != L'\\'; StrTail--) { + } + + if (StrTail == FileName) { + return EFI_NOT_FOUND; + } + *BaseName = StrTail+1; + + return EFI_SUCCESS; +} + +/** + Retrieve the ImageExecutionTable entries + + @param[in] Address The pointer to the ImageExecutionTable. +**/ +EFI_STATUS +GetImageExecutionInfo ( + IN UINT64 Address + ) +{ + EFI_STATUS Status; + EFI_IMAGE_EXECUTION_INFO_TABLE *ExecInfoTablePtr; + EFI_IMAGE_EXECUTION_INFO *InfoPtr; + VOID *ptr; + CHAR16 *ImagePath; + CHAR16 *ImageName; + UINTN *NumberOfImages; + CHAR16 *ActionType; + + ExecInfoTablePtr = (EFI_IMAGE_EXECUTION_INFO_TABLE *)Address; + + NumberOfImages = &ExecInfoTablePtr->NumberOfImages; + + ptr = (VOID *)(ExecInfoTablePtr + 1); + + for (int Image = 0; Image < *NumberOfImages; Image++, ptr += InfoPtr->InfoSize) { + InfoPtr = ptr; + ImagePath = (CHAR16*)(InfoPtr + 1); + + GetBaseName(ImagePath,&ImageName); + + switch(InfoPtr->Action) { + case EFI_IMAGE_EXECUTION_AUTHENTICATION: + ActionType = L"AUTHENTICATION"; + break; + case EFI_IMAGE_EXECUTION_AUTH_UNTESTED: + ActionType = L"AUTH_UNTESTED"; + break; + case EFI_IMAGE_EXECUTION_AUTH_SIG_FAILED: + ActionType = L"AUTH_SIG_FAILED"; + break; + case EFI_IMAGE_EXECUTION_AUTH_SIG_PASSED: + ActionType = L"AUTH_SIG_PASSED"; + break; + case EFI_IMAGE_EXECUTION_AUTH_SIG_NOT_FOUND: + ActionType = L"AUTH_SIG_NOT_FOUND"; + break; + case EFI_IMAGE_EXECUTION_AUTH_SIG_FOUND: + ActionType = L"AUTH_SIG_FOUND"; + break; + case EFI_IMAGE_EXECUTION_POLICY_FAILED: + ActionType = L"POLICY_FAILED"; + break; + case EFI_IMAGE_EXECUTION_INITIALIZED: + ActionType = L"INITIALIZED"; + break; + default: + ActionType = L"invalid action"; + } + + Status = ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_DMEM_IMG_EXE_ENTRY), + gShellDebug1HiiHandle, + ImageName, + ActionType + ); + } + + return Status; +} + +/** + Display the ImageExecutionTable entries + + @param[in] Address The pointer to the ImageExecutionTable. +**/ +SHELL_STATUS +DisplayImageExecutionEntries ( + IN UINT64 Address + ) +{ + SHELL_STATUS ShellStatus; + EFI_STATUS Status; + + ShellStatus = SHELL_SUCCESS; + + if (Address != 0) { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_IMG_EXE_TABLE), gShellDebug1HiiHandle); + Status = GetImageExecutionInfo(Address); + if (EFI_ERROR (Status)) { + ShellStatus = SHELL_ABORTED; + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_GET_FAIL), gShellDebug1HiiHandle, L"ImageExecutionTable"); + } + } else { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_NOT_FOUND), gShellDebug1HiiHandle, L"ImageExecutionTable"); + } + return (ShellStatus); +} + + + STATIC CONST SHELL_PARAM_ITEM ParamList[] = { { L"-mmio", TypeFlag }, { L"-verbose", TypeFlag }, @@ -369,6 +500,9 @@ ShellCommandRunDmem ( if (ShellStatus == SHELL_SUCCESS) { ShellStatus = DisplayRtProperties (RtPropertiesTableAddress); } + if (ShellStatus == SHELL_SUCCESS) { + ShellStatus = DisplayImageExecutionEntries (ImageExecutionTableAddress); + } } } else { diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni index a2241614f109..3b730164ddce 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni @@ -144,6 +144,9 @@ " UPDATE_CAPSULE %d\r\n" " QUERY_CAPSULE_CAPABILITIES %d\r\n" " QUERY_VARIABLE_INFO %d\r\n" +#string STR_DMEM_IMG_EXE_TABLE #language en-US "\r\nImage Execution Table\r\n" + "----------------------------------------\r\n" +#string STR_DMEM_IMG_EXE_ENTRY #language en-US "%20s: %s\r\n" #string STR_DMEM_ERR_NOT_FOUND #language en-US "\r\n%H%s%N: Table address not found.\r\n" #string STR_DMEM_ERR_GET_FAIL #language en-US "\r\n%H%s%N: Unable to get table information.\r\n" -- 2.34.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table in Dmem.c 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table " Sam Kaynor @ 2024-04-04 21:26 ` Stuart Yoder 2024-04-04 21:32 ` Stuart Yoder 1 sibling, 0 replies; 11+ messages in thread From: Stuart Yoder @ 2024-04-04 21:26 UTC (permalink / raw) To: devel, sam.kaynor; +Cc: Ray Ni, Zhichao Gao Reviewed-by: Stuart Yoder <stuart.yoder@arm.com> On 4/3/24 4:19 PM, Sam Kaynor via groups.io wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 > > Implemented dumping of the Image Execution Table using Dmem.c > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> > --- > > Notes: > v4: > - changed Image Execution output to match spec > v3: > - fixed build erros > - added setwidth formatting to output > - properly using Address variable > > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 134 ++++++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 3 + > 2 files changed, 137 insertions(+) > > diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > index 52a0630f1cdc..813759a9055d 100644 > --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > @@ -139,6 +139,137 @@ DisplayRtProperties ( > return (ShellStatus); > } > > +/** > + Retrieve the ImageExecutionTable Entry ImageName from Device Path > + > + @param[in] Address The pointer to the ImageExecutionTable. > +**/ > +EFI_STATUS > +GetBaseName ( > + IN CHAR16 *FileName, > + OUT CHAR16 **BaseName > + ) > +{ > + UINT32 StrLen; > + CHAR16 *StrTail; > + > + StrLen = StrSize(FileName); > + > + for (StrTail = FileName + StrLen - 1; StrTail != FileName && *StrTail != L'\\'; StrTail--) { > + } > + > + if (StrTail == FileName) { > + return EFI_NOT_FOUND; > + } > + *BaseName = StrTail+1; > + > + return EFI_SUCCESS; > +} > + > +/** > + Retrieve the ImageExecutionTable entries > + > + @param[in] Address The pointer to the ImageExecutionTable. > +**/ > +EFI_STATUS > +GetImageExecutionInfo ( > + IN UINT64 Address > + ) > +{ > + EFI_STATUS Status; > + EFI_IMAGE_EXECUTION_INFO_TABLE *ExecInfoTablePtr; > + EFI_IMAGE_EXECUTION_INFO *InfoPtr; > + VOID *ptr; > + CHAR16 *ImagePath; > + CHAR16 *ImageName; > + UINTN *NumberOfImages; > + CHAR16 *ActionType; > + > + ExecInfoTablePtr = (EFI_IMAGE_EXECUTION_INFO_TABLE *)Address; > + > + NumberOfImages = &ExecInfoTablePtr->NumberOfImages; > + > + ptr = (VOID *)(ExecInfoTablePtr + 1); > + > + for (int Image = 0; Image < *NumberOfImages; Image++, ptr += InfoPtr->InfoSize) { > + InfoPtr = ptr; > + ImagePath = (CHAR16*)(InfoPtr + 1); > + > + GetBaseName(ImagePath,&ImageName); > + > + switch(InfoPtr->Action) { > + case EFI_IMAGE_EXECUTION_AUTHENTICATION: > + ActionType = L"AUTHENTICATION"; > + break; > + case EFI_IMAGE_EXECUTION_AUTH_UNTESTED: > + ActionType = L"AUTH_UNTESTED"; > + break; > + case EFI_IMAGE_EXECUTION_AUTH_SIG_FAILED: > + ActionType = L"AUTH_SIG_FAILED"; > + break; > + case EFI_IMAGE_EXECUTION_AUTH_SIG_PASSED: > + ActionType = L"AUTH_SIG_PASSED"; > + break; > + case EFI_IMAGE_EXECUTION_AUTH_SIG_NOT_FOUND: > + ActionType = L"AUTH_SIG_NOT_FOUND"; > + break; > + case EFI_IMAGE_EXECUTION_AUTH_SIG_FOUND: > + ActionType = L"AUTH_SIG_FOUND"; > + break; > + case EFI_IMAGE_EXECUTION_POLICY_FAILED: > + ActionType = L"POLICY_FAILED"; > + break; > + case EFI_IMAGE_EXECUTION_INITIALIZED: > + ActionType = L"INITIALIZED"; > + break; > + default: > + ActionType = L"invalid action"; > + } > + > + Status = ShellPrintHiiEx( > + -1, > + -1, > + NULL, > + STRING_TOKEN (STR_DMEM_IMG_EXE_ENTRY), > + gShellDebug1HiiHandle, > + ImageName, > + ActionType > + ); > + } > + > + return Status; > +} > + > +/** > + Display the ImageExecutionTable entries > + > + @param[in] Address The pointer to the ImageExecutionTable. > +**/ > +SHELL_STATUS > +DisplayImageExecutionEntries ( > + IN UINT64 Address > + ) > +{ > + SHELL_STATUS ShellStatus; > + EFI_STATUS Status; > + > + ShellStatus = SHELL_SUCCESS; > + > + if (Address != 0) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_IMG_EXE_TABLE), gShellDebug1HiiHandle); > + Status = GetImageExecutionInfo(Address); > + if (EFI_ERROR (Status)) { > + ShellStatus = SHELL_ABORTED; > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_GET_FAIL), gShellDebug1HiiHandle, L"ImageExecutionTable"); > + } > + } else { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_NOT_FOUND), gShellDebug1HiiHandle, L"ImageExecutionTable"); > + } > + return (ShellStatus); > +} > + > + > + > STATIC CONST SHELL_PARAM_ITEM ParamList[] = { > { L"-mmio", TypeFlag }, > { L"-verbose", TypeFlag }, > @@ -369,6 +500,9 @@ ShellCommandRunDmem ( > if (ShellStatus == SHELL_SUCCESS) { > ShellStatus = DisplayRtProperties (RtPropertiesTableAddress); > } > + if (ShellStatus == SHELL_SUCCESS) { > + ShellStatus = DisplayImageExecutionEntries (ImageExecutionTableAddress); > + } > } > > } else { > diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > index a2241614f109..3b730164ddce 100644 > --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > @@ -144,6 +144,9 @@ > " UPDATE_CAPSULE %d\r\n" > " QUERY_CAPSULE_CAPABILITIES %d\r\n" > " QUERY_VARIABLE_INFO %d\r\n" > +#string STR_DMEM_IMG_EXE_TABLE #language en-US "\r\nImage Execution Table\r\n" > + "----------------------------------------\r\n" > +#string STR_DMEM_IMG_EXE_ENTRY #language en-US "%20s: %s\r\n" > #string STR_DMEM_ERR_NOT_FOUND #language en-US "\r\n%H%s%N: Table address not found.\r\n" > #string STR_DMEM_ERR_GET_FAIL #language en-US "\r\n%H%s%N: Unable to get table information.\r\n" > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117445): https://edk2.groups.io/g/devel/message/117445 Mute This Topic: https://groups.io/mt/105318208/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table in Dmem.c 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table " Sam Kaynor 2024-04-04 21:26 ` Stuart Yoder @ 2024-04-04 21:32 ` Stuart Yoder 1 sibling, 0 replies; 11+ messages in thread From: Stuart Yoder @ 2024-04-04 21:32 UTC (permalink / raw) To: devel, sam.kaynor; +Cc: Ray Ni, Zhichao Gao On 4/3/24 4:19 PM, Sam Kaynor via groups.io wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 > > Implemented dumping of the Image Execution Table using Dmem.c > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> > --- > > Notes: > v4: > - changed Image Execution output to match spec > v3: > - fixed build erros > - added setwidth formatting to output > - properly using Address variable > > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 134 ++++++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 3 + > 2 files changed, 137 insertions(+) Tested-by: Stuart Yoder <stuart.yoder@arm.com> Tested on EDK2, verbose output looks like: Image Execution Table ---------------------------------------- TestImage1.bin: AUTH_UNTESTED TestImage2.bin: AUTH_UNTESTED TestImage6.bin: AUTH_SIG_FAILED TestImage7.bin: AUTH_SIG_FAILED TestImage8.bin: AUTH_SIG_FAILED TestImage9.bin: AUTH_SIG_FAILED TestImage10.bin: AUTH_SIG_FOUND -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117448): https://edk2.groups.io/g/devel/message/117448 Mute This Topic: https://groups.io/mt/105318208/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 11+ messages in thread
* [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles in Dmem.c 2024-04-03 21:19 [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Sam Kaynor 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c Sam Kaynor 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table " Sam Kaynor @ 2024-04-03 21:19 ` Sam Kaynor 2024-04-04 21:27 ` Stuart Yoder 2024-04-04 21:35 ` Stuart Yoder 2024-04-09 8:00 ` [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Gao, Zhichao 3 siblings, 2 replies; 11+ messages in thread From: Sam Kaynor @ 2024-04-03 21:19 UTC (permalink / raw) To: devel; +Cc: Ray Ni, Zhichao Gao, Michael D Kinney, Liming Gao, Zhiguang Liu REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 Implemented dumping of the UEFI Conformance Profiles Table using Dmem.c Additionally added the base support for the table with new header file ConformanceProfiles.h (Cc'd maintainers of MdePkg for this) Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> --- Notes: v3: - fixed build errors - properly using Address variable - removed unecessary comment in header file MdePkg/MdePkg.dec | 5 ++ ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf | 3 + MdePkg/Include/Guid/ConformanceProfiles.h | 56 ++++++++++++++++ ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 69 ++++++++++++++++++++ ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 5 ++ 5 files changed, 138 insertions(+) diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 0c18e1decd51..861838c148f3 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -746,6 +746,11 @@ [Guids] ## Include/Guid/DeviceAuthentication.h gEfiDeviceSignatureDatabaseGuid = { 0xb9c2b4f4, 0xbf5f, 0x462d, {0x8a, 0xdf, 0xc5, 0xc7, 0xa, 0xc3, 0x5d, 0xad }} + ## Include/Guid/ConformanceProfiles.h + gEfiConfProfilesTableGuid = { 0x36122546, 0xf7e7, 0x4c8f, { 0xbd, 0x9b, 0xeb, 0x85, 0x25, 0xb5, 0x0c, 0x0b }} + gEfiConfProfilesUefiSpecGuid = { 0x523c91af, 0xa195, 0x4382, { 0x81, 0x8d, 0x29, 0x5f, 0xe4, 0x00, 0x64, 0x65 }} + gEfiConfProfilesEbbrSpecGuid = { 0xcce33c35, 0x74ac, 0x4087, { 0xbc, 0xe7, 0x8b, 0x29, 0xb0, 0x2e, 0xeb, 0x27 }} + # # GUID defined in PI1.0 # diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf index 3741dac5d94c..172ac2862ba1 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf @@ -139,3 +139,6 @@ [Guids] gEfiJsonConfigDataTableGuid ## SOMETIMES_CONSUMES ## SystemTable gEfiJsonCapsuleDataTableGuid ## SOMETIMES_CONSUMES ## SystemTable gEfiJsonCapsuleResultTableGuid ## SOMETIMES_CONSUMES ## SystemTable + gEfiConfProfilesTableGuid ## SOMETIMES_CONSUMES ## SystemTable + gEfiConfProfilesUefiSpecGuid ## SOMETIMES_CONSUMES ## GUID + gEfiConfProfilesEbbrSpecGuid ## SOMETIMES_CONSUMES ## GUID diff --git a/MdePkg/Include/Guid/ConformanceProfiles.h b/MdePkg/Include/Guid/ConformanceProfiles.h new file mode 100644 index 000000000000..c6211d63d79c --- /dev/null +++ b/MdePkg/Include/Guid/ConformanceProfiles.h @@ -0,0 +1,56 @@ +/** @file + Legal information + +**/ + +#ifndef __CONFORMANCE_PROFILES_TABLE_GUID_H__ +#define __CONFORMANCE_PROFILES_TABLE_GUID_H__ + + +// +// This table allows the platform to advertise its UEFI specification conformance +// in the form of pre-defined profiles. Each profile is identified by a GUID, with +// known profiles listed in the section below. +// The absence of this table shall indicate that the platform implementation is +// conformant with the UEFI specification requirements, as defined in Section 2.6. +// This is equivalent to publishing this configuration table with the +// EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID conformance profile. +// +#define EFI_CONFORMANCE_PROFILES_TABLE_GUID \ + { \ + 0x36122546, 0xf7e7, 0x4c8f, { 0xbd, 0x9b, 0xeb, 0x85, 0x25, 0xb5, 0x0c, 0x0b } \ + } + +#pragma pack(1) + +typedef struct { + /// + /// Version of the table must be 0x1 + /// + UINT16 Version; + /// + /// The number of profiles GUIDs present in ConformanceProfiles + /// + UINT16 NumberOfProfiles; + /// + /// An array of conformance profile GUIDs that are supported by this system. + /// EFI_GUID ConformanceProfiles[]; + /// +} EFI_CONFORMANCE_PROFILES_TABLE; + +#define EFI_CONFORMANCE_PROFILES_TABLE_VERSION 0x1 + +// +// GUID defined in spec. +// +#define EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID \ + { 0x523c91af, 0xa195, 0x4382, \ + { 0x81, 0x8d, 0x29, 0x5f, 0xe4, 0x00, 0x64, 0x65 }} +#define EFI_CONFORMANCE_PROFILE_EBBR_2_1_GUID \ + { 0xcce33c35, 0x74ac, 0x4087, \ + { 0xbc, 0xe7, 0x8b, 0x29, 0xb0, 0x2e, 0xeb, 0x27 }} + +extern EFI_GUID gEfiConfProfilesTableGuid; +extern EFI_GUID gEfiConfProfilesUefiSpecGuid; + +#endif diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c index 813759a9055d..2618402bc714 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c @@ -19,6 +19,7 @@ #include <Guid/SystemResourceTable.h> #include <Guid/DebugImageInfoTable.h> #include <Guid/ImageAuthentication.h> +#include <Guid/ConformanceProfiles.h> /** Make a printable character. @@ -268,7 +269,67 @@ DisplayImageExecutionEntries ( return (ShellStatus); } +/** + Display the ConformanceProfileTable entries + @param[in] Address The pointer to the ConformanceProfileTable. +**/ +SHELL_STATUS +DisplayConformanceProfiles ( + IN UINT64 Address + ) +{ + SHELL_STATUS ShellStatus; + EFI_STATUS Status; + EFI_GUID *EntryGuid; + CHAR16 *GuidName; + EFI_CONFORMANCE_PROFILES_TABLE *ConfProfTable; + + ShellStatus = SHELL_SUCCESS; + + if (Address != 0) { + ConfProfTable = (EFI_CONFORMANCE_PROFILES_TABLE *)Address; + + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_CONF_PRO_TABLE), gShellDebug1HiiHandle); + + EntryGuid = (EFI_GUID *)(ConfProfTable + 1); + + for (int Profile = 0; Profile < ConfProfTable->NumberOfProfiles; Profile++, EntryGuid++) { + GuidName = L"Unknown_Profile"; + + if (CompareGuid (EntryGuid, &gEfiConfProfilesEbbrSpecGuid)) { + GuidName = L"EBBR_2.1"; + } + + Status = ShellPrintHiiEx ( + -1, + -1, + NULL, + STRING_TOKEN (STR_DMEM_CONF_PRO_ROW), + gShellDebug1HiiHandle, + GuidName, + EntryGuid + ); + } + if (EFI_ERROR (Status)) { + ShellStatus = SHELL_ABORTED; + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_GET_FAIL), gShellDebug1HiiHandle, L"ComformanceProfilesTable"); + } + } else { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_CONF_PRO_TABLE), gShellDebug1HiiHandle); + ShellPrintHiiEx ( + -1, + -1, + NULL, + STRING_TOKEN (STR_DMEM_CONF_PRO_ROW), + gShellDebug1HiiHandle, + L"EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID", + &gEfiConfProfilesUefiSpecGuid + ); + } + + return (ShellStatus); +} STATIC CONST SHELL_PARAM_ITEM ParamList[] = { { L"-mmio", TypeFlag }, @@ -460,6 +521,11 @@ ShellCommandRunDmem ( HiiDatabaseExportBufferAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable; continue; } + + if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiConfProfilesTableGuid)) { + ConformanceProfileTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable; + continue; + } } ShellPrintHiiEx ( @@ -503,6 +569,9 @@ ShellCommandRunDmem ( if (ShellStatus == SHELL_SUCCESS) { ShellStatus = DisplayImageExecutionEntries (ImageExecutionTableAddress); } + if (ShellStatus == SHELL_SUCCESS) { + ShellStatus = DisplayConformanceProfiles(ConformanceProfileTableAddress); + } } } else { diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni index 3b730164ddce..6ef923e4fd5e 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni @@ -147,6 +147,11 @@ #string STR_DMEM_IMG_EXE_TABLE #language en-US "\r\nImage Execution Table\r\n" "----------------------------------------\r\n" #string STR_DMEM_IMG_EXE_ENTRY #language en-US "%20s: %s\r\n" +#string STR_DMEM_CONF_PRO_TABLE #language en-US "\r\nConformance Profile Table\r\n" + "----------------------------------------\r\n" + "Version 0x1\r\n" + "Profile GUIDs:\r\n" +#string STR_DMEM_CONF_PRO_ROW #language en-US " %s %g\r\n" #string STR_DMEM_ERR_NOT_FOUND #language en-US "\r\n%H%s%N: Table address not found.\r\n" #string STR_DMEM_ERR_GET_FAIL #language en-US "\r\n%H%s%N: Unable to get table information.\r\n" -- 2.34.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles in Dmem.c 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles " Sam Kaynor @ 2024-04-04 21:27 ` Stuart Yoder 2024-04-04 21:35 ` Stuart Yoder 1 sibling, 0 replies; 11+ messages in thread From: Stuart Yoder @ 2024-04-04 21:27 UTC (permalink / raw) To: devel, sam.kaynor Cc: Ray Ni, Zhichao Gao, Michael D Kinney, Liming Gao, Zhiguang Liu Reviewed-by: Stuart Yoder <stuart.yoder@arm.com> On 4/3/24 4:19 PM, Sam Kaynor via groups.io wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 > > Implemented dumping of the UEFI Conformance Profiles Table using Dmem.c > Additionally added the base support for the table with new > header file ConformanceProfiles.h (Cc'd maintainers of MdePkg for this) > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <gaoliming@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> > --- > > Notes: > v3: > - fixed build errors > - properly using Address variable > - removed unecessary comment in header file > > MdePkg/MdePkg.dec | 5 ++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf | 3 + > MdePkg/Include/Guid/ConformanceProfiles.h | 56 ++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 69 ++++++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 5 ++ > 5 files changed, 138 insertions(+) > > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec > index 0c18e1decd51..861838c148f3 100644 > --- a/MdePkg/MdePkg.dec > +++ b/MdePkg/MdePkg.dec > @@ -746,6 +746,11 @@ [Guids] > ## Include/Guid/DeviceAuthentication.h > gEfiDeviceSignatureDatabaseGuid = { 0xb9c2b4f4, 0xbf5f, 0x462d, {0x8a, 0xdf, 0xc5, 0xc7, 0xa, 0xc3, 0x5d, 0xad }} > > + ## Include/Guid/ConformanceProfiles.h > + gEfiConfProfilesTableGuid = { 0x36122546, 0xf7e7, 0x4c8f, { 0xbd, 0x9b, 0xeb, 0x85, 0x25, 0xb5, 0x0c, 0x0b }} > + gEfiConfProfilesUefiSpecGuid = { 0x523c91af, 0xa195, 0x4382, { 0x81, 0x8d, 0x29, 0x5f, 0xe4, 0x00, 0x64, 0x65 }} > + gEfiConfProfilesEbbrSpecGuid = { 0xcce33c35, 0x74ac, 0x4087, { 0xbc, 0xe7, 0x8b, 0x29, 0xb0, 0x2e, 0xeb, 0x27 }} > + > # > # GUID defined in PI1.0 > # > diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf > index 3741dac5d94c..172ac2862ba1 100644 > --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf > +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf > @@ -139,3 +139,6 @@ [Guids] > gEfiJsonConfigDataTableGuid ## SOMETIMES_CONSUMES ## SystemTable > gEfiJsonCapsuleDataTableGuid ## SOMETIMES_CONSUMES ## SystemTable > gEfiJsonCapsuleResultTableGuid ## SOMETIMES_CONSUMES ## SystemTable > + gEfiConfProfilesTableGuid ## SOMETIMES_CONSUMES ## SystemTable > + gEfiConfProfilesUefiSpecGuid ## SOMETIMES_CONSUMES ## GUID > + gEfiConfProfilesEbbrSpecGuid ## SOMETIMES_CONSUMES ## GUID > diff --git a/MdePkg/Include/Guid/ConformanceProfiles.h b/MdePkg/Include/Guid/ConformanceProfiles.h > new file mode 100644 > index 000000000000..c6211d63d79c > --- /dev/null > +++ b/MdePkg/Include/Guid/ConformanceProfiles.h > @@ -0,0 +1,56 @@ > +/** @file > + Legal information > + > +**/ > + > +#ifndef __CONFORMANCE_PROFILES_TABLE_GUID_H__ > +#define __CONFORMANCE_PROFILES_TABLE_GUID_H__ > + > + > +// > +// This table allows the platform to advertise its UEFI specification conformance > +// in the form of pre-defined profiles. Each profile is identified by a GUID, with > +// known profiles listed in the section below. > +// The absence of this table shall indicate that the platform implementation is > +// conformant with the UEFI specification requirements, as defined in Section 2.6. > +// This is equivalent to publishing this configuration table with the > +// EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID conformance profile. > +// > +#define EFI_CONFORMANCE_PROFILES_TABLE_GUID \ > + { \ > + 0x36122546, 0xf7e7, 0x4c8f, { 0xbd, 0x9b, 0xeb, 0x85, 0x25, 0xb5, 0x0c, 0x0b } \ > + } > + > +#pragma pack(1) > + > +typedef struct { > + /// > + /// Version of the table must be 0x1 > + /// > + UINT16 Version; > + /// > + /// The number of profiles GUIDs present in ConformanceProfiles > + /// > + UINT16 NumberOfProfiles; > + /// > + /// An array of conformance profile GUIDs that are supported by this system. > + /// EFI_GUID ConformanceProfiles[]; > + /// > +} EFI_CONFORMANCE_PROFILES_TABLE; > + > +#define EFI_CONFORMANCE_PROFILES_TABLE_VERSION 0x1 > + > +// > +// GUID defined in spec. > +// > +#define EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID \ > + { 0x523c91af, 0xa195, 0x4382, \ > + { 0x81, 0x8d, 0x29, 0x5f, 0xe4, 0x00, 0x64, 0x65 }} > +#define EFI_CONFORMANCE_PROFILE_EBBR_2_1_GUID \ > + { 0xcce33c35, 0x74ac, 0x4087, \ > + { 0xbc, 0xe7, 0x8b, 0x29, 0xb0, 0x2e, 0xeb, 0x27 }} > + > +extern EFI_GUID gEfiConfProfilesTableGuid; > +extern EFI_GUID gEfiConfProfilesUefiSpecGuid; > + > +#endif > diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > index 813759a9055d..2618402bc714 100644 > --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c > @@ -19,6 +19,7 @@ > #include <Guid/SystemResourceTable.h> > #include <Guid/DebugImageInfoTable.h> > #include <Guid/ImageAuthentication.h> > +#include <Guid/ConformanceProfiles.h> > > /** > Make a printable character. > @@ -268,7 +269,67 @@ DisplayImageExecutionEntries ( > return (ShellStatus); > } > > +/** > + Display the ConformanceProfileTable entries > > + @param[in] Address The pointer to the ConformanceProfileTable. > +**/ > +SHELL_STATUS > +DisplayConformanceProfiles ( > + IN UINT64 Address > + ) > +{ > + SHELL_STATUS ShellStatus; > + EFI_STATUS Status; > + EFI_GUID *EntryGuid; > + CHAR16 *GuidName; > + EFI_CONFORMANCE_PROFILES_TABLE *ConfProfTable; > + > + ShellStatus = SHELL_SUCCESS; > + > + if (Address != 0) { > + ConfProfTable = (EFI_CONFORMANCE_PROFILES_TABLE *)Address; > + > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_CONF_PRO_TABLE), gShellDebug1HiiHandle); > + > + EntryGuid = (EFI_GUID *)(ConfProfTable + 1); > + > + for (int Profile = 0; Profile < ConfProfTable->NumberOfProfiles; Profile++, EntryGuid++) { > + GuidName = L"Unknown_Profile"; > + > + if (CompareGuid (EntryGuid, &gEfiConfProfilesEbbrSpecGuid)) { > + GuidName = L"EBBR_2.1"; > + } > + > + Status = ShellPrintHiiEx ( > + -1, > + -1, > + NULL, > + STRING_TOKEN (STR_DMEM_CONF_PRO_ROW), > + gShellDebug1HiiHandle, > + GuidName, > + EntryGuid > + ); > + } > + if (EFI_ERROR (Status)) { > + ShellStatus = SHELL_ABORTED; > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_ERR_GET_FAIL), gShellDebug1HiiHandle, L"ComformanceProfilesTable"); > + } > + } else { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMEM_CONF_PRO_TABLE), gShellDebug1HiiHandle); > + ShellPrintHiiEx ( > + -1, > + -1, > + NULL, > + STRING_TOKEN (STR_DMEM_CONF_PRO_ROW), > + gShellDebug1HiiHandle, > + L"EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID", > + &gEfiConfProfilesUefiSpecGuid > + ); > + } > + > + return (ShellStatus); > +} > > STATIC CONST SHELL_PARAM_ITEM ParamList[] = { > { L"-mmio", TypeFlag }, > @@ -460,6 +521,11 @@ ShellCommandRunDmem ( > HiiDatabaseExportBufferAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable; > continue; > } > + > + if (CompareGuid (&gST->ConfigurationTable[TableWalker].VendorGuid, &gEfiConfProfilesTableGuid)) { > + ConformanceProfileTableAddress = (UINT64)(UINTN)gST->ConfigurationTable[TableWalker].VendorTable; > + continue; > + } > } > > ShellPrintHiiEx ( > @@ -503,6 +569,9 @@ ShellCommandRunDmem ( > if (ShellStatus == SHELL_SUCCESS) { > ShellStatus = DisplayImageExecutionEntries (ImageExecutionTableAddress); > } > + if (ShellStatus == SHELL_SUCCESS) { > + ShellStatus = DisplayConformanceProfiles(ConformanceProfileTableAddress); > + } > } > > } else { > diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > index 3b730164ddce..6ef923e4fd5e 100644 > --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni > @@ -147,6 +147,11 @@ > #string STR_DMEM_IMG_EXE_TABLE #language en-US "\r\nImage Execution Table\r\n" > "----------------------------------------\r\n" > #string STR_DMEM_IMG_EXE_ENTRY #language en-US "%20s: %s\r\n" > +#string STR_DMEM_CONF_PRO_TABLE #language en-US "\r\nConformance Profile Table\r\n" > + "----------------------------------------\r\n" > + "Version 0x1\r\n" > + "Profile GUIDs:\r\n" > +#string STR_DMEM_CONF_PRO_ROW #language en-US " %s %g\r\n" > #string STR_DMEM_ERR_NOT_FOUND #language en-US "\r\n%H%s%N: Table address not found.\r\n" > #string STR_DMEM_ERR_GET_FAIL #language en-US "\r\n%H%s%N: Unable to get table information.\r\n" > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117446): https://edk2.groups.io/g/devel/message/117446 Mute This Topic: https://groups.io/mt/105318210/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles in Dmem.c 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles " Sam Kaynor 2024-04-04 21:27 ` Stuart Yoder @ 2024-04-04 21:35 ` Stuart Yoder 1 sibling, 0 replies; 11+ messages in thread From: Stuart Yoder @ 2024-04-04 21:35 UTC (permalink / raw) To: devel, sam.kaynor Cc: Ray Ni, Zhichao Gao, Michael D Kinney, Liming Gao, Zhiguang Liu On 4/3/24 4:19 PM, Sam Kaynor via groups.io wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 > > Implemented dumping of the UEFI Conformance Profiles Table using Dmem.c > Additionally added the base support for the table with new > header file ConformanceProfiles.h (Cc'd maintainers of MdePkg for this) > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <gaoliming@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> > --- > > Notes: > v3: > - fixed build errors > - properly using Address variable > - removed unecessary comment in header file > > MdePkg/MdePkg.dec | 5 ++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf | 3 + > MdePkg/Include/Guid/ConformanceProfiles.h | 56 ++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 69 ++++++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni | 5 ++ > 5 files changed, 138 insertions(+) Tested-by: Stuart Yoder <stuart.yoder@arm.com> Tested on EDK2, output looks like: Conformance Profile Table ---------------------------------------- Version 0x1 Profile GUIDs: EFI_CONFORMANCE_PROFILES_UEFI_SPEC_GUID 523C91AF-A195-4382-818D-295FE4006465 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117449): https://edk2.groups.io/g/devel/message/117449 Mute This Topic: https://groups.io/mt/105318210/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c 2024-04-03 21:19 [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Sam Kaynor ` (2 preceding siblings ...) 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles " Sam Kaynor @ 2024-04-09 8:00 ` Gao, Zhichao 3 siblings, 0 replies; 11+ messages in thread From: Gao, Zhichao @ 2024-04-09 8:00 UTC (permalink / raw) To: Sam Kaynor, devel@edk2.groups.io Cc: Ni, Ray, Kinney, Michael D, Liming Gao, Liu, Zhiguang, Stuart Yoder The function looks good to me. But still have some coding style issue: "Always put space before an open parenthesis" And for patch #2, the comment of GetBaseName is incorrect. With the coding style issue fix and comments correction, Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> Thanks, Zhichao > -----Original Message----- > From: Sam Kaynor <Sam.Kaynor@arm.com> > Sent: Thursday, April 4, 2024 5:20 AM > To: devel@edk2.groups.io > Cc: Ni, Ray <ray.ni@intel.com>; Gao, Zhichao <zhichao.gao@intel.com>; > Kinney, Michael D <michael.d.kinney@intel.com>; Liming Gao > <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>; > Stuart Yoder <stuart.yoder@arm.com> > Subject: [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to > Dmem.c > > This adds an additional option to the dmem UEFI shell command for verbose > dumping of a couple of UEFI tables. > > The tables specified are the RT Properties Table, the Image Execution Table, > and the Conformance Profiles table. > > Supporting objects are added in the .inf and .uni files relating to Dmem.c and > an additional header file for the Conformance Profiles table was added. > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4352 > > v3->v4: > - Resolved crash when RT Properties table isn't present > - Added output to help command to include -verbose option > - Changed Image Exe Table output to more closely match spec > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <gaoliming@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > Cc: Stuart Yoder <stuart.yoder@arm.com> > Signed-off-by: Sam Kaynor <Sam.Kaynor@arm.com> > > Sam Kaynor (3): > ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c > ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table in Dmem.c > ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles in Dmem.c > > MdePkg/MdePkg.dec | 5 + > > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Commands > Lib.inf | 3 + > MdePkg/Include/Guid/ConformanceProfiles.h | 56 +++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | 266 > ++++++++++++++++++++ > > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Commands > Lib.uni | 31 ++- > 5 files changed, 359 insertions(+), 2 deletions(-) create mode 100644 > MdePkg/Include/Guid/ConformanceProfiles.h > > -- > 2.34.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117543): https://edk2.groups.io/g/devel/message/117543 Mute This Topic: https://groups.io/mt/105318207/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-04-09 8:01 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-04-03 21:19 [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Sam Kaynor 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 1/3] ShellPkg: UefiShellDebug1CommandsLib: Dumping RT Properties in Dmem.c Sam Kaynor 2024-04-04 21:26 ` Stuart Yoder 2024-04-04 21:31 ` Stuart Yoder 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 2/3] ShellPkg: UefiShellDebug1CommandsLib: Image Execution Table " Sam Kaynor 2024-04-04 21:26 ` Stuart Yoder 2024-04-04 21:32 ` Stuart Yoder 2024-04-03 21:19 ` [edk2-devel] [PATCH v4 3/3] ShellPkg: UefiShellDebug1CommandsLib: Conformance Profiles " Sam Kaynor 2024-04-04 21:27 ` Stuart Yoder 2024-04-04 21:35 ` Stuart Yoder 2024-04-09 8:00 ` [edk2-devel] [PATCH v4 0/3] Adding support for verbose UEFI Table dumping to Dmem.c Gao, Zhichao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox