]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c
OvmfPkg/XenPlatformLib: Cache result for XenDetected
[mirror_edk2.git] / OvmfPkg / Library / XenPlatformLib / XenPlatformLib.c
index 974a0e73f189a8988f0b0319c777d9070a612466..8f20ae2d456ee329233d2253cc32661859ca78d3 100644 (file)
@@ -25,14 +25,26 @@ XenGetInfoHOB (
   VOID\r
   )\r
 {\r
-  EFI_HOB_GUID_TYPE  *GuidHob;\r
+  EFI_HOB_GUID_TYPE   *GuidHob;\r
+  STATIC BOOLEAN      Cached = FALSE;\r
+  STATIC EFI_XEN_INFO *XenInfo;\r
+\r
+  //\r
+  // Return the cached result for the benefit of XenDetected that can be\r
+  // called many times.\r
+  //\r
+  if (Cached) {\r
+    return XenInfo;\r
+  }\r
 \r
   GuidHob = GetFirstGuidHob (&gEfiXenInfoGuid);\r
   if (GuidHob == NULL) {\r
-    return NULL;\r
+    XenInfo = NULL;\r
+  } else {\r
+    XenInfo = (EFI_XEN_INFO *) GET_GUID_HOB_DATA (GuidHob);\r
   }\r
-\r
-  return (EFI_XEN_INFO *) GET_GUID_HOB_DATA (GuidHob);\r
+  Cached = TRUE;\r
+  return XenInfo;\r
 }\r
 \r
 /**\r