* about phosphor pid control package
@ 2019-05-08 13:45 Will Liang (梁永鉉)
2019-05-08 16:36 ` Patrick Venture
0 siblings, 1 reply; 8+ messages in thread
From: Will Liang (梁永鉉) @ 2019-05-08 13:45 UTC (permalink / raw)
To: OpenBMC Maillist
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)
{
........
}
BRs,
Will
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: about phosphor pid control package 2019-05-08 13:45 about phosphor pid control package Will Liang (梁永鉉) @ 2019-05-08 16:36 ` Patrick Venture 2019-05-09 6:33 ` Will Liang (梁永鉉) 0 siblings, 1 reply; 8+ messages in thread From: Patrick Venture @ 2019-05-08 16:36 UTC (permalink / raw) To: Will Liang (梁永鉉); +Cc: OpenBMC Maillist On Wed, May 8, 2019 at 6:46 AM Will Liang (梁永鉉) <Will.Liang@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 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)) > > BRs, > Will ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: about phosphor pid control package 2019-05-08 16:36 ` Patrick Venture @ 2019-05-09 6:33 ` Will Liang (梁永鉉) 2019-05-09 14:43 ` Patrick Venture 0 siblings, 1 reply; 8+ messages in thread From: Will Liang (梁永鉉) @ 2019-05-09 6:33 UTC (permalink / raw) To: Patrick Venture; +Cc: OpenBMC Maillist Hi, > -----Original Message----- > From: Patrick Venture [mailto:venture@google.com] > Sent: Thursday, May 9, 2019 12:36 AM > To: Will Liang (梁永鉉) <Will.Liang@quantatw.com> > Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org> > Subject: Re: about phosphor pid control package > > On Wed, May 8, 2019 at 6:46 AM Will Liang (梁永鉉) > <Will.Liang@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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: about phosphor pid control package 2019-05-09 6:33 ` Will Liang (梁永鉉) @ 2019-05-09 14:43 ` Patrick Venture 2019-05-09 17:51 ` James Feist 0 siblings, 1 reply; 8+ messages in thread From: Patrick Venture @ 2019-05-09 14:43 UTC (permalink / raw) To: Will Liang (梁永鉉); +Cc: OpenBMC Maillist On Wed, May 8, 2019 at 11:33 PM Will Liang (梁永鉉) <Will.Liang@quantatw.com> wrote: > > Hi, > > > -----Original Message----- > > From: Patrick Venture [mailto:venture@google.com] > > Sent: Thursday, May 9, 2019 12:36 AM > > To: Will Liang (梁永鉉) <Will.Liang@quantatw.com> > > Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org> > > Subject: Re: about phosphor pid control package > > > > On Wed, May 8, 2019 at 6:46 AM Will Liang (梁永鉉) > > <Will.Liang@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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: about phosphor pid control package 2019-05-09 14:43 ` Patrick Venture @ 2019-05-09 17:51 ` James Feist 2019-05-10 0:08 ` Will Liang (梁永鉉) 2019-05-14 12:50 ` Will Liang (梁永鉉) 0 siblings, 2 replies; 8+ messages in thread From: James Feist @ 2019-05-09 17:51 UTC (permalink / raw) To: Patrick Venture, Will Liang (梁永鉉); +Cc: OpenBMC Maillist On 5/9/19 7:43 AM, Patrick Venture wrote: > On Wed, May 8, 2019 at 11:33 PM Will Liang (梁永鉉) > <Will.Liang@quantatw.com> wrote: >> >> Hi, >> >>> -----Original Message----- >>> From: Patrick Venture [mailto:venture@google.com] >>> Sent: Thursday, May 9, 2019 12:36 AM >>> To: Will Liang (梁永鉉) <Will.Liang@quantatw.com> >>> Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org> >>> Subject: Re: about phosphor pid control package >>> >>> On Wed, May 8, 2019 at 6:46 AM Will Liang (梁永鉉) >>> <Will.Liang@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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: about phosphor pid control package 2019-05-09 17:51 ` James Feist @ 2019-05-10 0:08 ` Will Liang (梁永鉉) 2019-05-14 12:50 ` Will Liang (梁永鉉) 1 sibling, 0 replies; 8+ messages in thread From: Will Liang (梁永鉉) @ 2019-05-10 0:08 UTC (permalink / raw) To: James Feist, Patrick Venture; +Cc: OpenBMC Maillist > On 5/9/19 7:43 AM, Patrick Venture wrote: > > On Wed, May 8, 2019 at 11:33 PM Will Liang (梁永鉉) > > <Will.Liang@quantatw.com> wrote: > >> > >> Hi, > >> > >>> -----Original Message----- > >>> From: Patrick Venture [mailto:venture@google.com] > >>> Sent: Thursday, May 9, 2019 12:36 AM > >>> To: Will Liang (梁永鉉) <Will.Liang@quantatw.com> > >>> Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org> > >>> Subject: Re: about phosphor pid control package > >>> > >>> On Wed, May 8, 2019 at 6:46 AM Will Liang (梁永鉉) > >>> <Will.Liang@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. I'm so sorry to make you misunderstand because of my unclear expression. The "dual-fan" means "Dual rotor fan" , two tachometer output one PWM input. > > > >> > >> Will > >>>> > >>>> BRs, > >>>> Will ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: about phosphor pid control package 2019-05-09 17:51 ` James Feist 2019-05-10 0:08 ` Will Liang (梁永鉉) @ 2019-05-14 12:50 ` Will Liang (梁永鉉) 2019-05-14 16:01 ` James Feist 1 sibling, 1 reply; 8+ messages in thread From: Will Liang (梁永鉉) @ 2019-05-14 12:50 UTC (permalink / raw) To: James Feist, Patrick Venture; +Cc: OpenBMC Maillist > -----Original Message----- > From: Will Liang (梁永鉉) > Sent: Friday, May 10, 2019 8:06 AM > To: 'James Feist' <james.feist@linux.intel.com>; Patrick Venture > <venture@google.com> > Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org> > Subject: RE: about phosphor pid control package > > > > On 5/9/19 7:43 AM, Patrick Venture wrote: > > > On Wed, May 8, 2019 at 11:33 PM Will Liang (梁永鉉) > > > <Will.Liang@quantatw.com> wrote: > > >> > > >> Hi, > > >> > > >>> -----Original Message----- > > >>> From: Patrick Venture [mailto:venture@google.com] > > >>> Sent: Thursday, May 9, 2019 12:36 AM > > >>> To: Will Liang (梁永鉉) <Will.Liang@quantatw.com> > > >>> Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org> > > >>> Subject: Re: about phosphor pid control package > > >>> > > >>> On Wed, May 8, 2019 at 6:46 AM Will Liang (梁永鉉) > > >>> <Will.Liang@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. I think someone may also need to check for one rotor fan fail, I will push the above code into gerrit > I'm so sorry to make you misunderstand because of my unclear expression. > The "dual-fan" means "Dual rotor fan" , two tachometer output one PWM > input. Our architecture is that both fan1a and fan1b fail (dual rotor fan failure) and then this situation is identified as one fan fail. Would you have any suggestion or idea? > > > > > > >> > > >> Will > > >>>> > > >>>> BRs, > > >>>> Will ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: about phosphor pid control package 2019-05-14 12:50 ` Will Liang (梁永鉉) @ 2019-05-14 16:01 ` James Feist 0 siblings, 0 replies; 8+ messages in thread From: James Feist @ 2019-05-14 16:01 UTC (permalink / raw) To: Will Liang (梁永鉉), Patrick Venture; +Cc: OpenBMC Maillist >>>>> 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. > I think someone may also need to check for one rotor fan fail, I will push the above code into gerrit > >> I'm so sorry to make you misunderstand because of my unclear expression. >> The "dual-fan" means "Dual rotor fan" , two tachometer output one PWM >> input. > Our architecture is that both fan1a and fan1b fail (dual rotor fan failure) and then this situation is identified as one fan fail. > > Would you have any suggestion or idea? What we have done in the past is used fan redundancy failures for this sort of thing. I would suggest monitoring the fan redundancy interface for redundancy lost to create failure: https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Control/FanRedundancy.interface.yaml -James ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-05-14 16:01 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-05-08 13:45 about phosphor pid control package Will Liang (梁永鉉) 2019-05-08 16:36 ` Patrick Venture 2019-05-09 6:33 ` Will Liang (梁永鉉) 2019-05-09 14:43 ` Patrick Venture 2019-05-09 17:51 ` James Feist 2019-05-10 0:08 ` Will Liang (梁永鉉) 2019-05-14 12:50 ` Will Liang (梁永鉉) 2019-05-14 16:01 ` James Feist
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.