]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/PlatformInitLib: pass through reservations from qemu
authorGerd Hoffmann <kraxel@redhat.com>
Wed, 7 Dec 2022 05:32:15 +0000 (06:32 +0100)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 23 Dec 2022 11:53:40 +0000 (11:53 +0000)
qemu uses the etc/e820 fw_cfg file not only for memory, but
also for reservations.  Handle reservations by adding resource
descriptor hobs for them.

A typical qemu configuration has a small reservation between
lapic and flash:

  # sudo cat /proc/iomem
  [ ... ]
  fee00000-fee00fff : Local APIC
  feffc000-feffffff : Reserved          <= HERE
  ffc00000-ffffffff : Reserved
  [ ... ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
OvmfPkg/Library/PlatformInitLib/MemDetect.c

index 6dbdbf93060cda93c0795f1ca4156fc32b6febb0..0c4956852689abe2096934ac26dec1c3db5f7ed6 100644 (file)
@@ -229,6 +229,22 @@ PlatformScanOrAdd64BitE820Ram (
             ));\r
         }\r
       }\r
+    } else if (E820Entry.Type == EfiAcpiAddressRangeReserved) {\r
+      if (AddHighHob) {\r
+        DEBUG ((\r
+          DEBUG_INFO,\r
+          "%a: Reserved: Base=0x%Lx Length=0x%Lx\n",\r
+          __FUNCTION__,\r
+          E820Entry.BaseAddr,\r
+          E820Entry.Length\r
+          ));\r
+        BuildResourceDescriptorHob (\r
+          EFI_RESOURCE_MEMORY_RESERVED,\r
+          0,\r
+          E820Entry.BaseAddr,\r
+          E820Entry.Length\r
+          );\r
+      }\r
     }\r
   }\r
 \r