UefiCpuPkg/CpuCommonFeaturesLib: Merge machine check code to same file.
Original code about Local Machine Check exception feature saves in a discrete file, because features related to machine check architecture all saved in MachineCheck.c file. This patch moved LMCE logic to same file for easy maintenance. Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
parent
ac40197558
commit
306a5bcc6b
|
@ -48,7 +48,6 @@
|
||||||
PendingBreak.c
|
PendingBreak.c
|
||||||
X2Apic.c
|
X2Apic.c
|
||||||
Ppin.c
|
Ppin.c
|
||||||
Lmce.c
|
|
||||||
ProcTrace.c
|
ProcTrace.c
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
|
|
|
@ -229,3 +229,84 @@ McgCtlInitialize (
|
||||||
return RETURN_SUCCESS;
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Detects if Local machine check exception feature supported on current
|
||||||
|
processor.
|
||||||
|
|
||||||
|
@param[in] ProcessorNumber The index of the CPU executing this function.
|
||||||
|
@param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION
|
||||||
|
structure for the CPU executing this function.
|
||||||
|
@param[in] ConfigData A pointer to the configuration buffer returned
|
||||||
|
by CPU_FEATURE_GET_CONFIG_DATA. NULL if
|
||||||
|
CPU_FEATURE_GET_CONFIG_DATA was not provided in
|
||||||
|
RegisterCpuFeature().
|
||||||
|
|
||||||
|
@retval TRUE Local machine check exception feature is supported.
|
||||||
|
@retval FALSE Local machine check exception feature is not supported.
|
||||||
|
|
||||||
|
@note This service could be called by BSP/APs.
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
LmceSupport (
|
||||||
|
IN UINTN ProcessorNumber,
|
||||||
|
IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo,
|
||||||
|
IN VOID *ConfigData OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
MSR_IA32_MCG_CAP_REGISTER McgCap;
|
||||||
|
|
||||||
|
if (!McaSupport (ProcessorNumber, CpuInfo, ConfigData)) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
McgCap.Uint64 = AsmReadMsr64 (MSR_IA32_MCG_CAP);
|
||||||
|
if (ProcessorNumber == 0) {
|
||||||
|
DEBUG ((EFI_D_INFO, "LMCE eanble = %x\n", (BOOLEAN) (McgCap.Bits.MCG_LMCE_P != 0)));
|
||||||
|
}
|
||||||
|
return (BOOLEAN) (McgCap.Bits.MCG_LMCE_P != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initializes Local machine check exception feature to specific state.
|
||||||
|
|
||||||
|
@param[in] ProcessorNumber The index of the CPU executing this function.
|
||||||
|
@param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION
|
||||||
|
structure for the CPU executing this function.
|
||||||
|
@param[in] ConfigData A pointer to the configuration buffer returned
|
||||||
|
by CPU_FEATURE_GET_CONFIG_DATA. NULL if
|
||||||
|
CPU_FEATURE_GET_CONFIG_DATA was not provided in
|
||||||
|
RegisterCpuFeature().
|
||||||
|
@param[in] State If TRUE, then the Local machine check exception
|
||||||
|
feature must be enabled.
|
||||||
|
If FALSE, then the Local machine check exception
|
||||||
|
feature must be disabled.
|
||||||
|
|
||||||
|
@retval RETURN_SUCCESS Local machine check exception feature is initialized.
|
||||||
|
|
||||||
|
**/
|
||||||
|
RETURN_STATUS
|
||||||
|
EFIAPI
|
||||||
|
LmceInitialize (
|
||||||
|
IN UINTN ProcessorNumber,
|
||||||
|
IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo,
|
||||||
|
IN VOID *ConfigData, OPTIONAL
|
||||||
|
IN BOOLEAN State
|
||||||
|
)
|
||||||
|
{
|
||||||
|
MSR_IA32_FEATURE_CONTROL_REGISTER *MsrRegister;
|
||||||
|
|
||||||
|
ASSERT (ConfigData != NULL);
|
||||||
|
MsrRegister = (MSR_IA32_FEATURE_CONTROL_REGISTER *) ConfigData;
|
||||||
|
if (MsrRegister[ProcessorNumber].Bits.Lock == 0) {
|
||||||
|
CPU_REGISTER_TABLE_WRITE_FIELD (
|
||||||
|
ProcessorNumber,
|
||||||
|
Msr,
|
||||||
|
MSR_IA32_FEATURE_CONTROL,
|
||||||
|
MSR_IA32_FEATURE_CONTROL_REGISTER,
|
||||||
|
Bits.LmceOn,
|
||||||
|
(State) ? 1 : 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue