diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c index fb56e999ef..9b7828f8dc 100644 --- a/OvmfPkg/PlatformPei/Platform.c +++ b/OvmfPkg/PlatformPei/Platform.c @@ -338,14 +338,20 @@ InitializePlatform ( ) { EFI_PHYSICAL_ADDRESS TopOfMemory; + UINT32 XenLeaf; DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n")); DebugDumpCmos (); + XenLeaf = XenDetect (); + TopOfMemory = MemDetect (); - InitializeXen (); + if (XenLeaf != 0) { + DEBUG ((EFI_D_INFO, "Xen was detected\n")); + InitializeXen (XenLeaf); + } ReserveEmuVariableNvStore (); diff --git a/OvmfPkg/PlatformPei/Platform.h b/OvmfPkg/PlatformPei/Platform.h index 383e6a4364..d63d124064 100644 --- a/OvmfPkg/PlatformPei/Platform.h +++ b/OvmfPkg/PlatformPei/Platform.h @@ -69,6 +69,11 @@ PeiFvInitialization ( EFI_STATUS InitializeXen ( + UINT32 XenLeaf + ); + +UINT32 +XenDetect ( VOID ); diff --git a/OvmfPkg/PlatformPei/Xen.c b/OvmfPkg/PlatformPei/Xen.c index a720b91b99..054cc4a16b 100644 --- a/OvmfPkg/PlatformPei/Xen.c +++ b/OvmfPkg/PlatformPei/Xen.c @@ -119,19 +119,9 @@ XenDetect ( **/ EFI_STATUS InitializeXen ( - VOID + UINT32 XenLeaf ) { - UINT32 XenLeaf; - - XenLeaf = XenDetect (); - - if (XenLeaf == 0) { - return EFI_NOT_FOUND; - } - - DEBUG ((EFI_D_INFO, "Xen was detected\n")); - XenConnect (XenLeaf); //