UefiCpuPkg/PiSmmCpuDxeSmm: Add logic to support semaphore type.
V4 changes: 1. Serial console log for different threads when program register table. 2. Check the AcpiCpuData before use it to avoid potential ASSERT. V3 changes: 1. Use global variable instead of internal function to return string for register type and dependence type. 2. Add comments for some complicated logic. V1 changes: Because this driver needs to set MSRs saved in normal boot phase, sync semaphore logic from RegisterCpuFeaturesLib code which used for normal boot phase. Detail see below change for RegisterCpuFeaturesLib: UefiCpuPkg/RegisterCpuFeaturesLib: Add logic to support semaphore type. Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
@@ -1303,8 +1303,6 @@ InitializeSmmCpuSemaphores (
|
||||
mSmmCpuSemaphores.SemaphoreGlobal.CodeAccessCheckLock
|
||||
= (SPIN_LOCK *)SemaphoreAddr;
|
||||
SemaphoreAddr += SemaphoreSize;
|
||||
mSmmCpuSemaphores.SemaphoreGlobal.MemoryMappedLock
|
||||
= (SPIN_LOCK *)SemaphoreAddr;
|
||||
|
||||
SemaphoreAddr = (UINTN)SemaphoreBlock + GlobalSemaphoresSize;
|
||||
mSmmCpuSemaphores.SemaphoreCpu.Busy = (SPIN_LOCK *)SemaphoreAddr;
|
||||
@@ -1321,7 +1319,6 @@ InitializeSmmCpuSemaphores (
|
||||
|
||||
mPFLock = mSmmCpuSemaphores.SemaphoreGlobal.PFLock;
|
||||
mConfigSmmCodeAccessCheckLock = mSmmCpuSemaphores.SemaphoreGlobal.CodeAccessCheckLock;
|
||||
mMemoryMappedLock = mSmmCpuSemaphores.SemaphoreGlobal.MemoryMappedLock;
|
||||
|
||||
mSemaphoreSize = SemaphoreSize;
|
||||
}
|
||||
|
Reference in New Issue
Block a user