From: Mauro Carvalho Chehab Date: Wed, 17 Jul 2024 05:01:29 +0000 (+0200) Subject: ras-arm-handler: cope with latest upstream changes X-Git-Tag: v0.8.2~65 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=9f26bcbb5a0c89d1a4f25d87ac0a2e7688e8135c;p=users%2Fmchehab%2Frasdaemon.git ras-arm-handler: cope with latest upstream changes Unfortunately, rasdaemon support for the firmware first CPER ARM processor extended trace was added years before having it merged upstream. That's bad, specially since upstream revision requested a change on some fields. Fix support for it by aligning with latest upstream version: https://lore.kernel.org/linux-edac/3853853f820a666253ca8ed6c7c724dc3d50044a.1720679234.git.mchehab+huawei@kernel.org/T/#m17003e47912b228e91e57ac6e4f90ea30061aa3b A backward-compatible logic was added to avoid breaking with existing OOT support. Signed-off-by: Mauro Carvalho Chehab --- diff --git a/ras-arm-handler.c b/ras-arm-handler.c index 1fa510e..ac3cb86 100644 --- a/ras-arm-handler.c +++ b/ras-arm-handler.c @@ -208,15 +208,22 @@ int ras_arm_event_handler(struct trace_seq *s, ev.psci_state = val; trace_seq_printf(s, " psci_state: %d", ev.psci_state); - // Upstream kKernels up to version 6.10 don't decode UEFI 2.6+ N.17 table + /* Upstream Kernels up to version 6.10 don't decode UEFI 2.6+ N.17 table */ if (tep_get_field_val(s, event, "pei_len", record, &val, 1) >= 0) { + bool legacy_patch = false; + ev.pei_len = val; trace_seq_printf(s, " ARM Processor Err Info data len: %d\n", ev.pei_len); - ev.pei_error = tep_get_field_raw(s, event, "buf", record, &len, 1); - if (!ev.pei_error) - return -1; + ev.pei_error = tep_get_field_raw(s, event, "pei_buf", record, &len, 1); + if (!ev.pei_error) { + /* Keep support for OOT CPER N.16/N.17 full table patch */ + ev.pei_error = tep_get_field_raw(s, event, "buf", record, &len, 1); + if (!ev.pei_error) + return -1; + legacy_patch = true; + } display_raw_data(s, ev.pei_error, ev.pei_len); if (tep_get_field_val(s, event, "ctx_len", record, &val, 1) < 0) @@ -225,7 +232,10 @@ int ras_arm_event_handler(struct trace_seq *s, trace_seq_printf(s, " ARM Processor Err Context Info data len: %d\n", ev.ctx_len); - ev.ctx_error = tep_get_field_raw(s, event, "buf1", record, &len, 1); + if (!legacy_patch) + ev.ctx_error = tep_get_field_raw(s, event, "ctx_buf", record, &len, 1); + else + ev.ctx_error = tep_get_field_raw(s, event, "buf1", record, &len, 1); if (!ev.ctx_error) return -1; display_raw_data(s, ev.ctx_error, ev.ctx_len); @@ -236,7 +246,10 @@ int ras_arm_event_handler(struct trace_seq *s, trace_seq_printf(s, " Vendor Specific Err Info data len: %d\n", ev.oem_len); - ev.vsei_error = tep_get_field_raw(s, event, "buf2", record, &len, 1); + if (!legacy_patch) + ev.vsei_error = tep_get_field_raw(s, event, "oem_buf", record, &len, 1); + else + ev.vsei_error = tep_get_field_raw(s, event, "buf2", record, &len, 1); if (!ev.vsei_error) return -1;