mirror of https://github.com/acidanthera/audk.git
OvmfPkg/XenPlatformPei: Detect OVMF_INFO from hvmloader
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> Message-Id: <20190813113119.14804-11-anthony.perard@citrix.com>
This commit is contained in:
parent
31d4e8b029
commit
8651e1ce71
|
@ -18,10 +18,6 @@ typedef struct {
|
|||
///
|
||||
VOID *HyperPages;
|
||||
///
|
||||
/// Location of the hvm_info page.
|
||||
///
|
||||
VOID *HvmInfo;
|
||||
///
|
||||
/// Hypervisor major version.
|
||||
///
|
||||
UINT16 VersionMajor;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue