36a6aa6 OvmfPkg/SmmControl2Dxe: save fw_cfg boot script with QemuFwCfgS3Lib

Authored and Committed by lersek 7 years ago
    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>