Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 7bb57805ba OvmfPkg/QemuFwCfgS3Lib: implement opcode APIs for DXE fw_cfg instance
In the DXE fw_cfg instance:

- QemuFwCfgS3Enabled() queries S3 enablement via fw_cfg. This behavior is
  shared with the PEI fw_cfg instance, and the DXE fw_cfg instance already
  pulls in the function from "QemuFwCfgS3PeiDxe.c".

- If QemuFwCfgS3Enabled() returns TRUE, the client module is permitted to
  call QemuFwCfgS3CallWhenBootScriptReady().

  We provide a fully functional implementation for
  QemuFwCfgS3CallWhenBootScriptReady(). A protocol notify is installed at
  TPL_CALLBACK for EFI_S3_SAVE_STATE_PROTOCOL. If / once the protocol is
  available, the client module's Callback() function is called, which is
  expected to produce ACPI S3 Boot Script opcodes using the helper
  functions listed below. In QemuFwCfgS3CallWhenBootScriptReady(), we also
  allocate a reserved memory buffer, sized & typed by the client module,
  for the opcodes and (internally) the fw_cfg DMA operations to work upon,
  during S3 resume.

  This behavior is unique to the DXE fw_cfg instance. Thus, add the
  function to "QemuFwCfgS3Dxe.c".

- The QemuFwCfgS3ScriptWriteBytes(), QemuFwCfgS3ScriptReadBytes(),
  QemuFwCfgS3ScriptSkipBytes(), and QemuFwCfgS3ScriptCheckValue()
  functions are also implemented usefully, since the client module's
  Callback() function is expected to invoke them.

  Each of the first three functions produces MEM_WRITE, IO_WRITE, and
  MEM_POLL opcodes, to set up the DMA command in reserved memory, to start
  the DMA transfer, and to check the DMA result, respectively.

  The QemuFwCfgS3ScriptCheckValue() function produces a MEM_POLL opcode to
  validate an unsigned integer field in data that was read via
  QemuFwCfgS3ScriptReadBytes().

  This behavior is again unique to the DXE fw_cfg instance, so add the
  functions to "QemuFwCfgS3Dxe.c".

Cc: Jordan Justen <jordan.l.justen@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=394
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2017-03-14 21:49:34 +01:00
AppPkg AppPkg: Update email and URL. 2016-10-26 09:34:34 -07:00
ArmPkg ArmPkg: Fix modsi3.S compilation across toolchains. 2017-03-14 08:02:09 +00:00
ArmPlatformPkg ArmPlatformPkg/PlatformIntelBdsLib: don't clobber ConSplitter handle 2017-03-03 21:42:38 +00:00
ArmVirtPkg ArmVirtPkg, OvmfPkg: retire QemuFwCfgS3Enabled() from QemuFwCfgLib 2017-03-14 21:49:16 +01:00
BaseTools BaseTools/UPT: Fix an issue in subst command 2017-03-14 17:29:24 +08:00
BeagleBoardPkg ArmPkg: remove unused PcdArmUncachedMemoryMask PCD 2017-02-27 16:18:29 +00:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootPayloadPkg/CbSupportPei: Fix the memory map issue 2016-11-17 14:49:11 -08:00
CorebootPayloadPkg CorebootPayloadPkg: Use EfiEventGroupSignal from UefiLib 2017-01-20 15:55:41 +08:00
CryptoPkg CryptoPkg: Refine type cast for pointer subtraction 2017-03-06 14:14:29 +08:00
DuetPkg DuetPkg: Remove use of IntelFrameworkModulePkg legacy libs 2016-12-02 15:59:19 +00:00
EdkCompatibilityPkg EdkCompatibilityPkg: Fix some typos of "according" 2017-02-08 14:49:21 +08: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/PrePiLib: allocate code pages for DxeCore 2017-03-14 20:08:31 +00:00
EmulatorPkg EmulatorPkg: Add the UefiBootManagerLib library 2017-03-08 09:02:28 +08:00
FatBinPkg FatBinPkg: New EnhancedFatDxe binaries for IA32, X64, EBC and IPF 2016-12-19 15:26:52 +08:00
FatPkg FatPkg: Refine casting expression result to bigger size 2017-03-06 14:33:21 +08:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Refine casting expression result to bigger size 2017-03-06 14:33:22 +08:00
IntelFrameworkPkg IntelFrameworkPkg UefiLib: Make the event empty function public 2017-01-20 15:51:17 +08:00
IntelFsp2Pkg IntelFsp2Pkg: Add Readme.md 2017-03-13 08:54:29 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Add Readme.md 2017-03-13 08:54:30 +08:00
IntelFspPkg IntelFspPkg: Fix typos in comments 2016-10-24 09:26:28 +08:00
IntelFspWrapperPkg IntelFspWrapperPkg: Refine casting expression result to bigger size 2017-03-06 14:33:23 +08:00
IntelSiliconPkg IntelSiliconPkg: Fix format issues 2016-12-20 10:51:16 +08:00
MdeModulePkg MdeModulePkg/SdMmc: Add break to avoid dead loop when polling OCR Reg 2017-03-13 21:41:46 +08:00
MdePkg MdePkg/SmiHandlerProfile: Add Context support in Unregister 2017-03-13 16:04:11 +08:00
NetworkPkg NetworkPkg: Refine casting expression result to bigger size 2017-03-06 14:33:23 +08:00
Nt32Pkg Nt32Pkg: Replace [Ascii|Unicode]ValueToString 2017-03-02 09:58:27 +08:00
Omap35xxPkg ArmPkg: remove unused PcdArmUncachedMemoryMask PCD 2017-02-27 16:18:29 +00:00
OptionRomPkg OptionRomPkg: Fix typos in comments 2016-11-15 11:05:34 +08:00
OvmfPkg OvmfPkg/QemuFwCfgS3Lib: implement opcode APIs for DXE fw_cfg instance 2017-03-14 21:49:34 +01:00
PcAtChipsetPkg PcAtChipsetPkg: Refine casting expression result to bigger size 2017-03-06 14:33:24 +08:00
PerformancePkg PerformancePkg: Link DxeSmmPerformanceLib to make DP command generic 2017-03-02 09:12:00 +08:00
QuarkPlatformPkg QuarkPlatformPkg: Add UefiBootManagerLib to fix Shell build failure 2017-03-10 17:36:39 +08:00
QuarkSocPkg QuarkSocPkg: Remove use of IntelFrameworkModulePkg legacy libs 2016-12-02 15:59:19 +00:00
SecurityPkg SecurityPkg/Opal: Refine casting expression result to bigger size 2017-03-06 14:33:24 +08:00
ShellBinPkg ShellBinPkg: New Shell binaries for IA32 and X64 2016-12-19 15:27:38 +08:00
ShellPkg ShellPkg/comp: Use proper parameter names 2017-03-06 15:33:35 +08:00
SignedCapsulePkg SignedCapsulePkg: Add Readme.md 2017-03-10 10:44:14 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg: Refine casting expression result to bigger size 2017-03-06 14:33:25 +08:00
StdLib StdLib/LibC ARM AARCH64: do not redefine compiler intrinsics 2016-08-09 10:10:12 +02:00
StdLibPrivateInternalFiles StdLib: Clarify and improve comments. 2016-01-06 00:31:42 +00:00
UefiCpuPkg UefiCpuPkg/PiSmmCpuDxeSmm: Refine casting result to bigger size 2017-03-08 08:59:21 +08:00
UnixPkg
Vlv2DeviceRefCodePkg Vlv2DeviceRefCodePkg: Fixed thermal issue. 2017-02-08 15:32:39 +08:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes 2017-01-03 12:23:41 +01:00
.gitignore EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08:00
Edk2Setup.bat Edk2Setup.bat: Fix build errors from VS tools PREFIX ENV missing 2016-11-05 09:10:58 +08:00
Maintainers.txt Add SignedCapsule content. 2017-03-10 10:44:13 +08:00
edksetup.bat edksetup.bat: make sure BASE_TOOLS_PATH be set correctly 2016-10-26 13:45:45 +08:00
edksetup.sh edksetup.sh, BaseTools/BuildEnv: add --reconfig support 2016-10-24 13:53:16 +01:00