While working on S3 boot script related stuff in OVMF, I wanted to see
if infinite blocking was possible in the various POLL opcodes. While
edk2's implementation of IO_POLL, PCI_CONFIG_POLL and PCI_CONFIG2_POLL
follows the PI spec vol5 closely, even internally (using 100ns delay
units), the MEM_POLL internals differ -- they are microseconds based.

That's not a problem per se (it's just a different internal opcode
representation, which is fine); the problem is that the current
internals don't conform to the spec: in 32-bit builds, the UINT64 number
of 100ns units that the caller intends to wait for is silently
truncated, for no good reason. This issue is not hard to fix (we can
even keep the microseconds-based internals), so let's fix it.

Repo:   https://github.com/lersek/edk2/
Branch: mempoll_looptimes_64bit

Cc: David Wei <david....@intel.com>
Cc: Feng Tian <feng.t...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Mang Guo <mang....@intel.com>
Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Star Zeng <star.z...@intel.com>


Laszlo Ersek (3):
  MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
  MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit LoopTimes
  Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes

 MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
 MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8 ++++----
 MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8 ++++----
 MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
 MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
 Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
 6 files changed, 13 insertions(+), 13 deletions(-)


edk2-devel mailing list

Reply via email to