]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add in code to convert the Default VarStore name to be L"Setup" based on Framework...
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 16 Dec 2008 05:27:24 +0000 (05:27 +0000)
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 16 Dec 2008 05:27:24 +0000 (05:27 +0000)
VARSTORE ID of 0 for Buffer Storage Type Storage is defined as invalid in UEFI 2.1 HII. VARSTORE ID
0 is the default VarStore ID for storage without explicit declaration in Framework HII 0.92. EDK II UEFI VFR compiler
in compatible mode will assign 0x0001 as UEFI VARSTORE ID to this default storage id in Framework VFR without
VARSTORE declaration.

In addition, the Name of Default VarStore is assumed to be L"Setup" for those storage without explicit VARSTORE declaration in the formset
by Framework HII. EDK II UEFI VFR compiler in compatible mode hard-coded L"Setup" as VARSTORE name.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7040 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/UefiIfrDefault.c
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/Utility.c

index b2f35eb69a2f0e577b2d8432f0281f5f6f13f4ff..64a6b3b4330b502f9fa42be507fd6b8307644b2b 100644 (file)
@@ -55,13 +55,16 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 \r
 //\r
-// VARSTORE ID of 0 for Buffer Storage Type Storage is reserved in UEFI IFR form. But VARSTORE ID\r
-// 0 in Framework IFR is the default VarStore ID for storage without explicit declaration. So we have\r
-// to reseved 0x0001 in UEFI VARSTORE ID to represetn default storage id in Framework IFR.\r
-// Framework VFR has to be ported or pre-processed to change the default VARSTORE to a VARSTORE\r
-// with ID equal to 0x0001.\r
+// VARSTORE ID of 0 for Buffer Storage Type Storage is defined as invalid in UEFI 2.1 HII. VARSTORE ID\r
+// 0 is the default VarStore ID for storage without explicit declaration in Framework HII 0.92. EDK II UEFI VFR compiler\r
+// in compatible mode will assign 0x0001 as UEFI VARSTORE ID to this default storage id in Framework VFR without\r
+// VARSTORE declaration.\r
+// \r
+// In addition, the Name of Default VarStore is assumed to be L"Setup" for those storage without explicit VARSTORE declaration in the formset\r
+// by Framework HII. EDK II UEFI VFR compiler in compatible mode hard-coded L"Setup" as VARSTORE name.\r
 //\r
 #define FRAMEWORK_RESERVED_VARSTORE_ID 0x0001\r
+#define FRAMEWORK_RESERVED_VARSTORE_NAME L"Setup"\r
 \r
 \r
 #pragma pack (1)\r
index 34d6cba6f878aab9176130596574e7ae7d4aa43e..4b190477f17c1b6559d19865e5409cadd9f28701 100644 (file)
 \r
 **/\r
 \r
-\r
-#include <FrameworkDxe.h>\r
-\r
-#include <Protocol/FrameworkHii.h>\r
-#include <Protocol/HiiDatabase.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-\r
 #include "HiiDatabase.h"\r
 #include "UefiIfrParser.h"\r
 #include "UefiIfrDefault.h"\r
@@ -36,6 +24,8 @@ extern CONST EFI_HII_IMAGE_PROTOCOL               *mHiiImageProtocol;
 extern CONST EFI_HII_STRING_PROTOCOL              *mHiiStringProtocol;\r
 extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL      *mHiiConfigRoutingProtocol;\r
 \r
+CHAR16 FrameworkReservedVarstoreName[] = FRAMEWORK_RESERVED_VARSTORE_NAME;\r
+\r
 /**\r
   Set the data position at Offset with Width in Node->Buffer based \r
   the value passed in.\r
@@ -452,7 +442,14 @@ UefiDefaultsToFwDefaults (
 \r
     if (Node->DefaultId == DefaultId) {\r
       Size += Node->Size;\r
-      Size += StrSize (Node->Name);\r
+      if ((Node->StoreId == UefiFormSetDefaultVarStoreId) && (StrCmp (FrameworkReservedVarstoreName, Node->Name) != 0)) {\r
+        //    The name of default VARSTORE with a Explicit declaration statement will be updated to L"Setup" to make sure\r
+        //    the Framework HII Setup module will run correctly. Framework HII Setup module always assumed that default\r
+        //    VARSTORE to have L"Setup" as name, Formset GUID as GUID. \r
+        Size += StrSize (FrameworkReservedVarstoreName);\r
+      } else {\r
+        Size += StrSize (Node->Name);\r
+      }\r
 \r
       Count++;\r
     }\r
@@ -481,7 +478,6 @@ UefiDefaultsToFwDefaults (
     Size = 0;    \r
     if (Node->DefaultId == DefaultId) {\r
       Size += Node->Size;\r
-      Size += StrSize (Node->Name);\r
       Size += sizeof (EFI_HII_VARIABLE_PACK);      \r
 \r
       //\r
@@ -489,20 +485,28 @@ UefiDefaultsToFwDefaults (
       // So the default storage of Var Store in VFR from a Framework module \r
       // should be translated to the default Varstore ID.\r
       //\r
-      if (Node->StoreId == UefiFormSetDefaultVarStoreId) {\r
+      if (Node->StoreId == UefiFormSetDefaultVarStoreId && (StrCmp (FrameworkReservedVarstoreName, Node->Name) != 0)) {\r
+        //    The name of default VARSTORE with a Explicit declaration statement will be updated to L"Setup" to make sure\r
+        //    the Framework HII Setup module will run correctly. Framework HII Setup module always assumed that default\r
+        //    VARSTORE to have L"Setup" as name, Formset GUID as GUID. \r
         Pack->VariableId = 0;\r
+        Pack->VariableNameLength = (UINT32) StrSize (FrameworkReservedVarstoreName);\r
+        CopyMem ((UINT8 *) Pack + sizeof (EFI_HII_VARIABLE_PACK), FrameworkReservedVarstoreName, StrSize (FrameworkReservedVarstoreName));\r
+        DEBUG ((EFI_D_INFO, "VarstoreID: %x; Name: %s -> %s.\n", UefiFormSetDefaultVarStoreId, Node->Name, FrameworkReservedVarstoreName));\r
       } else {\r
         Pack->VariableId = Node->StoreId;\r
+        Pack->VariableNameLength = (UINT32) StrSize (Node->Name);\r
+        CopyMem ((UINT8 *) Pack + sizeof (EFI_HII_VARIABLE_PACK), Node->Name, StrSize (Node->Name));\r
       }\r
+\r
+      Size += Pack->VariableNameLength;\r
       //\r
       // Initialize EFI_HII_VARIABLE_PACK\r
       //\r
       Pack->Header.Type   = 0;\r
       Pack->Header.Length = (UINT32) Size;\r
-      Pack->VariableNameLength = (UINT32) StrSize (Node->Name);\r
       CopyMem (&Pack->VariableGuid, &Node->Guid, sizeof (EFI_GUID));\r
       \r
-      CopyMem ((UINT8 *) Pack + sizeof (EFI_HII_VARIABLE_PACK), Node->Name, StrSize (Node->Name));\r
       CopyMem ((UINT8 *) Pack + sizeof (EFI_HII_VARIABLE_PACK) + Pack->VariableNameLength, Node->Buffer, Node->Size);\r
 \r
       Size += sizeof (EFI_HII_VARIABLE_PACK_LIST);\r
index ca5ecbf0b6134178c54fce3a8e915bd414712af0..a18ef0aa099ecd9b811660073031782b6f565425 100644 (file)
@@ -416,9 +416,12 @@ GetFormsetDefaultVarstoreId (
   while (!IsNull (&FormSet->StorageListHead, StorageList)) {\r
     Storage = FORMSET_STORAGE_FROM_LINK (StorageList);\r
 \r
-    DEBUG ((EFI_D_INFO, "FormSet %g: Found Varstore ID %x\n", &FormSet->Guid, Storage->VarStoreId));\r
+    DEBUG ((EFI_D_INFO, "FormSet %g: Found Varstore ID %x Name %s Size 0x%x\n", &FormSet->Guid, Storage->VarStoreId, Storage->Name, Storage->Size));\r
 \r
     if (Storage->VarStoreId == FRAMEWORK_RESERVED_VARSTORE_ID) {\r
+      //\r
+      // 1) If VarStore ID of FRAMEWORK_RESERVED_VARSTORE_ID (0x01) is found, Var Store ID is used.\r
+      //\r
       FormSet->DefaultVarStoreId = FRAMEWORK_RESERVED_VARSTORE_ID;\r
       break;\r
     }\r
@@ -427,6 +430,11 @@ GetFormsetDefaultVarstoreId (
   }\r
 \r
   if (FormSet->DefaultVarStoreId != FRAMEWORK_RESERVED_VARSTORE_ID) {\r
+    //\r
+    // \r
+    // 2) If VarStore ID of FRAMEWORK_RESERVED_VARSTORE_ID is not found, First Var Store ID is used \r
+    //   as the default Var Store ID.\r
+    //\r
     StorageList = GetFirstNode (&FormSet->StorageListHead);\r
     if (!IsNull (&FormSet->StorageListHead, StorageList)) {\r
       Storage = FORMSET_STORAGE_FROM_LINK (StorageList);\r