ghes_do_proc() has a catch-all for unknown or unhandled CPER formats
(UEFI v2.10 Appendix N 2.3), extlog_print() does not. This gap was
noticed by a RAS test that injected CXL protocol errors which were
notified to extlog_print() via the IOMCA (I/O Machine Check
Architecture) mechanism. Bring parity to the extlog_print() path by
including a similar log_non_standard_event().

Cc: Dan Williams <[email protected]>
Reviewed-by: Dan Williams <[email protected]>
Reviewed-by: Dave Jiang <[email protected]>
Reviewed-by: Jonathan Cameron <[email protected]>
Reviewed-by: Qiuxu Zhuo <[email protected]>
Signed-off-by: Fabio M. De Francesco <[email protected]>
---
 drivers/acpi/acpi_extlog.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c
index f6b9562779de..47d11cb5c912 100644
--- a/drivers/acpi/acpi_extlog.c
+++ b/drivers/acpi/acpi_extlog.c
@@ -183,6 +183,12 @@ static int extlog_print(struct notifier_block *nb, 
unsigned long val,
                        if (gdata->error_data_length >= sizeof(*mem))
                                trace_extlog_mem_event(mem, err_seq, fru_id, 
fru_text,
                                                       
(u8)gdata->error_severity);
+               } else {
+                       void *err = acpi_hest_get_payload(gdata);
+
+                       log_non_standard_event(sec_type, fru_id, fru_text,
+                                              gdata->error_severity, err,
+                                              gdata->error_data_length);
                }
        }
 
-- 
2.51.0


Reply via email to