]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: build CpuS3DataDxe for -D SMM_REQUIRE
authorLaszlo Ersek <lersek@redhat.com>
Mon, 30 Nov 2015 18:46:55 +0000 (18:46 +0000)
committerlersek <lersek@Edk2>
Mon, 30 Nov 2015 18:46:55 +0000 (18:46 +0000)
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    S3Resume2Pei
         (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.justen@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19060 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32.fdf
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgIa32X64.fdf
OvmfPkg/OvmfPkgX64.dsc
OvmfPkg/OvmfPkgX64.fdf

index 7259bf7fc92b719e2ceff92a14f6dd53fb5c084f..e67d083e8fc8ea346eb3d345f0441097b7a40fdc 100644 (file)
 !if $(SMM_REQUIRE) == TRUE\r
   OvmfPkg/SmmAccess/SmmAccess2Dxe.inf\r
   OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf\r
+  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf\r
 \r
   #\r
   # SMM Initial Program Load (a DXE_RUNTIME_DRIVER)\r
index 7b510b8abcbdd9d3b94e8120aa2016919beaeb87..48e6bd65486b45869f9f34fc9f17205623c882bf 100644 (file)
@@ -358,6 +358,7 @@ INF  OvmfPkg/PlatformDxe/Platform.inf
 !if $(SMM_REQUIRE) == TRUE\r
 INF  OvmfPkg/SmmAccess/SmmAccess2Dxe.inf\r
 INF  OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf\r
+INF  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf\r
 INF  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf\r
 INF  MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf\r
 INF  UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf\r
index d08cab359d9fb5c80f1014cb8566b3afd66ac0b9..49f9950150b7f26f58f8b4663a610964af6571a5 100644 (file)
 !if $(SMM_REQUIRE) == TRUE\r
   OvmfPkg/SmmAccess/SmmAccess2Dxe.inf\r
   OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf\r
+  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf\r
 \r
   #\r
   # SMM Initial Program Load (a DXE_RUNTIME_DRIVER)\r
index 674932c76e52ee3a02b1b1c3583a6082ae41e731..027d1625ba2672d028e1c0aff504e61bb4b00bf6 100644 (file)
@@ -358,6 +358,7 @@ INF  OvmfPkg/PlatformDxe/Platform.inf
 !if $(SMM_REQUIRE) == TRUE\r
 INF  OvmfPkg/SmmAccess/SmmAccess2Dxe.inf\r
 INF  OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf\r
+INF  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf\r
 INF  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf\r
 INF  MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf\r
 INF  UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf\r
index a49b0bf9276c48f36a033d16a7aa05da08ed61c8..cab4a7f52c3f562ccc16f11efabf9a529c240c5e 100644 (file)
 !if $(SMM_REQUIRE) == TRUE\r
   OvmfPkg/SmmAccess/SmmAccess2Dxe.inf\r
   OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf\r
+  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf\r
 \r
   #\r
   # SMM Initial Program Load (a DXE_RUNTIME_DRIVER)\r
index 85827bce5aec7308d354aef368a813e1f29be403..0ec1d1072643b799bcbe5e3f5c78b109c91f5cf0 100644 (file)
@@ -358,6 +358,7 @@ INF  OvmfPkg/PlatformDxe/Platform.inf
 !if $(SMM_REQUIRE) == TRUE\r
 INF  OvmfPkg/SmmAccess/SmmAccess2Dxe.inf\r
 INF  OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf\r
+INF  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf\r
 INF  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf\r
 INF  MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf\r
 INF  UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf\r