OvmfPkg/SmmControl2Dxe: save fw_cfg boot script with QemuFwCfgS3Lib
We cannot entirely eliminate the manual boot script building in this driver, as it also programs lower-level chipset registers (SMI_EN, GEN_PMCON_1) at S3 resume, not just registers exposed via fw_cfg. We can nonetheless replace the manually built opcodes for the latter class of registers with QemuFwCfgS3Lib function calls. We preserve the ordering between the two sets of registers (low-level chipset first, fw_cfg second). This patch demonstrates that manual handling of S3SaveState protocol installation can be combined with QemuFwCfgS3Lib, even without upsetting the original order between boot script fragments. An S3SaveState notify function running at TPL_CALLBACK can safely queue another S3SaveState notify function at TPL_CALLBACK with QemuFwCfgS3CallWhenBootScriptReady(). 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>
This commit is contained in:
@@ -378,14 +378,15 @@ OnS3SaveStateInstalled (
|
||||
CpuDeadLoop ();
|
||||
}
|
||||
|
||||
DEBUG ((DEBUG_VERBOSE, "%a: chipset boot script saved\n", __FUNCTION__));
|
||||
|
||||
//
|
||||
// Append a boot script fragment that re-selects the negotiated SMI features.
|
||||
//
|
||||
if (mSmiFeatureNegotiation) {
|
||||
SaveSmiFeatures (S3SaveState);
|
||||
SaveSmiFeatures ();
|
||||
}
|
||||
|
||||
DEBUG ((EFI_D_VERBOSE, "%a: boot script fragment saved\n", __FUNCTION__));
|
||||
gBS->CloseEvent (Event);
|
||||
mS3SaveStateInstalled = NULL;
|
||||
}
|
||||
|
Reference in New Issue
Block a user