pseq: Prevent multiple failures
Multiple failures can occur when the power down sequence is slow. Add a
flag to threshold the failures. Clear the flag at power on.
Signed-off-by: Jim Wright <jlwright@us.ibm.com>
Change-Id: I1b476feff1967b4fa60f29bd719bf6ee14fba103
diff --git a/phosphor-power-sequencer/src/power_control.cpp b/phosphor-power-sequencer/src/power_control.cpp
index 838078e..7f6ef9f 100644
--- a/phosphor-power-sequencer/src/power_control.cpp
+++ b/phosphor-power-sequencer/src/power_control.cpp
@@ -170,6 +170,7 @@
additionalData);
}
+ failureFound = true;
return;
}
}
@@ -186,8 +187,9 @@
else
{
emitPowerGoodSignal();
- // Clear any power supply error on the transition to power on
+ // Clear any errors on the transition to power on
powerSupplyError.clear();
+ failureFound = false;
}
emitPropertyChangedSignal("pgood");
}
@@ -196,10 +198,11 @@
// Power good matches requested state
inStateTransition = false;
}
- else if (!inStateTransition && (pgoodState == 0))
+ else if (!inStateTransition && (pgoodState == 0) && !failureFound)
{
// Not in power off state, not changing state, and power good is off
device->onFailure(false, powerSupplyError);
+ failureFound = true;
// Power good has failed, call for chassis hard power off
log<level::ERR>("Chassis pgood failure");