[edk2-devel] [PATCH v3 13/35] OvmfPkg/Library/XenPlatformLib: New library

Anthony PERARD posted 35 patches 5 years, 4 months ago
There is a newer version of this series
[edk2-devel] [PATCH v3 13/35] OvmfPkg/Library/XenPlatformLib: New library
Posted by Anthony PERARD 5 years, 4 months ago
The purpose of XenPlatformLib is to regroup the few functions that are
used in several places to detect if Xen is detected, and to get the
XenInfo HOB.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1689
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---

Notes:
    v3:
    - use SPDX
    - add XenPlatformLib.h to [LibraryClasses] in OvmfPkg.dec
    - fix typos

 OvmfPkg/OvmfPkg.dec                           |  4 ++
 OvmfPkg/OvmfXen.dsc                           |  1 +
 .../Library/XenPlatformLib/XenPlatformLib.inf | 33 +++++++++
 OvmfPkg/Include/Library/XenPlatformLib.h      | 53 ++++++++++++++
 .../Library/XenPlatformLib/XenPlatformLib.c   | 69 +++++++++++++++++++
 5 files changed, 160 insertions(+)
 create mode 100644 OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf
 create mode 100644 OvmfPkg/Include/Library/XenPlatformLib.h
 create mode 100644 OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c

diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index c2a2ebfb95..04d5e29272 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -70,6 +70,10 @@ [LibraryClasses]
   #

   XenIoMmioLib|Include/Library/XenIoMmioLib.h

 

+  ##  @libraryclass  Get information about Xen

+  #

+  XenPlatformLib|Include/Library/XenPlatformLib.h

+

 [Guids]

   gUefiOvmfPkgTokenSpaceGuid          = {0x93bb96af, 0xb9f2, 0x4eb8, {0x94, 0x62, 0xe0, 0xba, 0x74, 0x56, 0x42, 0x36}}

   gEfiXenInfoGuid                     = {0xd3b46f3b, 0xd441, 0x1244, {0x9a, 0x12, 0x0, 0x12, 0x27, 0x3f, 0xc1, 0x4d}}

diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc
index 6288394eb8..68d82da7aa 100644
--- a/OvmfPkg/OvmfXen.dsc
+++ b/OvmfPkg/OvmfXen.dsc
@@ -195,6 +195,7 @@ [LibraryClasses]
   SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf

   OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf

   XenHypercallLib|OvmfPkg/Library/XenHypercallLib/XenHypercallLib.inf

+  XenPlatformLib|OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf

 

   Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibNull/DxeTcg2PhysicalPresenceLib.inf

 

diff --git a/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf b/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf
new file mode 100644
index 0000000000..32adb246d6
--- /dev/null
+++ b/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

diff --git a/OvmfPkg/Include/Library/XenPlatformLib.h b/OvmfPkg/Include/Library/XenPlatformLib.h
new file mode 100644
index 0000000000..a8347602b7
--- /dev/null
+++ b/OvmfPkg/Include/Library/XenPlatformLib.h
@@ -0,0 +1,53 @@
+/** @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

+*

+**/

+

+#ifndef _XEN_PLATFORM_LIB_H_

+#define _XEN_PLATFORM_LIB_H_

+

+#include <Guid/XenInfo.h>

+

+/**

+  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

+  );

+

+/**

+  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

+  );

+

+/**

+  This function return a pointer to the XenInfo HOB.

+

+  @return  XenInfo pointer or NULL if not available

+**/

+EFI_XEN_INFO *

+EFIAPI

+XenGetInfoHOB (

+  VOID

+  );

+

+#endif

diff --git a/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c b/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c
new file mode 100644
index 0000000000..6f27cbffa8
--- /dev/null
+++ b/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c
@@ -0,0 +1,69 @@
+/** @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 <PiDxe.h>

+#include <Library/HobLib.h>

+#include <Library/XenPlatformLib.h>

+

+/**

+  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);

+}

-- 
Anthony PERARD


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43289): https://edk2.groups.io/g/devel/message/43289
Mute This Topic: https://groups.io/mt/32308707/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH v3 13/35] OvmfPkg/Library/XenPlatformLib: New library
Posted by Laszlo Ersek 5 years, 4 months ago
On 07/04/19 16:42, Anthony PERARD wrote:
> The purpose of XenPlatformLib is to regroup the few functions that are
> used in several places to detect if Xen is detected, and to get the
> XenInfo HOB.
> 
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1689
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
> ---
> 
> Notes:
>     v3:
>     - use SPDX
>     - add XenPlatformLib.h to [LibraryClasses] in OvmfPkg.dec
>     - fix typos
> 

[snip]

> diff --git a/OvmfPkg/Include/Library/XenPlatformLib.h b/OvmfPkg/Include/Library/XenPlatformLib.h
> new file mode 100644
> index 0000000000..a8347602b7
> --- /dev/null
> +++ b/OvmfPkg/Include/Library/XenPlatformLib.h
> @@ -0,0 +1,53 @@
> +/** @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
> +*
> +**/

[snip]


> diff --git a/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c b/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c
> new file mode 100644
> index 0000000000..6f27cbffa8
> --- /dev/null
> +++ b/OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c
> @@ -0,0 +1,69 @@
> +/** @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
> +*
> +**/

These comment blocks should not have a column of "*" to the left.

With that fixed:

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks
Laszlo

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43402): https://edk2.groups.io/g/devel/message/43402
Mute This Topic: https://groups.io/mt/32308707/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-