For a short introduction, jump to the last patch.

Past discussions (just what I could easily find):
http://thread.gmane.org/gmane.comp.bios.tianocore.devel/14243
http://thread.gmane.org/gmane.comp.bios.tianocore.devel/14243/focus=14330

The series is supposed to
- *build* at every stage, using OvmfPkgIa32.dsc, with or without
  -D SMM_REQUIRE,
- *build* at every stage, using any DSC file, without -D SMM_REQUIRE,
- *work* at every stage, using any DSC file, without -D SMM_REQUIRE (ie.
  existing use cases don't regress).

The feature being introduced (OvmfPkgIa32.dsc + -D SMM_REQUIRE) is not
expected to *work* until the end of the series.

In addition, using OvmfPkgIa32X64.dsc or OvmfPkgX64.dsc, the patch set
even stops building after a point, *if* -D SMM_REQUIRE is passed. This
is due to the unavailability of 64-bit open source components from
Intel, and the build breakage is fully intentional -- it shows that the
-D SMM_REQUIRE feature is build-level incomplete for OvmfPkgIa32X64.dsc
and OvmfPkgX64.dsc, and marks precisely where further development is
needed.

... I implemented this the last week of April and the first two weeks of
May, approximately. Due to various reasons I had to set it aside at that
point, and focus on other things to remain productive, but today I
managed to rebase / refresh / retest the patch set, and now I'm posting
it.

Public branch:
https://github.com/lersek/edk2/commits/smm3_v1_pub

Anatomy of the series:

>  1 OvmfPkg: PlatformPei: clear CMOS 0xF after setting mBootMode
>  2 OvmfPkg: introduce -D SMM_REQUIRE and PcdSmmSmramRequire
>  3 MdePkg: BaseExtractGuidedSectionLib: allow forced reinit of handler
>    table
>  4 OvmfPkg: set PcdBaseExtractGuidedSectionLibForceInit for SEC on
>    SMM_REQUIRE
>  5 OvmfPkg: Sec: assert the build-time calculated end of the scratch
>    buffer
>  6 OvmfPkg: decompress FVs on S3 resume if SMM_REQUIRE is set
>  7 OvmfPkg: PlatformPei: allow caching in
>    AddReservedMemoryBaseSizeHob()
>  8 OvmfPkg: PlatformPei: account for TSEG size with PcdSmmSmramRequire
>    set
>  9 OvmfPkg: add PEIM for providing TSEG-as-SMRAM during PEI
> 10 OvmfPkg: add DXE_DRIVER for providing TSEG-as-SMRAM during
>    boot-time DXE
> 11 OvmfPkg: implement EFI_SMM_CONTROL2_PROTOCOL with a
>    DXE_RUNTIME_DRIVER
> 12 OvmfPkg: pull in the SMM IPL and SMM core
> 13 OvmfPkg: pull in CpuIo2Smm driver
> 14 OvmfPkg: AcpiS3SaveDxe: don't fake LockBox protocol if SMM_REQUIRE
> 15 OvmfPkg: LockBox: -D SMM_REQUIRE excludes our fake lockbox
> 16 OvmfPkg: LockBox: use SMM stack with -D SMM_REQUIRE

This part introduces the SMM_REQUIRE build flag, secures the special
*memory* areas used by OVMF against a malicious guest OS, implements the
basic SMM/SMRAM drivers, pulls in the SMM core, and switches the LockBox
infrastructure to SMM / SMRAM. The organizing principle in this part is
"secure the special memory areas against tampering".


> 17 OvmfPkg: import PiSmmCpuDxeSmm from
>    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
> 18 OvmfPkg: PiSmmCpuDxeSmm: eliminate SmmLib dependency
> 19 OvmfPkg: PiSmmCpuDxeSmm: eliminate CpuConfigLib linkage dependency
> 20 OvmfPkg: import CpuConfigLib header from
>    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
> 21 OvmfPkg: import SocketLga775Lib header from
>    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
> 22 OvmfPkg: import SmmCpuPlatformHookLibNull from
>    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
> 23 OvmfPkg: resolve ReportStatusCodeLib for DXE_SMM_DRIVER modules
> 24 OvmfPkg: replace IA32FamilyCpuBasePkg.dec references with
>    OvmfPkg.dec
> 25 OvmfPkg: replace gEfiCpuTokenSpaceGuid with
>    gQuarkPortCpuTokenSpaceGuid
> 26 OvmfPkg: PiSmmCpuDxeSmm: fix namespace for
>    PcdCpuMaxLogicalProcessorNumber
> 27 OvmfPkg: import PCDs from Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
> 28 OvmfPkg: import three protocols from
>    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
> 29 OvmfPkg: PiSmmCpuDxeSmm: fix warning about UINT32-to-(VOID*)
>    conversion
> 30 OvmfPkg: PiSmmCpuDxeSmm: fix up pathname in include directive
> 31 OvmfPkg: build PiSmmCpuDxeSmm for -D SMM_REQUIRE
> 32 OvmfPkg: QuarkPort: drop ACPI_CPU_DATA.APState

This segment ports the mammoth PiSmmCpuDxeSmm driver from the Quark
distribution to OvmfPkg. Find the rationale in the first patch of the
segment. Main goals:
- this driver provides the central EFI_SMM_CONFIGURATION_PROTOCOL (with
  the SMM entry vector),
- it is responsible for saving S3 data into SMRAM during normal boot,
  and restoring S3 state from SMRAM during S3 resume.


> 33 OvmfPkg: add skeleton QuarkPort/CpuS3DataDxe
> 34 OvmfPkg: QuarkPort/CpuS3DataDxe: fill in
>    ACPI_CPU_DATA.StartupVector
> 35 OvmfPkg: QuarkPort/CpuS3DataDxe: handle IDT, GDT and MCE in
>    ACPI_CPU_DATA
> 36 OvmfPkg: QuarkPort/CpuS3DataDxe: handle StackAddress and StackSize
> 37 OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.NumberOfCpus
> 38 UefiCpuPkg: CpuDxe: optionally save MTRR settings to AcpiNVS memory
>    block
> 39 UefiCpuPkg: CpuDxe: broadcast MTRR changes to APs
> 40 UefiCpuPkg: CpuDxe: sync MTRR settings to APs at MP startup
> 41 UefiCpuPkg: CpuDxe: provide EFI_MP_SERVICES_PROTOCOL when there's
>    no AP
> 42 OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.MtrrTable
> 43 OvmfPkg: QuarkPort: drop ACPI_CPU_DATA.PreSmmInitRegisterTable
> 44 OvmfPkg: QuarkPort: drop ACPI_CPU_DATA.RegisterTable

This segment extracts and ports a subset of the CpuMpDxe driver from the
Quark distribution to OvmfPkg. Rationale in the first patch of the
segment. This (ported) driver is responsible for collecting S3 data for
PiSmmCpuDxeSmm to save (at boot) and restore (at resume).

Part of the ported CpuMpDxe functionality (= the tracking and saving of
MTRR settings) are strongly tied to the CpuArch and CpuMpServices
implementations. For that reason they are best hosted in
UefiCpuPkg/CpuDxe.


> 45 OvmfPkg: QuarkPort/PiSmmCpuDxeSmm: hard-code CPU class
>    identification

This patch finally enables the base SMM machinery to work and boot on
QEMU. Special memory areas and S3 state are secure at this point.


> 46 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: strip trailing whitespace
> 47 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: rewrap source code to 79
>    chars
> 48 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: fix VALID_ARCHITECTURES in
>    INF
> 49 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: remove FvbDevLock field
> 50 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: remove FvbScratchSpace
>    field
> 51 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: no dual addressing needed
> 52 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: split out runtime DXE
>    specifics
> 53 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: clean up includes and
>    libraries
> 54 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: add DXE_SMM_DRIVER build
> 55 OvmfPkg: QemuFlashFvbServicesRuntimeDxe: adhere to -D SMM_REQUIRE

This sub-series reworks the Firmware Volume Block driver so that it can
be built as both a normal runtime driver and an SMM driver. It
constitutes the lowest level, platform-dependent protocol in the
"secure" (SMM-based) variable driver stack.


> 56 OvmfPkg: consolidate variable driver stack in DSC and FDF files
> 57 OvmfPkg: pull in SMM-based variable driver stack

Switches the full (platform-independent) variable stack to SMM. At this
point the contents of the pflash chip / varstore are secure too against
direct access from the runtime OS.


> 58 OvmfPkg: README: document SMM status

Documentation (goals, usage, limitations).

Thanks
Laszlo

Laszlo Ersek (58):
  OvmfPkg: PlatformPei: clear CMOS 0xF after setting mBootMode
  OvmfPkg: introduce -D SMM_REQUIRE and PcdSmmSmramRequire
  MdePkg: BaseExtractGuidedSectionLib: allow forced reinit of handler
    table
  OvmfPkg: set PcdBaseExtractGuidedSectionLibForceInit for SEC on
    SMM_REQUIRE
  OvmfPkg: Sec: assert the build-time calculated end of the scratch
    buffer
  OvmfPkg: decompress FVs on S3 resume if SMM_REQUIRE is set
  OvmfPkg: PlatformPei: allow caching in AddReservedMemoryBaseSizeHob()
  OvmfPkg: PlatformPei: account for TSEG size with PcdSmmSmramRequire
    set
  OvmfPkg: add PEIM for providing TSEG-as-SMRAM during PEI
  OvmfPkg: add DXE_DRIVER for providing TSEG-as-SMRAM during boot-time
    DXE
  OvmfPkg: implement EFI_SMM_CONTROL2_PROTOCOL with a DXE_RUNTIME_DRIVER
  OvmfPkg: pull in the SMM IPL and SMM core
  OvmfPkg: pull in CpuIo2Smm driver
  OvmfPkg: AcpiS3SaveDxe: don't fake LockBox protocol if SMM_REQUIRE
  OvmfPkg: LockBox: -D SMM_REQUIRE excludes our fake lockbox
  OvmfPkg: LockBox: use SMM stack with -D SMM_REQUIRE
  OvmfPkg: import PiSmmCpuDxeSmm from
    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  OvmfPkg: PiSmmCpuDxeSmm: eliminate SmmLib dependency
  OvmfPkg: PiSmmCpuDxeSmm: eliminate CpuConfigLib linkage dependency
  OvmfPkg: import CpuConfigLib header from
    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  OvmfPkg: import SocketLga775Lib header from
    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  OvmfPkg: import SmmCpuPlatformHookLibNull from
    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  OvmfPkg: resolve ReportStatusCodeLib for DXE_SMM_DRIVER modules
  OvmfPkg: replace IA32FamilyCpuBasePkg.dec references with OvmfPkg.dec
  OvmfPkg: replace gEfiCpuTokenSpaceGuid with
    gQuarkPortCpuTokenSpaceGuid
  OvmfPkg: PiSmmCpuDxeSmm: fix namespace for
    PcdCpuMaxLogicalProcessorNumber
  OvmfPkg: import PCDs from Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  OvmfPkg: import three protocols from
    Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  OvmfPkg: PiSmmCpuDxeSmm: fix warning about UINT32-to-(VOID*)
    conversion
  OvmfPkg: PiSmmCpuDxeSmm: fix up pathname in include directive
  OvmfPkg: build PiSmmCpuDxeSmm for -D SMM_REQUIRE
  OvmfPkg: QuarkPort: drop ACPI_CPU_DATA.APState
  OvmfPkg: add skeleton QuarkPort/CpuS3DataDxe
  OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.StartupVector
  OvmfPkg: QuarkPort/CpuS3DataDxe: handle IDT, GDT and MCE in
    ACPI_CPU_DATA
  OvmfPkg: QuarkPort/CpuS3DataDxe: handle StackAddress and StackSize
  OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.NumberOfCpus
  UefiCpuPkg: CpuDxe: optionally save MTRR settings to AcpiNVS memory
    block
  UefiCpuPkg: CpuDxe: broadcast MTRR changes to APs
  UefiCpuPkg: CpuDxe: sync MTRR settings to APs at MP startup
  UefiCpuPkg: CpuDxe: provide EFI_MP_SERVICES_PROTOCOL when there's no
    AP
  OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.MtrrTable
  OvmfPkg: QuarkPort: drop ACPI_CPU_DATA.PreSmmInitRegisterTable
  OvmfPkg: QuarkPort: drop ACPI_CPU_DATA.RegisterTable
  OvmfPkg: QuarkPort/PiSmmCpuDxeSmm: hard-code CPU class identification
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: strip trailing whitespace
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: rewrap source code to 79
    chars
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: fix VALID_ARCHITECTURES in
    INF
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: remove FvbDevLock field
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: remove FvbScratchSpace field
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: no dual addressing needed
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: split out runtime DXE
    specifics
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: clean up includes and
    libraries
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: add DXE_SMM_DRIVER build
  OvmfPkg: QemuFlashFvbServicesRuntimeDxe: adhere to -D SMM_REQUIRE
  OvmfPkg: consolidate variable driver stack in DSC and FDF files
  OvmfPkg: pull in SMM-based variable driver stack
  OvmfPkg: README: document SMM status

 MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.c       
          |   31 +
 MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.inf     
          |    4 +
 MdePkg/MdePkg.dec                                                              
          |   13 +
 OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c                                             
          |   14 +-
 OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf                                        
          |    3 +-
 OvmfPkg/DecomprScratchEnd.fdf.inc                                              
          |   72 +
 OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf                                  
          |    3 +
 OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf                                   
          |    3 +
 OvmfPkg/Library/LockBoxLib/LockBoxLib.c                                        
          |    2 +
 OvmfPkg/OvmfPkg.dec                                                            
          |   78 +
 OvmfPkg/OvmfPkg.fdf.inc                                                        
          |    2 +
 OvmfPkg/OvmfPkgIa32.dsc                                                        
          |  108 +-
 OvmfPkg/OvmfPkgIa32.fdf                                                        
          |   57 +-
 OvmfPkg/OvmfPkgIa32X64.dsc                                                     
          |  108 +-
 OvmfPkg/OvmfPkgIa32X64.fdf                                                     
          |   57 +-
 OvmfPkg/OvmfPkgX64.dsc                                                         
          |  108 +-
 OvmfPkg/OvmfPkgX64.fdf                                                         
          |   57 +-
 OvmfPkg/PlatformPei/Fv.c                                                       
          |   27 +-
 OvmfPkg/PlatformPei/MemDetect.c                                                
          |   85 +-
 OvmfPkg/PlatformPei/Platform.c                                                 
          |   10 +-
 OvmfPkg/PlatformPei/Platform.h                                                 
          |    3 +-
 OvmfPkg/PlatformPei/PlatformPei.inf                                            
          |    5 +
 OvmfPkg/PlatformPei/Xen.c                                                      
          |    2 +-
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbInfo.c                               
          |   56 +-
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf               
          |   44 +-
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.c                        
          |  653 +++----
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h                        
          |   74 +-
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceDxe.c                     
          |  157 ++
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c                     
          |   69 +
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c                             
          |   27 +-
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.h                             
          |    9 +-
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlashDxe.c                          
          |   28 +
 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/{FvbServicesRuntimeDxe.inf => 
FvbServicesSmm.inf} |   53 +-
 OvmfPkg/QuarkPort/CpuS3DataDxe/Cpu.h                                           
          |   97 ++
 OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf                                
          |  101 ++
 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/ArchSpecific.c                             
          |  105 ++
 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/ArchSpecificDef.h                          
          |   57 +
 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.S                                   
          |   56 +
 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.asm                                 
          |   69 +
 OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.c                                        
          |   93 +
 OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.h                                        
          |   69 +
 OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.c                                      
          |  298 ++++
 OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.h                                      
          |  187 ++
 OvmfPkg/QuarkPort/CpuS3DataDxe/MpService.h                                     
          |   49 +
 OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c                               
          |  276 +++
 OvmfPkg/QuarkPort/Include/AcpiCpuData.h                                        
          |   50 +
 OvmfPkg/QuarkPort/Include/CpuHotPlugData.h                                     
          |   52 +
 OvmfPkg/QuarkPort/Include/Library/CpuConfigLib.h                               
          |  702 ++++++++
 OvmfPkg/QuarkPort/Include/Library/SmmCpuPlatformHookLib.h                      
          |  137 ++
 OvmfPkg/QuarkPort/Include/Library/SocketLga775Lib.h                            
          |  185 ++
 OvmfPkg/QuarkPort/Include/Protocol/SmmCpuService.h                             
          |  231 +++
 OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync.h                                
          |  131 ++
 OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync2.h                               
          |  224 +++
 
OvmfPkg/QuarkPort/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c 
         |  143 ++
 
OvmfPkg/QuarkPort/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
        |   65 +
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/CpuS3.c                                       
          |  402 +++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/CpuService.c                                  
          |  500 ++++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/CpuService.h                                  
          |  213 +++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/MpFuncs.S                                
          |  186 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/MpFuncs.asm                              
          |  190 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/PageTbl.c                                
          |  116 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/Semaphore.c                              
          |   78 +
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiEntry.S                               
          |  171 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiEntry.asm                             
          |  176 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiException.S                           
          | 1196 +++++++++++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiException.asm                         
          |  883 ++++++++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmInit.S                                
          |  122 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmInit.asm                              
          |  132 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.c                         
          |   84 +
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.h                         
          |  116 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/MpService.c                                   
          | 1806 ++++++++++++++++++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c                              
          | 1513 ++++++++++++++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h                              
          |  781 +++++++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf                            
          |  154 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmFeatures.c                                 
          |  373 ++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmFeatures.h                                 
          |  191 +++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmProfile.c                                  
          | 1376 +++++++++++++++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmProfile.h                                  
          |   83 +
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmProfileInternal.h                          
          |  184 ++
 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SyncTimer.c                                   
          |  130 ++
 OvmfPkg/README                                                                 
          |   39 +
 OvmfPkg/Sec/SecMain.c                                                          
          |   26 +-
 OvmfPkg/Sec/SecMain.inf                                                        
          |    4 +
 OvmfPkg/SmmAccess/SmmAccess2Dxe.c                                              
          |  156 ++
 OvmfPkg/SmmAccess/SmmAccess2Dxe.inf                                            
          |   57 +
 OvmfPkg/SmmAccess/SmmAccessPei.c                                               
          |  446 +++++
 OvmfPkg/SmmAccess/SmmAccessPei.inf                                             
          |   70 +
 OvmfPkg/SmmAccess/SmramInternal.c                                              
          |  187 ++
 OvmfPkg/SmmAccess/SmramInternal.h                                              
          |   89 +
 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.c                                        
          |  224 +++
 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf                                      
          |   63 +
 UefiCpuPkg/CpuDxe/CpuDxe.c                                                     
          |   53 +
 UefiCpuPkg/CpuDxe/CpuDxe.inf                                                   
          |    6 +
 UefiCpuPkg/CpuDxe/CpuMp.c                                                      
          |   28 +-
 UefiCpuPkg/CpuDxe/MtrrSync.c                                                   
          |  118 ++
 UefiCpuPkg/CpuDxe/MtrrSync.h                                                   
          |   86 +
 UefiCpuPkg/UefiCpuPkg.dec                                                      
          |   11 +
 97 files changed, 17631 insertions(+), 587 deletions(-)
 create mode 100644 OvmfPkg/DecomprScratchEnd.fdf.inc
 copy OvmfPkg/QemuFlashFvbServicesRuntimeDxe/{FvbServicesRuntimeDxe.inf => 
FvbServicesSmm.inf} (59%)
 create mode 100644 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceDxe.c
 create mode 100644 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c
 create mode 100644 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlashDxe.c
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/Cpu.h
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/ArchSpecific.c
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/ArchSpecificDef.h
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.S
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.asm
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.c
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.h
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.c
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.h
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpService.h
 create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c
 create mode 100644 OvmfPkg/QuarkPort/Include/AcpiCpuData.h
 create mode 100644 OvmfPkg/QuarkPort/Include/CpuHotPlugData.h
 create mode 100644 OvmfPkg/QuarkPort/Include/Library/CpuConfigLib.h
 create mode 100644 OvmfPkg/QuarkPort/Include/Library/SmmCpuPlatformHookLib.h
 create mode 100644 OvmfPkg/QuarkPort/Include/Library/SocketLga775Lib.h
 create mode 100644 OvmfPkg/QuarkPort/Include/Protocol/SmmCpuService.h
 create mode 100644 OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync.h
 create mode 100644 OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync2.h
 create mode 100644 
OvmfPkg/QuarkPort/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c
 create mode 100644 
OvmfPkg/QuarkPort/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/CpuS3.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/CpuService.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/CpuService.h
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/MpFuncs.S
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/MpFuncs.asm
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/PageTbl.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/Semaphore.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiEntry.S
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiEntry.asm
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiException.S
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmiException.asm
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmInit.S
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmInit.asm
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.h
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/MpService.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmFeatures.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmFeatures.h
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmProfile.c
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmProfile.h
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SmmProfileInternal.h
 create mode 100644 OvmfPkg/QuarkPort/PiSmmCpuDxeSmm/SyncTimer.c
 create mode 100644 OvmfPkg/SmmAccess/SmmAccess2Dxe.c
 create mode 100644 OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
 create mode 100644 OvmfPkg/SmmAccess/SmmAccessPei.c
 create mode 100644 OvmfPkg/SmmAccess/SmmAccessPei.inf
 create mode 100644 OvmfPkg/SmmAccess/SmramInternal.c
 create mode 100644 OvmfPkg/SmmAccess/SmramInternal.h
 create mode 100644 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.c
 create mode 100644 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
 create mode 100644 UefiCpuPkg/CpuDxe/MtrrSync.c
 create mode 100644 UefiCpuPkg/CpuDxe/MtrrSync.h

-- 
1.8.3.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to