summaryrefslogtreecommitdiffstats
path: root/EmulatorPkg/AutoScanPei
diff options
context:
space:
mode:
authorRuiyu Ni <ruiyu.ni@intel.com>2018-08-24 13:20:32 +0800
committerRuiyu Ni <ruiyu.ni@intel.com>2018-08-31 10:40:15 +0800
commit54ee6176eda4f6ae1d27d53c00818e350db93f97 (patch)
treeb16aea917ebceae10d3eb17bd32485290b07f0c5 /EmulatorPkg/AutoScanPei
parentf89c018f3dec056e28d38686ba0778597227949e (diff)
downloadedk2-54ee6176eda4f6ae1d27d53c00818e350db93f97.tar.gz
edk2-54ee6176eda4f6ae1d27d53c00818e350db93f97.tar.bz2
edk2-54ee6176eda4f6ae1d27d53c00818e350db93f97.zip
EmulatorPkg/AutoScanPei: Report the correct CPU address size
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1119 Today's implementation reports CPU address size as 36 through CPU HOB. But when WinHost is running at 64bit, the system memory might be allocated above 2^36. It causes system asserts when DxeCore code tries to find the corresponding GCD entry for a given valid address. The patch uses 57 as the CPU address size which is maximum linear address size when 5-level paging is enabled in host OS. Using 64 seems more proper and a one-time change even 6-level paging might be invented. But it causes CoreInitializeGcdServices() assertion on following code: Entry->EndAddress = LShiftU64 (1, SizeOfMemorySpace) - 1; Because LShiftU64 expects SizeOfMemorySpace < 64. So to be practical, I didn't report 64 and change CoreInitializeGcdServices(). Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Cc: Andrew Fish <afish@apple.com>
Diffstat (limited to 'EmulatorPkg/AutoScanPei')
-rw-r--r--EmulatorPkg/AutoScanPei/AutoScanPei.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/EmulatorPkg/AutoScanPei/AutoScanPei.c b/EmulatorPkg/AutoScanPei/AutoScanPei.c
index 78a40db3a2..9316ea549b 100644
--- a/EmulatorPkg/AutoScanPei/AutoScanPei.c
+++ b/EmulatorPkg/AutoScanPei/AutoScanPei.c
@@ -1,6 +1,6 @@
/*++ @file
-Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
Portions copyright (c) 2011, Apple Inc. All rights reserved.
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -101,9 +101,9 @@ Returns:
} while (!EFI_ERROR (Status));
//
- // Build the CPU hob with 36-bit addressing and 16-bits of IO space.
+ // Build the CPU hob with 57-bit addressing and 16-bits of IO space.
//
- BuildCpuHob (36, 16);
+ BuildCpuHob (57, 16);
return Status;
}