UefiCpuPkg/CpuMpPei: Remove unused files and codes
Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Feng Tian <feng.tian@intel.com> Cc: Giri P Mudusuru <giri.p.mudusuru@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Michael Kinney <michael.d.kinney@intel.com>
This commit is contained in:
@@ -21,258 +21,20 @@
|
||||
#include <Ppi/SecPlatformInformation.h>
|
||||
#include <Ppi/SecPlatformInformation2.h>
|
||||
#include <Ppi/EndOfPeiPhase.h>
|
||||
#include <Ppi/VectorHandoffInfo.h>
|
||||
|
||||
#include <Register/Cpuid.h>
|
||||
#include <Register/LocalApic.h>
|
||||
#include <Register/Msr.h>
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
#include <Library/LocalApicLib.h>
|
||||
#include <Library/MtrrLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/PeimEntryPoint.h>
|
||||
#include <Library/PeiServicesLib.h>
|
||||
#include <Library/ReportStatusCodeLib.h>
|
||||
#include <Library/SynchronizationLib.h>
|
||||
#include <Library/TimerLib.h>
|
||||
#include <Library/UefiCpuLib.h>
|
||||
#include <Library/CpuLib.h>
|
||||
#include <Library/CpuExceptionHandlerLib.h>
|
||||
#include <Library/MpInitLib.h>
|
||||
|
||||
#include "Microcode.h"
|
||||
|
||||
//
|
||||
// AP state
|
||||
//
|
||||
typedef enum {
|
||||
CpuStateIdle,
|
||||
CpuStateBusy,
|
||||
CpuStateDisabled
|
||||
} CPU_STATE;
|
||||
|
||||
#define WAKEUP_AP_SIGNAL SIGNATURE_32 ('S', 'T', 'A', 'P')
|
||||
|
||||
typedef enum {
|
||||
ApInHltLoop = 1,
|
||||
ApInMwaitLoop = 2,
|
||||
ApInRunLoop = 3
|
||||
} AP_LOOP_MODE;
|
||||
|
||||
//
|
||||
// AP reset code information
|
||||
//
|
||||
typedef struct {
|
||||
UINT8 *RendezvousFunnelAddress;
|
||||
UINTN ModeEntryOffset;
|
||||
UINTN RendezvousFunnelSize;
|
||||
} MP_ASSEMBLY_ADDRESS_MAP;
|
||||
|
||||
//
|
||||
// CPU exchange information for switch BSP
|
||||
//
|
||||
typedef struct {
|
||||
UINT8 State; // offset 0
|
||||
UINTN StackPointer; // offset 4 / 8
|
||||
IA32_DESCRIPTOR Gdtr; // offset 8 / 16
|
||||
IA32_DESCRIPTOR Idtr; // offset 14 / 26
|
||||
} CPU_EXCHANGE_ROLE_INFO;
|
||||
|
||||
typedef struct _PEI_CPU_MP_DATA PEI_CPU_MP_DATA;
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
//
|
||||
// MP CPU exchange information for AP reset code
|
||||
// This structure is required to be packed because fixed field offsets
|
||||
// into this structure are used in assembly code in this module
|
||||
//
|
||||
typedef struct {
|
||||
UINTN Lock;
|
||||
UINTN StackStart;
|
||||
UINTN StackSize;
|
||||
UINTN CFunction;
|
||||
IA32_DESCRIPTOR GdtrProfile;
|
||||
IA32_DESCRIPTOR IdtrProfile;
|
||||
UINTN BufferStart;
|
||||
UINTN ModeOffset;
|
||||
UINTN NumApsExecuting;
|
||||
UINTN CodeSegment;
|
||||
UINTN DataSegment;
|
||||
UINTN Cr3;
|
||||
PEI_CPU_MP_DATA *PeiCpuMpData;
|
||||
} MP_CPU_EXCHANGE_INFO;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
typedef struct {
|
||||
UINTN Cr0;
|
||||
UINTN Cr3;
|
||||
UINTN Cr4;
|
||||
UINTN Dr0;
|
||||
UINTN Dr1;
|
||||
UINTN Dr2;
|
||||
UINTN Dr3;
|
||||
UINTN Dr6;
|
||||
UINTN Dr7;
|
||||
} CPU_VOLATILE_REGISTERS;
|
||||
|
||||
typedef struct {
|
||||
volatile UINT32 *StartupApSignal;
|
||||
UINT32 ApicId;
|
||||
EFI_HEALTH_FLAGS Health;
|
||||
CPU_STATE State;
|
||||
BOOLEAN CpuHealthy;
|
||||
CPU_VOLATILE_REGISTERS VolatileRegisters;
|
||||
} PEI_CPU_DATA;
|
||||
|
||||
//
|
||||
// PEI CPU MP Data save in memory
|
||||
//
|
||||
struct _PEI_CPU_MP_DATA {
|
||||
SPIN_LOCK MpLock;
|
||||
UINT32 CpuCount;
|
||||
UINT32 BspNumber;
|
||||
UINTN Buffer;
|
||||
UINTN CpuApStackSize;
|
||||
MP_ASSEMBLY_ADDRESS_MAP AddressMap;
|
||||
UINTN WakeupBuffer;
|
||||
UINTN BackupBuffer;
|
||||
UINTN BackupBufferSize;
|
||||
UINTN ApFunction;
|
||||
UINTN ApFunctionArgument;
|
||||
volatile UINT32 FinishedCount;
|
||||
BOOLEAN EndOfPeiFlag;
|
||||
BOOLEAN InitFlag;
|
||||
BOOLEAN X2ApicEnable;
|
||||
CPU_EXCHANGE_ROLE_INFO BSPInfo;
|
||||
CPU_EXCHANGE_ROLE_INFO APInfo;
|
||||
MTRR_SETTINGS MtrrTable;
|
||||
UINT8 ApLoopMode;
|
||||
UINT8 ApTargetCState;
|
||||
PEI_CPU_DATA *CpuData;
|
||||
volatile MP_CPU_EXCHANGE_INFO *MpCpuExchangeInfo;
|
||||
};
|
||||
extern EFI_PEI_PPI_DESCRIPTOR mPeiCpuMpPpiDesc;
|
||||
|
||||
|
||||
/**
|
||||
Assembly code to get starting address and size of the rendezvous entry for APs.
|
||||
Information for fixing a jump instruction in the code is also returned.
|
||||
|
||||
@param AddressMap Output buffer for address map information.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
AsmGetAddressMap (
|
||||
OUT MP_ASSEMBLY_ADDRESS_MAP *AddressMap
|
||||
);
|
||||
|
||||
/**
|
||||
Assembly code to load GDT table and update segment accordingly.
|
||||
|
||||
@param Gdtr Pointer to GDT descriptor
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
AsmInitializeGdt (
|
||||
IN IA32_DESCRIPTOR *Gdtr
|
||||
);
|
||||
|
||||
/**
|
||||
Get available system memory below 1MB by specified size.
|
||||
|
||||
@param PeiCpuMpData Pointer to PEI CPU MP Data
|
||||
**/
|
||||
STATIC
|
||||
VOID
|
||||
BackupAndPrepareWakeupBuffer(
|
||||
IN PEI_CPU_MP_DATA *PeiCpuMpData
|
||||
);
|
||||
|
||||
/**
|
||||
Restore wakeup buffer data.
|
||||
|
||||
@param PeiCpuMpData Pointer to PEI CPU MP Data
|
||||
**/
|
||||
STATIC
|
||||
VOID
|
||||
RestoreWakeupBuffer(
|
||||
IN PEI_CPU_MP_DATA *PeiCpuMpData
|
||||
);
|
||||
|
||||
/**
|
||||
Notify function on End Of Pei PPI.
|
||||
|
||||
On S3 boot, this function will restore wakeup buffer data.
|
||||
On normal boot, this function will flag wakeup buffer to be un-used type.
|
||||
|
||||
@param PeiServices The pointer to the PEI Services Table.
|
||||
@param NotifyDescriptor Address of the notification descriptor data structure.
|
||||
@param Ppi Address of the PPI that was installed.
|
||||
|
||||
@retval EFI_SUCCESS When everything is OK.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
CpuMpEndOfPeiCallback (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
/**
|
||||
This function will be called by BSP to wakeup AP.
|
||||
|
||||
@param PeiCpuMpData Pointer to PEI CPU MP Data
|
||||
@param Broadcast TRUE: Send broadcast IPI to all APs
|
||||
FALSE: Send IPI to AP by ApicId
|
||||
@param ProcessorNumber The handle number of specified processor
|
||||
@param Procedure The function to be invoked by AP
|
||||
@param ProcedureArgument The argument to be passed into AP function
|
||||
**/
|
||||
STATIC
|
||||
VOID
|
||||
WakeUpAP (
|
||||
IN PEI_CPU_MP_DATA *PeiCpuMpData,
|
||||
IN BOOLEAN Broadcast,
|
||||
IN UINTN ProcessorNumber,
|
||||
IN EFI_AP_PROCEDURE Procedure, OPTIONAL
|
||||
IN VOID *ProcedureArgument OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Get CPU MP Data pointer from the Guided HOB.
|
||||
|
||||
@return Pointer to Pointer to PEI CPU MP Data
|
||||
**/
|
||||
PEI_CPU_MP_DATA *
|
||||
GetMpHobData (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Find the current Processor number by APIC ID.
|
||||
|
||||
@param PeiCpuMpData Pointer to PEI CPU MP Data
|
||||
@param ProcessorNumber Return the pocessor number found
|
||||
|
||||
@retval EFI_SUCCESS ProcessorNumber is found and returned.
|
||||
@retval EFI_NOT_FOUND ProcessorNumber is not found.
|
||||
**/
|
||||
STATIC
|
||||
EFI_STATUS
|
||||
GetProcessorNumber (
|
||||
IN PEI_CPU_MP_DATA *PeiCpuMpData,
|
||||
OUT UINTN *ProcessorNumber
|
||||
);
|
||||
|
||||
/**
|
||||
Collects BIST data from PPI.
|
||||
|
||||
@@ -307,14 +69,4 @@ SecPlatformInformation2 (
|
||||
OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2
|
||||
);
|
||||
|
||||
/**
|
||||
Detect whether specified processor can find matching microcode patch and load it.
|
||||
|
||||
@param PeiCpuMpData Pointer to PEI CPU MP Data
|
||||
**/
|
||||
VOID
|
||||
MicrocodeDetect (
|
||||
IN PEI_CPU_MP_DATA *PeiCpuMpData
|
||||
);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user