<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 10, 2021 at 6:19 PM Heyi Guo <<a href="mailto:guoheyi@linux.alibaba.com">guoheyi@linux.alibaba.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi All,<br>
<br>
Right now fan related data like tacho and PWM is fetched in <br>
dbus-sensors, and published to d-bus as sensor data, while fan control <br>
is made in another module like pid-control, which can fetch data and set <br>
value via d-bus.<br>
<br>
In some common sense, we may think about putting all fan related work <br>
into one single module (which may be based on pid-control), i.e. it can <br>
read tacho and PWM from hardware directly, calculate the required PWM by <br>
some algorithm like PID, and then write to PWM hardware directly; the <br>
data will also be published to d-bus for other modules to consume, like <br>
fansensor from dbus-sensors.<br></blockquote><div><br></div><div>To some extent, this design revolves around flexibility.  Fans aren't necessarily tacho devices, and sensors aren't necessarily hwmon devices, so dbus is used as an abstraction to be able to make them all look the same.  For example, an NCSI NIC might have both a temperature and a fan that phosphor-pid-control might want to control, but we don't want phosphor-pid-control to take a dependency on NCSI.  While we could put all code for all possible sensor types into one daemon, that opens us up to the possibility that crashes could take down all of fan and thermal control, including the failsafe behavior.  That would be an issue.</div><div><br></div><div>It might be possible to handle these issues in a single daemon, but I haven't really seen a design that covered all the cases;  Most implementations tend to take the simple approach (hwmon sensor + tacho device) and ignore the more complex setups.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Does it make sense to do that? Or is there any reason for the current <br>
design?<br>
<br>
I'm new to OpenBMC and some of my understanding may be totally wrong.<br>
<br>
Looking forward to your expert advice.<br>
<br>
Thanks,<br>
<br>
Heyi<br>
<br>
</blockquote></div></div>