/** @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; GuidHob = GetFirstGuidHob (&gEfiXenInfoGuid); if (GuidHob == NULL) { return NULL; } return (EFI_XEN_INFO *) GET_GUID_HOB_DATA (GuidHob); } /** 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); }