public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection
@ 2021-12-08  7:01 Gerd Hoffmann
  2021-12-08  7:01 ` [PATCH v4 1/3] OvmfPkg/PlatformPei: ScanOrAdd64BitE820Ram improvements Gerd Hoffmann
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Gerd Hoffmann @ 2021-12-08  7:01 UTC (permalink / raw)
  To: devel
  Cc: Philippe Mathieu-Daudé, Ard Biesheuvel, Pawel Polawski,
	Jordan Justen, Jiewen Yao, Gerd Hoffmann

Don't use cmos for memory detection if possible.
qemu provides the etc/e820 firmware config file
as alternative since 2013.

v4:
 - uncrustify & rebase to latest master.

v3:
 - fix CI failure.

v2:
 - fix lowmem detection.
 - pick up review tags.
 - add rfc patch to completely drop cmos support.

Gerd Hoffmann (3):
  OvmfPkg/PlatformPei: ScanOrAdd64BitE820Ram improvements
  OvmfPkg/PlatformPei: prefer etc/e820 for memory detection
  RFC: OvmfPkg/PlatformPei: stop using cmos for memory detection

 OvmfPkg/PlatformPei/MemDetect.c | 88 ++++++++++++---------------------
 1 file changed, 31 insertions(+), 57 deletions(-)

-- 
2.33.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v4 1/3] OvmfPkg/PlatformPei: ScanOrAdd64BitE820Ram improvements
  2021-12-08  7:01 [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
@ 2021-12-08  7:01 ` Gerd Hoffmann
  2021-12-08  7:01 ` [PATCH v4 2/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Gerd Hoffmann @ 2021-12-08  7:01 UTC (permalink / raw)
  To: devel
  Cc: Philippe Mathieu-Daudé, Ard Biesheuvel, Pawel Polawski,
	Jordan Justen, Jiewen Yao, Gerd Hoffmann

Add a bool parameter to ScanOrAdd64BitE820Ram to explicitly specify
whenever ScanOrAdd64BitE820Ram should add HOBs for high memory (above
4G) or scan only.

Also add a lowmem parameter so ScanOrAdd64BitE820Ram
can report the memory size below 4G.

This allows a more flexible usage of ScanOrAdd64BitE820Ram,
a followup patch will use it for all memory detection.

No functional change.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3593
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>
---
 OvmfPkg/PlatformPei/MemDetect.c | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c
index 3f59a1ac79f6..912889ab9b75 100644
--- a/OvmfPkg/PlatformPei/MemDetect.c
+++ b/OvmfPkg/PlatformPei/MemDetect.c
@@ -216,6 +216,8 @@ QemuUc32BaseInitialization (
 STATIC
 EFI_STATUS
 ScanOrAdd64BitE820Ram (
+  IN BOOLEAN  AddHighHob,
+  OUT UINT64  *LowMemory OPTIONAL,
   OUT UINT64  *MaxAddress OPTIONAL
   )
 {
@@ -234,6 +236,10 @@ ScanOrAdd64BitE820Ram (
     return EFI_PROTOCOL_ERROR;
   }
 
+  if (LowMemory != NULL) {
+    *LowMemory = 0;
+  }
+
   if (MaxAddress != NULL) {
     *MaxAddress = BASE_4GB;
   }
@@ -249,10 +255,8 @@ ScanOrAdd64BitE820Ram (
       E820Entry.Length,
       E820Entry.Type
       ));
-    if ((E820Entry.Type == EfiAcpiAddressRangeMemory) &&
-        (E820Entry.BaseAddr >= BASE_4GB))
-    {
-      if (MaxAddress == NULL) {
+    if (E820Entry.Type == EfiAcpiAddressRangeMemory) {
+      if (AddHighHob && (E820Entry.BaseAddr >= BASE_4GB)) {
         UINT64  Base;
         UINT64  End;
 
@@ -272,11 +276,13 @@ ScanOrAdd64BitE820Ram (
             End
             ));
         }
-      } else {
+      }
+
+      if (MaxAddress || LowMemory) {
         UINT64  Candidate;
 
         Candidate = E820Entry.BaseAddr + E820Entry.Length;
-        if (Candidate > *MaxAddress) {
+        if (MaxAddress && (Candidate > *MaxAddress)) {
           *MaxAddress = Candidate;
           DEBUG ((
             DEBUG_VERBOSE,
@@ -285,6 +291,16 @@ ScanOrAdd64BitE820Ram (
             *MaxAddress
             ));
         }
+
+        if (LowMemory && (Candidate > *LowMemory) && (Candidate < BASE_4GB)) {
+          *LowMemory = Candidate;
+          DEBUG ((
+            DEBUG_VERBOSE,
+            "%a: LowMemory=0x%Lx\n",
+            __FUNCTION__,
+            *LowMemory
+            ));
+        }
       }
     }
   }
@@ -369,7 +385,7 @@ GetFirstNonAddress (
   // Otherwise, get the flat size of the memory above 4GB from the CMOS (which
   // can only express a size smaller than 1TB), and add it to 4GB.
   //
-  Status = ScanOrAdd64BitE820Ram (&FirstNonAddress);
+  Status = ScanOrAdd64BitE820Ram (FALSE, NULL, &FirstNonAddress);
   if (EFI_ERROR (Status)) {
     FirstNonAddress = BASE_4GB + GetSystemMemorySizeAbove4gb ();
   }
@@ -802,7 +818,7 @@ QemuInitializeRam (
     // entries. Otherwise, create a single memory HOB with the flat >=4GB
     // memory size read from the CMOS.
     //
-    Status = ScanOrAdd64BitE820Ram (NULL);
+    Status = ScanOrAdd64BitE820Ram (TRUE, NULL, NULL);
     if (EFI_ERROR (Status) && (UpperMemorySize != 0)) {
       AddMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
     }
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v4 2/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection
  2021-12-08  7:01 [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
  2021-12-08  7:01 ` [PATCH v4 1/3] OvmfPkg/PlatformPei: ScanOrAdd64BitE820Ram improvements Gerd Hoffmann
@ 2021-12-08  7:01 ` Gerd Hoffmann
  2021-12-08  7:01 ` [PATCH v4 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos " Gerd Hoffmann
  2021-12-13 15:01 ` [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 " Ard Biesheuvel
  3 siblings, 0 replies; 6+ messages in thread
From: Gerd Hoffmann @ 2021-12-08  7:01 UTC (permalink / raw)
  To: devel
  Cc: Philippe Mathieu-Daudé, Ard Biesheuvel, Pawel Polawski,
	Jordan Justen, Jiewen Yao, Gerd Hoffmann

Prefer the e820 map provided via qemu firmware config interface
for memory detection.  Use rtc cmos only as fallback, which should
be rarely needed these days as qemu supports etc/e820 since 2013.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3593
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>
---
 OvmfPkg/PlatformPei/MemDetect.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c
index 912889ab9b75..e0f2caa9cd3c 100644
--- a/OvmfPkg/PlatformPei/MemDetect.c
+++ b/OvmfPkg/PlatformPei/MemDetect.c
@@ -313,8 +313,15 @@ GetSystemMemorySizeBelow4gb (
   VOID
   )
 {
-  UINT8  Cmos0x34;
-  UINT8  Cmos0x35;
+  EFI_STATUS  Status;
+  UINT64      LowerMemorySize = 0;
+  UINT8       Cmos0x34;
+  UINT8       Cmos0x35;
+
+  Status = ScanOrAdd64BitE820Ram (FALSE, &LowerMemorySize, NULL);
+  if ((Status == EFI_SUCCESS) && (LowerMemorySize > 0)) {
+    return (UINT32)LowerMemorySize;
+  }
 
   //
   // CMOS 0x34/0x35 specifies the system memory above 16 MB.
@@ -769,7 +776,6 @@ QemuInitializeRam (
   // Determine total memory size available
   //
   LowerMemorySize = GetSystemMemorySizeBelow4gb ();
-  UpperMemorySize = GetSystemMemorySizeAbove4gb ();
 
   if (mBootMode == BOOT_ON_S3_RESUME) {
     //
@@ -819,8 +825,11 @@ QemuInitializeRam (
     // memory size read from the CMOS.
     //
     Status = ScanOrAdd64BitE820Ram (TRUE, NULL, NULL);
-    if (EFI_ERROR (Status) && (UpperMemorySize != 0)) {
-      AddMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
+    if (EFI_ERROR (Status)) {
+      UpperMemorySize = GetSystemMemorySizeAbove4gb ();
+      if (UpperMemorySize != 0) {
+        AddMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
+      }
     }
   }
 
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v4 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos for memory detection
  2021-12-08  7:01 [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
  2021-12-08  7:01 ` [PATCH v4 1/3] OvmfPkg/PlatformPei: ScanOrAdd64BitE820Ram improvements Gerd Hoffmann
  2021-12-08  7:01 ` [PATCH v4 2/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
@ 2021-12-08  7:01 ` Gerd Hoffmann
  2021-12-13 11:55   ` Ard Biesheuvel
  2021-12-13 15:01 ` [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 " Ard Biesheuvel
  3 siblings, 1 reply; 6+ messages in thread
From: Gerd Hoffmann @ 2021-12-08  7:01 UTC (permalink / raw)
  To: devel
  Cc: Philippe Mathieu-Daudé, Ard Biesheuvel, Pawel Polawski,
	Jordan Justen, Jiewen Yao, Gerd Hoffmann

Not needed for qemu 1.7 (released in 2013) and newer.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3593
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 OvmfPkg/PlatformPei/MemDetect.c | 59 +++------------------------------
 1 file changed, 4 insertions(+), 55 deletions(-)

diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c
index e0f2caa9cd3c..21b0b9af26a1 100644
--- a/OvmfPkg/PlatformPei/MemDetect.c
+++ b/OvmfPkg/PlatformPei/MemDetect.c
@@ -37,7 +37,6 @@ Module Name:
 #include <Library/QemuFwCfgSimpleParserLib.h>
 
 #include "Platform.h"
-#include "Cmos.h"
 
 UINT8  mPhysMemAddressWidth;
 
@@ -315,51 +314,11 @@ GetSystemMemorySizeBelow4gb (
 {
   EFI_STATUS  Status;
   UINT64      LowerMemorySize = 0;
-  UINT8       Cmos0x34;
-  UINT8       Cmos0x35;
 
   Status = ScanOrAdd64BitE820Ram (FALSE, &LowerMemorySize, NULL);
-  if ((Status == EFI_SUCCESS) && (LowerMemorySize > 0)) {
-    return (UINT32)LowerMemorySize;
-  }
-
-  //
-  // CMOS 0x34/0x35 specifies the system memory above 16 MB.
-  // * CMOS(0x35) is the high byte
-  // * CMOS(0x34) is the low byte
-  // * The size is specified in 64kb chunks
-  // * Since this is memory above 16MB, the 16MB must be added
-  //   into the calculation to get the total memory size.
-  //
-
-  Cmos0x34 = (UINT8)CmosRead8 (0x34);
-  Cmos0x35 = (UINT8)CmosRead8 (0x35);
-
-  return (UINT32)(((UINTN)((Cmos0x35 << 8) + Cmos0x34) << 16) + SIZE_16MB);
-}
-
-STATIC
-UINT64
-GetSystemMemorySizeAbove4gb (
-  )
-{
-  UINT32  Size;
-  UINTN   CmosIndex;
-
-  //
-  // CMOS 0x5b-0x5d specifies the system memory above 4GB MB.
-  // * CMOS(0x5d) is the most significant size byte
-  // * CMOS(0x5c) is the middle size byte
-  // * CMOS(0x5b) is the least significant size byte
-  // * The size is specified in 64kb chunks
-  //
-
-  Size = 0;
-  for (CmosIndex = 0x5d; CmosIndex >= 0x5b; CmosIndex--) {
-    Size = (UINT32)(Size << 8) + (UINT32)CmosRead8 (CmosIndex);
-  }
-
-  return LShiftU64 (Size, 16);
+  ASSERT_EFI_ERROR (Status);
+  ASSERT (LowerMemorySize > 0);
+  return (UINT32)LowerMemorySize;
 }
 
 /**
@@ -389,12 +348,9 @@ GetFirstNonAddress (
   // If QEMU presents an E820 map, then get the highest exclusive >=4GB RAM
   // address from it. This can express an address >= 4GB+1TB.
   //
-  // Otherwise, get the flat size of the memory above 4GB from the CMOS (which
-  // can only express a size smaller than 1TB), and add it to 4GB.
-  //
   Status = ScanOrAdd64BitE820Ram (FALSE, NULL, &FirstNonAddress);
   if (EFI_ERROR (Status)) {
-    FirstNonAddress = BASE_4GB + GetSystemMemorySizeAbove4gb ();
+    FirstNonAddress = BASE_4GB;
   }
 
   //
@@ -766,7 +722,6 @@ QemuInitializeRam (
   )
 {
   UINT64         LowerMemorySize;
-  UINT64         UpperMemorySize;
   MTRR_SETTINGS  MtrrSettings;
   EFI_STATUS     Status;
 
@@ -825,12 +780,6 @@ QemuInitializeRam (
     // memory size read from the CMOS.
     //
     Status = ScanOrAdd64BitE820Ram (TRUE, NULL, NULL);
-    if (EFI_ERROR (Status)) {
-      UpperMemorySize = GetSystemMemorySizeAbove4gb ();
-      if (UpperMemorySize != 0) {
-        AddMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
-      }
-    }
   }
 
   //
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos for memory detection
  2021-12-08  7:01 ` [PATCH v4 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos " Gerd Hoffmann
@ 2021-12-13 11:55   ` Ard Biesheuvel
  0 siblings, 0 replies; 6+ messages in thread
From: Ard Biesheuvel @ 2021-12-13 11:55 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: edk2-devel-groups-io, Philippe Mathieu-Daudé, Ard Biesheuvel,
	Pawel Polawski, Jordan Justen, Jiewen Yao

On Wed, 8 Dec 2021 at 08:02, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> Not needed for qemu 1.7 (released in 2013) and newer.
>
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3593
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Good riddance

Acked-by: Ard Biesheuvel <ardb@kernel.org>

> ---
>  OvmfPkg/PlatformPei/MemDetect.c | 59 +++------------------------------
>  1 file changed, 4 insertions(+), 55 deletions(-)
>
> diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c
> index e0f2caa9cd3c..21b0b9af26a1 100644
> --- a/OvmfPkg/PlatformPei/MemDetect.c
> +++ b/OvmfPkg/PlatformPei/MemDetect.c
> @@ -37,7 +37,6 @@ Module Name:
>  #include <Library/QemuFwCfgSimpleParserLib.h>
>
>  #include "Platform.h"
> -#include "Cmos.h"
>
>  UINT8  mPhysMemAddressWidth;
>
> @@ -315,51 +314,11 @@ GetSystemMemorySizeBelow4gb (
>  {
>    EFI_STATUS  Status;
>    UINT64      LowerMemorySize = 0;
> -  UINT8       Cmos0x34;
> -  UINT8       Cmos0x35;
>
>    Status = ScanOrAdd64BitE820Ram (FALSE, &LowerMemorySize, NULL);
> -  if ((Status == EFI_SUCCESS) && (LowerMemorySize > 0)) {
> -    return (UINT32)LowerMemorySize;
> -  }
> -
> -  //
> -  // CMOS 0x34/0x35 specifies the system memory above 16 MB.
> -  // * CMOS(0x35) is the high byte
> -  // * CMOS(0x34) is the low byte
> -  // * The size is specified in 64kb chunks
> -  // * Since this is memory above 16MB, the 16MB must be added
> -  //   into the calculation to get the total memory size.
> -  //
> -
> -  Cmos0x34 = (UINT8)CmosRead8 (0x34);
> -  Cmos0x35 = (UINT8)CmosRead8 (0x35);
> -
> -  return (UINT32)(((UINTN)((Cmos0x35 << 8) + Cmos0x34) << 16) + SIZE_16MB);
> -}
> -
> -STATIC
> -UINT64
> -GetSystemMemorySizeAbove4gb (
> -  )
> -{
> -  UINT32  Size;
> -  UINTN   CmosIndex;
> -
> -  //
> -  // CMOS 0x5b-0x5d specifies the system memory above 4GB MB.
> -  // * CMOS(0x5d) is the most significant size byte
> -  // * CMOS(0x5c) is the middle size byte
> -  // * CMOS(0x5b) is the least significant size byte
> -  // * The size is specified in 64kb chunks
> -  //
> -
> -  Size = 0;
> -  for (CmosIndex = 0x5d; CmosIndex >= 0x5b; CmosIndex--) {
> -    Size = (UINT32)(Size << 8) + (UINT32)CmosRead8 (CmosIndex);
> -  }
> -
> -  return LShiftU64 (Size, 16);
> +  ASSERT_EFI_ERROR (Status);
> +  ASSERT (LowerMemorySize > 0);
> +  return (UINT32)LowerMemorySize;
>  }
>
>  /**
> @@ -389,12 +348,9 @@ GetFirstNonAddress (
>    // If QEMU presents an E820 map, then get the highest exclusive >=4GB RAM
>    // address from it. This can express an address >= 4GB+1TB.
>    //
> -  // Otherwise, get the flat size of the memory above 4GB from the CMOS (which
> -  // can only express a size smaller than 1TB), and add it to 4GB.
> -  //
>    Status = ScanOrAdd64BitE820Ram (FALSE, NULL, &FirstNonAddress);
>    if (EFI_ERROR (Status)) {
> -    FirstNonAddress = BASE_4GB + GetSystemMemorySizeAbove4gb ();
> +    FirstNonAddress = BASE_4GB;
>    }
>
>    //
> @@ -766,7 +722,6 @@ QemuInitializeRam (
>    )
>  {
>    UINT64         LowerMemorySize;
> -  UINT64         UpperMemorySize;
>    MTRR_SETTINGS  MtrrSettings;
>    EFI_STATUS     Status;
>
> @@ -825,12 +780,6 @@ QemuInitializeRam (
>      // memory size read from the CMOS.
>      //
>      Status = ScanOrAdd64BitE820Ram (TRUE, NULL, NULL);
> -    if (EFI_ERROR (Status)) {
> -      UpperMemorySize = GetSystemMemorySizeAbove4gb ();
> -      if (UpperMemorySize != 0) {
> -        AddMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
> -      }
> -    }
>    }
>
>    //
> --
> 2.33.1
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection
  2021-12-08  7:01 [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
                   ` (2 preceding siblings ...)
  2021-12-08  7:01 ` [PATCH v4 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos " Gerd Hoffmann
@ 2021-12-13 15:01 ` Ard Biesheuvel
  3 siblings, 0 replies; 6+ messages in thread
From: Ard Biesheuvel @ 2021-12-13 15:01 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: edk2-devel-groups-io, Philippe Mathieu-Daudé, Ard Biesheuvel,
	Pawel Polawski, Jordan Justen, Jiewen Yao

On Wed, 8 Dec 2021 at 08:02, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> Don't use cmos for memory detection if possible.
> qemu provides the etc/e820 firmware config file
> as alternative since 2013.
>
> v4:
>  - uncrustify & rebase to latest master.
>
> v3:
>  - fix CI failure.
>
> v2:
>  - fix lowmem detection.
>  - pick up review tags.
>  - add rfc patch to completely drop cmos support.
>
> Gerd Hoffmann (3):
>   OvmfPkg/PlatformPei: ScanOrAdd64BitE820Ram improvements
>   OvmfPkg/PlatformPei: prefer etc/e820 for memory detection
>   RFC: OvmfPkg/PlatformPei: stop using cmos for memory detection
>

Merged as #2297

Thanks,

>  OvmfPkg/PlatformPei/MemDetect.c | 88 ++++++++++++---------------------
>  1 file changed, 31 insertions(+), 57 deletions(-)
>
> --
> 2.33.1
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-12-13 15:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-08  7:01 [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
2021-12-08  7:01 ` [PATCH v4 1/3] OvmfPkg/PlatformPei: ScanOrAdd64BitE820Ram improvements Gerd Hoffmann
2021-12-08  7:01 ` [PATCH v4 2/3] OvmfPkg/PlatformPei: prefer etc/e820 for memory detection Gerd Hoffmann
2021-12-08  7:01 ` [PATCH v4 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos " Gerd Hoffmann
2021-12-13 11:55   ` Ard Biesheuvel
2021-12-13 15:01 ` [PATCH v4 0/3] OvmfPkg/PlatformPei: prefer etc/e820 " Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox