MdeModulePkg/CdExpressPei: Use PcdRecoveryFileName PCD.

This PCD is used to indicated the recovery file name.
The previous name - FvMain.Fv is hardcoded in CdExpressPei.
It does not make sense to force the name.

Now a platform may use any recovery file name.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
This commit is contained in:
Jiewen Yao 2016-10-08 09:55:20 +08:00
parent 08bec91eba
commit 9753360756
3 changed files with 19 additions and 9 deletions

View File

@ -5,7 +5,7 @@
# finds whether there is Recovery data in the device. If it finds recovery # finds whether there is Recovery data in the device. If it finds recovery
# data, it will install Device Recovery Module PPI. # data, it will install Device Recovery Module PPI.
# #
# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR> # Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
# #
# This program and the accompanying materials # This program and the accompanying materials
# are licensed and made available under the terms and conditions # are licensed and made available under the terms and conditions
@ -68,6 +68,9 @@
[FeaturePcd] [FeaturePcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport ## CONSUMES
[Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName ## CONSUMES
[Depex] [Depex]
gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBootInRecoveryModePpiGuid gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBootInRecoveryModePpiGuid

View File

@ -17,6 +17,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "PeiCdExpress.h" #include "PeiCdExpress.h"
PEI_CD_EXPRESS_PRIVATE_DATA *mPrivateData = NULL; PEI_CD_EXPRESS_PRIVATE_DATA *mPrivateData = NULL;
CHAR8 *mRecoveryFileName;
UINTN mRecoveryFileNameSize;
/** /**
Installs the Device Recovery Module PPI, Initialize BlockIo Ppi Installs the Device Recovery Module PPI, Initialize BlockIo Ppi
@ -48,6 +50,16 @@ CdExpressPeimEntry (
return EFI_OUT_OF_RESOURCES; return EFI_OUT_OF_RESOURCES;
} }
mRecoveryFileNameSize = PcdGetSize(PcdRecoveryFileName) / sizeof(CHAR16);
mRecoveryFileName = AllocatePool(mRecoveryFileNameSize);
if (mRecoveryFileName == NULL) {
return EFI_OUT_OF_RESOURCES;
}
Status = UnicodeStrToAsciiStrS(PcdGetPtr(PcdRecoveryFileName), mRecoveryFileName, mRecoveryFileNameSize);
if (EFI_ERROR(Status)) {
return Status;
}
// //
// Initialize Private Data (to zero, as is required by subsequent operations) // Initialize Private Data (to zero, as is required by subsequent operations)
// //
@ -466,12 +478,12 @@ RetrieveCapsuleFileFromRoot (
} }
} }
if (Index != (sizeof (PEI_RECOVERY_FILE_NAME) - 1)) { if (Index != mRecoveryFileNameSize - 1) {
Buffer += FileRecord->Length; Buffer += FileRecord->Length;
continue; continue;
} }
if (!StringCmp (FileRecord->FileID, (UINT8 *) PEI_RECOVERY_FILE_NAME, sizeof (PEI_RECOVERY_FILE_NAME) - 1, FALSE)) { if (!StringCmp (FileRecord->FileID, (UINT8 *)mRecoveryFileName, mRecoveryFileNameSize - 1, FALSE)) {
Buffer += FileRecord->Length; Buffer += FileRecord->Length;
continue; continue;
} }

View File

@ -1,7 +1,7 @@
/** @file /** @file
Header file for CD recovery PEIM Header file for CD recovery PEIM
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions are licensed and made available under the terms and conditions
@ -42,11 +42,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define PEI_CD_BLOCK_SIZE 0x800 #define PEI_CD_BLOCK_SIZE 0x800
#define PEI_MEMMORY_PAGE_SIZE 0x1000 #define PEI_MEMMORY_PAGE_SIZE 0x1000
//
// Recovery file name (in root directory)
//
#define PEI_RECOVERY_FILE_NAME "FVMAIN.FV"
// //
// Following are defined according to ISO-9660 specification // Following are defined according to ISO-9660 specification
// //