Re: [PATCH 4/4] hwmon: (occ) Add soft minimum power cap attribute

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2/16/22 00:33, Joel Stanley wrote:
On Tue, 15 Feb 2022 at 15:11, Eddie James <eajames@xxxxxxxxxxxxx> wrote:
Export the power caps data for the soft minimum power cap through hwmon.

Signed-off-by: Eddie James <eajames@xxxxxxxxxxxxx>
---
  drivers/hwmon/occ/common.c | 19 ++++++++++++++++---
  1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c
index 0cb4a0a6cbc1..f00cd59f1d19 100644
--- a/drivers/hwmon/occ/common.c
+++ b/drivers/hwmon/occ/common.c
@@ -674,6 +674,9 @@ static ssize_t occ_show_caps_3(struct device *dev,
         case 7:
                 val = caps->user_source;
                 break;
+       case 8:
+               val = get_unaligned_be16(&caps->soft_min) * 1000000ULL;
+               break;
         default:
                 return -EINVAL;
         }
@@ -835,12 +838,13 @@ static int occ_setup_sensor_attrs(struct occ *occ)
         case 1:
                 num_attrs += (sensors->caps.num_sensors * 7);
                 break;
-       case 3:
-               show_caps = occ_show_caps_3;
-               fallthrough;
         case 2:
                 num_attrs += (sensors->caps.num_sensors * 8);
                 break;
+       case 3:
+               show_caps = occ_show_caps_3;
+               num_attrs += (sensors->caps.num_sensors * 9);
How do we know this changed from 8 to 9?


Well we made the structure change a while back when adding P10 support, but didn't bother to export the "soft min" field. Now it's needed.



We should start adding links to the occ source code, or a similar
reference, when making these changes so they can be reviewed.


I would but it doesn't appear to be public for P10 yet... at least, no one has updated the P9 OCC spec hosted in the open-power repo: https://github.com/open-power/docs


Thanks,

Eddie



+               break;
         default:
                 sensors->caps.num_sensors = 0;
         }
@@ -1047,6 +1051,15 @@ static int occ_setup_sensor_attrs(struct occ *occ)
                         attr->sensor = OCC_INIT_ATTR(attr->name, 0444,
                                                      show_caps, NULL, 7, 0);
                         attr++;
+
+                       if (sensors->caps.version > 2) {
+                               snprintf(attr->name, sizeof(attr->name),
+                                        "power%d_cap_min_soft", s);
+                               attr->sensor = OCC_INIT_ATTR(attr->name, 0444,
+                                                            show_caps, NULL,
+                                                            8, 0);
+                               attr++;
+                       }
                 }
         }

--
2.27.0




[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux