about phosphor pid control package
Will Liang (梁永鉉)
Will.Liang at quantatw.com
Thu May 9 16:33:05 AEST 2019
Hi,
> -----Original Message-----
> From: Patrick Venture [mailto:venture at google.com]
> Sent: Thursday, May 9, 2019 12:36 AM
> To: Will Liang (梁永鉉) <Will.Liang at quantatw.com>
> Cc: OpenBMC Maillist <openbmc at lists.ozlabs.org>
> Subject: Re: about phosphor pid control package
>
> On Wed, May 8, 2019 at 6:46 AM Will Liang (梁永鉉)
> <Will.Liang at quantatw.com> wrote:
> >
> > Hi,
> >
> > I have a question about getFailSafeMode().
> >
> > Currently, only sensors that are defined as "temp" types can be checked for
> failure.
> > I did not find any "fan" type sensors to check if the fan has failed.
> > Our project need to check the fan fail so I want to add another "fan" sensor
> type to check.
>
>
>
> >
> > Can I add one more "for loop" to check the fan sensor in updateSensors()
> function in zone.cpp??
> >
> > for (const auto& t : _thermalInputs)
> > {
> > ........
> > }
> > for (const auto& t : _fanInputs)
> > {
> > ........
> > }
>
> updateSensors is deliberately not talking to the fans because they're not
> considered inputs into the thermal config, they're controlled outputs -- the
> question I have is, what would you like to do if a fan isn't responding?
> failsafemode drives the fans to a specific pre-defined speed to keep it from
> thermal issues. If a fan is failing to respond, one can't drive it -- perhaps one
> can drive the others to some failsafe?
If a fan fails, we need to enter the fail safe mode to increase the other fan duty.
> If so, one needs to update the failsafe for a zone outside of the thermal sensors,
> but rather where the fans are checked (void
> PIDZone::updateFanTelemetry(void))
I add following code into the PIDZone::updateFanTelemetry(void) function to check the fan fail.
If the fan fails, it will enter fail safe mode.
if (sensor->getFailed())
{
failSafeSensors.insert(f);
}
else
{
// Check if it's in there: remove it.
auto kt = _failSafeSensors.find(f);
if (kt != _failSafeSensors.end())
{
failSafeSensors.erase(kt);
}
But one more question I have is that the above code can only check if a single fan has failed.
Our project needs to check for dual-fan failures. Do you have any suggestions for checking the failure of the dual-fan?
Will
> >
> > BRs,
> > Will
More information about the openbmc
mailing list