From: Shiju Jose Date: Mon, 12 Feb 2024 10:38:51 +0000 (+0000) Subject: rasdaemon: ras-mc-ctl: Add support for CXL overflow trace events X-Git-Tag: v0.8.1~34 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b22cb067755f4604770f9864a0babed8f93a1553;p=users%2Fmchehab%2Frasdaemon.git rasdaemon: ras-mc-ctl: Add support for CXL overflow trace events Add support for CXL overflow events to the ras-mc-ctl tool. Signed-off-by: Shiju Jose Signed-off-by: Mauro Carvalho Chehab --- diff --git a/util/ras-mc-ctl.in b/util/ras-mc-ctl.in index bcab43f..be9a1ee 100755 --- a/util/ras-mc-ctl.in +++ b/util/ras-mc-ctl.in @@ -1376,6 +1376,22 @@ sub summary print "No CXL AER correctable errors.\n\n"; } $query_handle->finish; + + # CXL overflow errors + $query = "select memdev, count(*) from cxl_overflow_event$conf{opt}{since} group by memdev"; + $query_handle = $dbh->prepare($query); + $query_handle->execute(); + $query_handle->bind_columns(\($memdev, $count)); + $out = ""; + while($query_handle->fetch()) { + $out .= "\t$memdev errors: $count\n"; + } + if ($out ne "") { + print "CXL overflow events summary:\n$out\n"; + } else { + print "No CXL overflow errors.\n\n"; + } + $query_handle->finish; } # extlog errors @@ -1484,6 +1500,7 @@ sub errors my ($error_count, $affinity, $mpidr, $r_state, $psci_state); my ($pfn, $page_type, $action_result); my ($memdev, $host, $serial, $error_status, $first_error, $header_log); + my ($log_type, $first_ts, $last_ts); my $dbh = DBI->connect("dbi:SQLite:dbname=$dbname", "", "", {}); @@ -1608,6 +1625,27 @@ sub errors print "No CXL AER correctable errors.\n\n"; } $query_handle->finish; + + # CXL overflow errors + $query = "select id, timestamp, memdev, host, serial, log_type, count, first_ts, last_ts from cxl_overflow_event$conf{opt}{since} order by id"; + $query_handle = $dbh->prepare($query); + $query_handle->execute(); + $query_handle->bind_columns(\($id, $timestamp, $memdev, $host, $serial, $log_type, $count, $first_ts, $last_ts)); + $out = ""; + while($query_handle->fetch()) { + $out .= "$id $timestamp error: "; + $out .= "memdev=$memdev, " if (defined $memdev && length $memdev); + $out .= "host=$host, " if (defined $host && length $host); + $out .= sprintf "serial=0x%llx, ", $serial if (defined $serial && length $serial); + $out .= "log=$log_type, " if (defined $log_type && length $log_type); + $out .= sprintf "%u records from $first_ts to $last_ts", $count if (defined $count && length $count); + $out .= "\n"; + } + if ($out ne "") { + print "CXL overflow events:\n$out\n"; + } else { + print "No CXL overflow errors.\n\n"; + } } # Extlog errors