[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240624212008.663832-3-yazen.ghannam@amd.com>
Date: Mon, 24 Jun 2024 16:20:05 -0500
From: Yazen Ghannam <yazen.ghannam@....com>
To: <linux-edac@...r.kernel.org>
CC: <linux-kernel@...r.kernel.org>, <tony.luck@...el.com>, <x86@...nel.org>,
<avadhut.naik@....com>, <john.allen@....com>, Yazen Ghannam
<yazen.ghannam@....com>
Subject: [PATCH v2 2/5] x86/mce: Fixup APIC ID search for x86 CPER decoding
Replace redundant local search code with a call to an x86/topology
helper function.
Additionally, this now handles the case where a CPU match is not found.
Signed-off-by: Yazen Ghannam <yazen.ghannam@....com>
---
Link:
https://lkml.kernel.org/r/20240618172447.GA1387@yaz-khff2.amd.com
v1->v2:
* New in v2.
arch/x86/kernel/cpu/mce/apei.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/arch/x86/kernel/cpu/mce/apei.c b/arch/x86/kernel/cpu/mce/apei.c
index 7f7309ff67d0..59f1c9ea47f5 100644
--- a/arch/x86/kernel/cpu/mce/apei.c
+++ b/arch/x86/kernel/cpu/mce/apei.c
@@ -66,12 +66,16 @@ EXPORT_SYMBOL_GPL(apei_mce_report_mem_error);
int apei_smca_report_x86_error(struct cper_ia_proc_ctx *ctx_info, u64 lapic_id)
{
const u64 *i_mce = ((const u64 *) (ctx_info + 1));
- unsigned int cpu;
struct mce m;
+ int cpu;
if (!boot_cpu_has(X86_FEATURE_SMCA))
return -EINVAL;
+ cpu = topology_get_cpunr(lapic_id);
+ if (cpu < 0)
+ return cpu;
+
/*
* The starting address of the register array extracted from BERT must
* match with the first expected register in the register layout of
@@ -99,16 +103,8 @@ int apei_smca_report_x86_error(struct cper_ia_proc_ctx *ctx_info, u64 lapic_id)
mce_setup(&m);
- m.extcpu = -1;
- m.socketid = -1;
-
- for_each_possible_cpu(cpu) {
- if (cpu_data(cpu).topo.initial_apicid == lapic_id) {
- m.extcpu = cpu;
- m.socketid = cpu_data(m.extcpu).topo.pkg_id;
- break;
- }
- }
+ m.extcpu = cpu;
+ m.socketid = cpu_data(cpu).topo.pkg_id;
m.apicid = lapic_id;
m.bank = (ctx_info->msr_addr >> 4) & 0xFF;
--
2.34.1
Powered by blists - more mailing lists