|
[Patch v4 08/46] UefiCpuPkg/MpInitLib: Add EnableExecuteDisable in MP_CPU_EXCHANGE_INFO
EnableExecuteDisable in MP_CPU_EXCHANGE_INFO is used to tell AP reset vector if enable execute disable feature on APs. This feature should be enabled before CR3 is written. Cc: Michael Kinney <michael
EnableExecuteDisable in MP_CPU_EXCHANGE_INFO is used to tell AP reset vector if enable execute disable feature on APs. This feature should be enabled before CR3 is written. Cc: Michael Kinney <michael
|
By
Jeff Fan
·
|
|
[Patch v4 09/46] UefiCpuPkg/MpInitLib: Add AsmRelocateApLoop() assembly code
AsmRelocateApLoop() is used to place APs into MWAIT-loop if MonitorMwait feature is supported before hand-off to OS, or place APs into HLT-loop if MonitorMwait feature is not supported. If the current
AsmRelocateApLoop() is used to place APs into MWAIT-loop if MonitorMwait feature is supported before hand-off to OS, or place APs into HLT-loop if MonitorMwait feature is not supported. If the current
|
By
Jeff Fan
·
|
|
[Patch v4 10/46] UefiCpuPkg/MpInitLib: Add MP_ASSEMBLY_ADDRESS_MAP
In MpInitLibInitialize(), invoke AsmGetAddress() to get get assembly functions' entry addresses and the sizes from returned MP_ASSEMBLY_ADDRESS_MAP structure. v4: 1. Add AsmRelocateApLoop information
In MpInitLibInitialize(), invoke AsmGetAddress() to get get assembly functions' entry addresses and the sizes from returned MP_ASSEMBLY_ADDRESS_MAP structure. v4: 1. Add AsmRelocateApLoop information
|
By
Jeff Fan
·
|
|
[Patch v4 11/46] UefiCpuPkg/MpInitLib: Get ApLoopMode and MointorFilter size
Firstly, get ApLoopMode from PcdCpuApLoopMode. If MonitorMwait feature is not supported, update ApLoopMode to ApHltLoop. If MonitorMwait feature is supported, get MointorFilter size by CPUID.[EAX=05H]
Firstly, get ApLoopMode from PcdCpuApLoopMode. If MonitorMwait feature is not supported, update ApLoopMode to ApHltLoop. If MonitorMwait feature is supported, get MointorFilter size by CPUID.[EAX=05H]
|
By
Jeff Fan
·
|
|
[Patch v4 12/46] UefiCpuPkg/MpInitLib: Allocate and initialize memory of MP Data buffer
Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: Laszlo Ersek <lersek@...> Contributed-under: TianoCore Contribution Agreement 1.0
Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: Laszlo Ersek <lersek@...> Contributed-under: TianoCore Contribution Agreement 1.0
|
By
Jeff Fan
·
|
|
[Patch v4 13/46] UefiCpuPkg/MpInitLib: Initialize CPU_AP_DATA for CPU APs
Initialize CPU_AP_DATA for CPU APs and add GetApState()/SetApState() helper functions to get/set AP state. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <
Initialize CPU_AP_DATA for CPU APs and add GetApState()/SetApState() helper functions to get/set AP state. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <
|
By
Jeff Fan
·
|
|
[Patch v4 14/46] UefiCpuPkg/MpInitLib: Add CPU_VOLATILE_REGISTERS & worker functions
Add CPU_VOLATILE_REGISTERS definitions for CRx and DRx required to be restored after APs received INIT IPI. Add worker functions SaveVolatileRegisters()/RestoreVolatileRegisters() used to save/restore
Add CPU_VOLATILE_REGISTERS definitions for CRx and DRx required to be restored after APs received INIT IPI. Add worker functions SaveVolatileRegisters()/RestoreVolatileRegisters() used to save/restore
|
By
Jeff Fan
·
|
|
[Patch v4 15/46] UefiCpuPkg/MpInitLib: Add MicrocodeDetect() and load microcode on BSP
v4: 1. ProcessorSignature is updated to CPU_MICROCODE_PROCESSOR_SIGNATURE instead of UINT32. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusur
v4: 1. ProcessorSignature is updated to CPU_MICROCODE_PROCESSOR_SIGNATURE instead of UINT32. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusur
|
By
Jeff Fan
·
|
|
[Patch v4 16/46] UefiCpuPkg/MpInitLib: Save CPU MP Data pointer
In PeiMpInitLib, save CPU MP Data pointer into one local Guided HOB. In DxeMpInitLib, save CPU MP Data pointer into one global variable. Add helper functions GetCpuMpData()/SaveCpuMpData(). Cc: Michae
In PeiMpInitLib, save CPU MP Data pointer into one local Guided HOB. In DxeMpInitLib, save CPU MP Data pointer into one global variable. Add helper functions GetCpuMpData()/SaveCpuMpData(). Cc: Michae
|
By
Jeff Fan
·
|
|
[Patch v4 17/46] UefiCpuPkg/MpInitLib: Register one End of PEI callback function
In PeiMpInitLib, register End of PEI callback function CpuMpEndOfPeiCallback(). Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: La
In PeiMpInitLib, register End of PEI callback function CpuMpEndOfPeiCallback(). Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: La
|
By
Jeff Fan
·
|
|
[Patch v4 18/46] UefiCpuPkg/MpInitLib: Register one period event to check APs status
In DxeMpInitLib, register one period event callback function CheckAPsStatus() used to check AP Status. v3: 1. Use CamelCase for mCheckAllAPsEvent, mStopCheckAllApsStatus and CheckAndUpdateApsStatus().
In DxeMpInitLib, register one period event callback function CheckAPsStatus() used to check AP Status. v3: 1. Use CamelCase for mCheckAllAPsEvent, mStopCheckAllApsStatus and CheckAndUpdateApsStatus().
|
By
Jeff Fan
·
|
|
[Patch v4 19/46] UefiCpuPkg/MpInitLib: Allocate AP reset vector buffer under 1MB
In PeiMpInitLib, searching unallocated memory under in EFI_HOB_TYPE_RESOURCE_DESCRIPTOR hobs to find the memory under 1MB for AP reset vector. After End of PEI event triggered, we need to restore orig
In PeiMpInitLib, searching unallocated memory under in EFI_HOB_TYPE_RESOURCE_DESCRIPTOR hobs to find the memory under 1MB for AP reset vector. After End of PEI event triggered, we need to restore orig
|
By
Jeff Fan
·
|
|
[Patch v4 20/46] UefiCpuPkg/MpInitLib: Add ApCFunction() executed by assembly code
ApCFunction() is the first C function executed from AP reset vector. When APs waken up at the first time, it will sync BSP's MTRR setting and load microcode on APs and collect APs' BIST information. W
ApCFunction() is the first C function executed from AP reset vector. When APs waken up at the first time, it will sync BSP's MTRR setting and load microcode on APs and collect APs' BIST information. W
|
By
Jeff Fan
·
|
|
[Patch v4 21/46] UefiCpuPkg/MpInitLib: Fill MP_CPU_EXCHANGE_INFO fields
FillExchangeInfoData() is used to fill MP_CPU_EXCHANGE_INFO date exchanged between C code and assembly code of AP reset vector. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...>
FillExchangeInfoData() is used to fill MP_CPU_EXCHANGE_INFO date exchanged between C code and assembly code of AP reset vector. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...>
|
By
Jeff Fan
·
|
|
[Patch v4 22/46] UefiCpuPkg/MpInitLib: Add WakeUpAP()
WakeUpAP() is used to wakeup APs per current ApLoopMode and make sure APs wake up successfully. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudu
WakeUpAP() is used to wakeup APs per current ApLoopMode and make sure APs wake up successfully. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudu
|
By
Jeff Fan
·
|
|
[Patch v4 23/46] UefiCpuPkg/MpInitLib: Send INIT-SIPI-SIPI to get processor count
CollectProcessorCount() will send the 1st INIT-SIPI-SIPI to get processor count in system. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@
CollectProcessorCount() will send the 1st INIT-SIPI-SIPI to get processor count in system. Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@
|
By
Jeff Fan
·
|
|
[Patch v4 24/46] UefiCpuPkg/MpInitLib: Enable x2APIC mode on BSP/APs
If x2APIC flag is set, enable x2APIC mode on all APs and BSP. Before we wakeup APs to enable x2APIC mode, we should wait all APs have finished initialization. Cc: Michael Kinney <michael.d.kinney@...>
If x2APIC flag is set, enable x2APIC mode on all APs and BSP. Before we wakeup APs to enable x2APIC mode, we should wait all APs have finished initialization. Cc: Michael Kinney <michael.d.kinney@...>
|
By
Jeff Fan
·
|
|
[Patch v4 25/46] UefiCpuPkg/MpInitLib: Sort processor by ascending order of APIC ID
Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: Laszlo Ersek <lersek@...> Contributed-under: TianoCore Contribution Agreement 1.0
Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: Laszlo Ersek <lersek@...> Contributed-under: TianoCore Contribution Agreement 1.0
|
By
Jeff Fan
·
|
|
[Patch v4 26/46] UefiCpuPkg/MpInitLib: Skip collect processor count if GUIDed HOB exist
If GUIDed HOB mCpuInitMpLibHobGuid exists, we could get the processor count and processor APICID and Initial APICID from CPU_INFO_IN_HOB. We needn't to delay for broadcast INIT-SIPI-SIPI results and c
If GUIDed HOB mCpuInitMpLibHobGuid exists, we could get the processor count and processor APICID and Initial APICID from CPU_INFO_IN_HOB. We needn't to delay for broadcast INIT-SIPI-SIPI results and c
|
By
Jeff Fan
·
|
|
[Patch v4 27/46] UefiCpuPkg/MpInitLib: Implementation of MpInitLibGetNumberOfProcessors()
Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: Laszlo Ersek <lersek@...> Contributed-under: TianoCore Contribution Agreement 1.0
Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: Laszlo Ersek <lersek@...> Contributed-under: TianoCore Contribution Agreement 1.0
|
By
Jeff Fan
·
|