MdeModulePkg Pcd: Check the input SkuId in SetSku()

then GetSku() could return the currently active SkuId.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17173 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Star Zeng
2015-04-14 08:54:11 +00:00
committed by lzeng14
parent a4d42c22d2
commit 85d0b97d8d
4 changed files with 67 additions and 28 deletions

View File

@@ -1,7 +1,7 @@
/** @file
All Pcd Ppi services are implemented here.
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -158,15 +158,10 @@ PcdPeimInit (
ASSERT_EFI_ERROR (Status);
//
// Only install PcdInfo PPI when PCD info content is present.
// Install GET_PCD_INFO_PPI and EFI_GET_PCD_INFO_PPI.
//
if (DataBase->PcdNameTableOffset != 0) {
//
// Install GET_PCD_INFO_PPI and EFI_GET_PCD_INFO_PPI.
//
Status = PeiServicesInstallPpi (&mPpiList2[0]);
ASSERT_EFI_ERROR (Status);
}
Status = PeiServicesInstallPpi (&mPpiList2[0]);
ASSERT_EFI_ERROR (Status);
return Status;
}
@@ -262,9 +257,24 @@ PeiPcdSetSku (
IN UINTN SkuId
)
{
PEI_PCD_DATABASE *PeiPcdDb;
SKU_ID *SkuIdTable;
UINTN Index;
GetPcdDatabase()->SystemSkuId = (SKU_ID) SkuId;
PeiPcdDb = GetPcdDatabase();
SkuIdTable = (SKU_ID *) ((UINT8 *) PeiPcdDb + PeiPcdDb->SkuIdTableOffset);
for (Index = 0; Index < SkuIdTable[0]; Index++) {
if (SkuId == SkuIdTable[Index + 1]) {
PeiPcdDb->SystemSkuId = (SKU_ID) SkuId;
return;
}
}
//
// Invalid input SkuId, the default SKU Id will be used for the system.
//
DEBUG ((EFI_D_INFO, "PcdPei - Invalid input SkuId, the default SKU Id will be used.\n"));
PeiPcdDb->SystemSkuId = (SKU_ID) 0;
return;
}