From 0e20a1864fa2d236e8d932c52a2f300180d2d459 Mon Sep 17 00:00:00 2001 From: jljusten Date: Wed, 12 Sep 2012 07:19:28 +0000 Subject: [PATCH] OvmfPkg: key PMBA setup in Platform PEI off of PMREGMISC/PMIOSE, not Xen This matches the logic in AcpiTimerLib. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek Reviewed-by: Jordan Justen git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13723 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/PlatformPei/Platform.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c index ce149e4f97..e7486b7b73 100644 --- a/OvmfPkg/PlatformPei/Platform.c +++ b/OvmfPkg/PlatformPei/Platform.c @@ -214,7 +214,7 @@ MemMapInitialization ( VOID MiscInitialization ( - BOOLEAN Xen + VOID ) { // @@ -227,7 +227,12 @@ MiscInitialization ( // BuildCpuHob (36, 16); - if (!Xen) { + // + // If PMREGMISC/PMIOSE is set, assume the ACPI PMBA has been configured (for + // example by Xen) and skip the setup here. This matches the logic in + // AcpiTimerLibConstructor (). + // + if ((PciRead8 (PCI_LIB_ADDRESS (0, 1, 3, 0x80)) & 0x01) == 0) { // // The PEI phase should be exited with fully accessibe PIIX4 IO space: // 1. set PMBA @@ -331,9 +336,7 @@ InitializePlatform ( IN CONST EFI_PEI_SERVICES **PeiServices ) { - EFI_STATUS Status; EFI_PHYSICAL_ADDRESS TopOfMemory; - BOOLEAN Xen; DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n")); @@ -341,8 +344,7 @@ InitializePlatform ( TopOfMemory = MemDetect (); - Status = InitializeXen (); - Xen = EFI_ERROR (Status) ? FALSE : TRUE; + InitializeXen (); ReserveEmuVariableNvStore (); @@ -350,7 +352,7 @@ InitializePlatform ( MemMapInitialization (TopOfMemory); - MiscInitialization (Xen); + MiscInitialization (); BootModeInitialization ();