Public branch: <https://github.com/lersek/edk2/commits/smm3_v3>.
(Mike's v1 patches are again contained in this branch, but I have
converted them to CRLF.)
----*----
Relative to v2, the following patches are new in v3 (also marked
individually in the Notes sections):
* PiSmmCpuDxeSmm fixes from Paolo, to be reviewed and squashed in by
Mike, included here for completeness:
02/52 UefiCpuPkg: PiSmmCpuDxeSmm: prepare PT in InitPaging before filling in
PDE
03/52 UefiCpuPkg: PiSmmCpuDxeSmm: do not execute RSM from 64-bit mode
* Build failure fix for -D SMM_REQUIRE -D SOURCE_DEBUG_ENABLE, from
Mike:
21/52 OvmfPkg: resolve DebugAgentLib for DXE_SMM_DRIVER modules
* Features for MP and X64 support, from Paolo (kudos!!!):
23/52 OvmfPkg: import SmmCpuFeaturesLib from UefiCpuPkg
24/52 OvmfPkg: SmmCpuFeaturesLib: remove unnecessary bits
25/52 OvmfPkg: SmmCpuFeaturesLib: implement SMRAM state save map access
26/52 OvmfPkg: SmmCpuFeaturesLib: customize state save map format
27/52 OvmfPkg: use relaxed AP SMM synchronization mode
37/52 OvmfPkg: port CpuS3DataDxe to X64
* Patch that adapts the build to the former, from Laszlo:
38/52 OvmfPkg: build QuarkPort/CpuS3DataDxe for -D SMM_REQUIRE
* SMRAM / TSEG size update for the (Ia32)X64 builds, from Laszlo:
51/52 OvmfPkg: double the SMRAM (TSEG) size for the 64-bit DXE phase builds
----*----
The following patches have been changed (and/or reworded) from v2 (also
marked individually in the Notes sections). Identifying them by their v3
numbers here:
* Picked up Reviewed-by tag from Jeff, dropped Cc's:
04/52 UefiCpuPkg: CpuDxe: broadcast MTRR changes to APs
* Addressed v2 feedback from Mike & Jordan:
06/52 OvmfPkg: Sec: force reinit of BaseExtractGuidedSectionLib handler table
11/52 OvmfPkg: add PEIM for providing TSEG-as-SMRAM during PEI
* Adapted to Paolo's patches:
28/52 OvmfPkg: build PiSmmCpuDxeSmm for -D SMM_REQUIRE
29/52 OvmfPkg: add skeleton QuarkPort/CpuS3DataDxe
30/52 OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.StartupVector
----*----
Test environment and results:
Host kernel:
- latest RHEL-7 development kernel (3.10.0-323.el7), with Paolo's
following patches backported by yours truly:
- KVM: x86: clean up kvm_arch_vcpu_runnable
- KVM: x86: fix SMI to halted VCPU
QEMU:
- current upstream (c49d3411faae), with Paolo's patch applied:
- target-i386: allow any alignment for SMBASE
Below, the meaning of "bitness=32" is:
* qemu-system-i386
* -cpu coreduo,-nx
Whereas "bitness=64" means:
* qemu-system-x86_64
* no special -cpu flag
For variable access verification, "efibootmgr" is invoked (without
options) at the guest OS (Fedlet 20141209) root prompt.
bitness accel VCPUs result
------- ----- ----- -----------------------------------------------
32 KVM 1 Fedlet 20141209 boots, S3 works, variables work
32 KVM 2 stuck in SMBASE relocation, APIC IDs look valid
32 TCG 1 Fedlet 20141209 boots, S3 works, variables work
32 TCG 2 Fedlet 20141209 boots, variables (efibootmgr)
are broken -- nothing is printed
64 KVM >=1 "KVM: entry failed, hardware error 0x80000021"
while guest in SMBASE relocation
64 TCG 1 F21 XFCE LiveCD boots, variable access OK, S3
resume triggers InternalX86EnablePaging64()
ASSERT() in
"MdePkg/Library/BaseLib/X64/Non-existing.c".
Looks like a bug in S3Resume2Pei?
64 TCG 2 F21 XFCE LiveCD boots, variable access
(efibootmgr) is broken -- reports EINVAL
These results are not consistent with the ones seen by Paolo, which is
why I didn't update the last (OvmfPkg/README) patch in the series, about
the current level of functionality. (Added a note to it about this
fact.)
What makes me glad is that the scenario that I've been testing and
re-testing successfully since May, i.e., 32-bit/KVM/UP, *does* work.
Thanks
Laszlo
Cc: Paolo Bonzini <[email protected]>
Cc: Jordan Justen <[email protected]>
Cc: Michael Kinney <[email protected]>
Laszlo Ersek (42):
UefiCpuPkg: CpuDxe: broadcast MTRR changes to APs
OvmfPkg: introduce -D SMM_REQUIRE and PcdSmmSmramRequire
OvmfPkg: Sec: force reinit of BaseExtractGuidedSectionLib handler
table
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: resolve ReportStatusCodeLib for DXE_SMM_DRIVER modules
OvmfPkg: resolve CpuExceptionHandlerLib for DXE_SMM_DRIVER modules
OvmfPkg: set gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmEnableBspElection to
FALSE
OvmfPkg: build PiSmmCpuDxeSmm for -D SMM_REQUIRE
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: import CpuConfigLib header from
Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.NumberOfCpus
OvmfPkg: QuarkPort/CpuS3DataDxe: fill in ACPI_CPU_DATA.MtrrTable
OvmfPkg: QuarkPort/CpuS3DataDxe: handle register tables in
ACPI_CPU_DATA
OvmfPkg: build QuarkPort/CpuS3DataDxe for -D SMM_REQUIRE
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: double the SMRAM (TSEG) size for the 64-bit DXE phase builds
OvmfPkg: README: document SMM status
Michael Kinney (2):
UefiCpuPkg: CpuDxe: Fix ASSERT() when only 1 CPU detected
OvmfPkg: resolve DebugAgentLib for DXE_SMM_DRIVER modules
Paolo Bonzini (8):
UefiCpuPkg: PiSmmCpuDxeSmm: prepare PT in InitPaging before filling in
PDE
UefiCpuPkg: PiSmmCpuDxeSmm: do not execute RSM from 64-bit mode
OvmfPkg: import SmmCpuFeaturesLib from UefiCpuPkg
OvmfPkg: SmmCpuFeaturesLib: remove unnecessary bits
OvmfPkg: SmmCpuFeaturesLib: implement SMRAM state save map access
OvmfPkg: SmmCpuFeaturesLib: customize state save map format
OvmfPkg: use relaxed AP SMM synchronization mode
OvmfPkg: port CpuS3DataDxe to X64
OvmfPkg/OvmfPkg.dec
| 29 +
OvmfPkg/OvmfPkgIa32.dsc
| 119 ++-
OvmfPkg/OvmfPkgIa32X64.dsc
| 119 ++-
OvmfPkg/OvmfPkgX64.dsc
| 119 ++-
OvmfPkg/OvmfPkgIa32.fdf
| 57 +-
OvmfPkg/OvmfPkgIa32X64.fdf
| 57 +-
OvmfPkg/OvmfPkgX64.fdf
| 57 +-
OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf
| 3 +-
OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
| 3 +
OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
| 3 +
OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
| 38 +
OvmfPkg/PlatformPei/PlatformPei.inf
| 5 +
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
| 44 +-
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/{FvbServicesRuntimeDxe.inf =>
FvbServicesSmm.inf} | 53 +-
OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf
| 107 +++
OvmfPkg/Sec/SecMain.inf
| 6 +
OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
| 57 ++
OvmfPkg/SmmAccess/SmmAccessPei.inf
| 70 ++
OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
| 65 ++
OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
| 184 +++++
OvmfPkg/PlatformPei/Platform.h
| 3 +-
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
| 74 +-
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.h
| 9 +-
OvmfPkg/QuarkPort/CpuS3DataDxe/Cpu.h
| 97 +++
OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/ArchSpecificDef.h
| 57 ++
OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.h
| 69 ++
OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.h
| 187 +++++
OvmfPkg/QuarkPort/CpuS3DataDxe/MpService.h
| 49 ++
OvmfPkg/QuarkPort/CpuS3DataDxe/X64/ArchSpecificDef.h
| 59 ++
OvmfPkg/QuarkPort/Include/Library/CpuConfigLib.h
| 671 +++++++++++++++++
OvmfPkg/SmmAccess/SmramInternal.h
| 89 +++
UefiCpuPkg/CpuDxe/CpuMp.h
| 13 +
OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c
| 14 +-
OvmfPkg/Library/LockBoxLib/LockBoxLib.c
| 2 +
OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
| 790 ++++++++++++++++++++
OvmfPkg/PlatformPei/Fv.c
| 27 +-
OvmfPkg/PlatformPei/MemDetect.c
| 85 ++-
OvmfPkg/PlatformPei/Platform.c
| 9 +-
OvmfPkg/PlatformPei/Xen.c
| 2 +-
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbInfo.c
| 56 +-
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.c
| 653 +++++++---------
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceDxe.c
| 157 ++++
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c
| 69 ++
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c
| 27 +-
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlashDxe.c
| 28 +
OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/ArchSpecific.c
| 105 +++
OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.c
| 93 +++
OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.c
| 298 ++++++++
OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c
| 335 +++++++++
OvmfPkg/QuarkPort/CpuS3DataDxe/X64/ArchSpecific.c
| 108 +++
OvmfPkg/Sec/SecMain.c
| 52 +-
OvmfPkg/SmmAccess/SmmAccess2Dxe.c
| 156 ++++
OvmfPkg/SmmAccess/SmmAccessPei.c
| 446 +++++++++++
OvmfPkg/SmmAccess/SmramInternal.c
| 188 +++++
OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.c
| 365 +++++++++
UefiCpuPkg/CpuDxe/CpuDxe.c
| 26 +
UefiCpuPkg/CpuDxe/CpuMp.c
| 36 +-
UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
| 8 +-
OvmfPkg/DecomprScratchEnd.fdf.inc
| 72 ++
OvmfPkg/OvmfPkg.fdf.inc
| 2 +
OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.S
| 56 ++
OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.asm
| 69 ++
OvmfPkg/QuarkPort/CpuS3DataDxe/X64/CpuAsm.nasm
| 58 ++
OvmfPkg/README
| 43 ++
UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.S
| 13 +
UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.asm
| 13 +
UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.S
| 13 +
UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.asm
| 13 +
68 files changed, 6468 insertions(+), 591 deletions(-)
create mode 100644 OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
copy OvmfPkg/QemuFlashFvbServicesRuntimeDxe/{FvbServicesRuntimeDxe.inf =>
FvbServicesSmm.inf} (59%)
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/CpuS3DataDxe.inf
create mode 100644 OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
create mode 100644 OvmfPkg/SmmAccess/SmmAccessPei.inf
create mode 100644 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
create mode 100644 OvmfPkg/Include/Register/QemuSmramSaveStateMap.h
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/Cpu.h
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/ArchSpecificDef.h
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.h
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.h
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpService.h
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/X64/ArchSpecificDef.h
create mode 100644 OvmfPkg/QuarkPort/Include/Library/CpuConfigLib.h
create mode 100644 OvmfPkg/SmmAccess/SmramInternal.h
create mode 100644 OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c
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/IA32/ArchSpecific.c
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpApic.c
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/MpCommon.c
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/ProcessorConfig.c
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/X64/ArchSpecific.c
create mode 100644 OvmfPkg/SmmAccess/SmmAccess2Dxe.c
create mode 100644 OvmfPkg/SmmAccess/SmmAccessPei.c
create mode 100644 OvmfPkg/SmmAccess/SmramInternal.c
create mode 100644 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.c
create mode 100644 OvmfPkg/DecomprScratchEnd.fdf.inc
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.S
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/IA32/CpuAsm.asm
create mode 100644 OvmfPkg/QuarkPort/CpuS3DataDxe/X64/CpuAsm.nasm
--
1.8.3.1
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel