@@ -1328,7 +1328,7 @@ static int addr_over_limit(struct addr_ctx *ctx)
return 0;
}
-static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sys_addr)
+static int umc_normaddr_to_sysaddr(u64 *addr, u16 nid, u8 df_inst_id)
{
struct addr_ctx ctx;
@@ -1338,10 +1338,10 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sys_addr
memset(&ctx, 0, sizeof(ctx));
/* We start from the normalized address */
- ctx.ret_addr = norm_addr;
+ ctx.ret_addr = *addr;
ctx.nid = nid;
- ctx.inst_id = umc;
+ ctx.inst_id = df_inst_id;
if (remove_dram_offset(&ctx))
return -EINVAL;
@@ -1364,7 +1364,7 @@ static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sys_addr
if (addr_over_limit(&ctx))
return -EINVAL;
- *sys_addr = ctx.ret_addr;
+ *addr = ctx.ret_addr;
return 0;
}
@@ -3475,10 +3475,10 @@ static void decode_umc_error(int node_id, struct mce *m)
{
u8 ecc_type = (m->status >> 45) & 0x3;
struct mem_ctl_info *mci;
+ u64 sys_addr = m->addr;
struct amd64_pvt *pvt;
struct err_info err;
u8 df_inst_id;
- u64 sys_addr;
mci = edac_mc_find(node_id);
if (!mci)
@@ -3517,7 +3517,7 @@ static void decode_umc_error(int node_id, struct mce *m)
else
df_inst_id = err.channel;
- if (umc_normaddr_to_sysaddr(m->addr, pvt->mc_node_id, df_inst_id, &sys_addr)) {
+ if (umc_normaddr_to_sysaddr(&sys_addr, pvt->mc_node_id, df_inst_id)) {
err.err_code = ERR_NORM_ADDR;
goto log_error;
}
Use a single address parameter for input and result to reduce the number of parameters. Also, rename the "umc" parameter to "df_inst_id" to reflect what the value represents. Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com> --- Link: https://lkml.kernel.org/r/20210623192002.3671647-16-yazen.ghannam@amd.com v2->v3: * Was patch 15 in v2. * Renamed the "umc" parameter. v1->v2: * Moved from arch/x86 to EDAC. drivers/edac/amd64_edac.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)