about phosphor pid control package

James Feist james.feist at linux.intel.com
Fri May 10 03:51:23 AEST 2019


On 5/9/19 7:43 AM, Patrick Venture wrote:
> 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?

If this is what you mean, on our systems we simply have a tach sensor 
per tach in the fan, i.e. fan1a and fan1b. I think the above logic would 
work for this issue.

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


More information about the openbmc mailing list