Patches 1-4 & 7-9: Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>

For Patches 5 & 6, I would like to ask if the 'end-of-dxe' signal
could be added as separate patches. (Inserted before 5/6, I assume.)
Would that be possible, or would the S3 interdependencies prevent it?
It seems like that is important enough of a platform change that it
should stand on its own, if possible.

It would also be nice if MdePkg had a PiLib so we could add a EndOfDxe
functions, similar to EfiSignalEventReadyToBoot and
EfiCreateEventReadyToBootEx.

-Jordan

On 2015-06-26 18:08:07, Laszlo Ersek wrote:
> In
> <http://thread.gmane.org/gmane.comp.bios.tianocore.devel/16088/focus=16146>,
> Jiewen proposed:
> 
> > And in the future, I believe we could remove EFI_ACPI_S3_SAVE_PROTOCOL
> > protocol completely. (This is Framework 0.9 defined API, not PI
> > defined API)
> >
> > The better design might be:
> > 1) AcpiS3Save does not install EFI_ACPI_S3_SAVE_PROTOCOL.
> > 2) AcpiS3Save registers EndOfDxe callback function.
> > 3) AcpiS3Save does S3Save() in EndOfDxe callback function.
> > So everything could be self-contained. There is no need to rely on
> > platform BDS.
> >
> > Then this module eliminates IntelFrameworkPkg dependency and can be
> > moved to MdeModulePkg later.
> 
> This series implements the idea, and "on the side", it changes OVMF to
> kick the EndOfDxe event group (which is where the entire discussion has
> come from -- Ard started it because ArmVirtPkg lacked EndOfDxe).
> 
> The series is organized carefully. It is bisectable, plus it has
> another, "orthogonal" dimension (see below). The structure is:
> 
> - Patches #1 and #2 make IntelFrameworkModulePkg/AcpiS3SaveDxe act upon
>   EndOfDxe *in addition to* the usual S3Save() protocol member call.
> 
> - Patches #3 and #4 do the same to OvmfPkg's clone of the driver.
>   (Before anyone asks: yes, that clone needs to remain separate.)
> 
> - Patch #5 modifies Vlv2TbltDevicePkg. That package is the only one
>   in the edk2 tree that uses IntelFrameworkModulePkg/AcpiS3SaveDxe.
> 
>   Because I'm implementing Jiewen's idea in
>   IntelFrameworkModulePkg/AcpiS3SaveDxe, I must migrate the driver's
>   clients, and Vlv2TbltDevicePkg is one client. (The only one.)
> 
>   So patch #5 flips Vlv2TbltDevicePkg from calling the S3Save() protocol
>   member to kicking the EndOfDxe event group. Unfortunately, I couldn't
>   even *compile* this package, let alone test it. Thus, I need help with
>   this patch.
> 
>   Importantly, because Vlv2TbltDevicePkg has its own clone of
>   GenericBdsLib, Ard's patch (patch #7) below does *not* affect it.
>   Therefore the Vlv2TbltDevicePkg changes are completely isolated to
>   patch #5.
> 
> - Patch #6 switches over OvmfPkg from depending on the S3Save() protocol
>   member call (inside IntelFrameworkModulePkg/GenericBdsLib) to kicking
>   EndOfDxe explicitly.
> 
> - Patch #7 is the one from Ard. It eliminates the S3Save() protocol
>   member call in IntelFrameworkModulePkg/GenericBdsLib.
> 
> - After patch #5, nothing in the edk2 tree depends on the
>   EFI_ACPI_S3_SAVE_PROTOCOL interface exported by
>   IntelFrameworkModulePkg/AcpiS3SaveDxe, so that interface is removed in
>   patch #8.
> 
> - After patches #6 and #7, nothing in the edk2 tree depends on the
>   EFI_ACPI_S3_SAVE_PROTOCOL interface exported by OvmfPkg/AcpiS3SaveDxe.
>   Therefore that interface is removed in patch #9.
> 
> Now here comes the "orthogonal" dimension: the sub-series consisting of
> patches #3, #4, #6, #7 and #9 implements Jiewen's idea for OvmfPkg
> *only*. It does affect central code in one patch (in Ard's patch #7),
> but that central code is actually not used by anything except OvmfPkg,
> because Vlv2TbltDevicePkg has its own clone of GenericBdsLib.
> 
> So, if patches #1, #2, #5 and #8 look problematic, then I'm completely
> fine dropping them. Then IntelFrameworkModulePkg/AcpiS3SaveDxe and
> Vlv2TbltDevicePkg won't be touched at all, and Jiewen's idea (and the
> kicking of EndOfDxe) will only be implemented for OvmfPkg.
> 
> I regression tested OVMF with these changes: S3 continues to work fine
> with Fedora and Windows Server 2012 R2, and they also boot okay (and
> reject S3 suspend attempts) when S3 is disabled in QEMU.
> 
> Public branch:
> https://github.com/lersek/edk2/commits/drop_efi_acpi_s3_save_proto
> 
> Cc: Yao Jiewen <jiewen....@intel.com>
> Cc: Jeff Fan <jeff....@intel.com>
> Cc: Jordan Justen <jordan.l.jus...@intel.com>
> Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
> Cc: David Wei <david....@intel.com>
> Cc: Tim He <tim...@intel.com>
> 
> Thanks
> Laszlo
> 
> Ard Biesheuvel (1):
>   IntelFrameworkModulePkg/GenericBdsLib: remove AcpiS3->S3Save() call
> 
> Laszlo Ersek (8):
>   IntelFrameworkModulePkg: AcpiS3SaveDxe: prepare for End-of-Dxe
>     callback
>   IntelFrameworkModulePkg: AcpiS3SaveDxe: call S3Ready() at End-of-Dxe
>   OvmfPkg: AcpiS3SaveDxe: prepare for End-of-Dxe callback
>   OvmfPkg: AcpiS3SaveDxe: call S3Ready() at End-of-Dxe
>   Vlv2TbltDevicePkg: replace AcpiS3Save->S3Save() with End-of-Dxe signal
>   OvmfPkg: reorganize (but don't reorder) S3 save state sequence
>   IntelFrameworkModulePkg: AcpiS3SaveDxe: drop EFI_ACPI_S3_SAVE_PROTOCOL
>   OvmfPkg: AcpiS3SaveDxe: drop EFI_ACPI_S3_SAVE_PROTOCOL
> 
>  21 files changed, 228 insertions(+), 283 deletions(-)
>  IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c                      
>               |  10 --
>  IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf              
>               |   1 -
>  IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h               
>               |   1 -
>  IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3Save.c            
>               | 103 ++++++-------
>  IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3Save.h            
>               |  28 +---
>  IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3SaveDxe.inf       
>               |   5 +-
>  OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c                                           
>               | 151 ++++++--------------
>  OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.h                                           
>               |  28 +---
>  OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf                                      
>               |   9 +-
>  OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c                                 
>               |  86 +++++++++++
>  OvmfPkg/Library/PlatformBdsLib/BdsPlatform.h                                 
>               |   4 +
>  OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf                            
>               |   4 +
>  Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c                                
>               |  11 --
>  Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.inf                              
>               |   1 -
>  Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.c                       
>               |  53 +++++--
>  Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.h                       
>               |   1 -
>  Vlv2TbltDevicePkg/Library/PlatformBdsLib/PlatformBdsLib.inf                  
>               |   2 +-
>  
> Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
>          |  10 --
>  
> Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
>  |   1 -
>  
> Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h
>   |   1 -
>  Vlv2TbltDevicePkg/PlatformPkg.dec                                            
>               |   1 -
> 
> -- 
> 1.8.3.1
> 

------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to