Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 9be751890e OvmfPkg: PlatformPei: clear CMOS 0xF after setting mBootMode
We have an old bug in BootModeInitialization(): firmware is supposed to
clear the CMOS register 0xF after reading it for the last time. QEMU only
sets this register to 0xFE in "hw/timer/mc146818rtc.c", function
rtc_notify_suspend(), and never clears it. However, SeaBIOS does clear it
in "src/post.c" and "src/resume.c", so let's follow suit.

We've never noticed this until now because the register gets mysteriously
cleared on non-resume reboots when OVMF runs on qemu-system-x86_64. But on
qemu-system-i386, this bug breaks a (suspend, resume, reboot) triplet:
after the last step OVMF thinks it's resuming because when it actually
resumed (in the middle step), it failed to clear the register.

BootModeInitialization() is the perfect function to clear the register,
right after setting mBootMode: the function is executed on both normal
boot and on S3 resume; it succeeds DebugDumpCmos() -- so the dump is not
affected by this patch --; and everything that relies on S3 vs. normal
boot after we clear the register uses mBootMode anyway.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18391 6f19259b-4bc3-4df7-8a09-765794883524
2015-09-02 18:45:35 +00:00
AppPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
ArmPkg ArmPkg: Bug fix for UncachedMemoryAllocationLib 2015-09-02 16:29:31 +00:00
ArmPlatformPkg ArmPlatformPkg/ArmVExpress-FVP: enable UEFI Secure Boot 2015-09-01 17:29:23 +00:00
ArmVirtPkg ArmVirtPkg: revert unintended change to ArmVirt.dsc.inc 2015-08-26 12:09:39 +00:00
BaseTools BaseTools: Fixed bug for single FV generating. 2015-08-28 02:04:37 +00:00
BeagleBoardPkg BeagleBoardPkg: remove outdated build scripts and instructions 2015-08-12 05:25:41 +00:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootModulePkg:Removing EFI_RESOURCE_ATTRIBUTE_TESTED 2015-08-18 16:08:22 +00:00
CorebootPayloadPkg CorebootPayloadPkgIa32: Don't specify X64 architecture 2015-07-27 06:43:29 +00:00
CryptoPkg CryptoPkg: Fix one wrong parameter for weak key checking 2015-09-02 08:44:46 +00:00
DuetPkg DuetPkg: Use the new PCDs defined in MdePkg. 2015-05-06 03:26:49 +00:00
EdkCompatibilityPkg EdkCompatibilityPkg: Remove gZeroGuid def in FrameworkHiiOnUefiHiiThunk 2015-07-07 03:05:18 +00:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg EmbeddedPkg: remove mention of ARMGCC 2015-08-12 05:25:19 +00:00
EmulatorPkg EmulatorPkg: Link separated VarCheckUefiLib NULL class library instance 2015-08-25 03:03:05 +00:00
FatBinPkg FatBinPkg: Update EBC/IA32/X64/IPF binaries 2015-08-28 03:14:25 +00:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Ad the missing module UNI files. 2015-08-28 02:47:31 +00:00
IntelFrameworkPkg IntelFrameworkPkg: Update DEC and DSC version from 0.94 to 0.96 2015-08-20 08:45:45 +00:00
IntelFspPkg IntelFspPkg: Remove the const condition if statement to refine the code. 2015-08-03 02:59:55 +00:00
IntelFspWrapperPkg FspNotifyDxe need handle >4G memory. 2015-07-28 07:26:57 +00:00
MdeModulePkg MdeModulePkg:Support orderedList with default value 2015-09-02 08:44:24 +00:00
MdePkg MdePkg UefiDevicePathLib: Fix possible memory read/write cross boundary 2015-08-28 07:41:38 +00:00
NetworkPkg NetworkPkg: remove redundant words in function comment. 2015-09-02 07:40:21 +00:00
Nt32Pkg Nt32Pkg: Keep boot behavior using new BDS almost same as that using old BDS 2015-08-25 09:51:07 +00:00
Omap35xxPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
OptionRomPkg OptionRomPkg: Remove redundant included header file defintion in Ax88772.h and Ax88772b.h files 2015-07-08 02:56:54 +00:00
OvmfPkg OvmfPkg: PlatformPei: clear CMOS 0xF after setting mBootMode 2015-09-02 18:45:35 +00:00
PcAtChipsetPkg PcAtChipsetPkg/PciHostBridgeDxe/PciRootBridgeIo.c: rewrap code, strip trailing ws 2015-07-14 12:01:30 +00:00
PerformancePkg PerformancePkg Dp_App: Fix ASSERT in GetNameFromHandle 2015-07-13 01:24:44 +00:00
SecurityPkg Add more strict check for MOR variable, besides MOR lock variable. 2015-09-02 06:29:06 +00:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2015-08-28 04:51:21 +00:00
ShellPkg ShellPkg: Replace use case of deprecated function GetVariable with GetVariable2. 2015-09-01 01:06:08 +00:00
SourceLevelDebugPkg SourceLevelDebugPkg/DebugTimer: Timer count value 0 not calculated 2015-08-27 02:08:56 +00:00
StdLib StdLib: remove mention of ARMGCC 2015-08-12 05:25:12 +00:00
StdLibPrivateInternalFiles */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
UefiCpuPkg UefiCpuPkg/CpuMpPei: Fix CPU Healthy issue in PeiGetProcessorInfo () 2015-09-01 08:56:14 +00:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg Fixed C-State issue of CPU1 of dual core. 2015-09-01 01:22:49 +00:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Link separated VarCheckUefiLib NULL class library instance 2015-08-25 03:04:18 +00:00
.gitignore EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
BuildNotes2.txt Update to new SVN URL in readme.txt 2013-06-08 05:26:39 +00:00
Edk2Setup.bat Edk2: Update Edk2Setup.bat 2015-06-16 07:23:45 +00:00
Maintainers.txt Maintainers.txt: Add Daryl's new email address 2015-07-26 08:06:05 +00:00
edksetup.bat Update edksetup.bat to support Microsoft Visual Studio 2013 when building the Nt32Pkg emulation platform (enabled using the --nt32 flag). 2014-10-30 17:09:25 +00:00
edksetup.sh edksetup.sh: Ensure that WORKSPACE points to the top of an edk2 checkout 2014-07-28 17:37:40 +00:00