about phosphor pid control package

Patrick Venture venture at google.com
Fri May 10 00:43:04 AEST 2019


On Wed, May 8, 2019 at 11:33 PM Will Liang (梁永鉉)
<Will.Liang at quantatw.com> wrote:
>
> 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?

I'm not entirely certain what you mean.  You're saying a dual-fan is a
fan that has two outputs but one input?

>
> Will
> > >
> > > BRs,
> > > Will


More information about the openbmc mailing list