From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../Library/XenPlatformLib/XenPlatformLib.c | 81 ++++++++++++++++++++++ .../Library/XenPlatformLib/XenPlatformLib.inf | 33 +++++++++ 2 files changed, 114 insertions(+) create mode 100644 roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c create mode 100644 roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf (limited to 'roms/edk2/OvmfPkg/Library/XenPlatformLib') diff --git a/roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c b/roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c new file mode 100644 index 000000000..8f20ae2d4 --- /dev/null +++ b/roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c @@ -0,0 +1,81 @@ +/** @file + Get information about Xen + + This library simply allow to find out if OVMF is running under Xen and + allow to get more information when it is the case. + + Copyright (c) 2019, Citrix Systems, Inc. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + This function return a pointer to the XenInfo HOB. + + @return XenInfo pointer or NULL if not available +**/ +EFI_XEN_INFO * +EFIAPI +XenGetInfoHOB ( + VOID + ) +{ + EFI_HOB_GUID_TYPE *GuidHob; + STATIC BOOLEAN Cached = FALSE; + STATIC EFI_XEN_INFO *XenInfo; + + // + // Return the cached result for the benefit of XenDetected that can be + // called many times. + // + if (Cached) { + return XenInfo; + } + + GuidHob = GetFirstGuidHob (&gEfiXenInfoGuid); + if (GuidHob == NULL) { + XenInfo = NULL; + } else { + XenInfo = (EFI_XEN_INFO *) GET_GUID_HOB_DATA (GuidHob); + } + Cached = TRUE; + return XenInfo; +} + +/** + This function detects if OVMF is running on Xen. + + @retval TRUE OVMF is running on Xen + @retval FALSE Xen has not been detected +**/ +BOOLEAN +EFIAPI +XenDetected ( + VOID + ) +{ + return (XenGetInfoHOB () != NULL); +} + +/** + This function detect if OVMF have started via the PVH entry point. + + @retval TRUE PVH entry point as been used + @retval FALSE OVMF have started via the HVM route +**/ +BOOLEAN +EFIAPI +XenPvhDetected ( + VOID + ) +{ + EFI_XEN_INFO *XenInfo; + + XenInfo = XenGetInfoHOB (); + return (XenInfo != NULL && XenInfo->RsdpPvh != NULL); +} diff --git a/roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf b/roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf new file mode 100644 index 000000000..32adb246d --- /dev/null +++ b/roms/edk2/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf @@ -0,0 +1,33 @@ +## @file +# Get information about Xen +# +# This library simply allow to find out if OVMF is running under Xen and +# allow to get more information when it is the case. +# +# Copyright (c) 2019, Citrix Systems, Inc. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = XenPlatformLib + FILE_GUID = DB54DBB7-8142-4EE5-9364-78C824B582EB + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = XenPlatformLib + +[Sources] + XenPlatformLib.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + +[LibraryClasses] + HobLib + +[Guids] + gEfiXenInfoGuid -- cgit 1.2.3-korg