]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmVirtPkg: add FDF definition for empty varstore
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Tue, 21 Jun 2016 10:23:43 +0000 (12:23 +0200)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 23 Jun 2016 14:07:38 +0000 (16:07 +0200)
Similar to how OVMF implements this, add a FD definition for the varstore
firmware volume and the FTW areas. The template was taken from the file
OvmfPkg/VarStore.fdf.inc, and subsequently modified to accommodate the
differences in NOR flash layout. This affects the FvLength, Checksum and
BlockMap[0] fields in the FV header, the Size field of the varstore header,
and the Crc and WriteQueueSize fields of the FTW header. The event log
region is not used by ArmVirtQemu, so it has been omitted.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
ArmVirtPkg/ArmVirtQemu.dsc
ArmVirtPkg/ArmVirtQemu.fdf
ArmVirtPkg/ArmVirtQemuKernel.dsc
ArmVirtPkg/ArmVirtQemuKernel.fdf
ArmVirtPkg/VarStore.fdf.inc [new file with mode: 0644]

index 10925c2bb414025cd772ea57f9843669983b3142..8a5306bde0d07bc37fd485e06a6fe7fa456559af 100644 (file)
   #\r
   gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|0\r
 \r
-  #\r
-  # NV Storage PCDs. Use base of 0x04000000 for NOR1\r
-  #\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x04000000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00040000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x04040000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00040000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x04080000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00040000\r
-\r
   # System Memory Base -- fixed at 0x4000_0000\r
   gArmTokenSpaceGuid.PcdSystemMemoryBase|0x40000000\r
 \r
index 422a2bf1f9a1596aa38428e18f25de1d3b832df4..ac2f1f17a042d6a27b941e61fac18cecdbd003cf 100644 (file)
@@ -69,6 +69,7 @@ DATA = {
 gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize\r
 FV = FVMAIN_COMPACT\r
 \r
+!include VarStore.fdf.inc\r
 \r
 ################################################################################\r
 #\r
index 0b4383214209a7d390b9e84db0b438d51c380440..52f1612179baf5bc9916308fdc5a85e58430e28a 100644 (file)
   #\r
   gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|0\r
 \r
-  #\r
-  # NV Storage PCDs. Use base of 0x04000000 for NOR1\r
-  #\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x04000000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00040000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x04040000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00040000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x04080000\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00040000\r
-\r
 [PcdsPatchableInModule.common]\r
   #\r
   # This will be overridden in the code\r
index 6db0668a882d3804caa44df58f33b8ad2f2a9216..f6dcbc1d54175977764e8c39ef026e0f9c29e8ab 100644 (file)
@@ -91,6 +91,7 @@ DATA = {
 gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize\r
 FV = FVMAIN_COMPACT\r
 \r
+!include VarStore.fdf.inc\r
 \r
 ################################################################################\r
 #\r
diff --git a/ArmVirtPkg/VarStore.fdf.inc b/ArmVirtPkg/VarStore.fdf.inc
new file mode 100644 (file)
index 0000000..46852ff
--- /dev/null
@@ -0,0 +1,82 @@
+## @file\r
+#  FDF include file with FD definition that defines an empty variable store.\r
+#\r
+#  Copyright (c) 2016, Linaro, Ltd. All rights reserved.<BR>\r
+#  Copyright (C) 2014, Red Hat, Inc.<BR>\r
+#  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+#\r
+#  This program and the accompanying materials are licensed and made available\r
+#  under the terms and conditions of the BSD License which accompanies this\r
+#  distribution. The full text of the license may be found at\r
+#  http://opensource.org/licenses/bsd-license.php\r
+#\r
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR\r
+#  IMPLIED.\r
+#\r
+##\r
+\r
+[FD.QEMU_VARS]\r
+BaseAddress   = 0x04000000\r
+Size          = 0xc0000\r
+ErasePolarity = 1\r
+BlockSize     = 0x40000\r
+NumBlocks     = 3\r
+\r
+\r
+0x00000000|0x00040000\r
+gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize\r
+#NV_VARIABLE_STORE\r
+DATA = {\r
+  ## This is the EFI_FIRMWARE_VOLUME_HEADER\r
+  # ZeroVector []\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  # FileSystemGuid: gEfiSystemNvDataFvGuid         =\r
+  #   { 0xFFF12B8D, 0x7696, 0x4C8B,\r
+  #     { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}\r
+  0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C,\r
+  0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50,\r
+  # FvLength: 0xC0000\r
+  0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  # Signature "_FVH"       # Attributes\r
+  0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,\r
+  # HeaderLength # CheckSum # ExtHeaderOffset #Reserved #Revision\r
+  0x48, 0x00, 0x28, 0x09, 0x00, 0x00, 0x00, 0x02,\r
+  # Blockmap[0]: 0x3 Blocks * 0x40000 Bytes / Block\r
+  0x3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,\r
+  # Blockmap[1]: End\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  ## This is the VARIABLE_STORE_HEADER\r
+  # It is compatible with SECURE_BOOT_ENABLE == FALSE as well.\r
+  # Signature: gEfiAuthenticatedVariableGuid =\r
+  #   { 0xaaf32c78, 0x947b, 0x439a,\r
+  #     { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 }}\r
+  0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43,\r
+  0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92,\r
+  # Size: 0x40000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize) -\r
+  #         0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) = 0x3ffb8\r
+  # This can speed up the Variable Dispatch a bit.\r
+  0xB8, 0xFF, 0x03, 0x00,\r
+  # FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32\r
+  0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+}\r
+\r
+\r
+0x00040000|0x00040000\r
+gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize\r
+#NV_FTW_WORKING\r
+DATA = {\r
+  # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid         =\r
+  #  { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65,  0x0, 0xfd, 0x9f, 0x1b, 0x95 }}\r
+  0x2b, 0x29, 0x58, 0x9e, 0x68, 0x7c, 0x7d, 0x49,\r
+  0xa0, 0xce, 0x65,  0x0, 0xfd, 0x9f, 0x1b, 0x95,\r
+  # Crc:UINT32            #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved\r
+  0x5b, 0xe7, 0xc6, 0x86, 0xFE, 0xFF, 0xFF, 0xFF,\r
+  # WriteQueueSize: UINT64\r
+  0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00\r
+}\r
+\r
+0x00080000|0x00040000\r
+gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize\r
+#NV_FTW_SPARE\r