]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c
OvmfPkg/XenPlatformPei: Ignore missing PCI Host Bridge on Xen PVH
[mirror_edk2.git] / OvmfPkg / Library / XenPlatformLib / XenPlatformLib.c
CommitLineData
f496443e
AP
1/** @file\r
2 Get information about Xen\r
3\r
4 This library simply allow to find out if OVMF is running under Xen and\r
5 allow to get more information when it is the case.\r
6\r
7 Copyright (c) 2019, Citrix Systems, Inc.\r
8\r
9 SPDX-License-Identifier: BSD-2-Clause-Patent\r
10\r
11**/\r
12\r
13#include <PiDxe.h>\r
14#include <Library/HobLib.h>\r
15#include <Library/XenPlatformLib.h>\r
16\r
17/**\r
18 This function return a pointer to the XenInfo HOB.\r
19\r
20 @return XenInfo pointer or NULL if not available\r
21**/\r
22EFI_XEN_INFO *\r
23EFIAPI\r
24XenGetInfoHOB (\r
25 VOID\r
26 )\r
27{\r
28 EFI_HOB_GUID_TYPE *GuidHob;\r
29\r
30 GuidHob = GetFirstGuidHob (&gEfiXenInfoGuid);\r
31 if (GuidHob == NULL) {\r
32 return NULL;\r
33 }\r
34\r
35 return (EFI_XEN_INFO *) GET_GUID_HOB_DATA (GuidHob);\r
36}\r
37\r
38/**\r
39 This function detects if OVMF is running on Xen.\r
40\r
41 @retval TRUE OVMF is running on Xen\r
42 @retval FALSE Xen has not been detected\r
43**/\r
44BOOLEAN\r
45EFIAPI\r
46XenDetected (\r
47 VOID\r
48 )\r
49{\r
50 return (XenGetInfoHOB () != NULL);\r
51}\r
52\r
53/**\r
54 This function detect if OVMF have started via the PVH entry point.\r
55\r
56 @retval TRUE PVH entry point as been used\r
57 @retval FALSE OVMF have started via the HVM route\r
58**/\r
59BOOLEAN\r
60EFIAPI\r
61XenPvhDetected (\r
62 VOID\r
63 )\r
64{\r
65 EFI_XEN_INFO *XenInfo;\r
66\r
67 XenInfo = XenGetInfoHOB ();\r
68 return (XenInfo != NULL && XenInfo->RsdpPvh != NULL);\r
69}\r