* [Patch 0/2] Add CPUID MCA supports check @ 2017-08-17 3:44 Eric Dong 2017-08-17 3:44 ` [Patch 1/2] UefiCpuPkg/CpuCommonFeaturesLib: Add CPUID MCA support check Eric Dong ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: Eric Dong @ 2017-08-17 3:44 UTC (permalink / raw) To: edk2-devel This patch series add CPUID MCA supports check before check the LMCE capability. Patch also change LMCE code position for easy maintenance. Eric Dong (2): UefiCpuPkg/CpuCommonFeaturesLib: Add CPUID MCA support check UefiCpuPkg/CpuCommonFeaturesLib: Merge machine check code to same file. .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf | 1 - UefiCpuPkg/Library/CpuCommonFeaturesLib/Lmce.c | 4 ++ .../Library/CpuCommonFeaturesLib/MachineCheck.c | 81 ++++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) -- 2.7.0.windows.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Patch 1/2] UefiCpuPkg/CpuCommonFeaturesLib: Add CPUID MCA support check 2017-08-17 3:44 [Patch 0/2] Add CPUID MCA supports check Eric Dong @ 2017-08-17 3:44 ` Eric Dong 2017-08-17 3:44 ` [Patch 2/2] UefiCpuPkg/CpuCommonFeaturesLib: Merge machine check code to same file Eric Dong 2017-08-28 7:19 ` [Patch 0/2] Add CPUID MCA supports check Ni, Ruiyu 2 siblings, 0 replies; 4+ messages in thread From: Eric Dong @ 2017-08-17 3:44 UTC (permalink / raw) To: edk2-devel; +Cc: Michael Kinney, Ruiyu Ni Add CPUID check to see if the CPU supports the Machine Check Architecture before accessing the Machine Check Architecture related MSRs. 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> --- UefiCpuPkg/Library/CpuCommonFeaturesLib/Lmce.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/Lmce.c b/UefiCpuPkg/Library/CpuCommonFeaturesLib/Lmce.c index 65e5cd3..bf7e26b 100644 --- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/Lmce.c +++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/Lmce.c @@ -41,6 +41,10 @@ LmceSupport ( { 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))); -- 2.7.0.windows.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Patch 2/2] UefiCpuPkg/CpuCommonFeaturesLib: Merge machine check code to same file. 2017-08-17 3:44 [Patch 0/2] Add CPUID MCA supports check Eric Dong 2017-08-17 3:44 ` [Patch 1/2] UefiCpuPkg/CpuCommonFeaturesLib: Add CPUID MCA support check Eric Dong @ 2017-08-17 3:44 ` Eric Dong 2017-08-28 7:19 ` [Patch 0/2] Add CPUID MCA supports check Ni, Ruiyu 2 siblings, 0 replies; 4+ messages in thread From: Eric Dong @ 2017-08-17 3:44 UTC (permalink / raw) To: edk2-devel; +Cc: Michael Kinney, Ruiyu Ni 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> --- .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf | 1 - .../Library/CpuCommonFeaturesLib/MachineCheck.c | 81 ++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf index 9fc3a9c..e9225bb 100644 --- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf +++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf @@ -48,7 +48,6 @@ PendingBreak.c X2Apic.c Ppin.c - Lmce.c ProcTrace.c [Packages] diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/MachineCheck.c b/UefiCpuPkg/Library/CpuCommonFeaturesLib/MachineCheck.c index 72f665d..b012c69 100644 --- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/MachineCheck.c +++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/MachineCheck.c @@ -229,3 +229,84 @@ McgCtlInitialize ( 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; +} -- 2.7.0.windows.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Patch 0/2] Add CPUID MCA supports check 2017-08-17 3:44 [Patch 0/2] Add CPUID MCA supports check Eric Dong 2017-08-17 3:44 ` [Patch 1/2] UefiCpuPkg/CpuCommonFeaturesLib: Add CPUID MCA support check Eric Dong 2017-08-17 3:44 ` [Patch 2/2] UefiCpuPkg/CpuCommonFeaturesLib: Merge machine check code to same file Eric Dong @ 2017-08-28 7:19 ` Ni, Ruiyu 2 siblings, 0 replies; 4+ messages in thread From: Ni, Ruiyu @ 2017-08-28 7:19 UTC (permalink / raw) To: Dong, Eric, edk2-devel@lists.01.org Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Thanks/Ray > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > Eric Dong > Sent: Thursday, August 17, 2017 11:44 AM > To: edk2-devel@lists.01.org > Subject: [edk2] [Patch 0/2] Add CPUID MCA supports check > > This patch series add CPUID MCA supports check before check the LMCE > capability. Patch also change LMCE code position for easy maintenance. > > Eric Dong (2): > UefiCpuPkg/CpuCommonFeaturesLib: Add CPUID MCA support check > UefiCpuPkg/CpuCommonFeaturesLib: Merge machine check code to same > file. > > .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf | 1 - > UefiCpuPkg/Library/CpuCommonFeaturesLib/Lmce.c | 4 ++ > .../Library/CpuCommonFeaturesLib/MachineCheck.c | 81 > ++++++++++++++++++++++ > 3 files changed, 85 insertions(+), 1 deletion(-) > > -- > 2.7.0.windows.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-08-28 7:17 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-17 3:44 [Patch 0/2] Add CPUID MCA supports check Eric Dong 2017-08-17 3:44 ` [Patch 1/2] UefiCpuPkg/CpuCommonFeaturesLib: Add CPUID MCA support check Eric Dong 2017-08-17 3:44 ` [Patch 2/2] UefiCpuPkg/CpuCommonFeaturesLib: Merge machine check code to same file Eric Dong 2017-08-28 7:19 ` [Patch 0/2] Add CPUID MCA supports check Ni, Ruiyu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox