linux-stable/include/linux/mlx5
Adham Faris 1f507e80c7 net/mlx5: Expose NIC temperature via hardware monitoring kernel API
Expose NIC temperature by implementing hwmon kernel API, which turns
current thermal zone kernel API to redundant.

For each one of the supported and exposed thermal diode sensors, expose
the following attributes:
1) Input temperature.
2) Highest temperature.
3) Temperature label:
   Depends on the firmware capability, if firmware doesn't support
   sensors naming, the fallback naming convention would be: "sensorX",
   where X is the HW spec (MTMP register) sensor index.
4) Temperature critical max value:
   refers to the high threshold of Warning Event. Will be exposed as
   `tempY_crit` hwmon attribute (RO attribute). For example for
   ConnectX5 HCA's this temperature value will be 105 Celsius, 10
   degrees lower than the HW shutdown temperature).
5) Temperature reset history: resets highest temperature.

For example, for dualport ConnectX5 NIC with a single IC thermal diode
sensor will have 2 hwmon directories (one for each PCI function)
under "/sys/class/hwmon/hwmon[X,Y]".

Listing one of the directories above (hwmonX/Y) generates the
corresponding output below:

$ grep -H -d skip . /sys/class/hwmon/hwmon0/*

Output
=======================================================================
/sys/class/hwmon/hwmon0/name:mlx5
/sys/class/hwmon/hwmon0/temp1_crit:105000
/sys/class/hwmon/hwmon0/temp1_highest:48000
/sys/class/hwmon/hwmon0/temp1_input:46000
/sys/class/hwmon/hwmon0/temp1_label:asic
grep: /sys/class/hwmon/hwmon0/temp1_reset_history: Permission denied

In addition, displaying the sensors data via lm_sensors generates the
corresponding output below:

$ sensors

Output
=======================================================================
mlx5-pci-0800
Adapter: PCI adapter
asic:         +46.0°C  (crit = +105.0°C, highest = +48.0°C)

mlx5-pci-0801
Adapter: PCI adapter
asic:         +46.0°C  (crit = +105.0°C, highest = +48.0°C)

CC: Jean Delvare <jdelvare@suse.com>
Signed-off-by: Adham Faris <afaris@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20230807180507.22984-3-saeed@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2023-08-09 15:52:16 -07:00
..
cq.h
device.h net/mlx5: Handle sync reset unload event 2023-06-16 12:02:07 -07:00
doorbell.h
driver.h net/mlx5: Expose NIC temperature via hardware monitoring kernel API 2023-08-09 15:52:16 -07:00
eq.h
eswitch.h net/mlx5e: Handle IPsec offload for RX datapath in switchdev mode 2023-08-02 18:37:29 -07:00
fs.h net/mlx5e: Support IPsec packet offload for TX in switchdev mode 2023-08-02 18:37:29 -07:00
fs_helpers.h
mlx5_ifc.h net/mlx5: Expose NIC temperature via hardware monitoring kernel API 2023-08-09 15:52:16 -07:00
mlx5_ifc_fpga.h
mlx5_ifc_vdpa.h
mpfs.h
port.h net/mlx5: Move needed PTYS functions to core layer 2023-03-15 22:12:08 -07:00
qp.h net/mlx5: Add new WQE for updating flow table 2023-04-11 20:57:37 -07:00
rsc_dump.h
transobj.h
vport.h net/mlx5: Update vport caps query/set for EC VFs 2023-06-09 18:40:51 -07:00