Ping, because:
On 07/25/15 01:00, Laszlo Ersek wrote:
> 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".
the part above is independent of, and is needed regardless of, how we
are going to import PiSmmCpuDxeSmm and the other similar drivers, and
where from.
Then, jumping ahead,
>
>
>> 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.
the sub-series above is also reviewable in isolation.
... I'm not complaining at all (this is a large and complex series), but
we should start with the review at some point...
Thanks
Laszlo
>
>
>> 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
>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel