History log of /openbmc/phosphor-pid-control/dbus/ (Results 1 – 25 of 125)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
1b3b730404-Oct-2024 Harvey Wu <Harvey.Wu@quantatw.com>

fix CI failed

- Refs about removing add_object_vtable:
https://gerrit.openbmc.org/c/openbmc/phosphor-hwmon/+/73009

- initial some struct data

Signed-off-by: Harvey Wu <Harvey.Wu@quantatw.com>
Chan

fix CI failed

- Refs about removing add_object_vtable:
https://gerrit.openbmc.org/c/openbmc/phosphor-hwmon/+/73009

- initial some struct data

Signed-off-by: Harvey Wu <Harvey.Wu@quantatw.com>
Change-Id: Iacc62eb1b8cd2b1e092efdbcb3abafb8afb896c7

show more ...

bd63bcac16-Aug-2024 Patrick Williams <patrick@stwcx.xyz>

clang-format: re-format for clang-18

clang-format-18 isn't compatible with the clang-format-17 output, so we
need to reformat the code with the latest version. The way clang-18
handles lambda forma

clang-format: re-format for clang-18

clang-format-18 isn't compatible with the clang-format-17 output, so we
need to reformat the code with the latest version. The way clang-18
handles lambda formatting also changed, so we have made changes to the
organization default style format to better handle lambda formatting.

See I5e08687e696dd240402a2780158664b7113def0e for updated style.
See Iea0776aaa7edd483fa395e23de25ebf5a6288f71 for clang-18 enablement.

Change-Id: I0f105c3310e87172c65a09a8787a2db5a4041cc0
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>

show more ...

5d897e2a04-Jun-2024 Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>

Modified the naming to get the value of checkhysterwithsetpt

Modified the naming to get the value of checkhysterwithsetpt in dbus
configuration and json configuration.

Change-Id: Ic9cc6a6bfd0da69ac

Modified the naming to get the value of checkhysterwithsetpt

Modified the naming to get the value of checkhysterwithsetpt in dbus
configuration and json configuration.

Change-Id: Ic9cc6a6bfd0da69acc1638ca7ebd6712211e2984
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>

show more ...

af97d8ef02-Jan-2024 Jonico Eustaquio <jonico.eustaquio@fii-na.com>

Add UNC crossing option for FailSafe condition

Added a unc-failsafe meson option that if set to true, would then check
if any temperature sensor PIDs exceed their upper non-critical
threshold. If a

Add UNC crossing option for FailSafe condition

Added a unc-failsafe meson option that if set to true, would then check
if any temperature sensor PIDs exceed their upper non-critical
threshold. If a sensor is detected to have exceeded their UNC, then the
zone associated with that PID would go to FailSafe.

By default, this option will be set to false for backwards
compatibility.

Change-Id: I2fbc6000e8d37b34c51d3578becdaf18d449b0e8
Signed-off-by: Jonico Eustaquio <jonico.eustaquio@fii-na.com>

show more ...

9788963c05-Nov-2023 Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>

Support to accumulate PWM of different controllers for same sensor

Description:
1. Add one property: accumulateSetPoint in zone of fan table that could
be used to enable accumulation of output PW

Support to accumulate PWM of different controllers for same sensor

Description:
1. Add one property: accumulateSetPoint in zone of fan table that could
be used to enable accumulation of output PWM of different controllers
with same sensor.

2. Add one property: checkHysterWithSetpt in pid info of fan table to
select to compare current input and setpoint to check hysteresis.

3. The purpose of accumulate the stepwise output and PID output for
one sensor is that the setting of stepwise could use to prevent
the fan speed from suddenly increasing from a very low speed to a
very high speed due to reaching the setpoint.

Use stepwise before setpoint could also keep the PWM steady at
low ambient temperature.

Design:
1. Search "accumulateSetPoint" field in fan table.
If the value was true, accumulate the output PWM of different
controllers with same profile name.

2. Support two method to calculate PID output that could be chosen by
setting the "checkHysterWithSetpt" to true in pid info of fan table.

If the flag was set to true, it won't calculate PWM output if the
input lower than setpoint.

Test Case:
1. Check the output PWM of different controllers with same profile
name could be accumulated - pass.

2. Set "checkHysterWithSetpt" to true and check PID output would not be
calculated if the input temperature was lower than setpoint - pass.

Please see more details in gist:
https://gist.github.com/DelphineCCChiu/a6170d3e1a12fc4ee76fad324382fba3

Change-Id: I9f38f250d72545784c6c11be2fde7d45f0b385c4
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>

show more ...

3f0f7bc313-Feb-2023 Josh Lehan <krellan@google.com>

Add MissingIsAcceptable feature to avoid failsafe

This is a partial implementation of the ideas here:
https://github.com/openbmc/phosphor-pid-control/issues/31

A new configuration item is supported

Add MissingIsAcceptable feature to avoid failsafe

This is a partial implementation of the ideas here:
https://github.com/openbmc/phosphor-pid-control/issues/31

A new configuration item is supported in the PID object, named
"MissingIsAcceptable" (for D-Bus) or "missingIsAcceptable" (for the old
config.json). The value is an array of strings. If these strings match
sensor names, those sensors will be flagged as "missing is acceptable",
that is, they can go missing and the zone will not be thrown into
failsafe mode as a result.

This can be handy for sensors that are not always available on your
particular machine. It is independent of the existing Availability
interface, because the decision to go into failsafe mode or not is a
property of the PID loop, not of the sensor itself.

If a PID loop consists of all sensors that are missing, the output
will be deemed to be the setpoint, thus essentially making the PID
loop a no-op. Now initializing sensor values to NaN, not zero, as zero
is not a good default if PID loop is margin, undoing a bug I made:
https://gerrit.openbmc.org/c/openbmc/phosphor-pid-control/+/38228

Tested: It worked for me. Also, added a unit test case.

Change-Id: Idc7978ab06fcc9ed8c6c9df9483101376e5df4d1
Signed-off-by: Josh Lehan <krellan@google.com>

show more ...

31058fd313-Jan-2023 Josh Lehan <krellan@google.com>

Implementing the TempToMargin feature

Wrapping the input name std::string in a new structure SensorInput, so
that the TempToMargin information can be cleanly carried along with
it, all the way down

Implementing the TempToMargin feature

Wrapping the input name std::string in a new structure SensorInput, so
that the TempToMargin information can be cleanly carried along with
it, all the way down to the PID input processing layer where it is
needed. This allows the conversion to be done just-in-time before the
temperature reading is interpreted, minimizing the blast radius of
this change. Nonetheless, because of the type change, there was a
somewhat large blast radius to implement this feature.

The design, and the documentation, is already here:
https://github.com/openbmc/phosphor-pid-control/issues/23

Tested: Added unit tests for JSON parsing and for proper execution
of the TempToMargin feature. They pass. Ran it locally, on our
appropriately-configured system, and it seems to work for me.

Change-Id: I598ba485195aaa70c26e91a1da3ab88fff8c3a4c
Signed-off-by: Josh Lehan <krellan@google.com>

show more ...

e1dbb59a20-Oct-2023 Patrick Williams <patrick@stwcx.xyz>

clang-format: copy latest and re-format

clang-format-17 has some backwards incompatible changes that require
additional settings for best compatibility and re-running the formatter.
Copy the latest

clang-format: copy latest and re-format

clang-format-17 has some backwards incompatible changes that require
additional settings for best compatibility and re-running the formatter.
Copy the latest .clang-format from the docs repository and reformat the
repository.

Change-Id: Ic0bb299201cf8abb024b7d4aca465d50cbc8b585
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>

show more ...

90b0a66d13-Jul-2023 Patrick Williams <patrick@stwcx.xyz>

dbusutil: use sdbusplus match rules

Rather than hand-rolling the match string, use the utilities supplied
by sdbupslus.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ic4f0de7c9dbd3

dbusutil: use sdbusplus match rules

Rather than hand-rolling the match string, use the utilities supplied
by sdbupslus.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ic4f0de7c9dbd36d3f854dd1027f2826860814615

show more ...

d5d83fa713-Jul-2023 Patrick Williams <patrick@stwcx.xyz>

dbuspassive: drop needless c_str

The sdbusplus match constructor already handles a std::string, so
drop the extra c_str call.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I2167d2a

dbuspassive: drop needless c_str

The sdbusplus match constructor already handles a std::string, so
drop the extra c_str call.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I2167d2a027e13d55b5590b8266e56cc108b23bfa

show more ...

9fe3a3c711-May-2023 ykchiu <Chiu.YK@inventec.com>

Set failsafePwm by pid configuration

<motivation>
Current phosphor-pid-control service supports one zone with
one failsafepwm. However, for some platforms there are
different pluggable cards in a zo

Set failsafePwm by pid configuration

<motivation>
Current phosphor-pid-control service supports one zone with
one failsafepwm. However, for some platforms there are
different pluggable cards in a zone. Different combinations
may require different failsafe pwm settings. Why not just
use one zone failsafepwm for all the combinations? because if
we take power consumption or acoustic into consideration,
we will find that not all the cases need the same high
failsafepwm. Each case just need high enough failsafepwm
to cool down the system in that condition.

For example
case1: zone0 : gpuA card + motherboard in zone0
=>requires failsafepwm = 80

case2: zone1 : gpuB card + motherboard in zone0
=>requires failsafepwm = 60

In order to solve the problem described above , we propose
the design that. Each pidloop has its own failsafepwm.
The final failsafepwm will be calculated during building
zone process. The detailed design concept is described in
design concept section.

<design concept>
a zone has several pid loops, each one has its own pid
failsafe pwm defined in its configuration.

The calculation flow goes as below:
1.Take failsafepwm of the pidloops and the zone from the configuration
files, if any is missing , set it to zero.
2.Take max value of (zone failsafepwm and pid loops failsafepwm).
3.If the max value from 'step 2' is zero indicates none of failsafepwm
is configured, set it to default setting 100%.

<note>
1.this is intended for dbus configuration method, since one zone
may have different pidloops from different pluggable boards
entity json, but this design also works for static configuration
method, therefore, the zone with different boards will need
different failsafepwm.
2.keep it back compatible with original design , also take zone
failsafepwm into calculation.

Working example as below

Case1
Zone0:
zone0 pidloop failsafepwm = 60
gpuA pidloop failsafepwm = 70
Motherboard failsafepwm = 40

=>final failsafepwm = 70

Case2
Zone0:
zone0 pidloop failsafepwm = 60
gpuB pidloop failsafepwm = 80
Motherboard failsafepwm = 40

=>final failsafepwm = 80

Change-Id: I5aa1c6a7108f4520f41de5d8eba3075d021bbe79
Signed-off-by: ykchiu <Chiu.YK@inventec.com>

show more ...

7c6d35d510-May-2023 ykchiu <Chiu.YK@inventec.com>

Allow disabling PID loops at runtime

<design concept>
Add the map of object enable interface to pid loops
in the zone then we can disable/enable each pid loop
process in a zone by dbus command.

[no

Allow disabling PID loops at runtime

<design concept>
Add the map of object enable interface to pid loops
in the zone then we can disable/enable each pid loop
process in a zone by dbus command.

[note]
Enable = true : enable process (default)
Enable = false : disable process

Tested:
In this case: we set Enable = false to disable
pidloop:Zone_Temp_0, and see how it affects
the zone final pwm, when pidloop: Zone_Temp_0
in zone 0 is disabled.

then even we are trying to heat up the temperature
of a sensor: Temp_0 in pidloop: Zone_Temp_0, this
set point of the pidloop will not be taken into the
calculation for the final set point of the whole zone.

```
<service object>
root@openbmc:/tmp# busctl tree xyz.openbmc_project.State.FanCtrl
`-/xyz
`-/xyz/openbmc_project
`-/xyz/openbmc_project/settings
`-/xyz/openbmc_project/settings/fanctrl
|-/xyz/openbmc_project/settings/fanctrl/zone0
| |-/xyz/openbmc_project/settings/fanctrl/zone0/Zone_Temp
| |-/xyz/openbmc_project/settings/fanctrl/zone0/Zone_Temp_0
| `-/xyz/openbmc_project/settings/fanctrl/zone0/Zone_Temp_1

====Enable process for pidloop:Zone_Temp_0 with p-switch temperature sensor:Temp_0 at runtime====
root@openbmc:~# busctl introspect xyz.openbmc_project.State.FanCtrl /xyz/openbmc_project/settings/fanctrl/zone0/Zone_Temp_0
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
xyz.openbmc_project.Object.Enable interface - - -
.Enabled property b true emits-change writable

====Disable process for pidloop:Zone_Temp_0 with p-switch temperature sensor: Temp_0====
root@openbmc:~# busctl set-property xyz.openbmc_project.State.FanCtrl /xyz/openbmc_project/settings/fanctrl/zone0/Zone_Temp_0 xyz.openbmc_project.Object.Enable Enabled b false
root@openbmc:~# busctl introspect xyz.openbmc_project.State.FanCtrl /xyz/openbmc_project/settings/fanctrl/zone0/Zone_Temp_0
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
xyz.openbmc_project.Object.Enable interface - - -
.Enabled property b false emits-change writable
```

when Disable the process of the pidloop: Zone_Temp_0,
the requester switches from Zone_Temp_0 to the others,
when you enable the pidloop: Zone_Temp_0, the setpoint
of Zone_Temp_0 will be take into consideration again

Change-Id: I95ae700144f0d16049fff8b309f05ae690a7ef72
Signed-off-by: ykchiu <Chiu.YK@inventec.com>

show more ...

8c05112110-May-2023 Patrick Williams <patrick@stwcx.xyz>

clang-format: copy latest and re-format

clang-format-16 has some backwards incompatible changes that require
additional settings for best compatibility and re-running the formatter.
Copy the latest

clang-format: copy latest and re-format

clang-format-16 has some backwards incompatible changes that require
additional settings for best compatibility and re-running the formatter.
Copy the latest .clang-format from the docs repository and reformat the
repository.

Change-Id: Icbc50d46e84ee7ef756705e2b19741439a325074
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>

show more ...

c2a311b026-Apr-2023 Jinliang Wang <jinliangw@google.com>

Handle InterfacesRemoved signal under /xyz/openbmc_project/sensor path

Listen for InterfacesRemoved signal and restart control loops. Without
this, the pid loop may run with staled sensor value if t

Handle InterfacesRemoved signal under /xyz/openbmc_project/sensor path

Listen for InterfacesRemoved signal and restart control loops. Without
this, the pid loop may run with staled sensor value if the corresponding
object or interface is removed.

Tested:
...
PID Zone 0 max SetPoint 16800 requested by ...
PID Zone 0 max SetPoint 16800 requested by ...
<- systemctl stop xyz.openbmc_project.nvmesensor here ->
New configuration detected, reloading
.1 Failed during restartControlLoops, try again: wait for count back to 1
Zone Zone 1 is at ZoneIndex 1
Zone Zone 0 is at ZoneIndex 0
Zone Zone 2 is at ZoneIndex 2
...

Change-Id: I900edda48b71dc7b6ae79a4b51f4088aea69183a
Signed-off-by: Jinliang Wang <jinliangw@google.com>

show more ...

10e46efa01-Feb-2023 Josh Lehan <krellan@google.com>

Skipping over Association Definitions messages

These incoming messages cause problems, for the same reason Assocation
is skipped over. They are not relevant to PID control, because they
are maintain

Skipping over Association Definitions messages

These incoming messages cause problems, for the same reason Assocation
is skipped over. They are not relevant to PID control, because they
are maintained by Object Mapper for another purpose. Treating
Association Definitions similarly to Associations, namely, skipping
them over. It looks like this was simply omitted in the past, perhaps
Definitions did not exist then, only Associations.
Also adding some optional logging.

Thanks to Chu Lin for originally discovering this bug and creating
this fix.

Tested: It works, and avoids the problem of unwanted messages causing
swampd to needlessly restart itself internally.

Change-Id: I2f9cb123990d240b515d08138dd919312aac5a30
Signed-off-by: Josh Lehan <krellan@google.com>

show more ...

239aa7d717-Nov-2022 Harvey Wu <Harvey.Wu@quantatw.com>

Replace some duplicate codes about time setting

- Replace duplicate codes in pid/buildjson.cpp and dbusconfiguration.cpp

TEST:
D-Bus config =>
{
"FailSafePercent": 90.0,

Replace some duplicate codes about time setting

- Replace duplicate codes in pid/buildjson.cpp and dbusconfiguration.cpp

TEST:
D-Bus config =>
{
"FailSafePercent": 90.0,
"MinThermalOutput": 0.0,
"CycleIntervalTimeMS": 101,
"UpdateThermalsTimeMS": 1000,
"Name": "Zone 0",
"Type": "Pid.Zone",
"ZoneIndex": 0
},
{
"FailSafePercent": 90.0,
"MinThermalOutput": 0.0,
"CycleIntervalTimeMS": 100,
"Name": "Zone 1",
"Type": "Pid.Zone",
"ZoneIndex": 1
},
{
"FailSafePercent": 100.0,
"MinThermalOutput": 0.0,
"UpdateThermalsTimeMS": -1000,
"Name": "Zone 2",
"Type": "Pid.Zone",
"ZoneIndex": 2
},

pid journal log =>
Mar 09 04:49:23 qbmc swampd[4823]: Zone 1: UpdateThermalsTimeMS cannot
find setting. Use default 1000 ms
Mar 09 04:49:24 qbmc swampd[4823]: Zone 2: CycleIntervalTimeMS cannot
find setting. Use default 100 ms
Mar 09 04:49:24 qbmc swampd[4823]: Zone 2: UpdateThermalsTimeMS is
invalid. Use default 1000 ms

Static JSON =>
{
"id": 0,
"minThermalOutput": 0.0,
"failsafePercent": 100.0,
"cycleIntervalTimeMS": 100,
"updateThermalsTimeMS": 1000,
...
...
{
"id": 1,
"minThermalOutput": 0.0,
"failsafePercent": 100.0,
"updateThermalsTimeMS": 0,

pid journal log =>
Mar 09 04:38:44 qbmc swampd[10646]: Zone 1: cycleIntervalTimeMS cannot
find setting. Use default 100 ms
Mar 09 04:38:44 qbmc swampd[10646]: Zone 1: updateThermalsTimeMS is
invalid. Use default 1000 ms

Change-Id: I75d272d9458978790d2b8fe2def35a0e6ba126b0
Signed-off-by: Harvey Wu <Harvey.Wu@quantatw.com>

show more ...

9f9a06aa14-Dec-2022 Josh Lehan <krellan@google.com>

Fix interval calculation bug and D-Bus init

The new timing parameters were not settable from the D-Bus code path,
only from the old static JSON code path. Also, the divison would not
occur, causing

Fix interval calculation bug and D-Bus init

The new timing parameters were not settable from the D-Bus code path,
only from the old static JSON code path. Also, the divison would not
occur, causing the variable to remain at 1000 by default, not 10,
causing the thermal intervals to run 100 times slower than intended!

I fixed the algorithm used to calculate when the thermal intervals
should be inserted amongst the fan intervals. Now, the division is
not necessary, and any value should work, so long as the thermal
interval is greater than or equal to the fan interval.

I also fixed a subtle bug regarding the timer scheduling. It was
reinitializing the timer expiration time from "now" each interval,
instead of cleanly incrementing from the original expiration. This
caused the timer to run slower than intended, as the execution time
of each interval would not be subtracted out from the remaining time
that needs to be waited for, as it should have been.

Tested: Default values, for timing parameters, now work as intended

Signed-off-by: Josh Lehan <krellan@google.com>
Change-Id: I759387b97af3ce93a76459faf5e9e7be3474016e

show more ...

c612c05112-Dec-2022 Josh Lehan <krellan@google.com>

Allow derivativeCoeff and DCoefficient optional

To avoid breaking existing configurations in the field, treat the
new "derivativeCoeff" parameter as optional, not mandatory.

This affects both the o

Allow derivativeCoeff and DCoefficient optional

To avoid breaking existing configurations in the field, treat the
new "derivativeCoeff" parameter as optional, not mandatory.

This affects both the old JSON parser, and the new D-Bus
entity-manager parser (it's called "DCoefficient" there).

Signed-off-by: Josh Lehan <krellan@google.com>
Change-Id: Ifcaf47d66e009b48e41b510a2ef1686b8860ad35

show more ...

23e22b9013-Nov-2022 Josh Lehan <krellan@google.com>

Add new PID Class types "power" and "powersum"

Implements this feature:
https://github.com/openbmc/phosphor-pid-control/issues/24

In addition to the existing "temp" and "margin" classes, adding
new

Add new PID Class types "power" and "powersum"

Implements this feature:
https://github.com/openbmc/phosphor-pid-control/issues/24

In addition to the existing "temp" and "margin" classes, adding
new "power" and "powersum" Class types.

The "power" class is the same as "temp", but expects D-Bus power
sensors, instead of D-Bus temperature sensors.

The "powersum" class is the same as "power", but sums together all of
the given inputs, instead of finding the maximum.

Signed-off-by: Josh Lehan <krellan@google.com>
Change-Id: I11d8ad8385632658ed061671134be87a560cd02a

show more ...


/openbmc/phosphor-pid-control/.gitignore
/openbmc/phosphor-pid-control/Makefile.am
/openbmc/phosphor-pid-control/conf.hpp
dbusconfiguration.cpp
dbusutil.cpp
/openbmc/phosphor-pid-control/main.cpp
/openbmc/phosphor-pid-control/meson.build
/openbmc/phosphor-pid-control/pid/builder.cpp
/openbmc/phosphor-pid-control/pid/buildjson.cpp
/openbmc/phosphor-pid-control/pid/ec/logging.cpp
/openbmc/phosphor-pid-control/pid/ec/logging.hpp
/openbmc/phosphor-pid-control/pid/ec/pid.cpp
/openbmc/phosphor-pid-control/pid/ec/pid.hpp
/openbmc/phosphor-pid-control/pid/fancontroller.cpp
/openbmc/phosphor-pid-control/pid/fancontroller.hpp
/openbmc/phosphor-pid-control/pid/pidcontroller.cpp
/openbmc/phosphor-pid-control/pid/pidloop.cpp
/openbmc/phosphor-pid-control/pid/pidloop.hpp
/openbmc/phosphor-pid-control/pid/stepwisecontroller.cpp
/openbmc/phosphor-pid-control/pid/thermalcontroller.cpp
/openbmc/phosphor-pid-control/pid/thermalcontroller.hpp
/openbmc/phosphor-pid-control/pid/tuning.cpp
/openbmc/phosphor-pid-control/pid/tuning.hpp
/openbmc/phosphor-pid-control/pid/util.cpp
/openbmc/phosphor-pid-control/pid/zone.cpp
/openbmc/phosphor-pid-control/pid/zone.hpp
/openbmc/phosphor-pid-control/pid/zone_interface.hpp
/openbmc/phosphor-pid-control/sensors/builder.cpp
/openbmc/phosphor-pid-control/test/Makefile.am
/openbmc/phosphor-pid-control/test/dbus_util_unittest.cpp
/openbmc/phosphor-pid-control/test/meson.build
/openbmc/phosphor-pid-control/test/pid_fancontroller_unittest.cpp
/openbmc/phosphor-pid-control/test/pid_json_unittest.cpp
/openbmc/phosphor-pid-control/test/pid_thermalcontroller_unittest.cpp
/openbmc/phosphor-pid-control/test/pid_zone_unittest.cpp
/openbmc/phosphor-pid-control/test/zone_mock.hpp
/openbmc/phosphor-pid-control/tuning.md
fb82a87d20-Sep-2020 Josh Lehan <krellan@google.com>

dbusconfiguration: Init margin similar to temp

Adding "margin" PID class to the same initialization block that is
used by "temp", so they initialize similarly.

This patch used to do a lot more, now

dbusconfiguration: Init margin similar to temp

Adding "margin" PID class to the same initialization block that is
used by "temp", so they initialize similarly.

This patch used to do a lot more, now it is simplified. The other
changes, to the "timeout" and "ignoreDbusMinMax" settings, are no
longer necessary to make here, as they were quietly already made by
other patches since this was originally written, as the same bugs they
would fix were already noticed and fixed by other people as well.

Tested: Correct behavior (no timeout at all, because these are D-Bus
passive sensors, which operate on a push model, not being polled by a
timer). Without this fix, margin PID class wrongly still had timeout.

Signed-off-by: Josh Lehan <krellan@google.com>
Change-Id: Ibbf9294c249de9bc13a6449ea936ab0be4910dcc

show more ...

b300575e22-Feb-2022 Josh Lehan <krellan@google.com>

pid/zone: Adding unscaled to cache and logging

The "ReadReturn" structure, and the cache within DbusPidZone, have
been widened, to hold both the scaled and the original unscaled values
at the same t

pid/zone: Adding unscaled to cache and logging

The "ReadReturn" structure, and the cache within DbusPidZone, have
been widened, to hold both the scaled and the original unscaled values
at the same time. This allows logging to show both at once, and also
clears up confusion/bugs resulting from storing one or the other and
losing track of which was which.

Compatibility setValue() and getCachedValue() functions still
retained, so this will not break other sensors. These functions still
only take a single argument/return, which will be used for both value
and unscaled, indicating scaling is unknown or irrelevant to this
sensor.

Also, the PWM output of the PID loop appears in the log file,
conveniently right alongside the RPM input of the PID loop.

An output cache has been added to the zone interface, and, unlike the
input cache, use of it is optional. It is only to help populate the
logging, so subclasses are free to ignore it if they want.

Tested: In the logging files, I can see both PWM and RPM, and they are
consistent, showing how the PID loop is trying to update the PWM to
target the desired RPM.

Example: Here's /tmp/zone_0.log on my system
epoch_ms,setpt,fan0_tach,fan0_tach_raw,fan0_tach_pwm,fan0_tach_pwm_raw,bmcmargin_zone0,bmcmargin_zone0_raw,thermal_zone0,thermal_zone0_raw,failsafe
3097918,3818.42,0.748267,11224,0,0,0.724753,56.812,0.745098,62,0
3098022,3818.42,0.748267,11224,0.266666,67,0.724753,56.812,0.745098,62,0
3098132,3818.42,0.748267,11224,0.266666,67,0.724753,56.812,0.745098,62,0

Here's what we can now learn:
The desired setpoint is 3818 RPM.
The fan is at 74.8% of scale, which is 11224 RPM.
The written PWM, after the first PID loop pass, is a raw value of 67,
which is 26.6% of scale.
The first margin temperature is 56.8 degrees of margin, which is 72.4%
of scale.
The second margin temperature is 62 degrees of margin, which is 74.5%
of scale.
This zone is not in failsafe mode.
As you can see, this will be rather useful for PID loop tuning.

Signed-off-by: Josh Lehan <krellan@google.com>
Change-Id: I972a4e4a3b787255f0dcafa10d4498ee58b682f0

show more ...

22579ca407-Nov-2022 Harvey Wu <Harvey.Wu@quantatw.com>

fix cppcheck warning

- Fix warnings:
[noExplicitConstructor]
ipmi/manualcmds.hpp:20:5: style: Class 'ZoneControlIpmiHandler' has a
constructor with 1 argument that is not explicit.

[red

fix cppcheck warning

- Fix warnings:
[noExplicitConstructor]
ipmi/manualcmds.hpp:20:5: style: Class 'ZoneControlIpmiHandler' has a
constructor with 1 argument that is not explicit.

[redundantInitialization]
dbus/dbusutil.cpp:96:15: style: Redundant initialization for 'layer'.
The initialized value is overwritten before it is read.

[uninitMemberVar]
pid/pidcontroller.hpp:23:5: warning: Member variable
'PIDController::_pid_info' is not initialized in the constructor.

[memsetClassFloat]
pid/util.cpp:29:10: portability: Using memset() on struct which
contains a floating point number.

[constParameter]
ipmi/manualcmds.cpp:108:72: style: Parameter 'dataLen' can be
declared as pointer to const

Signed-off-by: Harvey Wu <Harvey.Wu@quantatw.com>
Change-Id: Ib368c6e3a609e446529573cd0b9fa03858232db1

show more ...

a1ae4fa128-Oct-2022 Harvey.Wu <Harvey.Wu@quantatw.com>

fix compile warning when meson build

- Fix compile warning:
[-Werror=unused-variable], [-Werror=sign-compare] and
deprecated INSTANTIATE_TEST_CASE_P

Signed-off-by: Harvey.Wu <Harvey.Wu@quantatw

fix compile warning when meson build

- Fix compile warning:
[-Werror=unused-variable], [-Werror=sign-compare] and
deprecated INSTANTIATE_TEST_CASE_P

Signed-off-by: Harvey.Wu <Harvey.Wu@quantatw.com>
Change-Id: If8713f0b938cd5306bbe19a9078731db0c3667dc

show more ...

f2efcbbd08-Feb-2022 Harvey.Wu <Harvey.Wu@quantatw.com>

Using readPath dbuspath in getMatch function

- If the "name" setting is not same as dbus sensor name,
it has problem when getMatch function.

For example:
if json setting like below,
{
"name":

Using readPath dbuspath in getMatch function

- If the "name" setting is not same as dbus sensor name,
it has problem when getMatch function.

For example:
if json setting like below,
{
"name": "fan00",
"type": "fan",
"readPath": "/xyz/openbmc_project/sensors/fan_tach/fan0_tach",
"writePath": "/xyz/openbmc_project/sensors/fan_tach/fan0_pwm",
"min": 0,
"max": 255
}

the swampd will start failed, log like below,
swampd[17273]: Sensor: fan00 fan /xyz/openbmc_project/sensors/fan_tach/fan0_tach /xyz/openbmc_project/sensors/fan_tach/fan0_pwm
swampd[17273]: ObjectMapper call failure

Signed-off-by: Harvey.Wu <Harvey.Wu@quantatw.com>
Change-Id: I08cd374ea7447148e4aeff7b06b288957260cbd2

show more ...

ed1dafdf08-Feb-2022 Harvey.Wu <Harvey.Wu@quantatw.com>

Modified sensorConfig map index name about fan

- Like the phosphor-pid-control github issue #19,
if a fan is set as input sensor and has multiple output setting,
there are some problems when bui

Modified sensorConfig map index name about fan

- Like the phosphor-pid-control github issue #19,
if a fan is set as input sensor and has multiple output setting,
there are some problems when building sensorConfig map that
only have the last setting in sensorConfig map.

TEST:
https://gist.github.com/harveyquta/e2d3c91bf86299e5301bfb080711dbb4

Signed-off-by: Harvey.Wu <Harvey.Wu@quantatw.com>
Change-Id: I4f070888ce64c45a420467c6a07fcbd8312aa7a0

show more ...

12345