UefiCpuPkg/PiSmmCpuDxeSmm: TransferApToSafeState() use UINTN params
Update TransferApToSafeState() use UINTN params to reduce the number of type casts required in these calls. Also change the NumberToFinish parameter from UINT32* to UINTN NumberToFinishAddress to resolve issues with conversion from a volatile pointer to a non-volatile pointer. The assembly code that receives the NumberToFinishAddress value must treat that memory location as a volatile to track the number of APs. Cc: Liming Gao <liming.gao@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Andrew Fish <afish@apple.com> Cc: Jeff Fan <jeff.fan@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com>
This commit is contained in:
@@ -129,24 +129,24 @@ GetProtectedModeCS (
|
||||
/**
|
||||
Transfer AP to safe hlt-loop after it finished restore CPU features on S3 patch.
|
||||
|
||||
@param[in] ApHltLoopCode The 32-bit address of the safe hlt-loop function.
|
||||
@param[in] TopOfStack A pointer to the new stack to use for the ApHltLoopCode.
|
||||
@param[in] NumberToFinish Semaphore of APs finish count.
|
||||
@param[in] ApHltLoopCode The address of the safe hlt-loop function.
|
||||
@param[in] TopOfStack A pointer to the new stack to use for the ApHltLoopCode.
|
||||
@param[in] NumberToFinishAddress Address of Semaphore of APs finish count.
|
||||
|
||||
**/
|
||||
VOID
|
||||
TransferApToSafeState (
|
||||
IN UINT32 ApHltLoopCode,
|
||||
IN UINT32 TopOfStack,
|
||||
IN UINT32 *NumberToFinish
|
||||
IN UINTN ApHltLoopCode,
|
||||
IN UINTN TopOfStack,
|
||||
IN UINTN NumberToFinishAddress
|
||||
)
|
||||
{
|
||||
AsmDisablePaging64 (
|
||||
GetProtectedModeCS (),
|
||||
(UINT32) (UINTN) ApHltLoopCode,
|
||||
(UINT32) (UINTN) NumberToFinish,
|
||||
(UINT32)ApHltLoopCode,
|
||||
(UINT32)NumberToFinishAddress,
|
||||
0,
|
||||
TopOfStack
|
||||
(UINT32)TopOfStack
|
||||
);
|
||||
//
|
||||
// It should never reach here
|
||||
|
Reference in New Issue
Block a user