summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMin Xu <min.m.xu@intel.com>2022-05-31 22:31:17 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2022-06-02 09:10:00 +0000
commit64706ef761273ba403f9cb3b7a986bfb804c0a87 (patch)
treef9f0b0fead16012656601c8e2fa19735b7e50f94
parent54cd0d9b2f816fe519afffe2aa57cfbf13f56088 (diff)
downloadedk2-64706ef761273ba403f9cb3b7a986bfb804c0a87.tar.gz
edk2-64706ef761273ba403f9cb3b7a986bfb804c0a87.tar.bz2
edk2-64706ef761273ba403f9cb3b7a986bfb804c0a87.zip
OvmfPkg: Search EFI_RESOURCE_MEMORY_UNACCEPTED for Fw hoblist
In current TDVF implementation all unaccepted memory passed in Hoblist are tagged as EFI_RESOURCE_MEMORY_UNACCEPTED. They're all accepted before they can be accessed. After accepting memory region, the Hob ResourceType is unchanged (still be EFI_RESOURCE_MEMORY_UNACCEPTED). TDVF Config-B skip PEI phase and it tries to find a memory region which is the largest one below 4GB. Then this memory region will be used as the firmware hoblist. So we should walk thru the input hoblist and search for the memory region with the type of EFI_RESOURCE_MEMORY_UNACCEPTED. Because EFI_RESOURCE_MEMORY_UNACCEPTED has not been officially in PI spec. So it cannot be defined in MdePkg/Include/Pi/PiHob.h. As a temporary solution it is defined in Hob.c. There is a patch-set for lazy-accept very soon. In that patch-set EFI_RESOURCE_MEMORY_UNACCEPTED will be defined in MdeModulePkg. Config-B: https://edk2.groups.io/g/devel/message/76367 Cc: Erdem Aktas <erdemaktas@google.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Min Xu <min.m.xu@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r--OvmfPkg/Library/PeilessStartupLib/Hob.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/OvmfPkg/Library/PeilessStartupLib/Hob.c b/OvmfPkg/Library/PeilessStartupLib/Hob.c
index 3c544ca1f6..5fc84a8090 100644
--- a/OvmfPkg/Library/PeilessStartupLib/Hob.c
+++ b/OvmfPkg/Library/PeilessStartupLib/Hob.c
@@ -22,6 +22,8 @@
#include <OvmfPlatforms.h>
#include "PeilessStartupInternal.h"
+#define EFI_RESOURCE_MEMORY_UNACCEPTED 7
+
/**
* Construct the HobList in SEC phase.
*
@@ -90,7 +92,7 @@ ConstructFwHobList (
//
while (!END_OF_HOB_LIST (Hob)) {
if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
- if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
+ if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_UNACCEPTED) {
PhysicalEnd = Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength;
ResourceLength = Hob.ResourceDescriptor->ResourceLength;