Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Eric Dong e4ff6349bf UefiCpuPkg/MpInitLib: Fix MemTest86 failure.
V2 changes:
  Update the commit message and comments in the code.

When waking vector buffer allocated by CpuDxe is tested by MemTest86
in MP mode, an error is reported because the same range of memory is
modified by both CpuDxe driver and MemTest86.

The waking vector buffer is not expected to be tested by MemTest86 if
it is allocated out because MemTest86 only tests free memory. But
current CpuDxe driver "borrows" buffer instead of allocate buffer for
waking vector buffer (through allocate & free to get the buffer
pointer, backup the buffer data before using it and restore it after
using). With this implementation, if the buffer borrowed is not used
by any other drivers, MemTest86 tool will treat it as free memory
and test it.

In order to fix the above issue, CpuDxe changes to allocate the
buffer below 1M instead of borrowing it. But directly allocating
memory below 1MB causes LegacyBios driver fails to start. LegacyBios
driver allocates memory range from
"0xA0000 - PcdEbdaReservedMemorySize" to 0xA0000 as Ebda Reserved
Memory. The minimum value for "0xA0000 - PcdEbdaReservedMemorySize"
is 0x88000. If LegacyBios driver allocate this range failed, it
asserts.

LegacyBios also reserves range from 0x60000 to
"0x60000 + PcdOpromReservedMemorySize", it will be used as Oprom
Reserve Memory. The maximum value for "0x60000 +
PcdOpromReservedMemorySize" is 0x88000. LegacyBios driver tries to
allocate these range page(4K size) by page. It just reports warning
message if some pages are already allocated by others.
Base on above investigation, one page in range 0x60000 ~ 0x88000 can
be used as the waking vector buffer.

LegacyBios driver only reports warning when page allocation in range
[0x60000, 0x88000) fails. This library is consumed by CpuDxe driver
to produce CPU Arch protocol. LagacyBios driver depends on CPU Arch
protocol which guarantees below allocation runs earlier than
LegacyBios driver.

Cc: Ray Ni <ray.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
2019-04-04 14:00:32 +08:00
AppPkg AppPkg: fix webserver build for !Ia32/X64 2019-02-04 17:07:47 +00:00
ArmPkg ArmPkg/SemiHostingDebugLib: Add new APIs 2019-04-02 12:49:28 +08:00
ArmPlatformPkg ArmPlatformPkg/PL011SerialPortLib: use untyped PCD for register base 2018-12-20 18:34:08 +01:00
ArmVirtPkg ArmVirtPkg/PlatformBootManagerLib: display boot option loading/starting 2019-02-25 11:51:37 +01:00
BaseTools BaseTools:Coding problems caused by special characters 2019-04-01 13:37:19 +08:00
BeagleBoardPkg BeagleBoardPkg: Use merged variable driver for emulated NV mode 2019-01-24 10:52:40 +08:00
Conf
CorebootModulePkg CorebootModulePkg/SecCore: Remove .S files for IA32 arch 2019-04-03 13:27:45 +08:00
CorebootPayloadPkg CorebootPayloadPkg: Fix various typos 2019-02-12 10:28:46 +08:00
CryptoPkg CryptoPkg/IntrinsicLib: Remove .S files for IA32 arch 2019-04-03 13:27:44 +08:00
DynamicTablesPkg DynamicTablesPkg: Minor updates and fix typos 2019-03-20 11:00:44 +00:00
EmbeddedPkg EmbeddedPkg/MmcDxe: Enable 4-bit mode even if SD_HIGH_SPEED is not supported 2019-03-15 12:21:02 +01:00
EmulatorPkg EmulatorPkg: require GCC48 or later 2019-01-08 02:34:05 +01:00
FatPkg FatPkg/FatPei/Gpt.c: Fix uninitialized variable issue 2019-02-02 21:41:15 +08:00
FmpDevicePkg FmpDevicePkg DSC: Add NOOPT target to verify NOOPT target 2018-10-31 22:08:10 +08:00
IntelFrameworkModulePkg IntelFramworkModulePkg/PeiDxeDebugLibReportStatusCode: Add new APIs 2019-04-02 12:49:29 +08:00
IntelFrameworkPkg IntelFrameworkPkg: fix build for AARCH64/ARM 2019-02-04 17:09:11 +00:00
IntelFsp2Pkg IntelFsp2Pkg/BaseFspDebugLibSerialPort: Add new APIs 2019-04-02 12:49:28 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Fix constant if statements issue 2018-11-26 11:40:38 +08:00
IntelFspPkg IntelFspPkg/BaseFspDebugLibSerialPort: Add new APIs 2019-04-02 12:49:29 +08:00
IntelFspWrapperPkg
IntelSiliconPkg IntelSiliconPkg/IntelSiliconPkg.dsc: Add a driver to build 2019-03-26 21:28:23 +08:00
MdeModulePkg MdeModulePkg: Add PEIM and lib to dsc file 2019-04-02 12:49:30 +08:00
MdePkg MdePkg/BaseMemoryLibSse2: Remove .S files for IA32 and X64 arch 2019-04-03 13:27:44 +08:00
NetworkPkg NetworkPkg: Fix Duplicate FreePool Error in WCM 2019-03-01 10:38:51 +08:00
Nt32Pkg Nt32Pkg/Nt32Pkg.dsc: Remove EdkCompatibilityPkg information 2019-03-27 11:31:34 +08:00
Omap35xxPkg Omap35xxPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:46 +08:00
OptionRomPkg OptionRomPkg/ReadMe.txt: Remove VS2005 2019-02-14 15:40:26 +08:00
OvmfPkg OvmfPkg/PlatformDebugLibIoPort: Add new APIs 2019-04-02 12:49:28 +08:00
PcAtChipsetPkg PcAtChipsetPkg/PcatChipsetPkg.dsc: Add a driver to build 2019-03-26 21:28:23 +08:00
QuarkPlatformPkg QuarkMin: Use merged variable driver for emulated NV mode 2019-01-24 10:52:40 +08:00
QuarkSocPkg QuarkSocPkg: Removing ipf which is no longer supported from edk2. 2018-08-14 08:58:32 +08:00
SecurityPkg SecurityPkg/OpalPassword: Fix incorrect line ending issue. 2019-03-22 10:05:59 +08:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2019-02-27 14:42:23 +08:00
ShellPkg ShellPkg: Correct a parameter's name 2019-03-19 15:22:05 +08:00
SignedCapsulePkg SignedCapsulePkg: enable package build for AARCH64/ARM 2019-02-04 17:09:17 +00:00
SourceLevelDebugPkg SourceLevelDebugPkg/DebugAgent: Remove AsmFuncs.S in INF 2019-04-03 15:24:22 +08:00
StandaloneMmPkg StandaloneMmPkg: remove redundant StandaloneMmDriverEntryPoint driver 2019-03-11 12:51:12 +01:00
StdLib StdLib: Update resolv.conf to use Google's DNS servers 2019-03-08 21:14:53 +01:00
StdLibPrivateInternalFiles StdLibPrivateInternalFiles: Removing ipf from edk2. 2018-06-29 16:19:51 +08:00
UefiCpuPkg UefiCpuPkg/MpInitLib: Fix MemTest86 failure. 2019-04-04 14:00:32 +08:00
Vlv2DeviceRefCodePkg
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Remove PACKAGES_PATH 2019-04-02 10:10:42 +08:00
.gitignore
.gitmodules
BuildNotes2.txt BaseTools: Various typo 2019-02-14 10:02:28 +08:00
Contributions.txt BaseTools: Various typo 2019-02-14 10:02:28 +08:00
License.txt
Maintainers.txt Maintainers.txt: Remove EdkCompatibilityPkg information 2019-03-27 11:31:35 +08:00
Readme.md Readme.md: Add edk2 release tag and edk2 release plan 2018-12-20 23:31:47 +08:00
edksetup.bat BaseTools: Various typo 2019-02-14 10:02:28 +08:00
edksetup.sh BaseTools:Some build generated files content are not ordered on linux 2019-02-22 15:47:15 +08:00

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources