On 10/28/13 22:27, Jordan Justen wrote:
> Previously we would only search for MMIO regions that were also
> above every EfiGcdMemoryTypeReserved and EfiGcdMemoryTypeSystemMemory
> region.

Yes.

More verbosely, the previous logic does the following:
- finds the "bounding box" for MMIO regions,
- finds the maximum for non-MMIO regions (reserved / system RAM),
- removes the lower part of the "bounding box" that falls under the
  non-MMIO maximum,
- and the remaining bounding box is exported in
  \_SB.PCI0._CRS.DWORDMEMORY, ResourceProducer/PosDecode, meaning that
  the root bridge passes accesses to addresses in the "bounding box" to
  child devices.

>
> Now we just search for the largest EfiGcdMemoryTypeMemoryMappedIo
> region.

As far as I can see, the direct difference is:
- while previously the final "bounding box" could have holes (ie.
  EfiGcdMemoryTypeNonExistent) inside, and it could cover several MMIO
  regions, and it used to be above all non-MMIO ranges,
- now the range will be the largest one contiguous MMIO range, and it
  can be anywhere.

The new range may not be a subset of the former, clamped bounding box
(because a conventional RAM region could be located above it). It can be
both smaller (i) and greater (ii) than the previous bounding box.

(i) the bounding box can cover several MMIO ranges (with nonexistents
    in-between optionally)
(ii) possible eg. in the non-subset case

So, I have no idea about the consequences, but exporting one contiguous
MMIO range in _CRS (with no nonexistents inside, ever) does seem clean.

> This will allow us to mark the flash memory as a runtime memory
> region in order to allow runtime access of variables stored in
> flash.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com>
> Cc: Laszlo Ersek <ler...@redhat.com>
> ---
>  OvmfPkg/AcpiPlatformDxe/Qemu.c |   37 ++++++++++++-------------------------
>  1 file changed, 12 insertions(+), 25 deletions(-)
>
> diff --git a/OvmfPkg/AcpiPlatformDxe/Qemu.c b/OvmfPkg/AcpiPlatformDxe/Qemu.c
> index 8a6ecf7..cab3219 100644
> --- a/OvmfPkg/AcpiPlatformDxe/Qemu.c
> +++ b/OvmfPkg/AcpiPlatformDxe/Qemu.c
> @@ -1,7 +1,7 @@
>  /** @file
>    OVMF ACPI QEMU support
>
> -  Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR>
>
>    Copyright (C) 2012, Red Hat, Inc.
>
> @@ -232,16 +232,12 @@ PopulateFwData(
>
>    Status = gDS->GetMemorySpaceMap (&NumDesc, &AllDesc);
>    if (Status == EFI_SUCCESS) {
> -    UINT64 NonMmio32MaxExclTop;
> -    UINT64 Mmio32MinBase;
> -    UINT64 Mmio32MaxExclTop;
>      UINTN CurDesc;
> +    CONST EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Mmio32Desc;
>
>      Status = EFI_UNSUPPORTED;
>
> -    NonMmio32MaxExclTop = 0;
> -    Mmio32MinBase = BASE_4GB;
> -    Mmio32MaxExclTop = 0;
> +    Mmio32Desc = NULL;
>
>      for (CurDesc = 0; CurDesc < NumDesc; ++CurDesc) {
>        CONST EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Desc;
> @@ -253,21 +249,16 @@ PopulateFwData(
>        if (ExclTop <= BASE_4GB) {
>          switch (Desc->GcdMemoryType) {
>            case EfiGcdMemoryTypeNonExistent:
> -            break;
> -
>            case EfiGcdMemoryTypeReserved:
>            case EfiGcdMemoryTypeSystemMemory:
> -            if (NonMmio32MaxExclTop < ExclTop) {
> -              NonMmio32MaxExclTop = ExclTop;
> -            }
>              break;
>
>            case EfiGcdMemoryTypeMemoryMappedIo:
> -            if (Mmio32MinBase > Desc->BaseAddress) {
> -              Mmio32MinBase = Desc->BaseAddress;
> -            }
> -            if (Mmio32MaxExclTop < ExclTop) {
> -              Mmio32MaxExclTop = ExclTop;
> +            if (Mmio32Desc == NULL ||
> +                Desc->Length > Mmio32Desc->Length ||
> +                (Desc->Length == Mmio32Desc->Length &&
> +                 Desc->BaseAddress > Mmio32Desc->BaseAddress)) {
> +              Mmio32Desc = Desc;
>              }
>              break;

Seems to do what the commit message promises -- furthermore, it will
select the highest region if the largest size occurs at several bases.

>
> @@ -277,14 +268,10 @@ PopulateFwData(
>        }
>      }
>
> -    if (Mmio32MinBase < NonMmio32MaxExclTop) {
> -      Mmio32MinBase = NonMmio32MaxExclTop;
> -    }
> -
> -    if (Mmio32MinBase < Mmio32MaxExclTop) {
> -      FwData->PciWindow32.Base   = Mmio32MinBase;
> -      FwData->PciWindow32.End    = Mmio32MaxExclTop - 1;
> -      FwData->PciWindow32.Length = Mmio32MaxExclTop - Mmio32MinBase;
> +    if (Mmio32Desc != NULL) {
> +      FwData->PciWindow32.Base   = Mmio32Desc->BaseAddress;
> +      FwData->PciWindow32.End    = Mmio32Desc->BaseAddress + 
> Mmio32Desc->Length - 1;
> +      FwData->PciWindow32.Length = Mmio32Desc->Length;
>
>        FwData->PciWindow64.Base   = 0;
>        FwData->PciWindow64.End    = 0;
>

Reviewed-by: Laszlo Ersek <ler...@redhat.com>

--o--

  I also wanted to test the series at this patch (and compare the
  results to when the series is not applied). The guest I used is
  RHEL-6, because the boot animation of that guest (efifb) exposes the
  original _CRS problem well. Guest RAM: 5GB.

  Host: RHEL-6 (no KVM support for readonly memslots, and qemu is older
  as well) -- hence regression test.

  Unfortunately, the following ASSERT() fires:

    ASSERT /.../SecurityPkg/VariableAuthenticated/RuntimeDxe/Variable.c(3320): 
mNvVariableCache->Size == VariableStoreLength

  This error persists when I compile the series at patch #4 or at patch
  #8. Removing the /NvVars file from the EFI system partition in the
  guest doesn't help.

  ... After some debug patches, I think the problem is the following:
  the DSC file has a section under [PcdsFixedAtBuild] where four
  relevant PCDs get default values:

    gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xc000
    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0xc000
    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x2000
    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x10000

  The last three of these gets overridden at build time, in the FDF
  file. However, the first one, PcdVariableStoreSize, remains unchanged.

  On my host, the EMU variables are still used. In
  InitializeFvAndVariableStoreHeaders(), the Size member of the
  "variable FV header" is keyed off PcdVariableStoreSize.

  Then, in InitNonVolatileVariableStore()
  [SecurityPkg/VariableAuthenticated/RuntimeDxe/Variable.c], this data
  is copied into freshly allocated storage, and ultimately accessed as
  mNvVariableCache.

  However, PcdFlashNvStorageVariableSize is updated in the FDF at build
  time, and that's the PCD that VariableStoreLength below originates
  from:

    [...]
    Reserved variable store memory: 0xDFFD0000; size: 128kb
    [...]
    QEMU flash was not detected. Writable FVB is not being installed.
    [...]
    EMU Variable FVB Started
    EMU Variable FVB: Using pre-reserved block at DFFD0000
    EMU Variable FVB: Basic FV headers were invalid
    Installing FVB for EMU Variable support
    [...]
    InitNonVolatileVariableStore: NvStorageBase #1: 0xDFFD0000
    InitNonVolatileVariableStore: VariableStoreBase=0xDF834060
    InitNonVolatileVariableStore: NvStorageSize=0xE000
    InitNonVolatileVariableStore: FvHeader->HeaderLength=0x48
    InitNonVolatileVariableStore: VariableStoreLength=0xDFB8
    InitNonVolatileVariableStore: mNvVariableCache->Size=0xBFB8
    ASSERT 
/home/lacos/src/upstream/edk2-git-svn/SecurityPkg/VariableAuthenticated/RuntimeDxe/Variable.c(3333):
 mNvVariableCache->Size == VariableStoreLength
    [...]

  (The InitNonVolatileVariableStore entries before the ASSERT are from
  my debug patch.)

  That is, PcdVariableStoreSize remains static, as set in the DSC file,
  whereas PcdFlashNvStorageVariableSize is set dynamically at build
  time. The mismatch between the two triggers the assert.

  In my opinion, these variables are fully independent, and we shouldn't
  be looking at PcdVariableStoreSize *at all*. The ASSERT() is valid,
  the problem is that the EMU variable code abuses PcdVariableStoreSize
  in the role of PcdFlashNvStorageVariableSize. The attached patch seems
  to fix the problem for me (but it could easily be wrong, of course).

--o--

OK, so back to testing:

(a) The OVMF debug log changes:

    -ACPI PciWindow32: Base=0xE0000000 End=0xFEEFFFFF Length=0x1EF00000
    +ACPI PciWindow32: Base=0xE0000000 End=0xFBFFFFFF Length=0x1C000000

(b) The FWDT table (dumped with acpidump) changes accordingly:

    --- pre/FWDT.hex        2013-10-30 23:09:28.244990822 +0100
    +++ post/FWDT.hex       2013-10-31 00:44:22.517005582 +0100
    @@ -1,4 +1,4 @@
    -00000000  00 00 00 e0 00 00 00 00  ff ff ef fe 00 00 00 00  
|................|
    -00000010  00 00 f0 1e 00 00 00 00  00 00 00 00 00 00 00 00  
|................|
    +00000000  00 00 00 e0 00 00 00 00  ff ff ff fb 00 00 00 00  
|................|
    +00000010  00 00 00 1c 00 00 00 00  00 00 00 00 00 00 00 00  
|................|
     00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  
|................|
     00000030

(c) The guest dmesg changes like this:

     PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" 
and report a bug
     ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
     pci_root PNP0A03:00: host bridge window [io  0x0000-0x0cf7]
     pci_root PNP0A03:00: host bridge window [io  0x0d00-0xffff]
     pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff]
    -pci_root PNP0A03:00: host bridge window [mem 0xe0000000-0xfeefffff]
    +pci_root PNP0A03:00: host bridge window [mem 0xe0000000-0xfbffffff]
     PCI host bridge to bus 0000:00
     pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
     pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
     pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
    -pci_bus 0000:00: root bus resource [mem 0xe0000000-0xfeefffff]
    +pci_bus 0000:00: root bus resource [mem 0xe0000000-0xfbffffff]

(d) /proc/iomem:

    --- pre/iomem   2013-10-30 23:03:59.479997713 +0100
    +++ post/iomem  2013-10-31 00:44:33.047004153 +0100
    @@ -1,34 +1,34 @@
     00000000-00000fff : reserved
     00001000-0009ffff : System RAM
     000a0000-000bffff : PCI Bus 0000:00
     000f0000-000fffff : System ROM
    -00100000-ddc23fff : System RAM
    +00100000-ddc19fff : System RAM
       01000000-01526934 : Kernel code
       01526935-01c0f26f : Kernel data
       01d58000-0201e9a3 : Kernel bss
       03000000-0b0fffff : Crash kernel
    -ddc24000-ddc2bfff : reserved
    -ddc2c000-ddc41fff : System RAM
    -ddc42000-dddcefff : reserved
    +ddc1a000-ddc21fff : reserved
    +ddc22000-ddc37fff : System RAM
    +ddc38000-dddcefff : reserved
     dddcf000-df7fefff : System RAM
     df7ff000-df856fff : reserved
     df857000-df85efff : ACPI Tables
     df85f000-df862fff : ACPI Non-volatile Storage
     df863000-dffcffff : System RAM
     dffd0000-dfffffff : reserved
    -e0000000-feefffff : PCI Bus 0000:00
    +e0000000-fbffffff : PCI Bus 0000:00
       e0000000-e1ffffff : 0000:00:02.0
         e0000000-e023ffff : efifb
       e2000000-e2000fff : 0000:00:06.0
         e2000000-e2000fff : virtio-pci
       e2001000-e2001fff : 0000:00:04.0
         e2001000-e2001fff : virtio-pci
       e2002000-e2002fff : 0000:00:03.0
         e2002000-e2002fff : virtio-pci
       e2003000-e2003fff : 0000:00:02.0
       e2010000-e201ffff : 0000:00:02.0
       e2020000-e202ffff : 0000:00:03.0
    -  fec00000-fec003ff : IOAPIC 0
    -  fee00000-feefffff : pnp 00:05
    -    fee00000-fee00fff : Local APIC
    +fec00000-fec003ff : IOAPIC 0
    +fee00000-feefffff : pnp 00:05
    +  fee00000-fee00fff : Local APIC
     100000000

    Interestingly, this moves out IOAPIC 0 "from under" PCI Bus 0000:00,
    at least in this view. I'm not sure if that will have any
    consequence. The dmesg *diff* has nothing related to IOAPICs.

(e) The EFI frame buffer continues to work. The following section
    remains intact in the guest dmesg:

     efifb: probing for efifb
     efifb: framebuffer at 0xe0000000, mapped to 0xffffc90001780000, using 
2304k, total 2304k
     efifb: mode is 1024x768x24, linelength=3072, pages=1
     efifb: scrolling: redraw
     efifb: Truecolor: size=0:8:8:8, shift=0:16:8:0
     Console: switching to colour frame buffer device 128x48
     fb0: EFI VGA frame buffer device

So, I found no regressions in my usual environment (after fixing the
ASSERT() with the attached patch).

Tested-by: Laszlo Ersek <ler...@redhat.com>

Thanks,
Laszlo
From 21bca8f776faa15e2b573abea93061e219531466 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <ler...@redhat.com>
Date: Thu, 31 Oct 2013 00:31:16 +0100
Subject: [PATCH] OvmfPkg: EMU Variable: refer to correct PCD when determining
 NV storage size

According to the documentation in "MdeModulePkg/MdeModulePkg.dec", the PCD

  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize

gives

  The size of volatile buffer. This buffer is used to store VOLATILE
  attribute variable.

The EMU variable facility has nothing to do with volatile variables, it
emulates non-volatile variables. The storage size for those is given by

  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize

The patch updates all references in OvmfPkg, and corrects a dependent,
EMU-related comment in "MdeModulePkg/MdeModulePkg.dec" too.

OVMF's DSC files no longer refer to PcdVariableStoreSize -- the volatile
store size doesn't have to be kept in synch with the non-volatile store
size, hence the  global default in MdeModulePkg/MdeModulePkg.dec will do
for the former.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <ler...@redhat.com>
---
 OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.c   | 8 ++++----
 MdeModulePkg/MdeModulePkg.dec            | 2 +-
 OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf | 3 +--
 OvmfPkg/OvmfPkgIa32.dsc                  | 1 -
 OvmfPkg/OvmfPkgIa32X64.dsc               | 1 -
 OvmfPkg/OvmfPkgX64.dsc                   | 1 -
 OvmfPkg/PlatformPei/PlatformPei.inf      | 1 -
 7 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.c 
b/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.c
index 7a8beb3..45d187e 100644
--- a/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.c
+++ b/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.c
@@ -676,7 +676,7 @@ InitializeFvAndVariableStoreHeaders (
 
       // UINT32  Size;
       (
-        FixedPcdGet32 (PcdVariableStoreSize) -
+        FixedPcdGet32 (PcdFlashNvStorageVariableSize) -
         OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
       ),
 
@@ -745,7 +745,7 @@ InitializeFvAndVariableStoreHeaders (
 
       // UINT32  Size;
       (
-        FixedPcdGet32 (PcdVariableStoreSize) -
+        FixedPcdGet32 (PcdFlashNvStorageVariableSize) -
         OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
       ),
 
@@ -810,7 +810,7 @@ FvbInitialize (
   // Verify that the PCD's are set correctly.
   //
   if (
-       (PcdGet32 (PcdVariableStoreSize) +
+       (PcdGet32 (PcdFlashNvStorageVariableSize) +
         PcdGet32 (PcdFlashNvStorageFtwWorkingSize)
        ) >
        EMU_FVB_BLOCK_SIZE
@@ -867,7 +867,7 @@ FvbInitialize (
   //
   // Initialize the Fault Tolerant Write data area
   //
-  SubPtr = (VOID*) ((UINT8*) Ptr + PcdGet32 (PcdVariableStoreSize));
+  SubPtr = (VOID*) ((UINT8*) Ptr + PcdGet32 (PcdFlashNvStorageVariableSize));
   PcdSet32 (PcdFlashNvStorageFtwWorkingBase, (UINT32)(UINTN) SubPtr);
 
   //
diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index fc9f9cc..1128abb 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -721,7 +721,7 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdHelloWorldPrintString|L"UEFI Hello 
World!\n"|VOID*|0x40000004
 
   ## This PCD defines a reserved memory range for the EMU Variable driver's NV 
Variable Store
-  #  The range is valid if non-zero.  The memory range size must be 
PcdVariableStoreSize.
+  #  The range is valid if non-zero.  The memory range size must be 
PcdFlashNvStorageVariableSize.
   
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0|UINT64|0x40000008
 
   ## This PCD specifies whether the Single Root I/O virtualization support.
diff --git a/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf 
b/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
index 4d4827d..2a31662 100644
--- a/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
+++ b/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
@@ -57,12 +57,11 @@
   gEfiDevicePathProtocolGuid                    # PROTOCOL ALWAYS_PRODUCED
 
 [FixedPcd]
-  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
 
 [Pcd]
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index 40ea397..264fd86 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -279,7 +279,6 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x400
 !endif
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x8000
-  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xc000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0xc000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x2000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x10000
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index 106ba42..470cc07 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -284,7 +284,6 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x400
 !endif
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x8000
-  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xc000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0xc000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x2000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x10000
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 31690cc..563d130 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -284,7 +284,6 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x400
 !endif
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x8000
-  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xc000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0xc000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x2000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x10000
diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf 
b/OvmfPkg/PlatformPei/PlatformPei.inf
index 3d5cbbb..bfe333c 100644
--- a/OvmfPkg/PlatformPei/PlatformPei.inf
+++ b/OvmfPkg/PlatformPei/PlatformPei.inf
@@ -61,7 +61,6 @@
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize
   gUefiOvmfPkgTokenSpaceGuid.PcdAcpiPmBaseAddress
-  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved
-- 
1.8.3.1

------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to