On 07/29/15 20:42, Jordan Justen wrote: > Reviewed-by: Jordan Justen <[email protected]>
I committed this one patch as SVN r18391. Thanks Laszlo > On 2015-07-24 16:00:07, Laszlo Ersek wrote: >> 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 <[email protected]> >> --- >> OvmfPkg/PlatformPei/Platform.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c >> index fc98fc3..d7b1d41 100644 >> --- a/OvmfPkg/PlatformPei/Platform.c >> +++ b/OvmfPkg/PlatformPei/Platform.c >> @@ -324,6 +324,7 @@ BootModeInitialization ( >> if (CmosRead8 (0xF) == 0xFE) { >> mBootMode = BOOT_ON_S3_RESUME; >> } >> + CmosWrite8 (0xF, 0x00); >> >> Status = PeiServicesSetBootMode (mBootMode); >> ASSERT_EFI_ERROR (Status); >> -- >> 1.8.3.1 >> >> >> _______________________________________________ >> edk2-devel mailing list >> [email protected] >> https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

