UefiCpuPkg/MpInitLib: Sync BSP's local APIC timer settings to APs
If APs are waken up by INIT-SIPI-SIPI command, they will lose original local APIC timer setting. As a result, the timer library instance based on local APIC timer cannot work on APs function. This fix is to save BSP's local APIC timer settings before waking up APs and to sync to APs when APs wakeup by INIT-SIPI-SIPI command. Setting BSP's current counter to AP's initial counter could make sure BSP and APs have same counter value across BSP switching. Cc: Feng Tian <feng.tian@intel.com> Cc: Kinney Michael D <michael.d.kinney@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
@@ -227,6 +227,12 @@ struct _CPU_MP_DATA {
|
||||
UINT16 PmCodeSegment;
|
||||
CPU_AP_DATA *CpuData;
|
||||
volatile MP_CPU_EXCHANGE_INFO *MpCpuExchangeInfo;
|
||||
|
||||
UINT32 CurrentTimerCount;
|
||||
UINTN DivideValue;
|
||||
UINT8 Vector;
|
||||
BOOLEAN PeriodicMode;
|
||||
BOOLEAN TimerInterruptState;
|
||||
};
|
||||
|
||||
extern EFI_GUID mCpuInitMpLibHobGuid;
|
||||
|
Reference in New Issue
Block a user