In this version I've addressed the feedback I got for v1, plus I've
rebased the series on top of Mike's

  [edk2] [PATCH 0/7] UefiCpuPkg: Add CPU SMM and SecCore
  
http://news.gmane.org/find-root.php?message_id=1444003040-21292-1-git-send-email-michael.d.kin...@intel.com

The following v1 patches have been dropped altogether, thanks to Mike's
work, because PiSmmCpuDxeSmm belongs under UefiCpuPkg now:

  [PATCH 17/58] OvmfPkg: import PiSmmCpuDxeSmm from
                Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  [PATCH 19/58] OvmfPkg: PiSmmCpuDxeSmm: eliminate CpuConfigLib linkage
                dependency
  [PATCH 21/58] OvmfPkg: import SocketLga775Lib header from
                Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  [PATCH 22/58] OvmfPkg: import SmmCpuPlatformHookLibNull from
                Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  [PATCH 24/58] OvmfPkg: replace IA32FamilyCpuBasePkg.dec references
                with OvmfPkg.dec
  [PATCH 25/58] OvmfPkg: replace gEfiCpuTokenSpaceGuid with
                gQuarkPortCpuTokenSpaceGuid
  [PATCH 26/58] OvmfPkg: PiSmmCpuDxeSmm: fix namespace for
                PcdCpuMaxLogicalProcessorNumber
  [PATCH 28/58] OvmfPkg: import three protocols from
                Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg
  [PATCH 29/58] OvmfPkg: PiSmmCpuDxeSmm: fix warning about
                UINT32-to-(VOID*) conversion
  [PATCH 30/58] OvmfPkg: PiSmmCpuDxeSmm: fix up pathname in include
                directive
  [PATCH 32/58] OvmfPkg: QuarkPort: drop ACPI_CPU_DATA.APState
  [PATCH 38/58] UefiCpuPkg: CpuDxe: optionally save MTRR settings to
                AcpiNVS memory block
  [PATCH 41/58] UefiCpuPkg: CpuDxe: provide EFI_MP_SERVICES_PROTOCOL
                when there's no AP
  [PATCH 45/58] OvmfPkg: QuarkPort/PiSmmCpuDxeSmm: hard-code CPU class
                identification

The following patches are new in v2:

  [PATCH v2 01/41] UefiCpuPkg: CpuDxe: Fix ASSERT() when only 1 CPU
                   detected
  [PATCH v2 18/41] OvmfPkg: resolve CpuExceptionHandlerLib for
                   DXE_SMM_DRIVER modules

The other patches have been preserved, with or without changes
(significant or otherwise); in such cases, the changes, if any, are
noted per patch.

Public branch (including Mike's patches):
<https://github.com/lersek/edk2/commits/smm3_v2>

This version works on the same "functionality level" as v1 -- single
VCPU, Ia32, -nx, S3.

I tried multiple VCPU as well; unfortunately, it breaks down in
different spots, dependent on whether I use TCG or KVM. Namely, with
TCG, even the first StartupAllAPs() call (visible in "[PATCH v2 02/41]
UefiCpuPkg: CpuDxe: broadcast MTRR changes to APs") gets stuck, whereas
with KVM, the SmmRelocateBases() call never completes in
"UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c".

Given that KVM gets past the first StartupAllAPs() call, I think TCG's
hang may be TCG's fault. And because Mike tested
"UefiCpuPkg/PiSmmCpuDxeSmm" on physical MP hardware, I tend to think
that KVM getting stuck in SmmRelocateBases() may be a KVM bug.

Cc: Paolo Bonzini <pbonz...@redhat.com>
Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Michael Kinney <michael.d.kin...@intel.com>

Thanks
Laszlo

Laszlo Ersek (40):
  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: 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

Michael Kinney (1):
  UefiCpuPkg: CpuDxe: Fix ASSERT() when only 1 CPU detected

 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                                                            
          |  29 +
 OvmfPkg/OvmfPkg.fdf.inc                                                        
          |   2 +
 OvmfPkg/OvmfPkgIa32.dsc                                                        
          | 111 +++-
 OvmfPkg/OvmfPkgIa32.fdf                                                        
          |  57 +-
 OvmfPkg/OvmfPkgIa32X64.dsc                                                     
          | 111 +++-
 OvmfPkg/OvmfPkgIa32X64.fdf                                                     
          |  57 +-
 OvmfPkg/OvmfPkgX64.dsc                                                         
          | 111 +++-
 OvmfPkg/OvmfPkgX64.fdf                                                         
          |  57 +-
 OvmfPkg/PlatformPei/Fv.c                                                       
          |  27 +-
 OvmfPkg/PlatformPei/MemDetect.c                                                
          |  85 ++-
 OvmfPkg/PlatformPei/Platform.c                                                 
          |   9 +-
 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                                
          | 102 +++
 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                               
          | 335 ++++++++++
 OvmfPkg/QuarkPort/Include/Library/CpuConfigLib.h                               
          | 671 ++++++++++++++++++++
 OvmfPkg/README                                                                 
          |  43 ++
 OvmfPkg/Sec/SecMain.c                                                          
          |  52 +-
 OvmfPkg/Sec/SecMain.inf                                                        
          |   6 +
 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                                        
          | 365 +++++++++++
 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf                                      
          |  65 ++
 UefiCpuPkg/CpuDxe/CpuDxe.c                                                     
          |  26 +
 UefiCpuPkg/CpuDxe/CpuMp.c                                                      
          |  36 +-
 UefiCpuPkg/CpuDxe/CpuMp.h                                                      
          |  13 +
 57 files changed, 5145 insertions(+), 587 deletions(-)
 create mode 100644 OvmfPkg/DecomprScratchEnd.fdf.inc
 create mode 100644 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceDxe.c
 create mode 100644 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockServiceSmm.c
 create mode 100644 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlashDxe.c
 copy OvmfPkg/QemuFlashFvbServicesRuntimeDxe/{FvbServicesRuntimeDxe.inf => 
FvbServicesSmm.inf} (59%)
 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/Library/CpuConfigLib.h
 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

-- 
1.8.3.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to