/** @file Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include #include EFI_STATUS TestPointCheckFv ( IN EFI_FIRMWARE_VOLUME_HEADER *FvHeader, IN UINT64 Size, IN GUID *FvFormat ) { if (!CompareGuid (FvFormat, &FvHeader->FileSystemGuid)) { DEBUG ((DEBUG_ERROR, "FvFormat error - 0x%lx\n", FvHeader)); return EFI_INVALID_PARAMETER; } if (Size != FvHeader->FvLength) { DEBUG ((DEBUG_ERROR, "FvLength error - 0x%lx\n", FvHeader)); return EFI_INVALID_PARAMETER; } return EFI_SUCCESS; } EFI_STATUS TestPointCheckFvInfo ( VOID ) { EFI_STATUS Status; EFI_PEI_PPI_DESCRIPTOR *Descriptor; EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *FvInfo; EFI_PEI_FIRMWARE_VOLUME_INFO2_PPI *FvInfo2; UINTN Index; UINTN Index2; DEBUG ((DEBUG_INFO, "==== TestPointCheckFvInfo - Enter\n")); DEBUG ((DEBUG_INFO, "FV Info PPI\n")); for (Index = 0; ; Index++) { Status = PeiServicesLocatePpi ( &gEfiPeiFirmwareVolumeInfoPpiGuid, Index, &Descriptor, (VOID **)&FvInfo ); if (EFI_ERROR (Status)) { break; } DEBUG ((DEBUG_INFO, " BA=%08x L=%08x Format={%g}", (UINT32)(UINTN)FvInfo->FvInfo, FvInfo->FvInfoSize, &FvInfo->FvFormat, FvInfo->ParentFvName, FvInfo->ParentFileName )); if (FvInfo->ParentFvName != NULL) { DEBUG ((DEBUG_INFO, " ParentFv={%g}", FvInfo->ParentFvName )); } if (FvInfo->ParentFileName != NULL) { DEBUG ((DEBUG_INFO, " ParentFileName={%g}", FvInfo->ParentFileName )); } DEBUG ((DEBUG_INFO, "\n")); } DEBUG ((DEBUG_INFO, "FV Info2 PPI\n")); for (Index2 = 0; ; Index2++) { Status = PeiServicesLocatePpi ( &gEfiPeiFirmwareVolumeInfo2PpiGuid, Index2, &Descriptor, (VOID **)&FvInfo2 ); if (EFI_ERROR (Status)) { break; } DEBUG ((DEBUG_INFO, " BA=%08x L=%08x Format={%g}", (UINT32)(UINTN)FvInfo2->FvInfo, FvInfo2->FvInfoSize, &FvInfo2->FvFormat, FvInfo2->ParentFvName, FvInfo2->ParentFileName, FvInfo2->AuthenticationStatus )); if (FvInfo2->ParentFvName != NULL) { DEBUG ((DEBUG_INFO, " ParentFv={%g}", FvInfo2->ParentFvName )); } if (FvInfo2->ParentFileName != NULL) { DEBUG ((DEBUG_INFO, " ParentFileName={%g}", FvInfo2->ParentFileName )); } DEBUG ((DEBUG_INFO, " Auth=%08x\n", FvInfo2->AuthenticationStatus )); } DEBUG ((DEBUG_INFO, "==== TestPointCheckFvInfo - Exit\n")); for (Index = 0; ; Index++) { Status = PeiServicesLocatePpi ( &gEfiPeiFirmwareVolumeInfoPpiGuid, Index, &Descriptor, (VOID **)&FvInfo ); if (EFI_ERROR (Status)) { break; } Status = TestPointCheckFv (FvInfo->FvInfo, FvInfo->FvInfoSize, &FvInfo->FvFormat); if (EFI_ERROR(Status)) { TestPointLibAppendErrorString ( PLATFORM_TEST_POINT_ROLE_PLATFORM_IBV, NULL, TEST_POINT_BYTE1_MEMORY_DISCOVERED_FV_INFO_FUNCTIONAL_ERROR_CODE \ TEST_POINT_MEMORY_DISCOVERED \ TEST_POINT_BYTE1_MEMORY_DISCOVERED_FV_INFO_FUNCTIONAL_ERROR_STRING ); return EFI_INVALID_PARAMETER; } } for (Index2 = 0; ; Index2++) { Status = PeiServicesLocatePpi ( &gEfiPeiFirmwareVolumeInfo2PpiGuid, Index2, &Descriptor, (VOID **)&FvInfo2 ); if (EFI_ERROR (Status)) { break; } Status = TestPointCheckFv (FvInfo2->FvInfo, FvInfo2->FvInfoSize, &FvInfo2->FvFormat); if (EFI_ERROR(Status)) { TestPointLibAppendErrorString ( PLATFORM_TEST_POINT_ROLE_PLATFORM_IBV, NULL, TEST_POINT_BYTE1_MEMORY_DISCOVERED_FV_INFO_FUNCTIONAL_ERROR_CODE \ TEST_POINT_MEMORY_DISCOVERED \ TEST_POINT_BYTE1_MEMORY_DISCOVERED_FV_INFO_FUNCTIONAL_ERROR_STRING ); return EFI_INVALID_PARAMETER; } } return EFI_SUCCESS; }