You cannot change across packages. You need to separate the MdePkg change into one single patch and get reviewed by the reviewer/maintainer of MdePkg.
Thanks, Zhichao > -----Original Message----- > From: Sam Kaynor <sam.kay...@arm.com> > Sent: Wednesday, April 10, 2024 2:53 AM > To: devel@edk2.groups.io > Cc: Ni, Ray <ray...@intel.com>; Gao, Zhichao <zhichao....@intel.com>; > Kinney, Michael D <michael.d.kin...@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Liu, Zhiguang <zhiguang....@intel.com> > Subject: [PATCH v5 3/3] ShellPkg: UefiShellDebug1CommandsLib: > Conformance Profiles in Dmem.c > > 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...@intel.com> > Cc: Zhichao Gao <zhichao....@intel.com> > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > Signed-off-by: Sam Kaynor <sam.kay...@arm.com> > Tested-by: Stuart Yoder <stuart.yo...@arm.com> > Reviewed-by: Stuart Yoder <stuart.yo...@arm.com> > Reviewed-by: Zhichao Gao <zhichao....@intel.com> > --- > > Notes: > v5: > - corrected style error (spaces before '(') > v3: > - fixed build errors > - properly using Address variable > - removed unecessary comment in header file > > MdePkg/MdePkg.dec | > 5 ++ > > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Commands > Lib.inf | 3 + > MdePkg/Include/Guid/ConformanceProfiles.h | > 56 > ++++++++++++++++ > ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c | > 69 > ++++++++++++++++++++ > > ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Commands > Lib.uni | 5 ++ > 5 files changed, 138 insertions(+) > > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index > bf94549cbfbd..2c053a7459f3 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/UefiShellDebug1Comman > dsLib.inf > b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman > dsLib.inf > index 3741dac5d94c..172ac2862ba1 100644 > --- > a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman > dsLib.inf > +++ > b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman > d > +++ sLib.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 a4f404c1cdbd..53ee2b01f918 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. > @@ -269,7 +270,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 }, > @@ -461,6 +522,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 ( > @@ -504,6 +570,9 @@ ShellCommandRunDmem ( > if (ShellStatus == SHELL_SUCCESS) { > ShellStatus = DisplayImageExecutionEntries > (ImageExecutionTableAddress); > } > + if (ShellStatus == SHELL_SUCCESS) { > + ShellStatus = DisplayConformanceProfiles > (ConformanceProfileTableAddress); > + } > } > > } else { > diff --git > a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman > dsLib.uni > b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman > dsLib.uni > index 3b730164ddce..6ef923e4fd5e 100644 > --- > a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman > dsLib.uni > +++ > b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman > d > +++ sLib.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 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117564): https://edk2.groups.io/g/devel/message/117564 Mute This Topic: https://groups.io/mt/105428090/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-