Below serial patches are to support the SMM Relocated SmBase handling. To achieve, new hob interface is procuded, and will be consumed by SMM CPU driver & SmmCpuFeaturesLib to do SmBase initialization:
The Smm Base HOB is used to store the relocated SmBase in array for each Processors. If gSmmBaseHobGuid produced, indicate SmBase for each Processors have been relocated. The SmBase address in hob can be guaranteed the SMRAM state save areas for all processors do not overlap. SMM CPU driver will retrieve the SMBASE addresses from SMM Base Hob and installs the SMI handler at [SMBASE+8000h] for each processor instead of relocating SMM Base addresses from SMRAM again. With SMM Base Hob, SMM CPU driver does not need the RSM instruction to reload the SMBASE register with the new allocated value in SMBASE field each time it exits SMM. SMBASE Register for each processors have already been programmed in parallel since the same default SMBASE Address(0x30000) is not used, thus the CPUs over-writing each other's SMM Save State Area will not happen. This way will save boot time on multi-core system. Beside, If gSmmBaseHobGuid found, no need to do the relocation in SmmCpuFeaturesInitializeProcessor(). Jiaxin Wu (4): UefiCpuPkg/SmmBaseHob.h: Add SMM Base HOB Data UefiCpuPkg/PiSmmCpuDxeSmm: Consume SMM Base Hob for SmBase info UefiCpuPkg/SmmCpuFeaturesLib: Skip to configure SMBASE OvmfPkg/SmmCpuFeaturesLib: Skip to configure SMBASE .../Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c | 39 ++++-- .../SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf | 4 + UefiCpuPkg/Include/Guid/SmmBaseHob.h | 51 +++++++ .../Library/SmmCpuFeaturesLib/CpuFeaturesLib.h | 2 + .../SmmCpuFeaturesLib/IntelSmmCpuFeaturesLib.c | 25 +++- .../SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf | 4 + .../SmmCpuFeaturesLib/SmmCpuFeaturesLibStm.inf | 1 + UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmStm.c | 1 - .../StandaloneMmCpuFeaturesLib.inf | 4 + UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c | 40 +++++- UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 25 +++- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 155 ++++++++++++++++----- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 21 ++- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 1 + UefiCpuPkg/UefiCpuPkg.dec | 3 + 15 files changed, 318 insertions(+), 58 deletions(-) create mode 100644 UefiCpuPkg/Include/Guid/SmmBaseHob.h -- 2.16.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#98446): https://edk2.groups.io/g/devel/message/98446 Mute This Topic: https://groups.io/mt/96241699/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-