From 5bdb31378999f8a061427a8903b469cf1d02b72e Mon Sep 17 00:00:00 2001 From: Jeff Fan Date: Wed, 2 Dec 2015 03:25:45 +0000 Subject: UefiCpuPkg/CpuMpPei: Sync BSP's CRx to APs when initialization Save BSP's volatile register and sync CRx register to APs when AP 1st wake up. (Sync patch r19088 from main trunk.) Cc: Feng Tian Cc: Michael Kinney Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan Reviewed-by: Feng Tian git-svn-id: https://svn.code.sf.net/p/edk2/code/branches/UDK2015@19094 6f19259b-4bc3-4df7-8a09-765794883524 --- UefiCpuPkg/CpuMpPei/CpuMpPei.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'UefiCpuPkg/CpuMpPei/CpuMpPei.c') diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.c b/UefiCpuPkg/CpuMpPei/CpuMpPei.c index d058d143ce..53af9489b2 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.c +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.c @@ -230,6 +230,10 @@ ApCFunction ( if (PeiCpuMpData->InitFlag) { ProcessorNumber = NumApsExecuting; // + // Sync BSP's Control registers to APs + // + RestoreVolatileRegisters (&PeiCpuMpData->CpuData[0].VolatileRegisters, FALSE); + // // This is first time AP wakeup, get BIST information from AP stack // BistData = *(UINTN *) (PeiCpuMpData->Buffer + ProcessorNumber * PeiCpuMpData->CpuApStackSize - sizeof (UINTN)); @@ -560,6 +564,7 @@ PrepareAPStartupVector ( PeiCpuMpData->CpuData[0].Health.Uint32 = 0; PeiCpuMpData->EndOfPeiFlag = FALSE; InitializeSpinLock(&PeiCpuMpData->MpLock); + SaveVolatileRegisters (&PeiCpuMpData->CpuData[0].VolatileRegisters); CopyMem (&PeiCpuMpData->AddressMap, &AddressMap, sizeof (MP_ASSEMBLY_ADDRESS_MAP)); // -- cgit v1.2.3