]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Dxe/Pcd.c
MdeModulePkg: Add DriverHealthManagerDxe driver.
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Dxe / Pcd.c
index 6afcd18dff828063fdf1a5a87a926431ac30aac2..14d47849d85bea3155df1e12a27cbe4983eede26 100644 (file)
@@ -152,21 +152,16 @@ PcdDxeInit (
   ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
-  // Only install PcdInfo PROTOCOL when PCD info content is present. \r
+  // Install GET_PCD_INFO_PROTOCOL to handle dynamic type PCD\r
+  // Install EFI_GET_PCD_INFO_PROTOCOL to handle dynamicEx type PCD\r
   //\r
-  if (mPcdDatabase.DxeDb->PcdNameTableOffset != 0) {\r
-    //\r
-    // Install GET_PCD_INFO_PROTOCOL to handle dynamic type PCD\r
-    // Install EFI_GET_PCD_INFO_PROTOCOL to handle dynamicEx type PCD\r
-    //\r
-    Status = gBS->InstallMultipleProtocolInterfaces (\r
-                    &mPcdHandle,\r
-                    &gGetPcdInfoProtocolGuid,     &mGetPcdInfoInstance,\r
-                    &gEfiGetPcdInfoProtocolGuid,  &mEfiGetPcdInfoInstance,\r
-                    NULL\r
-                    );\r
-    ASSERT_EFI_ERROR (Status);\r
-  }\r
+  Status = gBS->InstallMultipleProtocolInterfaces (\r
+                  &mPcdHandle,\r
+                  &gGetPcdInfoProtocolGuid,     &mGetPcdInfoInstance,\r
+                  &gEfiGetPcdInfoProtocolGuid,  &mEfiGetPcdInfoInstance,\r
+                  NULL\r
+                  );\r
+  ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
   // Register callback function upon VariableLockProtocol\r
@@ -274,8 +269,22 @@ DxePcdSetSku (
   IN  UINTN         SkuId\r
   )\r
 {\r
-  mPcdDatabase.DxeDb->SystemSkuId = (SKU_ID) SkuId;\r
-  \r
+  SKU_ID    *SkuIdTable;\r
+  UINTN     Index;\r
+\r
+  SkuIdTable = (SKU_ID *) ((UINT8 *) mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->SkuIdTableOffset);\r
+  for (Index = 0; Index < SkuIdTable[0]; Index++) {\r
+    if (SkuId == SkuIdTable[Index + 1]) {\r
+      mPcdDatabase.DxeDb->SystemSkuId = (SKU_ID) SkuId;\r
+      return;\r
+    }\r
+  }\r
+\r
+  //\r
+  // Invalid input SkuId, the default SKU Id will be used for the system.\r
+  //\r
+  DEBUG ((EFI_D_INFO, "PcdDxe - Invalid input SkuId, the default SKU Id will be used.\n"));\r
+  mPcdDatabase.DxeDb->SystemSkuId = (SKU_ID) 0;\r
   return;\r
 }\r
 \r