From 4007c95f8a8d570542ffc11676b619ea5649d0e7 Mon Sep 17 00:00:00 2001 From: Shiju Jose Date: Sat, 5 Mar 2022 18:19:38 +0000 Subject: [PATCH 5/6] rasdaemon: ras-mc-ctl: Add support to display the HiSilicon vendor errors for a specified module Add support to display the HiSilicon vendor errors for a specified module. Signed-off-by: Shiju Jose --- util/ras-mc-ctl.in | 119 ++++++++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 56 deletions(-) diff --git a/util/ras-mc-ctl.in b/util/ras-mc-ctl.in index 0e32cb1..d728300 100755 --- a/util/ras-mc-ctl.in +++ b/util/ras-mc-ctl.in @@ -96,7 +96,8 @@ Usage: $prog [OPTIONS...] --errors Shows the errors stored at the error database. --error-count Shows the corrected and uncorrected error counts using sysfs. --vendor-errors-summary Presents a summary of the vendor-specific logged errors. - --vendor-errors Shows the vendor-specific errors stored in the error database. + --vendor-errors Shows the vendor-specific errors stored in the error database. + --vendor-errors Shows the vendor-specific errors for a specific module stored in the error database. --vendor-platforms Shows the supported platforms with platform-ids for the vendor-specific errors. --help This help message. EOF @@ -1640,15 +1641,19 @@ sub vendor_errors_summary sub vendor_errors { require DBI; - my ($num_args, $platform_id); + my ($num_args, $platform_id, $module); my ($query, $query_handle, $id, $timestamp, $out); my ($version, $soc_id, $socket_id, $totem_id, $nimbus_id, $sub_system_id, $core_id, $port_id); my ($module_id, $sub_module_id, $err_severity, $err_type, $pcie_info, $regs); $num_args = $#ARGV + 1; $platform_id = 0; + $module = 0; if ($num_args ne 0) { $platform_id = $ARGV[0]; + if ($num_args gt 1) { + $module = $ARGV[1]; + } } else { usage(1); return; @@ -1664,21 +1669,21 @@ sub vendor_errors $query_handle->bind_columns(\($id, $timestamp, $version, $soc_id, $socket_id, $nimbus_id, $module_id, $sub_module_id, $err_severity, $regs)); $out = ""; while($query_handle->fetch()) { - $out .= "$id. $timestamp Error Info: "; - $out .= "version=$version, "; - $out .= "soc_id=$soc_id, " if ($soc_id); - $out .= "socket_id=$socket_id, " if ($socket_id); - $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); - $out .= "module_id=$module_id, " if ($module_id); - $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); - $out .= "err_severity=$err_severity, " if ($err_severity); - $out .= "Error Registers: $regs " if ($regs); - $out .= "\n\n"; + if ($module eq 0 || ($module_id && ($module eq $module_id))) { + $out .= "$id. $timestamp Error Info: "; + $out .= "version=$version, "; + $out .= "soc_id=$soc_id, " if ($soc_id); + $out .= "socket_id=$socket_id, " if ($socket_id); + $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); + $out .= "module_id=$module_id, " if ($module_id); + $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); + $out .= "err_severity=$err_severity, " if ($err_severity); + $out .= "Error Registers: $regs " if ($regs); + $out .= "\n\n"; + } } if ($out ne "") { print "HiSilicon Kunpeng920 OEM type1 error events:\n$out\n"; - } else { - print "No HiSilicon Kunpeng920 OEM type1 errors.\n"; } $query_handle->finish; @@ -1688,21 +1693,21 @@ sub vendor_errors $query_handle->bind_columns(\($id, $timestamp, $version, $soc_id, $socket_id, $nimbus_id, $module_id, $sub_module_id, $err_severity, $regs)); $out = ""; while($query_handle->fetch()) { - $out .= "$id. $timestamp Error Info: "; - $out .= "version=$version, "; - $out .= "soc_id=$soc_id, " if ($soc_id); - $out .= "socket_id=$socket_id, " if ($socket_id); - $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); - $out .= "module_id=$module_id, " if ($module_id); - $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); - $out .= "err_severity=$err_severity, " if ($err_severity); - $out .= "Error Registers: $regs " if ($regs); - $out .= "\n\n"; + if ($module eq 0 || ($module_id && ($module eq $module_id))) { + $out .= "$id. $timestamp Error Info: "; + $out .= "version=$version, "; + $out .= "soc_id=$soc_id, " if ($soc_id); + $out .= "socket_id=$socket_id, " if ($socket_id); + $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); + $out .= "module_id=$module_id, " if ($module_id); + $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); + $out .= "err_severity=$err_severity, " if ($err_severity); + $out .= "Error Registers: $regs " if ($regs); + $out .= "\n\n"; + } } if ($out ne "") { print "HiSilicon Kunpeng920 OEM type2 error events:\n$out\n"; - } else { - print "No HiSilicon Kunpeng920 OEM type2 errors.\n"; } $query_handle->finish; @@ -1712,23 +1717,23 @@ sub vendor_errors $query_handle->bind_columns(\($id, $timestamp, $version, $soc_id, $socket_id, $nimbus_id, $sub_module_id, $core_id, $port_id, $err_severity, $err_type, $regs)); $out = ""; while($query_handle->fetch()) { - $out .= "$id. $timestamp Error Info: "; - $out .= "version=$version, "; - $out .= "soc_id=$soc_id, " if ($soc_id); - $out .= "socket_id=$socket_id, " if ($socket_id); - $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); - $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); - $out .= "core_id=$core_id, " if ($core_id); - $out .= "port_id=$port_id, " if ($port_id); - $out .= "err_severity=$err_severity, " if ($err_severity); - $out .= "err_type=$err_type, " if ($err_type); - $out .= "Error Registers: $regs " if ($regs); - $out .= "\n\n"; + if ($module eq 0 || ($sub_module_id && ($module eq $sub_module_id))) { + $out .= "$id. $timestamp Error Info: "; + $out .= "version=$version, "; + $out .= "soc_id=$soc_id, " if ($soc_id); + $out .= "socket_id=$socket_id, " if ($socket_id); + $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); + $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); + $out .= "core_id=$core_id, " if ($core_id); + $out .= "port_id=$port_id, " if ($port_id); + $out .= "err_severity=$err_severity, " if ($err_severity); + $out .= "err_type=$err_type, " if ($err_type); + $out .= "Error Registers: $regs " if ($regs); + $out .= "\n\n"; + } } if ($out ne "") { print "HiSilicon Kunpeng920 PCIe controller error events:\n$out\n"; - } else { - print "No HiSilicon Kunpeng920 PCIe controller errors.\n"; } $query_handle->finish; } @@ -1741,22 +1746,24 @@ sub vendor_errors $query_handle->bind_columns(\($id, $timestamp, $version, $soc_id, $socket_id, $totem_id, $nimbus_id, $sub_system_id, $module_id, $sub_module_id, $core_id, $port_id, $err_type, $pcie_info, $err_severity, $regs)); $out = ""; while($query_handle->fetch()) { - $out .= "$id. $timestamp Error Info: "; - $out .= "version=$version, "; - $out .= "soc_id=$soc_id, " if ($soc_id); - $out .= "socket_id=$socket_id, " if ($socket_id); - $out .= "totem_id=$totem_id, " if ($totem_id); - $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); - $out .= "sub_system_id=$sub_system_id, " if ($sub_system_id); - $out .= "module_id=$module_id, " if ($module_id); - $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); - $out .= "core_id=$core_id, " if ($core_id); - $out .= "port_id=$port_id, " if ($port_id); - $out .= "err_type=$err_type, " if ($err_type); - $out .= "pcie_info=$pcie_info, " if ($pcie_info); - $out .= "err_severity=$err_severity, " if ($err_severity); - $out .= "Error Registers: $regs" if ($regs); - $out .= "\n\n"; + if ($module eq 0 || ($module_id && ($module eq $module_id))) { + $out .= "$id. $timestamp Error Info: "; + $out .= "version=$version, "; + $out .= "soc_id=$soc_id, " if ($soc_id); + $out .= "socket_id=$socket_id, " if ($socket_id); + $out .= "totem_id=$totem_id, " if ($totem_id); + $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id); + $out .= "sub_system_id=$sub_system_id, " if ($sub_system_id); + $out .= "module_id=$module_id, " if ($module_id); + $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id); + $out .= "core_id=$core_id, " if ($core_id); + $out .= "port_id=$port_id, " if ($port_id); + $out .= "err_type=$err_type, " if ($err_type); + $out .= "pcie_info=$pcie_info, " if ($pcie_info); + $out .= "err_severity=$err_severity, " if ($err_severity); + $out .= "Error Registers: $regs" if ($regs); + $out .= "\n\n"; + } } if ($out ne "") { print "HiSilicon Kunpeng9xx common error events:\n$out\n"; -- 2.25.1