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