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

