Reviewed-by: Michael Kinney <michael.d.kin...@intel.com> > -----Original Message----- > From: Laszlo Ersek [mailto:ler...@redhat.com] > Sent: Thursday, November 26, 2015 6:35 PM > To: edk2-de...@ml01.01.org > Cc: Justen, Jordan L <jordan.l.jus...@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com> > Subject: [PATCH v5 27/33] OvmfPkg: build CpuS3DataDxe for -D SMM_REQUIRE > > The PiSmmCpuDxeSmm driver from UefiCpuPkg depends on the ACPI_CPU_DATA > structure -- created by a platform- and CPU-specific driver -- in order to > support ACPI S3. The address of this structure is communicated through the > dynamic PCD PcdCpuS3DataAddress. > > The "UefiCpuPkg/Include/AcpiCpuData.h" header file documents the fields of > this structure in detail. > > The simple/generic "UefiCpuPkg/CpuS3DataDxe" driver creates and populates > the structure in a conformant way, and it co-operates well with > PiSmmCpuDxeSmm, for OVMF's purposes. > > PlatformBdsLib CpuS3DataDxe PiSmmCpuDxeSmm S3ResumePei > (DXE_DRIVER) (DXE_DRIVER) (DXE_SMM_DRIVER) (PEIM) > -------------- --------------- ---------------- -------------- > normal collects data > boot except MTRR > settings into > ACPI_CPU_DATA > > sets > PcdCpuS3Da... > > signals > End-of-Dxe > | > +----------> collects MTRR > settings into > ACPI_CPU_DATA > > installs > [Dxe]Smm > ReadyToLock > | > +---------------------------> fetches > PcdCpuS3Dat... > > copies > ACPI_CPU_DATA > into SMRAM > > runtime > > S3 > suspend > > S3 transfers > resume control to > PiSmmCpuDxe... > | > uses <----+ > ACPI_CPU_DATA > from SMRAM > > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Michael Kinney <michael.d.kin...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <ler...@redhat.com> > --- > > Notes: > v5: > - rename patch from > "OvmfPkg: build QuarkPort/CpuS3DataDxe for -D SMM_REQUIRE" > - get driver from UefiCpuPkg, rather than OvmfPkg/QuarkPort > - incorporate data / control flow information in the commit message > from: > "OvmfPkg: add skeleton QuarkPort/CpuS3DataDxe" > "OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.MtrrTable" > > v3: > - new in v3; split out from > "OvmfPkg: add skeleton QuarkPort/CpuS3DataDxe". > > OvmfPkg/OvmfPkgIa32.dsc | 1 + > OvmfPkg/OvmfPkgIa32X64.dsc | 1 + > OvmfPkg/OvmfPkgX64.dsc | 1 + > OvmfPkg/OvmfPkgIa32.fdf | 1 + > OvmfPkg/OvmfPkgIa32X64.fdf | 1 + > OvmfPkg/OvmfPkgX64.fdf | 1 + > 6 files changed, 6 insertions(+) > > diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc > index 485966a..5a63e5b 100644 > --- a/OvmfPkg/OvmfPkgIa32.dsc > +++ b/OvmfPkg/OvmfPkgIa32.dsc > @@ -716,6 +716,7 @@ [Components] > !if $(SMM_REQUIRE) == TRUE > OvmfPkg/SmmAccess/SmmAccess2Dxe.inf > OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf > + UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf > > # > # SMM Initial Program Load (a DXE_RUNTIME_DRIVER) > diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc > index bd76303..b99a1c0 100644 > --- a/OvmfPkg/OvmfPkgIa32X64.dsc > +++ b/OvmfPkg/OvmfPkgIa32X64.dsc > @@ -723,6 +723,7 @@ [Components.X64] > !if $(SMM_REQUIRE) == TRUE > OvmfPkg/SmmAccess/SmmAccess2Dxe.inf > OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf > + UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf > > # > # SMM Initial Program Load (a DXE_RUNTIME_DRIVER) > diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc > index 653f2a1..cd52bda 100644 > --- a/OvmfPkg/OvmfPkgX64.dsc > +++ b/OvmfPkg/OvmfPkgX64.dsc > @@ -721,6 +721,7 @@ [Components] > !if $(SMM_REQUIRE) == TRUE > OvmfPkg/SmmAccess/SmmAccess2Dxe.inf > OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf > + UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf > > # > # SMM Initial Program Load (a DXE_RUNTIME_DRIVER) > diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf > index 53ddae3..83702a1 100644 > --- a/OvmfPkg/OvmfPkgIa32.fdf > +++ b/OvmfPkg/OvmfPkgIa32.fdf > @@ -358,6 +358,7 @@ [FV.DXEFV] > !if $(SMM_REQUIRE) == TRUE > INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf > INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf > +INF UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf > INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf > INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf > INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf > index bb7ca6e..1af0c17 100644 > --- a/OvmfPkg/OvmfPkgIa32X64.fdf > +++ b/OvmfPkg/OvmfPkgIa32X64.fdf > @@ -358,6 +358,7 @@ [FV.DXEFV] > !if $(SMM_REQUIRE) == TRUE > INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf > INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf > +INF UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf > INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf > INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf > INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf > index bceab15..224a21c 100644 > --- a/OvmfPkg/OvmfPkgX64.fdf > +++ b/OvmfPkg/OvmfPkgX64.fdf > @@ -358,6 +358,7 @@ [FV.DXEFV] > !if $(SMM_REQUIRE) == TRUE > INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf > INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf > +INF UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf > INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf > INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf > INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > -- > 1.8.3.1 >
_______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel