For now, this is definitely possible. It may also be viable long term. The table is closely tied to the FV layout which is standardized under Minimum Platform. Firmware volumes that may come and go like those for a particular advanced feature would end up as child FVs under a FvAdvanced parent that would be covered in the BIOS Info table. It seems that the FVs that will eventually be described in the table will remain fixed while their contents are customized by individual boards.
Also due to the FV standardization, the FVs that compose the IBB segment definition in the table for S-ACM verification/measurement can likely be consistent across the boards in addition to the post-IBB FVs which leads to a standardized IBB/OBB definition. Some boards within a package may have Boot Guard enabled while others don't but having the FVs identified as IBB, post-IBB, or exclude from FIT in the table will not negatively impact the Boot Guard disabled case. I agree we should start with KabylakeOpenBoardPkg having a single copy of the PEIM used for all boards. Thanks, Michael > -----Original Message----- > From: Desimone, Nathaniel L <nathaniel.l.desim...@intel.com> > Sent: Monday, October 7, 2019 3:27 PM > To: Agyeman, Prince <prince.agye...@intel.com>; devel@edk2.groups.io > Cc: Sinha, Ankit <ankit.si...@intel.com>; Kubacki, Michael A > <michael.a.kuba...@intel.com> > Subject: RE: [edk2-platforms] [PATCH 2/5] > KabylakeOpenBoardPkg/KabylakeRvp3: Add BIOS Info PEIM > > Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo.c > and Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/BiosInfo/BiosInfo.c > are identical files. Can we move this up to the parent KabylakeOpenBoardPkg > and use one PEIM for both platforms? > > -----Original Message----- > From: Agyeman, Prince <prince.agye...@intel.com> > Sent: Thursday, October 3, 2019 2:13 PM > To: devel@edk2.groups.io > Cc: Sinha, Ankit <ankit.si...@intel.com>; Desimone, Nathaniel L > <nathaniel.l.desim...@intel.com>; Kubacki, Michael A > <michael.a.kuba...@intel.com> > Subject: [edk2-platforms] [PATCH 2/5] > KabylakeOpenBoardPkg/KabylakeRvp3: Add BIOS Info PEIM > > Added BIOS Info PEIM to KabylakeRvp3 to publish the BIOS info HOB. This > PEIM currently publishs the board's microcode region info. > > Cc: Ankit Sinha <ankit.si...@intel.com> > Cc: Nate DeSimone <nathaniel.l.desim...@intel.com> > Cc: Kubacki Michael A <michael.a.kuba...@intel.com> > > Signed-off-by: Prince Agyeman <prince.agye...@intel.com> > --- > .../KabylakeRvp3/BiosInfo/BiosInfo.c | 93 +++++++++++++++++++ > .../KabylakeRvp3/BiosInfo/BiosInfo.inf | 48 ++++++++++ > .../KabylakeRvp3/OpenBoardPkg.dsc | 2 + > .../KabylakeRvp3/OpenBoardPkg.fdf | 1 + > 4 files changed, 144 insertions(+) > create mode 100644 > Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo.c > create mode 100644 > Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo.inf > > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo.c > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo.c > new file mode 100644 > index 0000000000..6a058a0fc2 > --- /dev/null > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo > +++ .c > @@ -0,0 +1,93 @@ > +/** @file > + Driver for BIOS Info support. > + > + Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > + SPDX-License-Identifier: BSD-2-Clause-Patent **/ > + > +#include <PiPei.h> > +#include <Library/BiosInfo.h> > +#include <Library/PeiServicesLib.h> > +#include <Library/BaseMemoryLib.h> > +#include <Library/DebugLib.h> > +#include <Library/HobLib.h> > +#include <Library/PcdLib.h> > +#include <IndustryStandard/FirmwareInterfaceTable.h> > + > +#define INDEXPORT_TO_ADDRESS(x) (x) > +#define DATAPORT_TO_ADDRESS(x) ((x) << 16) > +#define PORTWIDTH_TO_ADDRESS(x) ((x) << 32) > +#define PORTBITNUMBER_TO_ADDRESS(x) ((x) << 40) > +#define PORTINDEXNUMBER_TO_ADDRESS(x) ((x) << 48) > + > +// > +// Internal > +// > +#pragma pack (1) > + > +typedef struct { > + BIOS_INFO_HEADER Header; > + BIOS_INFO_STRUCT Entry[1]; > +} BIOS_INFO; > +#pragma pack () > + > +GLOBAL_REMOVE_IF_UNREFERENCED BIOS_INFO mBiosInfo = { > + { > + BIOS_INFO_SIGNATURE, > + 1, > + 0, > + }, > + { > + { > + FIT_TYPE_01_MICROCODE, > + BIOS_INFO_STRUCT_ATTRIBUTE_MICROCODE_WHOLE_REGION, > + 0x0100, > + FixedPcdGet32 (PcdFlashMicrocodeFvSize), > + FixedPcdGet32 (PcdFlashMicrocodeFvBase) > + } > + } > +}; > + > +GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR > mBiosInfoPpiList > += { > + EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, > + &gBiosInfoGuid, > + &mBiosInfo > +}; > + > +/** > + Installs BiosInfo Ppi. > + > + @param FileHandle Handle of the file being invoked. > + @param PeiServices Describes the list of possible PEI Services. > + > + @retval EFI_SUCCESS Install the BiosInfo Ppi successfully. > + > +**/ > +EFI_STATUS > +EFIAPI > +BiosInfoEntryPoint ( > + IN EFI_PEI_FILE_HANDLE FileHandle, > + IN CONST EFI_PEI_SERVICES **PeiServices > + ) > +{ > + EFI_STATUS Status; > + VOID *HobData; > + > + // > + // Install PPI, so that other PEI module can add dependency. > + // > + Status = PeiServicesInstallPpi (&mBiosInfoPpiList); ASSERT_EFI_ERROR > + (Status); > + > + // > + // Build hob, so that DXE module can also get the data. > + // > + HobData = BuildGuidHob (&gBiosInfoGuid, sizeof (mBiosInfo)); ASSERT > + (HobData != NULL); if (HobData == NULL) { > + return EFI_OUT_OF_RESOURCES; > + } > + CopyMem (HobData, &mBiosInfo, sizeof (mBiosInfo)); > + > + return EFI_SUCCESS; > +} > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo.i > nf > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo.i > nf > new file mode 100644 > index 0000000000..94543408b1 > --- /dev/null > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/BiosInfo/BiosInfo > +++ .inf > @@ -0,0 +1,48 @@ > +### @file > +# Module Information description file for BIOS Info Driver # # > +Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> # > +SPDX-License-Identifier: BSD-2-Clause-Patent ### > + > +[Defines] > + INF_VERSION = 0x00010017 > + BASE_NAME = BiosInfo > + FILE_GUID = C83BCE0E-6F16-4D3C-8D9F-4D6F5A032929 > + VERSION_STRING = 1.0 > + MODULE_TYPE = PEIM > + ENTRY_POINT = BiosInfoEntryPoint > +# > +# The following information is for reference only and not required by the > build tools. > +# > +# VALID_ARCHITECTURES IA32 X64 > +# > + > +[LibraryClasses] > + PeimEntryPoint > + PeiServicesLib > + HobLib > + BaseMemoryLib > + DebugLib > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + IntelSiliconPkg/IntelSiliconPkg.dec > + KabylakeSiliconPkg/SiPkg.dec > + KabylakeFspBinPkg/KabylakeFspBinPkg.dec > + BoardModulePkg/BoardModulePkg.dec > + MinPlatformPkg/MinPlatformPkg.dec > + > +[Pcd] > + gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvBase ## > CONSUMES > + gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize ## CONSUMES > + > +[Sources] > + BiosInfo.c > + > +[Guids] > + gBiosInfoGuid ## PRODUCES > + > +[Depex] > + TRUE > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > index 7090852192..ef69a19aa4 100644 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > @@ -324,6 +324,8 @@ > } > !endif > > + $(PROJECT)/BiosInfo/BiosInfo.inf > + > # > # Security > # > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf > index 2b8eab36a1..81181710e6 100644 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf > @@ -242,6 +242,7 @@ INF > $(PLATFORM_PACKAGE)/PlatformInit/ReportFv/ReportFvPei.inf > INF > $(PLATFORM_PACKAGE)/PlatformInit/PlatformInitPei/PlatformInitPreMem.i > nf > INF IntelFsp2WrapperPkg/FspmWrapperPeim/FspmWrapperPeim.inf > INF > $(PLATFORM_PACKAGE)/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPreMe > m.inf > +INF $(PROJECT)/BiosInfo/BiosInfo.inf > > [FV.FvPostMemoryUncompact] > BlockSize = $(FLASH_BLOCK_SIZE) > -- > 2.19.1.windows.1 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#48513): https://edk2.groups.io/g/devel/message/48513 Mute This Topic: https://groups.io/mt/34386698/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-