Re: [PATCH 4/4] docs: hwmon: (smpro-hwmon) Add documentation

Quan Nguyen
2021-03-01T12:30:06Z

On 25/02/2021 23:42, Guenter Roeck wrote:
> On 2/25/21 2:18 AM, Quan Nguyen wrote:
>> Add documentation for the Ampere(R)'s Altra(R) SMpro hwmon driver.
>>
>> Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com>
>> Signed-off-by: Quan Nguyen <quan@os.amperecomputing.com>
>> ---
>> Documentation/hwmon/index.rst | 1 +
>> Documentation/hwmon/smpro-hwmon.rst | 100 ++++++++++++++++++++++++++++
>> 2 files changed, 101 insertions(+)
>> create mode 100644 Documentation/hwmon/smpro-hwmon.rst
>>
>> diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
>> index 8d5a2df1ecb6..b48a980ed08b 100644
>> --- a/Documentation/hwmon/index.rst
>> +++ b/Documentation/hwmon/index.rst
>> @@ -164,6 +164,7 @@ Hardware Monitoring Kernel Drivers
>> sis5595
>> sl28cpld
>> smm665
>> + smpro-hwmon
>
> "hwmon" seems a bit redundant here.
>

Dear Guenter,

That is necessary for HWMON because SMpro supports monitoring and
reporting various data not only hwmon-related data but also including
RAS errors, and other miscellaneous information

>> smsc47b397
>> smsc47m192
>> smsc47m1
>> diff --git a/Documentation/hwmon/smpro-hwmon.rst b/Documentation/hwmon/smpro-hwmon.rst
>> new file mode 100644
>> index 000000000000..d546b90982e5
>> --- /dev/null
>> +++ b/Documentation/hwmon/smpro-hwmon.rst
>> @@ -0,0 +1,100 @@
>> +.. SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +Kernel driver Ampere(R)'s Altra(R) SMpro hwmon
>> +==============================================
>> +
>> +Supported chips:
>> +
>> + * Ampere(R) Altra(R)
>> +
>> + Prefix: 'smpro'
>> +
>> + Reference: Altra SoC BMC Interface Specification
>> +
>> +Author: Thu Nguyen <thu@os.amperecomputing.com>
>> +
>> +Description
>> +-----------
>> +This driver supports hardware monitoring for Ampere(R) Altra(R) SoC's based on the
>> +SMpro co-processor (SMpro).
>> +The following sensor types are supported by the driver:
>> +
>> + * temperature
>> + * voltage
>> + * current
>> + * power
>> +
>> +The SMpro interface provides the registers to query the various sensors and
>> +their values which are then exported to userspace by this driver.
>> +
>> +Usage Notes
>> +-----------
>> +
>> +SMpro hwmon driver creates two sysfs files for each sensor.
>> +
>> +* File ``<sensor_type><idx>_label`` reports the sensor label.
>> +* File ``<sensor_type><idx>_input`` returns the sensor value.
>> +
>> +The sysfs files are allocated in the SMpro root fs folder.
>> +There is one root folder for each SMpro instance.
>> +
>> +When the SoC is turned off, the driver is failed to read the registers.
>> +It returns TIMEDOUT Error(-110) for the read sensors.
>> +
>
> Maybe better something like
>
> When the SoC is turned off, the driver will fail to read registers
> and return -ETIMEDOUT.
>
> Can that indeed happen ? That seems to be highly undesirable.
>
Thanks Guenter,
Will apply this in next version.

>> +Sysfs entries
>> +-------------
>> +
>> +The following sysfs files are supported:
>> +
>> +* Ampere(R) Altra(R):
>> +
>> +=============== ============= ======= ===============================================
>> +Name Unit Perm Description
>> +temp1_input mili Celsius RO SoC temperature
>
> s/mili/milli/ throughout
>

Yes, thanks for catching this.

>> +temp2_input mili Celsius RO Highest temperature reported by the SoC VRDs
>> +temp3_input mili Celsius RO Highest temperature reported by the DIMM VRDs
>> +temp4_input mili Celsius RO Highest temperature reported by the Core VRDs
>
> What does "highest" stand for here ? Is it the _current_ highest
> temperature, added up by the hardware/firmware, or is it the historic
> highest temperature ? Historic data should be reported as tempX_highest.
>
>> +temp5_input mili Celsius RO Highest temperature of DIMM Channel 0 to 3
>
> drop; reported individually.
>
Will drop in next version

>> +temp6_input mili Celsius RO Temperature of DIMM0 on CH0
>> +temp7_input mili Celsius RO Temperature of DIMM0 on CH1
>> +temp8_input mili Celsius RO Temperature of DIMM0 on CH2
>> +temp9_input mili Celsius RO Temperature of DIMM0 on CH3
>> +temp10_input mili Celsius RO Highest temperature of DIMM Channel 4 to 7
>
> drop; reported individually.
>
Yes, this one as well.

>> +temp11_input mili Celsius RO Temperature of DIMM0 on CH4
>> +temp12_input mili Celsius RO Temperature of DIMM0 on CH5
>> +temp13_input mili Celsius RO Temperature of DIMM0 on CH6
>> +temp14_input mili Celsius RO Temperature of DIMM0 on CH7
>> +temp15_input mili Celsius RO MEM HOT Threshold
>> +temp16_input mili Celsius RO SoC VRD HOT Threshold
>
> Report as tempX_max or tempX_crit, as appropriate (eg temp2_max or
> temp2_crit for SoC VRD HOT Threshold). If there is a single threshold
> temperature for all DIMMs, report the same limit value for all DIMM
> temperature sensors.
>
>> +temp17_input mili Celsius RO Highest temperature reported by the RCA VRD
>
> Same question about "highest" as above. Either "highest" is
> inappropriate, or there are multiple RCA VRDs and only the
> highest temperature of those is reported (which should be
> explicitly stated).
>
This definitely need to be re-considered. Will try your suggestion in
next version.

>> +in0_input mili Volt RO Core voltage
>> +in1_input mili Volt RO SoC voltage
>> +in2_input mili Volt RO DIMM VRD1 voltage
>> +in3_input mili Volt RO DIMM VRD2 voltage
>> +in4_input mili Volt RO Maximum voltage of DIMM VRD1 and VRD2
>
> drop; reported individually.
>
will drop as it is "virtual" attr.

>> +in5_input mili Volt RO RCA VRD voltage
>> +cur1_input mili Ampere RO Core VRD current
>> +cur2_input mili Ampere RO SoC VRD current
>> +cur3_input mili Ampere RO DIMM VRD1 current
>> +cur4_input mili Ampere RO DIMM VRD2 current
>> +cur5_input mili Ampere RO RCA VRD current
>> +power1_input nano Wat RO Core VRD power
>
> Expected scale is micro-Watt.
>
Will change in next version

>> +power2_input nano Wat RO SoC VRD power
>> +power3_input nano Wat RO DIMM VRD1 power
>> +power4_input nano Wat RO DIMM VRD2 power
>> +power5_input nano Wat RO CPU VRD power, total of SoC and Core VRD power
>
> drop
>
OK

>> +power6_input nano Wat RO Total of DIMM VRD1 and VRD2 power
>
> drop
>
OK

>> +power7_input nano Wat RO RCA VRD power
>> +power8_input nano Wat RO Socket TDP
>
> Report as max attribute
>
Will try this in next version

>> +=============== ============= ======= ===============================================
>> +
>> +Example::
>> +
>> + # cat in0_input
>> + 830
>> + # cat temp1_input
>> + 37000
>> + # cat curr1_input
>> + 9000
>> + # cat power5_input
>> + 19500000
>>
>