/** @file Driver for BIOS Info support. @copyright Copyright 2011 - 2021 Intel Corporation. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include GLOBAL_REMOVE_IF_UNREFERENCED BIOS_INFO mBiosInfo = { { BIOS_INFO_SIGNATURE, BIOS_INFO_STRUCT_SIZE, 0, }, { { FIT_TYPE_07_BIOS_STARTUP_MODULE, BIOS_INFO_STRUCT_ATTRIBUTE_GENERAL_EXCLUDE_FROM_FIT, 0x0100, FixedPcdGet32 (PcdFlashNvStorageVariableSize) + FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) + FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize), FixedPcdGet32 (PcdFlashNvStorageVariableBase) }, { FIT_TYPE_07_BIOS_STARTUP_MODULE, 0, 0x0100, FixedPcdGet32 (PcdFlashFvPreMemorySize), FixedPcdGet32 (PcdFlashFvPreMemoryBase) }, { FIT_TYPE_07_BIOS_STARTUP_MODULE, 0, 0x0100, FixedPcdGet32 (PcdFlashFvFspMSize), FixedPcdGet32 (PcdFlashFvFspMBase) }, { FIT_TYPE_01_MICROCODE, BIOS_INFO_STRUCT_ATTRIBUTE_MICROCODE_WHOLE_REGION, 0x0100, FixedPcdGet32 (PcdFlashNvStorageMicrocodeSize), FixedPcdGet32 (PcdFlashNvStorageMicrocodeBase) }, } }; 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); if (EFI_ERROR(Status)) { return Status; } // // Build hob, so that DXE module can also get the data. // HobData = BuildGuidHob (&gBiosInfoGuid, sizeof (BIOS_INFO)); ASSERT (HobData != NULL); if (HobData == NULL) { return EFI_OUT_OF_RESOURCES; } CopyMem (HobData, &mBiosInfo, sizeof (BIOS_INFO)); return EFI_SUCCESS; }