+ //\r
+ // Check if the resource for the main system memory has been declared\r
+ //\r
+ Found = FALSE;\r
+ NextHob.Raw = GetHobList ();\r
+ while ((NextHob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, NextHob.Raw)) != NULL) {\r
+ if ((NextHob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) &&\r
+ (PcdGet64 (PcdSystemMemoryBase) >= NextHob.ResourceDescriptor->PhysicalStart) &&\r
+ (NextHob.ResourceDescriptor->PhysicalStart + NextHob.ResourceDescriptor->ResourceLength <= PcdGet64 (PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize)))\r
+ {\r
+ Found = TRUE;\r
+ break;\r
+ }\r
+ NextHob.Raw = GET_NEXT_HOB (NextHob);\r
+ }\r
+\r
+ if (!Found) {\r
+ // Reserved the memory space occupied by the firmware volume\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ ResourceAttributes,\r
+ PcdGet64 (PcdSystemMemoryBase),\r
+ PcdGet64 (PcdSystemMemorySize)\r
+ );\r
+ }\r
+\r
+ //\r