summaryrefslogtreecommitdiff
path: root/usr/src/lib/libprtdiag_psr
diff options
context:
space:
mode:
authorvb70745 <none@none>2008-05-29 15:17:00 -0700
committervb70745 <none@none>2008-05-29 15:17:00 -0700
commit8a88157cd7245729dea5d91a5181bb05a80164a8 (patch)
treefbf68f275ef28fe6c296a2e26da796d85e9b2ab7 /usr/src/lib/libprtdiag_psr
parente2529962e4cb04b49c12526895f0536d1d46daf6 (diff)
downloadillumos-joyent-8a88157cd7245729dea5d91a5181bb05a80164a8.tar.gz
6684783 picld not reacting to V890 PSU POK going low (bad PSU, prtdiag 0 Amps All V's, Status "Good")
Diffstat (limited to 'usr/src/lib/libprtdiag_psr')
-rw-r--r--usr/src/lib/libprtdiag_psr/sparc/daktari/common/daktari.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/usr/src/lib/libprtdiag_psr/sparc/daktari/common/daktari.c b/usr/src/lib/libprtdiag_psr/sparc/daktari/common/daktari.c
index 3798b9db8d..d4fc81913b 100644
--- a/usr/src/lib/libprtdiag_psr/sparc/daktari/common/daktari.c
+++ b/usr/src/lib/libprtdiag_psr/sparc/daktari/common/daktari.c
@@ -675,12 +675,14 @@ int
dak_env_print_ps(picl_nodehdl_t system_node)
{
int i, r, fail, err = 0;
+ int low_warn_flag = 0;
int32_t number;
char name[PICL_PROPNAMELEN_MAX];
picl_nodehdl_t *ps;
picl_nodehdl_t *ps_fail[DAK_MAX_PS_FAULT_SENSORS];
picl_nodehdl_t *ps_I_sensor[DAK_MAX_PS_VOLTAGE_SENSORS];
int32_t volts[DAK_MAX_PS_VOLTAGE_SENSORS];
+ int32_t lo_warn[DAK_MAX_PS_VOLTAGE_SENSORS];
char fault_state
[DAK_MAX_PS_FAULT_SENSORS][PICL_PROPNAMELEN_MAX];
char ps_state[PICL_PROPNAMELEN_MAX];
@@ -775,17 +777,38 @@ dak_env_print_ps(picl_nodehdl_t system_node)
err = picl_get_propval_by_name(ps_I_sensor[i][r],
"AtoDSensorValue", &volts[r],
sizeof (int32_t));
+ if (err != PICL_SUCCESS) {
+ log_printf(dgettext(TEXT_DOMAIN,
+ "failed to get A to D sensor "
+ "value\n%s\n"), picl_strerror(err));
+ return (err);
+ }
+ err = picl_get_propval_by_name(ps_I_sensor[i][r],
+ "LowWarningThreshold", &lo_warn[r],
+ sizeof (int32_t));
+ if (err != PICL_SUCCESS) {
+ log_printf(dgettext(TEXT_DOMAIN,
+ "failed to get low warning threshold "
+ "value\n%s\n"), picl_strerror(err));
+ return (err);
+ }
+ if (volts[r] <= lo_warn[r])
+ low_warn_flag++;
}
- if (fail != 0) {
+ if (fail != 0 || low_warn_flag != 0) {
log_printf(dgettext(TEXT_DOMAIN,
" FAIL "));
+ } else {
+ log_printf(dgettext(TEXT_DOMAIN, " GOOD "));
+ }
+
+ if (fail != 0) {
for (r = 0; r < DAK_MAX_PS_FAULT_SENSORS; r++) {
log_printf(dgettext(TEXT_DOMAIN, " %-4s"),
fault_state[r]);
}
} else {
- log_printf(dgettext(TEXT_DOMAIN, " GOOD "));
for (r = 0; r < DAK_MAX_PS_FAULT_SENSORS; r++) {
log_printf(dgettext(TEXT_DOMAIN, " "));
}