[edk2-devel] [PATCH v3 10/35] OvmfPkg/XenPlatformPei: Detect OVMF_INFO from hvmloader

Anthony PERARD posted 35 patches 5 years, 4 months ago
There is a newer version of this series
[edk2-devel] [PATCH v3 10/35] OvmfPkg/XenPlatformPei: Detect OVMF_INFO from hvmloader
Posted by Anthony PERARD 5 years, 4 months ago
EFI_XEN_OVMF_INFO is only useful to retrieve the E820 table. The
mXenHvmloaderInfo isn't used yet, but will be use in a further patch to
retrieve the E820 table.

Also remove the unused pointer from the XenInfo HOB as that information
is only useful in the XenPlatformPei.

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

Notes:
    v3:
    - fix coding style
    - fix commit message

 OvmfPkg/Include/Guid/XenInfo.h |  4 ----
 OvmfPkg/PlatformPei/Xen.c      |  3 ---
 OvmfPkg/XenPlatformPei/Xen.c   | 25 +++++++++++++++++++++++--
 3 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/OvmfPkg/Include/Guid/XenInfo.h b/OvmfPkg/Include/Guid/XenInfo.h
index 25d76a7828..b052d618fd 100644
--- a/OvmfPkg/Include/Guid/XenInfo.h
+++ b/OvmfPkg/Include/Guid/XenInfo.h
@@ -18,10 +18,6 @@ typedef struct {
   ///

   VOID *HyperPages;

   ///

-  /// Location of the hvm_info page.

-  ///

-  VOID *HvmInfo;

-  ///

   /// Hypervisor major version.

   ///

   UINT16 VersionMajor;

diff --git a/OvmfPkg/PlatformPei/Xen.c b/OvmfPkg/PlatformPei/Xen.c
index 89dc4143b2..3e15b32a73 100644
--- a/OvmfPkg/PlatformPei/Xen.c
+++ b/OvmfPkg/PlatformPei/Xen.c
@@ -98,9 +98,6 @@ XenConnect (
   mXenInfo.VersionMajor = (UINT16)(XenVersion >> 16);

   mXenInfo.VersionMinor = (UINT16)(XenVersion & 0xFFFF);

 

-  /* TBD: Locate hvm_info and reserve it away. */

-  mXenInfo.HvmInfo = NULL;

-

   BuildGuidDataHob (

     &gEfiXenInfoGuid,

     &mXenInfo,

diff --git a/OvmfPkg/XenPlatformPei/Xen.c b/OvmfPkg/XenPlatformPei/Xen.c
index 81042ab94f..d6361da306 100644
--- a/OvmfPkg/XenPlatformPei/Xen.c
+++ b/OvmfPkg/XenPlatformPei/Xen.c
@@ -33,6 +33,12 @@ STATIC UINT32 mXenLeaf = 0;
 

 EFI_XEN_INFO mXenInfo;

 

+//

+// Location of the firmware info struct setup by hvmloader.

+// Only the E820 table is used by OVMF.

+//

+EFI_XEN_OVMF_INFO *mXenHvmloaderInfo;

+

 /**

   Returns E820 map provided by Xen

 

@@ -78,6 +84,8 @@ XenConnect (
   UINT32 TransferReg;

   UINT32 TransferPages;

   UINT32 XenVersion;

+  EFI_XEN_OVMF_INFO *Info;

+  CHAR8 Sig[sizeof (Info->Signature) + 1];

 

   AsmCpuid (XenLeaf + 2, &TransferPages, &TransferReg, NULL, NULL);

   mXenInfo.HyperPages = AllocatePages (TransferPages);

@@ -97,8 +105,21 @@ XenConnect (
   mXenInfo.VersionMajor = (UINT16)(XenVersion >> 16);

   mXenInfo.VersionMinor = (UINT16)(XenVersion & 0xFFFF);

 

-  /* TBD: Locate hvm_info and reserve it away. */

-  mXenInfo.HvmInfo = NULL;

+  //

+  // Check if there are information left by hvmloader

+  //

+

+  Info = (EFI_XEN_OVMF_INFO *)(UINTN) OVMF_INFO_PHYSICAL_ADDRESS;

+  //

+  // Copy the signature, and make it null-terminated.

+  //

+  AsciiStrnCpyS (Sig, sizeof (Sig), (CHAR8 *) &Info->Signature,

+    sizeof (Info->Signature));

+  if (AsciiStrCmp (Sig, "XenHVMOVMF") == 0) {

+    mXenHvmloaderInfo = Info;

+  } else {

+    mXenHvmloaderInfo = NULL;

+  }

 

   BuildGuidDataHob (

     &gEfiXenInfoGuid,

-- 
Anthony PERARD


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

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