Do not run validation if input/UV fault
If any power supply has an input or VIN_UV fault, do not run the
configuration validation.
Two reasons to avoid running the configuration validation when an input
or VIN_UV fault is present:
1) Avoid unnecessarily logging additional errors.
- We know the voltage is wrong, it will log an error.
2) Avoid logging the configuration invalid error that calls out the
power supply.
- That error would unnecessarily turn on the power supply fault LED.
Tested:
Rainier 2S4U. System power off.
Remove power from powersupply2 and powersupply3.
Power system on.
Without changes:
Two 110015F0 PELs.
One 110015F7 PEL.
SAI LED on.
powersupply2 Health critical, LED on.
powersupply3 Health critical, LED off.
With changes:
Two 110015F0 PELs.
SAI LED on.
powersupply2 Health critical, LED off.
powersupply3 Health critical, LED off.
Resolve input power issue.
Without Changes:
powersupply2 Health critical, LED on.
powersupply3 Health Okay.
With Changes:
powersupply2 Health Okay.
powersupply3 Health Okay.
Attempt resolve input power with wrong voltage:
With Changes:
powersupply0 called out in 110015F7. (wrong voltage)
Change-Id: Ie1628b0d9cf4dc25dc7bd2d4bc3f79779c54de97
Signed-off-by: Brandon Wyman <bjwyman@gmail.com>
diff --git a/phosphor-power-supply/psu_manager.cpp b/phosphor-power-supply/psu_manager.cpp
index 351d2d3..446be75 100644
--- a/phosphor-power-supply/psu_manager.cpp
+++ b/phosphor-power-supply/psu_manager.cpp
@@ -722,6 +722,16 @@
return;
}
+ for (const auto& psu : psus)
+ {
+ if ((psu->hasInputFault() || psu->hasVINUVFault()))
+ {
+ // Do not try to validate if input voltage fault present.
+ validationTimer->restartOnce(validationTimeout);
+ return;
+ }
+ }
+
std::map<std::string, std::string> additionalData;
auto supported = hasRequiredPSUs(additionalData);
if (supported)