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