From patchwork Tue Jul 22 10:36:04 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laszlo Ersek X-Patchwork-Id: 34036 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-pa0-f70.google.com (mail-pa0-f70.google.com [209.85.220.70]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 2853120540 for ; Tue, 22 Jul 2014 10:36:31 +0000 (UTC) Received: by mail-pa0-f70.google.com with SMTP id lf10sf64859672pab.9 for ; Tue, 22 Jul 2014 03:36:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:date:message-id:in-reply-to :references:subject:precedence:reply-to:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:mime-version :errors-to:x-original-sender:x-original-authentication-results :mailing-list:content-type:content-transfer-encoding; bh=c713B9wGQ28GWjaTAs2H0TBTvPzQxV/uKUwCPNHDLOg=; b=Px1FD8P7ccDAK3fHLWgldmmXUQBazxkpWev10S9vHkjPXYCNqsy1qjk+QXEmKE/5Tz P7pr+vrleTanYVT1K+QNlQDSXlNubDe1KtfkbJiFtZrk4gT8bKz8tAHxDrrEAJKqHZ3B Y4ABsl1ERCgqqDEMY8CGuWwsXmct2YKnrNdBpHJmEFbfzMPFDMOnQ0sLNiWWU4WipzlV O08tVaRqgBb6EjDhx+V5wTcJZGdvwg0450cWiseJFywW3TRql0XgwqFYA+dYTYBilnm1 9KP5XcK44QB9AiXKLfI0mJzI7QXQhgLPLHZKM1OsXd8DKkl71rjmUhIl7UBZN7jopFs+ 1/zg== X-Gm-Message-State: ALoCoQn+Bl7aw5gniDWY/GTxrfB6cWC8TH2xf1iLFU07ULfdpnO7e4j1I1F0IsuBmYKY3y98hv0m X-Received: by 10.68.135.99 with SMTP id pr3mr10482974pbb.9.1406025388363; Tue, 22 Jul 2014 03:36:28 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.29.55 with SMTP id a52ls2282455qga.14.gmail; Tue, 22 Jul 2014 03:36:28 -0700 (PDT) X-Received: by 10.52.248.209 with SMTP id yo17mr17859457vdc.60.1406025388128; Tue, 22 Jul 2014 03:36:28 -0700 (PDT) Received: from mail-vc0-f172.google.com (mail-vc0-f172.google.com [209.85.220.172]) by mx.google.com with ESMTPS id m2si13591836vek.107.2014.07.22.03.36.28 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 22 Jul 2014 03:36:28 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.172 as permitted sender) client-ip=209.85.220.172; Received: by mail-vc0-f172.google.com with SMTP id im17so14710378vcb.3 for ; Tue, 22 Jul 2014 03:36:28 -0700 (PDT) X-Received: by 10.221.34.13 with SMTP id sq13mr38730611vcb.16.1406025387926; Tue, 22 Jul 2014 03:36:27 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.221.37.5 with SMTP id tc5csp184548vcb; Tue, 22 Jul 2014 03:36:27 -0700 (PDT) X-Received: by 10.51.17.34 with SMTP id gb2mr14839033igd.16.1406025387290; Tue, 22 Jul 2014 03:36:27 -0700 (PDT) Received: from lists.sourceforge.net (lists.sourceforge.net. [216.34.181.88]) by mx.google.com with ESMTPS id fe16si927081icb.60.2014.07.22.03.36.26 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Tue, 22 Jul 2014 03:36:27 -0700 (PDT) Received-SPF: pass (google.com: domain of edk2-devel-bounces@lists.sourceforge.net designates 216.34.181.88 as permitted sender) client-ip=216.34.181.88; Received: from localhost ([127.0.0.1] helo=sfs-ml-2.v29.ch3.sourceforge.com) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1X9XQh-0006O9-9N; Tue, 22 Jul 2014 10:36:19 +0000 Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1X9XQg-0006O4-75 for edk2-devel@lists.sourceforge.net; Tue, 22 Jul 2014 10:36:18 +0000 Received-SPF: pass (sog-mx-1.v43.ch3.sourceforge.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=lersek@redhat.com; helo=mx1.redhat.com; Received: from mx1.redhat.com ([209.132.183.28]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1X9XQe-0001li-Oi for edk2-devel@lists.sourceforge.net; Tue, 22 Jul 2014 10:36:18 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6MAa9WK028384 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 22 Jul 2014 06:36:10 -0400 Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-75.ams2.redhat.com [10.36.116.75]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6MAa6XO012183 for ; Tue, 22 Jul 2014 06:36:09 -0400 From: Laszlo Ersek To: edk2-devel@lists.sourceforge.net Date: Tue, 22 Jul 2014 12:36:04 +0200 Message-Id: <1406025364-18845-3-git-send-email-lersek@redhat.com> In-Reply-To: <1406025364-18845-1-git-send-email-lersek@redhat.com> References: <1406025364-18845-1-git-send-email-lersek@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Spam-Score: -1.5 (-) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain X-Headers-End: 1X9XQe-0001li-Oi Subject: [edk2] [PATCH v3 2/2] OvmfPkg: build OVMF_VARS.fd, OVMF_CODE.fd, OVMF.fd X-BeenThere: edk2-devel@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list Reply-To: edk2-devel@lists.sourceforge.net List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.sourceforge.net X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: lersek@redhat.com X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.172 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 OVMF_VARS.fd and OVMF_CODE.fd split the variable store and the firmware code in separate files. The PCDs' values continue to depend only on FD_SIZE_1MB vs. FD_SIZE_2MB. With the split files, it must be ensured on the QEMU command line that OVMF_VARS.fd and OVMF_CODE.fd be contiguously mapped so that they end exactly at 4GB. See QEMU commit 637a5acb (first released in v2.0.0). In this patch we must take care to assign each PCD only once. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek --- Notes: v3: - introduce FVMAIN_SIZE, SECFV_OFFSET, and SECFV_SIZE macros in order to collapse remaining ifdef $(FD_SIZE_1MB) chunks OvmfPkg/OvmfPkg.fdf.inc | 63 ++++++++++++++++++++++++++++++++++++++++++++++ OvmfPkg/OvmfPkgIa32.fdf | 54 ++++++++++++++++++++++++--------------- OvmfPkg/OvmfPkgIa32X64.fdf | 54 ++++++++++++++++++++++++--------------- OvmfPkg/OvmfPkgX64.fdf | 54 ++++++++++++++++++++++++--------------- OvmfPkg/VarStore.fdf.inc | 5 ---- 5 files changed, 165 insertions(+), 65 deletions(-) create mode 100644 OvmfPkg/OvmfPkg.fdf.inc diff --git a/OvmfPkg/OvmfPkg.fdf.inc b/OvmfPkg/OvmfPkg.fdf.inc new file mode 100644 index 0000000..6c0dc54 --- /dev/null +++ b/OvmfPkg/OvmfPkg.fdf.inc @@ -0,0 +1,63 @@ +## @file +# FDF include file that defines the main macros and sets the dependent PCDs. +# +# Copyright (C) 2014, Red Hat, Inc. +# +# Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
+# +# 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 +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR +# IMPLIED. +# +## + +DEFINE BLOCK_SIZE = 0x1000 +DEFINE VARS_SIZE = 0x20000 +DEFINE VARS_BLOCKS = 0x20 + +!ifdef $(FD_SIZE_1MB) + +DEFINE FW_BASE_ADDRESS = 0xFFF00000 +DEFINE FW_SIZE = 0x00100000 +DEFINE FW_BLOCKS = 0x100 +DEFINE CODE_BASE_ADDRESS = 0xFFF20000 +DEFINE CODE_SIZE = 0x000E0000 +DEFINE CODE_BLOCKS = 0xE0 +DEFINE FVMAIN_SIZE = 0x000CC000 +DEFINE SECFV_OFFSET = 0x000EC000 +DEFINE SECFV_SIZE = 0x14000 + +!else + +DEFINE FW_BASE_ADDRESS = 0xFFE00000 +DEFINE FW_SIZE = 0x00200000 +DEFINE FW_BLOCKS = 0x200 +DEFINE CODE_BASE_ADDRESS = 0xFFE20000 +DEFINE CODE_SIZE = 0x001E0000 +DEFINE CODE_BLOCKS = 0x1E0 +DEFINE FVMAIN_SIZE = 0x001AC000 +DEFINE SECFV_OFFSET = 0x001CC000 +DEFINE SECFV_SIZE = 0x34000 + +!endif + +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress = $(FW_BASE_ADDRESS) +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize = $(FW_SIZE) +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize = $(BLOCK_SIZE) + +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase = $(FW_BASE_ADDRESS) +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize = 0xE000 + +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize = $(BLOCK_SIZE) + +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize = $(BLOCK_SIZE) + +SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize = 0x10000 diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf index f47655c..243cff3 100644 --- a/OvmfPkg/OvmfPkgIa32.fdf +++ b/OvmfPkg/OvmfPkgIa32.fdf @@ -28,38 +28,52 @@ DEFINE FD_SIZE_1MB= !endif !endif -!ifdef $(FD_SIZE_1MB) -[FD.OVMF] -BaseAddress = 0xFFF00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress -Size = 0x00100000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize -ErasePolarity = 1 -BlockSize = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize -NumBlocks = 0x100 -!else +!include OvmfPkg.fdf.inc + +# +# Build the variable store and the firmware code as one unified flash device +# image. +# [FD.OVMF] -BaseAddress = 0xFFE00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress -Size = 0x00200000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize +BaseAddress = $(FW_BASE_ADDRESS) +Size = $(FW_SIZE) ErasePolarity = 1 -BlockSize = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize -NumBlocks = 0x200 -!endif +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(FW_BLOCKS) !include VarStore.fdf.inc -!ifdef $(FD_SIZE_1MB) -0x00020000|0x000CC000 +$(VARS_SIZE)|$(FVMAIN_SIZE) FV = FVMAIN_COMPACT -0x000EC000|0x14000 +$(SECFV_OFFSET)|$(SECFV_SIZE) FV = SECFV -!else -0x00020000|0x001AC000 +# +# Build the variable store and the firmware code as separate flash device +# images. +# +[FD.OVMF_VARS] +BaseAddress = $(FW_BASE_ADDRESS) +Size = $(VARS_SIZE) +ErasePolarity = 1 +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(VARS_BLOCKS) + +!include VarStore.fdf.inc + +[FD.OVMF_CODE] +BaseAddress = $(CODE_BASE_ADDRESS) +Size = $(CODE_SIZE) +ErasePolarity = 1 +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(CODE_BLOCKS) + +0x00000000|$(FVMAIN_SIZE) FV = FVMAIN_COMPACT -0x001CC000|0x34000 +$(FVMAIN_SIZE)|$(SECFV_SIZE) FV = SECFV -!endif ################################################################################ diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf index dd705a8..67c5f9c 100644 --- a/OvmfPkg/OvmfPkgIa32X64.fdf +++ b/OvmfPkg/OvmfPkgIa32X64.fdf @@ -28,38 +28,52 @@ DEFINE FD_SIZE_1MB= !endif !endif -!ifdef $(FD_SIZE_1MB) -[FD.OVMF] -BaseAddress = 0xFFF00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress -Size = 0x00100000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize -ErasePolarity = 1 -BlockSize = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize -NumBlocks = 0x100 -!else +!include OvmfPkg.fdf.inc + +# +# Build the variable store and the firmware code as one unified flash device +# image. +# [FD.OVMF] -BaseAddress = 0xFFE00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress -Size = 0x00200000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize +BaseAddress = $(FW_BASE_ADDRESS) +Size = $(FW_SIZE) ErasePolarity = 1 -BlockSize = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize -NumBlocks = 0x200 -!endif +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(FW_BLOCKS) !include VarStore.fdf.inc -!ifdef $(FD_SIZE_1MB) -0x00020000|0x000CC000 +$(VARS_SIZE)|$(FVMAIN_SIZE) FV = FVMAIN_COMPACT -0x000EC000|0x14000 +$(SECFV_OFFSET)|$(SECFV_SIZE) FV = SECFV -!else -0x00020000|0x001AC000 +# +# Build the variable store and the firmware code as separate flash device +# images. +# +[FD.OVMF_VARS] +BaseAddress = $(FW_BASE_ADDRESS) +Size = $(VARS_SIZE) +ErasePolarity = 1 +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(VARS_BLOCKS) + +!include VarStore.fdf.inc + +[FD.OVMF_CODE] +BaseAddress = $(CODE_BASE_ADDRESS) +Size = $(CODE_SIZE) +ErasePolarity = 1 +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(CODE_BLOCKS) + +0x00000000|$(FVMAIN_SIZE) FV = FVMAIN_COMPACT -0x001CC000|0x34000 +$(FVMAIN_SIZE)|$(SECFV_SIZE) FV = SECFV -!endif ################################################################################ diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf index 6ec8e88..1b029b8 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -28,38 +28,52 @@ DEFINE FD_SIZE_1MB= !endif !endif -!ifdef $(FD_SIZE_1MB) -[FD.OVMF] -BaseAddress = 0xFFF00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress -Size = 0x00100000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize -ErasePolarity = 1 -BlockSize = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize -NumBlocks = 0x100 -!else +!include OvmfPkg.fdf.inc + +# +# Build the variable store and the firmware code as one unified flash device +# image. +# [FD.OVMF] -BaseAddress = 0xFFE00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress -Size = 0x00200000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize +BaseAddress = $(FW_BASE_ADDRESS) +Size = $(FW_SIZE) ErasePolarity = 1 -BlockSize = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize -NumBlocks = 0x200 -!endif +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(FW_BLOCKS) !include VarStore.fdf.inc -!ifdef $(FD_SIZE_1MB) -0x00020000|0x000CC000 +$(VARS_SIZE)|$(FVMAIN_SIZE) FV = FVMAIN_COMPACT -0x000EC000|0x14000 +$(SECFV_OFFSET)|$(SECFV_SIZE) FV = SECFV -!else -0x00020000|0x001AC000 +# +# Build the variable store and the firmware code as separate flash device +# images. +# +[FD.OVMF_VARS] +BaseAddress = $(FW_BASE_ADDRESS) +Size = $(VARS_SIZE) +ErasePolarity = 1 +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(VARS_BLOCKS) + +!include VarStore.fdf.inc + +[FD.OVMF_CODE] +BaseAddress = $(CODE_BASE_ADDRESS) +Size = $(CODE_SIZE) +ErasePolarity = 1 +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(CODE_BLOCKS) + +0x00000000|$(FVMAIN_SIZE) FV = FVMAIN_COMPACT -0x001CC000|0x34000 +$(FVMAIN_SIZE)|$(SECFV_SIZE) FV = SECFV -!endif ################################################################################ diff --git a/OvmfPkg/VarStore.fdf.inc b/OvmfPkg/VarStore.fdf.inc index 10a9258..2ea64c6 100644 --- a/OvmfPkg/VarStore.fdf.inc +++ b/OvmfPkg/VarStore.fdf.inc @@ -17,7 +17,6 @@ ## 0x00000000|0x0000e000 -gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize #NV_VARIABLE_STORE DATA = { ## This is the EFI_FIRMWARE_VOLUME_HEADER @@ -63,10 +62,8 @@ DATA = { 0x0000e000|0x00001000 #NV_EVENT_LOG -gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize 0x0000f000|0x00001000 -gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize #NV_FTW_WORKING DATA = { # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid = @@ -81,5 +78,3 @@ DATA = { 0x00010000|0x00010000 #NV_FTW_SPARE -gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize -