2021-09-30 09:46:35

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files

Hi Greg,

This series contain:

patch 1: Convert sys/class/thermal to Documentation/ABI;
patch 2: Convert sys/class/hwmon to Documentation/ABI;
patch 3: add a new sysfs element on hwmon that weren't documented yet;
patch 4: Convert MCE sysfs documentation into Documentation/ABI;
patch 5: Add 3 missing elements to MCE sysfs documentation;
patches 6 and 7: fix wildcards at sysfs-class-extcon and sysfs-devices-system-cpu.

Those help to reduce the gap of undocumented ABI detected by:

./scripts/get_abi.pl undefined

On an ARM and on an AMD x86_64 server.

Mauro Carvalho Chehab (7):
ABI: sysfs-class-thermal: create a file with thermal_zone ABI
ABI: sysfs-class-hwmon: add ABI documentation for it
ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm
ABI: sysfs-mce: add a new ABI file
ABI: sysfs-mce: add 3 missing files
ABI: sysfs-class-extcon: use uppercase X for wildcards
ABI: u: use cpuX instead of cpu#

Documentation/ABI/testing/sysfs-class-extcon | 12 +-
Documentation/ABI/testing/sysfs-class-hwmon | 932 ++++++++++++++++++
Documentation/ABI/testing/sysfs-class-thermal | 259 +++++
.../ABI/testing/sysfs-devices-system-cpu | 52 +-
Documentation/ABI/testing/sysfs-mce | 129 +++
.../driver-api/thermal/sysfs-api.rst | 225 +----
Documentation/hwmon/sysfs-interface.rst | 596 +----------
Documentation/x86/x86_64/machinecheck.rst | 56 +-
MAINTAINERS | 5 +
9 files changed, 1404 insertions(+), 862 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-class-hwmon
create mode 100644 Documentation/ABI/testing/sysfs-class-thermal
create mode 100644 Documentation/ABI/testing/sysfs-mce

--
2.31.1



2021-09-30 09:46:35

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 5/7] ABI: sysfs-mce: add 3 missing files

Changeset 62fdac5913f7 ("x86, mce: Add boot options for corrected errors")
added three more MCE files that are also exposed currently via
sysfs.

Document them.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/

Documentation/ABI/testing/sysfs-mce | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-mce b/Documentation/ABI/testing/sysfs-mce
index 686fbfa02cdc..c8cd989034b4 100644
--- a/Documentation/ABI/testing/sysfs-mce
+++ b/Documentation/ABI/testing/sysfs-mce
@@ -105,3 +105,25 @@ Description:

Unit: us

+What: /sys/devices/system/machinecheck/machinecheckX/ignore_ce
+Contact: Hidetoshi Seto <[email protected]>
+Date: Jun 2009
+Description:
+ Disables polling and CMCI for corrected errors.
+ All corrected events are not cleared and kept in bank MSRs.
+
+What: /sys/devices/system/machinecheck/machinecheckX/dont_log_ce
+Contact: Hidetoshi Seto <[email protected]>
+Date: Jun 2009
+Description:
+ Disables logging for corrected errors.
+ All reported corrected errors will be cleared silently.
+
+ This option will be useful if you never care about corrected
+ errors.
+
+What: /sys/devices/system/machinecheck/machinecheckX/cmci_disabled
+Contact: Hidetoshi Seto <[email protected]>
+Date: Jun 2009
+Description:
+ Disables the CMCI feature.
--
2.31.1

2021-09-30 09:46:56

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 7/7] ABI: sysfs-devices-system-cpu: use cpuX instead of cpu#

Some What entries here use cpu# as a wildcard, while others
use, instead, cpuX.

As scripts/get_abi.pl doesn't consider "#" as a wildcard,
replace:

cpu# -> cpuX

inside the file.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/

.../ABI/testing/sysfs-devices-system-cpu | 52 +++++++++----------
1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
index 4ffc7e6ef403..69c65da16dff 100644
--- a/Documentation/ABI/testing/sysfs-devices-system-cpu
+++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
@@ -7,7 +7,7 @@ Description:
Individual CPU attributes are contained in subdirectories
named by the kernel's logical CPU number, e.g.:

- /sys/devices/system/cpu/cpu#/
+ /sys/devices/system/cpu/cpuX/

What: /sys/devices/system/cpu/kernel_max
/sys/devices/system/cpu/offline
@@ -53,7 +53,7 @@ Description: Dynamic addition and removal of CPU's. This is not hotplug
the system. Information written to the file to remove CPU's
is architecture specific.

-What: /sys/devices/system/cpu/cpu#/node
+What: /sys/devices/system/cpu/cpuX/node
Date: October 2009
Contact: Linux memory management mailing list <[email protected]>
Description: Discover NUMA node a CPU belongs to
@@ -67,41 +67,41 @@ Description: Discover NUMA node a CPU belongs to
/sys/devices/system/cpu/cpu42/node2 -> ../../node/node2


-What: /sys/devices/system/cpu/cpu#/topology/core_id
- /sys/devices/system/cpu/cpu#/topology/core_siblings
- /sys/devices/system/cpu/cpu#/topology/core_siblings_list
- /sys/devices/system/cpu/cpu#/topology/physical_package_id
- /sys/devices/system/cpu/cpu#/topology/thread_siblings
- /sys/devices/system/cpu/cpu#/topology/thread_siblings_list
+What: /sys/devices/system/cpu/cpuX/topology/core_id
+ /sys/devices/system/cpu/cpuX/topology/core_siblings
+ /sys/devices/system/cpu/cpuX/topology/core_siblings_list
+ /sys/devices/system/cpu/cpuX/topology/physical_package_id
+ /sys/devices/system/cpu/cpuX/topology/thread_siblings
+ /sys/devices/system/cpu/cpuX/topology/thread_siblings_list
Date: December 2008
Contact: Linux kernel mailing list <[email protected]>
Description: CPU topology files that describe a logical CPU's relationship
to other cores and threads in the same physical package.

- One cpu# directory is created per logical CPU in the system,
+ One cpuX directory is created per logical CPU in the system,
e.g. /sys/devices/system/cpu/cpu42/.

Briefly, the files above are:

- core_id: the CPU core ID of cpu#. Typically it is the
+ core_id: the CPU core ID of cpuX. Typically it is the
hardware platform's identifier (rather than the kernel's).
The actual value is architecture and platform dependent.

- core_siblings: internal kernel map of cpu#'s hardware threads
+ core_siblings: internal kernel map of cpuX's hardware threads
within the same physical_package_id.

core_siblings_list: human-readable list of the logical CPU
- numbers within the same physical_package_id as cpu#.
+ numbers within the same physical_package_id as cpuX.

- physical_package_id: physical package id of cpu#. Typically
+ physical_package_id: physical package id of cpuX. Typically
corresponds to a physical socket number, but the actual value
is architecture and platform dependent.

- thread_siblings: internal kernel map of cpu#'s hardware
- threads within the same core as cpu#
+ thread_siblings: internal kernel map of cpuX's hardware
+ threads within the same core as cpuX

- thread_siblings_list: human-readable list of cpu#'s hardware
- threads within the same core as cpu#
+ thread_siblings_list: human-readable list of cpuX's hardware
+ threads within the same core as cpuX

See Documentation/admin-guide/cputopology.rst for more information.

@@ -237,7 +237,7 @@ Description:
Total number of times this state has been requested by the CPU
while entering suspend-to-idle.

-What: /sys/devices/system/cpu/cpu#/cpufreq/*
+What: /sys/devices/system/cpu/cpuX/cpufreq/*
Date: pre-git history
Contact: [email protected]
Description: Discover and change clock speed of CPUs
@@ -252,7 +252,7 @@ Description: Discover and change clock speed of CPUs
See files in Documentation/cpu-freq/ for more information.


-What: /sys/devices/system/cpu/cpu#/cpufreq/freqdomain_cpus
+What: /sys/devices/system/cpu/cpuX/cpufreq/freqdomain_cpus
Date: June 2013
Contact: [email protected]
Description: Discover CPUs in the same CPU frequency coordination domain
@@ -301,16 +301,16 @@ Description: Processor frequency boosting control
Documentation/admin-guide/pm/cpufreq.rst


-What: /sys/devices/system/cpu/cpu#/crash_notes
- /sys/devices/system/cpu/cpu#/crash_notes_size
+What: /sys/devices/system/cpu/cpuX/crash_notes
+ /sys/devices/system/cpu/cpuX/crash_notes_size
Date: April 2013
Contact: [email protected]
Description: address and size of the percpu note.

crash_notes: the physical address of the memory that holds the
- note of cpu#.
+ note of cpuX.

- crash_notes_size: size of the note of cpu#.
+ crash_notes_size: size of the note of cpuX.


What: /sys/devices/system/cpu/intel_pstate/max_perf_pct
@@ -503,12 +503,12 @@ Description: Identifies the subset of CPUs in the system that can execute
If absent, then all or none of the CPUs can execute AArch32
applications and execve() will behave accordingly.

-What: /sys/devices/system/cpu/cpu#/cpu_capacity
+What: /sys/devices/system/cpu/cpuX/cpu_capacity
Date: December 2016
Contact: Linux kernel mailing list <[email protected]>
Description: information about CPUs heterogeneity.

- cpu_capacity: capacity of cpu#.
+ cpu_capacity: capacity of cpuX.

What: /sys/devices/system/cpu/vulnerabilities
/sys/devices/system/cpu/vulnerabilities/meltdown
@@ -560,7 +560,7 @@ Description: Control Symmetric Multi Threading (SMT)
If control status is "forceoff" or "notsupported" writes
are rejected.

-What: /sys/devices/system/cpu/cpu#/power/energy_perf_bias
+What: /sys/devices/system/cpu/cpuX/power/energy_perf_bias
Date: March 2019
Contact: [email protected]
Description: Intel Energy and Performance Bias Hint (EPB)
--
2.31.1

2021-09-30 09:47:31

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it

Move the ABI attributes documentation from:
Documentation/hwmon/sysfs-interface.rst

in order for it to follow the usual ABI documentation. That
allows script/get_abi.pl to properly handle it.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/

Documentation/ABI/testing/sysfs-class-hwmon | 918 ++++++++++++++++++++
Documentation/hwmon/sysfs-interface.rst | 596 +------------
MAINTAINERS | 1 +
3 files changed, 961 insertions(+), 554 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-class-hwmon

diff --git a/Documentation/ABI/testing/sysfs-class-hwmon b/Documentation/ABI/testing/sysfs-class-hwmon
new file mode 100644
index 000000000000..ea5a129ae082
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-hwmon
@@ -0,0 +1,918 @@
+What: /sys/class/hwmon/hwmonX/name
+Description:
+ The chip name.
+ This should be a short, lowercase string, not containing
+ whitespace, dashes, or the wildcard character '*'.
+ This attribute represents the chip name. It is the only
+ mandatory attribute.
+ I2C devices get this attribute created automatically.
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/update_interval
+Description:
+ The interval at which the chip will update readings.
+ Unit: millisecond
+
+ RW
+
+ Some devices have a variable update rate or interval.
+ This attribute can be used to change it to the desired value.
+
+What: /sys/class/hwmon/hwmonX/inY_min
+Description:
+ Voltage min value.
+
+ Unit: millivolt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/inY_lcrit
+Description:
+ Voltage critical min value.
+
+ Unit: millivolt
+
+ RW
+
+ If voltage drops to or below this limit, the system may
+ take drastic action such as power down or reset. At the very
+ least, it should report a fault.
+
+What: /sys/class/hwmon/hwmonX/inY_max
+Description:
+ Voltage max value.
+
+ Unit: millivolt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/inY_crit
+Description:
+ Voltage critical max value.
+
+ Unit: millivolt
+
+ RW
+
+ If voltage reaches or exceeds this limit, the system may
+ take drastic action such as power down or reset. At the very
+ least, it should report a fault.
+
+What: /sys/class/hwmon/hwmonX/inY_input
+Description:
+ Voltage input value.
+
+ Unit: millivolt
+
+ RO
+
+ Voltage measured on the chip pin.
+
+ Actual voltage depends on the scaling resistors on the
+ motherboard, as recommended in the chip datasheet.
+
+ This varies by chip and by motherboard.
+ Because of this variation, values are generally NOT scaled
+ by the chip driver, and must be done by the application.
+ However, some drivers (notably lm87 and via686a)
+ do scale, because of internal resistors built into a chip.
+ These drivers will output the actual voltage. Rule of
+ thumb: drivers should report the voltage values at the
+ "pins" of the chip.
+
+What: /sys/class/hwmon/hwmonX/inY_average
+Description:
+ Average voltage
+
+ Unit: millivolt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/inY_lowest
+Description:
+ Historical minimum voltage
+
+ Unit: millivolt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/inY_highest
+Description:
+ Historical maximum voltage
+
+ Unit: millivolt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/inY_reset_history
+Description:
+ Reset inX_lowest and inX_highest
+
+ WO
+
+What: /sys/class/hwmon/hwmonX/in_reset_history
+Description:
+ Reset inX_lowest and inX_highest for all sensors
+
+ WO
+
+What: /sys/class/hwmon/hwmonX/inY_label
+Description:
+ Suggested voltage channel label.
+
+ Text string
+
+ Should only be created if the driver has hints about what
+ this voltage channel is being used for, and user-space
+ doesn't. In all other cases, the label is provided by
+ user-space.
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/inY_enable
+Description:
+ Enable or disable the sensors.
+
+ When disabled the sensor read will return -ENODATA.
+
+ - 1: Enable
+ - 0: Disable
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/cpuY_vid
+Description:
+ CPU core reference voltage.
+
+ Unit: millivolt
+
+ RO
+
+ Not always correct.
+
+What: /sys/class/hwmon/hwmonX/vrm
+Description:
+ Voltage Regulator Module version number.
+
+ RW (but changing it should no more be necessary)
+
+ Originally the VRM standard version multiplied by 10, but now
+ an arbitrary number, as not all standards have a version
+ number.
+
+ Affects the way the driver calculates the CPU core reference
+ voltage from the vid pins.
+
+What: /sys/class/hwmon/hwmonX/inY_rated_min
+Description:
+ Minimum rated voltage.
+
+ Unit: millivolt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/inY_rated_max
+Description:
+ Maximum rated voltage.
+
+ Unit: millivolt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/fanY_min
+Description:
+ Fan minimum value
+
+ Unit: revolution/min (RPM)
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/fanY_max
+Description:
+ Fan maximum value
+
+ Unit: revolution/min (RPM)
+
+ Only rarely supported by the hardware.
+ RW
+
+What: /sys/class/hwmon/hwmonX/fanY_input
+Description:
+ Fan input value.
+
+ Unit: revolution/min (RPM)
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/fanY_div
+Description:
+ Fan divisor.
+
+ Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
+
+ RW
+
+ Some chips only support values 1, 2, 4 and 8.
+ Note that this is actually an internal clock divisor, which
+ affects the measurable speed range, not the read value.
+
+What: /sys/class/hwmon/hwmonX/fanY_pulses
+Description:
+ Number of tachometer pulses per fan revolution.
+
+ Integer value, typically between 1 and 4.
+
+ RW
+
+ This value is a characteristic of the fan connected to the
+ device's input, so it has to be set in accordance with the fan
+ model.
+
+ Should only be created if the chip has a register to configure
+ the number of pulses. In the absence of such a register (and
+ thus attribute) the value assumed by all devices is 2 pulses
+ per fan revolution.
+
+What: /sys/class/hwmon/hwmonX/fanY_target
+Description:
+ Desired fan speed
+
+ Unit: revolution/min (RPM)
+
+ RW
+
+ Only makes sense if the chip supports closed-loop fan speed
+ control based on the measured fan speed.
+
+What: /sys/class/hwmon/hwmonX/fanY_label
+Description:
+ Suggested fan channel label.
+
+ Text string
+
+ Should only be created if the driver has hints about what
+ this fan channel is being used for, and user-space doesn't.
+ In all other cases, the label is provided by user-space.
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/fanY_enable
+Description:
+ Enable or disable the sensors.
+
+ When disabled the sensor read will return -ENODATA.
+
+ - 1: Enable
+ - 0: Disable
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/pwmY
+Description:
+ Pulse width modulation fan control.
+
+ Integer value in the range 0 to 255
+
+ RW
+
+ 255 is max or 100%.
+
+What: /sys/class/hwmon/hwmonX/pwmY_enable
+Description:
+ Fan speed control method:
+
+ - 0: no fan speed control (i.e. fan at full speed)
+ - 1: manual fan speed control enabled (using `pwmY`)
+ - 2+: automatic fan speed control enabled
+
+ Check individual chip documentation files for automatic mode
+ details.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/pwmY_mode
+Description:
+ - 0: DC mode (direct current)
+ - 1: PWM mode (pulse-width modulation)
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/pwmY_freq
+Description:
+ Base PWM frequency in Hz.
+
+ Only possibly available when pwmN_mode is PWM, but not always
+ present even then.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/pwmY_auto_channels_temp
+Description:
+ Select which temperature channels affect this PWM output in
+ auto mode.
+
+ Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
+ Which values are possible depend on the chip used.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/pwmY_auto_pointZ_pwm
+What: /sys/class/hwmon/hwmonX/pwmY_auto_pointZ_temp
+What: /sys/class/hwmon/hwmonX/pwmY_auto_pointZ_temp_hyst
+Description:
+ Define the PWM vs temperature curve.
+
+ Number of trip points is chip-dependent. Use this for chips
+ which associate trip points to PWM output channels.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_auto_pointZ_pwm
+What: /sys/class/hwmon/hwmonX/tempY_auto_pointZ_temp
+What: /sys/class/hwmon/hwmonX/tempY_auto_pointZ_temp_hyst
+Description:
+ Define the PWM vs temperature curve.
+
+ Number of trip points is chip-dependent. Use this for chips
+ which associate trip points to temperature channels.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_type
+Description:
+ Sensor type selection.
+
+ Integers 1 to 6
+
+ RW
+
+ - 1: CPU embedded diode
+ - 2: 3904 transistor
+ - 3: thermal diode
+ - 4: thermistor
+ - 5: AMD AMDSI
+ - 6: Intel PECI
+
+ Not all types are supported by all chips
+
+What: /sys/class/hwmon/hwmonX/tempY_max
+Description:
+ Temperature max value.
+
+ Unit: millidegree Celsius (or millivolt, see below)
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_min
+Description:
+ Temperature min value.
+
+ Unit: millidegree Celsius
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_max_hyst
+Description:
+ Temperature hysteresis value for max limit.
+
+ Unit: millidegree Celsius
+
+ Must be reported as an absolute temperature, NOT a delta
+ from the max value.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_min_hyst
+Description:
+ Temperature hysteresis value for min limit.
+ Unit: millidegree Celsius
+
+ Must be reported as an absolute temperature, NOT a delta
+ from the min value.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_input
+Description:
+ Temperature input value.
+
+ Unit: millidegree Celsius
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/tempY_crit
+Description:
+ Temperature critical max value, typically greater than
+ corresponding temp_max values.
+
+ Unit: millidegree Celsius
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_crit_hyst
+Description:
+ Temperature hysteresis value for critical limit.
+
+ Unit: millidegree Celsius
+
+ Must be reported as an absolute temperature, NOT a delta
+ from the critical value.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_emergency
+Description:
+ Temperature emergency max value, for chips supporting more than
+ two upper temperature limits. Must be equal or greater than
+ corresponding temp_crit values.
+
+ Unit: millidegree Celsius
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_emergency_hyst
+Description:
+ Temperature hysteresis value for emergency limit.
+
+ Unit: millidegree Celsius
+
+ Must be reported as an absolute temperature, NOT a delta
+ from the emergency value.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_lcrit
+Description:
+ Temperature critical min value, typically lower than
+ corresponding temp_min values.
+
+ Unit: millidegree Celsius
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_lcrit_hyst
+Description:
+ Temperature hysteresis value for critical min limit.
+
+ Unit: millidegree Celsius
+
+ Must be reported as an absolute temperature, NOT a delta
+ from the critical min value.
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_offset
+Description:
+ Temperature offset which is added to the temperature reading
+ by the chip.
+
+ Unit: millidegree Celsius
+
+ Read/Write value.
+
+What: /sys/class/hwmon/hwmonX/tempY_label
+Description:
+ Suggested temperature channel label.
+
+ Text string
+
+ Should only be created if the driver has hints about what
+ this temperature channel is being used for, and user-space
+ doesn't. In all other cases, the label is provided by
+ user-space.
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/tempY_lowest
+Description:
+ Historical minimum temperature
+
+ Unit: millidegree Celsius
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/tempY_highest
+Description:
+ Historical maximum temperature
+
+ Unit: millidegree Celsius
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/tempY_reset_history
+Description:
+ Reset temp_lowest and temp_highest
+
+ WO
+
+What: /sys/class/hwmon/hwmonX/temp_reset_history
+Description:
+ Reset temp_lowest and temp_highest for all sensors
+
+ WO
+
+What: /sys/class/hwmon/hwmonX/tempY_enable
+Description:
+ Enable or disable the sensors.
+
+ When disabled the sensor read will return -ENODATA.
+
+ - 1: Enable
+ - 0: Disable
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/tempY_rated_min
+Description:
+ Minimum rated temperature.
+
+ Unit: millidegree Celsius
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/tempY_rated_max
+Description:
+ Maximum rated temperature.
+
+ Unit: millidegree Celsius
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/currY_max
+Description:
+ Current max value
+
+ Unit: milliampere
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/currY_min
+Description:
+ Current min value.
+
+ Unit: milliampere
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/currY_lcrit
+Description:
+ Current critical low value
+
+ Unit: milliampere
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/currY_crit
+Description:
+ Current critical high value.
+
+ Unit: milliampere
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/currY_input
+Description:
+ Current input value
+
+ Unit: milliampere
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/currY_average
+Description:
+ Average current use
+
+ Unit: milliampere
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/currY_lowest
+Description:
+ Historical minimum current
+
+ Unit: milliampere
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/currY_highest
+Description:
+ Historical maximum current
+ Unit: milliampere
+ RO
+
+What: /sys/class/hwmon/hwmonX/currY_reset_history
+Description:
+ Reset currX_lowest and currX_highest
+
+ WO
+
+What: /sys/class/hwmon/hwmonX/curr_reset_history
+Description:
+ Reset currX_lowest and currX_highest for all sensors
+
+ WO
+
+What: /sys/class/hwmon/hwmonX/currY_enable
+Description:
+ Enable or disable the sensors.
+
+ When disabled the sensor read will return -ENODATA.
+
+ - 1: Enable
+ - 0: Disable
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/currY_rated_min
+Description:
+ Minimum rated current.
+
+ Unit: milliampere
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/currY_rated_max
+Description:
+ Maximum rated current.
+
+ Unit: milliampere
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_average
+Description:
+ Average power use
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_average_interval
+Description:
+ Power use averaging interval. A poll
+ notification is sent to this file if the
+ hardware changes the averaging interval.
+
+ Unit: milliseconds
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_average_interval_max
+Description:
+ Maximum power use averaging interval
+
+ Unit: milliseconds
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_average_interval_min
+Description:
+ Minimum power use averaging interval
+
+ Unit: milliseconds
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_average_highest
+Description:
+ Historical average maximum power use
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_average_lowest
+Description:
+ Historical average minimum power use
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_average_max
+Description:
+ A poll notification is sent to
+ `powerY_average` when power use
+ rises above this value.
+
+ Unit: microWatt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_average_min
+Description:
+ A poll notification is sent to
+ `powerY_average` when power use
+ sinks below this value.
+
+ Unit: microWatt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_input
+Description:
+ Instantaneous power use
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_input_highest
+Description:
+ Historical maximum power use
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_input_lowest
+Description:
+ Historical minimum power use
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_reset_history
+Description:
+ Reset input_highest, input_lowest,
+ average_highest and average_lowest.
+
+ WO
+
+What: /sys/class/hwmon/hwmonX/powerY_accuracy
+Description:
+ Accuracy of the power meter.
+
+ Unit: Percent
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_cap
+Description:
+ If power use rises above this limit, the
+ system should take action to reduce power use.
+ A poll notification is sent to this file if the
+ cap is changed by the hardware. The `*_cap`
+ files only appear if the cap is known to be
+ enforced by hardware.
+
+ Unit: microWatt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_cap_hyst
+Description:
+ Margin of hysteresis built around capping and
+ notification.
+
+ Unit: microWatt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_cap_max
+Description:
+ Maximum cap that can be set.
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_cap_min
+Description:
+ Minimum cap that can be set.
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_max
+Description:
+ Maximum power.
+
+ Unit: microWatt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_crit
+Description:
+ Critical maximum power.
+
+ If power rises to or above this limit, the
+ system is expected take drastic action to reduce
+ power consumption, such as a system shutdown or
+ a forced powerdown of some devices.
+
+ Unit: microWatt
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_enable
+Description:
+ Enable or disable the sensors.
+
+ When disabled the sensor read will return
+ -ENODATA.
+
+ - 1: Enable
+ - 0: Disable
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/powerY_rated_min
+Description:
+ Minimum rated power.
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/powerY_rated_max
+Description:
+ Maximum rated power.
+
+ Unit: microWatt
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/energyY_input
+Description:
+ Cumulative energy use
+
+ Unit: microJoule
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/energyY_enable
+Description:
+ Enable or disable the sensors.
+
+ When disabled the sensor read will return
+ -ENODATA.
+
+ - 1: Enable
+ - 0: Disable
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/humidityY_input
+Description:
+ Humidity
+
+ Unit: milli-percent (per cent mille, pcm)
+
+ RO
+
+
+What: /sys/class/hwmon/hwmonX/humidityY_enable
+Description:
+ Enable or disable the sensors
+
+ When disabled the sensor read will return
+ -ENODATA.
+
+ - 1: Enable
+ - 0: Disable
+
+ RW
+
+What: /sys/class/hwmon/hwmonX/humidityY_rated_min
+Description:
+ Minimum rated humidity.
+
+ Unit: milli-percent (per cent mille, pcm)
+
+ RO
+
+What: /sys/class/hwmon/hwmonX/humidityY_rated_max
+Description:
+ Maximum rated humidity.
+
+ Unit: milli-percent (per cent mille, pcm)
+
+ RO
+
+
+What: /sys/class/hwmon/hwmonX/intrusionY_alarm
+Description:
+ Chassis intrusion detection
+
+ - 0: OK
+ - 1: intrusion detected
+
+ RW
+
+ Contrary to regular alarm flags which clear themselves
+ automatically when read, this one sticks until cleared by
+ the user. This is done by writing 0 to the file. Writing
+ other values is unsupported.
+
+What: /sys/class/hwmon/hwmonX/intrusionY_beep
+Description:
+ Chassis intrusion beep
+
+ - 0: disable
+ - 1: enable
+
+ RW
diff --git a/Documentation/hwmon/sysfs-interface.rst b/Documentation/hwmon/sysfs-interface.rst
index 13c5acb72d63..85652a6aaa3e 100644
--- a/Documentation/hwmon/sysfs-interface.rst
+++ b/Documentation/hwmon/sysfs-interface.rst
@@ -89,6 +89,8 @@ hardware implementation.
All entries (except name) are optional, and should only be created in a
given driver if the chip has the feature.

+See Documentation/ABI/testing/sysfs-class-hwmon for a complete description
+of the attributes.

*****************
Global attributes
@@ -96,22 +98,9 @@ Global attributes

`name`
The chip name.
- This should be a short, lowercase string, not containing
- whitespace, dashes, or the wildcard character '*'.
- This attribute represents the chip name. It is the only
- mandatory attribute.
- I2C devices get this attribute created automatically.
-
- RO

`update_interval`
The interval at which the chip will update readings.
- Unit: millisecond
-
- RW
-
- Some devices have a variable update rate or interval.
- This attribute can be used to change it to the desired value.


********
@@ -121,148 +110,51 @@ Voltages
`in[0-*]_min`
Voltage min value.

- Unit: millivolt
-
- RW
-
`in[0-*]_lcrit`
Voltage critical min value.

- Unit: millivolt
-
- RW
-
- If voltage drops to or below this limit, the system may
- take drastic action such as power down or reset. At the very
- least, it should report a fault.
-
`in[0-*]_max`
Voltage max value.

- Unit: millivolt
-
- RW
-
`in[0-*]_crit`
Voltage critical max value.

- Unit: millivolt
-
- RW
-
- If voltage reaches or exceeds this limit, the system may
- take drastic action such as power down or reset. At the very
- least, it should report a fault.
-
`in[0-*]_input`
Voltage input value.

- Unit: millivolt
-
- RO
-
- Voltage measured on the chip pin.
-
- Actual voltage depends on the scaling resistors on the
- motherboard, as recommended in the chip datasheet.
-
- This varies by chip and by motherboard.
- Because of this variation, values are generally NOT scaled
- by the chip driver, and must be done by the application.
- However, some drivers (notably lm87 and via686a)
- do scale, because of internal resistors built into a chip.
- These drivers will output the actual voltage. Rule of
- thumb: drivers should report the voltage values at the
- "pins" of the chip.
-
`in[0-*]_average`
Average voltage

- Unit: millivolt
-
- RO
-
`in[0-*]_lowest`
Historical minimum voltage

- Unit: millivolt
-
- RO
-
`in[0-*]_highest`
Historical maximum voltage

- Unit: millivolt
-
- RO
-
`in[0-*]_reset_history`
Reset inX_lowest and inX_highest

- WO
-
`in_reset_history`
Reset inX_lowest and inX_highest for all sensors

- WO
-
`in[0-*]_label`
Suggested voltage channel label.

- Text string
-
- Should only be created if the driver has hints about what
- this voltage channel is being used for, and user-space
- doesn't. In all other cases, the label is provided by
- user-space.
-
- RO
-
`in[0-*]_enable`
Enable or disable the sensors.

- When disabled the sensor read will return -ENODATA.
-
- - 1: Enable
- - 0: Disable
-
- RW
-
`cpu[0-*]_vid`
CPU core reference voltage.

- Unit: millivolt
-
- RO
-
- Not always correct.
-
`vrm`
Voltage Regulator Module version number.

- RW (but changing it should no more be necessary)
-
- Originally the VRM standard version multiplied by 10, but now
- an arbitrary number, as not all standards have a version
- number.
-
- Affects the way the driver calculates the CPU core reference
- voltage from the vid pins.
-
`in[0-*]_rated_min`
Minimum rated voltage.

- Unit: millivolt
-
- RO
-
`in[0-*]_rated_max`
Maximum rated voltage.

- Unit: millivolt
-
- RO
-
Also see the Alarms section for status flags associated with voltages.


@@ -273,83 +165,27 @@ Fans
`fan[1-*]_min`
Fan minimum value

- Unit: revolution/min (RPM)
-
- RW
-
`fan[1-*]_max`
Fan maximum value

- Unit: revolution/min (RPM)
-
- Only rarely supported by the hardware.
- RW
-
`fan[1-*]_input`
Fan input value.

- Unit: revolution/min (RPM)
-
- RO
-
`fan[1-*]_div`
Fan divisor.

- Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
-
- RW
-
- Some chips only support values 1, 2, 4 and 8.
- Note that this is actually an internal clock divisor, which
- affects the measurable speed range, not the read value.
-
`fan[1-*]_pulses`
Number of tachometer pulses per fan revolution.

- Integer value, typically between 1 and 4.
-
- RW
-
- This value is a characteristic of the fan connected to the
- device's input, so it has to be set in accordance with the fan
- model.
-
- Should only be created if the chip has a register to configure
- the number of pulses. In the absence of such a register (and
- thus attribute) the value assumed by all devices is 2 pulses
- per fan revolution.
-
`fan[1-*]_target`
Desired fan speed

- Unit: revolution/min (RPM)
-
- RW
-
- Only makes sense if the chip supports closed-loop fan speed
- control based on the measured fan speed.
-
`fan[1-*]_label`
Suggested fan channel label.

- Text string
-
- Should only be created if the driver has hints about what
- this fan channel is being used for, and user-space doesn't.
- In all other cases, the label is provided by user-space.
-
- RO
-
`fan[1-*]_enable`
Enable or disable the sensors.

- When disabled the sensor read will return -ENODATA.
-
- - 1: Enable
- - 0: Disable
-
- RW
-
Also see the Alarms section for status flags associated with fans.


@@ -360,63 +196,25 @@ PWM
`pwm[1-*]`
Pulse width modulation fan control.

- Integer value in the range 0 to 255
-
- RW
-
- 255 is max or 100%.
-
`pwm[1-*]_enable`
Fan speed control method:

- - 0: no fan speed control (i.e. fan at full speed)
- - 1: manual fan speed control enabled (using `pwm[1-*]`)
- - 2+: automatic fan speed control enabled
-
- Check individual chip documentation files for automatic mode
- details.
-
- RW
-
`pwm[1-*]_mode`
- - 0: DC mode (direct current)
- - 1: PWM mode (pulse-width modulation)
-
- RW
+ direct current or pulse-width modulation.

`pwm[1-*]_freq`
Base PWM frequency in Hz.

- Only possibly available when pwmN_mode is PWM, but not always
- present even then.
-
- RW
-
`pwm[1-*]_auto_channels_temp`
Select which temperature channels affect this PWM output in
auto mode.

- Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
- Which values are possible depend on the chip used.
-
- RW
-
`pwm[1-*]_auto_point[1-*]_pwm` / `pwm[1-*]_auto_point[1-*]_temp` / `pwm[1-*]_auto_point[1-*]_temp_hyst`
Define the PWM vs temperature curve.

- Number of trip points is chip-dependent. Use this for chips
- which associate trip points to PWM output channels.
-
- RW
-
`temp[1-*]_auto_point[1-*]_pwm` / `temp[1-*]_auto_point[1-*]_temp` / `temp[1-*]_auto_point[1-*]_temp_hyst`
Define the PWM vs temperature curve.

- Number of trip points is chip-dependent. Use this for chips
- which associate trip points to temperature channels.
-
- RW
-
There is a third case where trip points are associated to both PWM output
channels and temperature channels: the PWM values are associated to PWM
output channels while the temperature values are associated to temperature
@@ -434,182 +232,70 @@ Temperatures
`temp[1-*]_type`
Sensor type selection.

- Integers 1 to 6
-
- RW
-
- - 1: CPU embedded diode
- - 2: 3904 transistor
- - 3: thermal diode
- - 4: thermistor
- - 5: AMD AMDSI
- - 6: Intel PECI
-
- Not all types are supported by all chips
-
`temp[1-*]_max`
Temperature max value.

- Unit: millidegree Celsius (or millivolt, see below)
-
- RW
-
`temp[1-*]_min`
Temperature min value.

- Unit: millidegree Celsius
-
- RW
-
`temp[1-*]_max_hyst`
Temperature hysteresis value for max limit.

- Unit: millidegree Celsius
-
- Must be reported as an absolute temperature, NOT a delta
- from the max value.
-
- RW
-
`temp[1-*]_min_hyst`
Temperature hysteresis value for min limit.
- Unit: millidegree Celsius
-
- Must be reported as an absolute temperature, NOT a delta
- from the min value.
-
- RW

`temp[1-*]_input`
- Temperature input value.
-
- Unit: millidegree Celsius
-
- RO
+ Temperature input value.

`temp[1-*]_crit`
Temperature critical max value, typically greater than
corresponding temp_max values.

- Unit: millidegree Celsius
-
- RW
-
`temp[1-*]_crit_hyst`
Temperature hysteresis value for critical limit.

- Unit: millidegree Celsius
-
- Must be reported as an absolute temperature, NOT a delta
- from the critical value.
-
- RW
-
`temp[1-*]_emergency`
Temperature emergency max value, for chips supporting more than
- two upper temperature limits. Must be equal or greater than
- corresponding temp_crit values.
-
- Unit: millidegree Celsius
-
- RW
+ two upper temperature limits.

`temp[1-*]_emergency_hyst`
Temperature hysteresis value for emergency limit.

- Unit: millidegree Celsius
-
- Must be reported as an absolute temperature, NOT a delta
- from the emergency value.
-
- RW
-
`temp[1-*]_lcrit`
Temperature critical min value, typically lower than
corresponding temp_min values.

- Unit: millidegree Celsius
-
- RW
-
`temp[1-*]_lcrit_hyst`
Temperature hysteresis value for critical min limit.

- Unit: millidegree Celsius
-
- Must be reported as an absolute temperature, NOT a delta
- from the critical min value.
-
- RW
-
`temp[1-*]_offset`
Temperature offset which is added to the temperature reading
by the chip.

- Unit: millidegree Celsius
-
- Read/Write value.
-
`temp[1-*]_label`
Suggested temperature channel label.

- Text string
-
- Should only be created if the driver has hints about what
- this temperature channel is being used for, and user-space
- doesn't. In all other cases, the label is provided by
- user-space.
-
- RO
-
`temp[1-*]_lowest`
Historical minimum temperature

- Unit: millidegree Celsius
-
- RO
-
`temp[1-*]_highest`
Historical maximum temperature

- Unit: millidegree Celsius
-
- RO
-
`temp[1-*]_reset_history`
Reset temp_lowest and temp_highest

- WO
-
`temp_reset_history`
Reset temp_lowest and temp_highest for all sensors

- WO
-
`temp[1-*]_enable`
Enable or disable the sensors.

- When disabled the sensor read will return -ENODATA.
-
- - 1: Enable
- - 0: Disable
-
- RW
-
`temp[1-*]_rated_min`
Minimum rated temperature.

- Unit: millidegree Celsius
-
- RO
-
`temp[1-*]_rated_max`
Maximum rated temperature.

- Unit: millidegree Celsius
-
- RO
-
Some chips measure temperature using external thermistors and an ADC, and
report the temperature measurement as a voltage. Converting this voltage
back to a temperature (or the other way around for limits) requires
@@ -627,58 +313,28 @@ Currents
********

`curr[1-*]_max`
- Current max value
-
- Unit: milliampere
-
- RW
+ Current max value.

`curr[1-*]_min`
Current min value.

- Unit: milliampere
-
- RW
-
`curr[1-*]_lcrit`
Current critical low value

- Unit: milliampere
-
- RW
-
`curr[1-*]_crit`
Current critical high value.

- Unit: milliampere
-
- RW
-
`curr[1-*]_input`
- Current input value
-
- Unit: milliampere
-
- RO
+ Current input value.

`curr[1-*]_average`
- Average current use
-
- Unit: milliampere
-
- RO
+ Average current use.

`curr[1-*]_lowest`
- Historical minimum current
-
- Unit: milliampere
-
- RO
+ Historical minimum current.

`curr[1-*]_highest`
- Historical maximum current
- Unit: milliampere
- RO
+ Historical maximum current.

`curr[1-*]_reset_history`
Reset currX_lowest and currX_highest
@@ -686,34 +342,17 @@ Currents
WO

`curr_reset_history`
- Reset currX_lowest and currX_highest for all sensors
-
- WO
+ Reset currX_lowest and currX_highest for all sensors.

`curr[1-*]_enable`
Enable or disable the sensors.

- When disabled the sensor read will return -ENODATA.
-
- - 1: Enable
- - 0: Disable
-
- RW
-
`curr[1-*]_rated_min`
Minimum rated current.

- Unit: milliampere
-
- RO
-
`curr[1-*]_rated_max`
Maximum rated current.

- Unit: milliampere
-
- RO
-
Also see the Alarms section for status flags associated with currents.

*****
@@ -721,141 +360,62 @@ Power
*****

`power[1-*]_average`
- Average power use
-
- Unit: microWatt
-
- RO
+ Average power use.

`power[1-*]_average_interval`
- Power use averaging interval. A poll
- notification is sent to this file if the
- hardware changes the averaging interval.
-
- Unit: milliseconds
-
- RW
+ Power use averaging interval.

`power[1-*]_average_interval_max`
- Maximum power use averaging interval
-
- Unit: milliseconds
-
- RO
+ Maximum power use averaging interval.

`power[1-*]_average_interval_min`
- Minimum power use averaging interval
-
- Unit: milliseconds
-
- RO
+ Minimum power use averaging interval.

`power[1-*]_average_highest`
- Historical average maximum power use
-
- Unit: microWatt
-
- RO
+ Historical average maximum power use

`power[1-*]_average_lowest`
- Historical average minimum power use
-
- Unit: microWatt
-
- RO
+ Historical average minimum power use

`power[1-*]_average_max`
- A poll notification is sent to
- `power[1-*]_average` when power use
- rises above this value.
-
- Unit: microWatt
-
- RW
+ A poll notification is sent to `power[1-*]_average` when
+ power use rises above this value.

`power[1-*]_average_min`
- A poll notification is sent to
- `power[1-*]_average` when power use
- sinks below this value.
-
- Unit: microWatt
-
- RW
+ A poll notification is sent to `power[1-*]_average` when
+ power use sinks below this value.

`power[1-*]_input`
- Instantaneous power use
-
- Unit: microWatt
-
- RO
+ Instantaneous power use.

`power[1-*]_input_highest`
- Historical maximum power use
-
- Unit: microWatt
-
- RO
+ Historical maximum power use

`power[1-*]_input_lowest`
- Historical minimum power use
-
- Unit: microWatt
-
- RO
+ Historical minimum power use.

`power[1-*]_reset_history`
- Reset input_highest, input_lowest,
- average_highest and average_lowest.
-
- WO
+ Reset input_highest, input_lowest, average_highest and
+ average_lowest.

`power[1-*]_accuracy`
- Accuracy of the power meter.
-
- Unit: Percent
-
- RO
+ Accuracy of the power meter.

`power[1-*]_cap`
- If power use rises above this limit, the
- system should take action to reduce power use.
- A poll notification is sent to this file if the
- cap is changed by the hardware. The `*_cap`
- files only appear if the cap is known to be
- enforced by hardware.
-
- Unit: microWatt
-
- RW
+ If power use rises above this limit, the
+ system should take action to reduce power use.

`power[1-*]_cap_hyst`
- Margin of hysteresis built around capping and
- notification.
-
- Unit: microWatt
-
- RW
+ Margin of hysteresis built around capping and notification.

`power[1-*]_cap_max`
- Maximum cap that can be set.
-
- Unit: microWatt
-
- RO
+ Maximum cap that can be set.

`power[1-*]_cap_min`
- Minimum cap that can be set.
-
- Unit: microWatt
-
- RO
+ Minimum cap that can be set.

`power[1-*]_max`
- Maximum power.
-
- Unit: microWatt
-
- RW
+ Maximum power.

`power[1-*]_crit`
Critical maximum power.
@@ -923,37 +483,16 @@ Humidity
********

`humidity[1-*]_input`
- Humidity
-
- Unit: milli-percent (per cent mille, pcm)
-
- RO
-
+ Humidity.

`humidity[1-*]_enable`
- Enable or disable the sensors
-
- When disabled the sensor read will return
- -ENODATA.
-
- - 1: Enable
- - 0: Disable
-
- RW
+ Enable or disable the sensors.

`humidity[1-*]_rated_min`
- Minimum rated humidity.
-
- Unit: milli-percent (per cent mille, pcm)
-
- RO
+ Minimum rated humidity.

`humidity[1-*]_rated_max`
- Maximum rated humidity.
-
- Unit: milli-percent (per cent mille, pcm)
-
- RO
+ Maximum rated humidity.

******
Alarms
@@ -1004,30 +543,15 @@ supports it. When this boolean has value 1, the measurement for that
channel should not be trusted.

`fan[1-*]_fault` / `temp[1-*]_fault`
- Input fault condition
-
- - 0: no fault occurred
- - 1: fault condition
-
- RO
+ Input fault condition.

Some chips also offer the possibility to get beeped when an alarm occurs:

`beep_enable`
- Master beep enable
-
- - 0: no beeps
- - 1: beeps
-
- RW
+ Master beep enable.

`in[0-*]_beep`, `curr[1-*]_beep`, `fan[1-*]_beep`, `temp[1-*]_beep`,
- Channel beep
-
- - 0: disable
- - 1: enable
-
- RW
+ Channel beep.

In theory, a chip could provide per-limit beep masking, but no such chip
was seen so far.
@@ -1039,29 +563,8 @@ for compatibility reasons:
`alarms`
Alarm bitmask.

- RO
-
- Integer representation of one to four bytes.
-
- A '1' bit means an alarm.
-
- Chips should be programmed for 'comparator' mode so that
- the alarm will 'come back' after you read the register
- if it is still valid.
-
- Generally a direct representation of a chip's internal
- alarm registers; there is no standard for the position
- of individual bits. For this reason, the use of this
- interface file for new drivers is discouraged. Use
- `individual *_alarm` and `*_fault` files instead.
- Bits are defined in kernel/include/sensors.h.
-
`beep_mask`
Bitmask for beep.
- Same format as 'alarms' with the same bit locations,
- use discouraged for the same reason. Use individual
- `*_beep` files instead.
- RW


*******************
@@ -1069,25 +572,10 @@ Intrusion detection
*******************

`intrusion[0-*]_alarm`
- Chassis intrusion detection
-
- - 0: OK
- - 1: intrusion detected
-
- RW
-
- Contrary to regular alarm flags which clear themselves
- automatically when read, this one sticks until cleared by
- the user. This is done by writing 0 to the file. Writing
- other values is unsupported.
+ Chassis intrusion detection.

`intrusion[0-*]_beep`
- Chassis intrusion beep
-
- 0: disable
- 1: enable
-
- RW
+ Chassis intrusion beep.

****************************
Average sample configuration
diff --git a/MAINTAINERS b/MAINTAINERS
index 179eadaebe76..e9fd362ef4d6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8274,6 +8274,7 @@ L: [email protected]
S: Maintained
W: http://hwmon.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
+F: Documentation/ABI/testing/sysfs-class-hwmon
F: Documentation/devicetree/bindings/hwmon/
F: Documentation/hwmon/
F: drivers/hwmon/
--
2.31.1

2021-09-30 13:01:35

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file

Reduce the gap of missing ABIs for Intel servers with MCE
by adding a new ABI file.

The contents of this file comes from:
Documentation/x86/x86_64/machinecheck.rst

Cc: Andi Kleen <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/

Documentation/ABI/testing/sysfs-mce | 107 ++++++++++++++++++++++
Documentation/x86/x86_64/machinecheck.rst | 56 +----------
MAINTAINERS | 2 +
3 files changed, 111 insertions(+), 54 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-mce

diff --git a/Documentation/ABI/testing/sysfs-mce b/Documentation/ABI/testing/sysfs-mce
new file mode 100644
index 000000000000..686fbfa02cdc
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-mce
@@ -0,0 +1,107 @@
+What: /sys/devices/system/machinecheck/machinecheckX/
+Contact: Andi Kleen <[email protected]>
+Date: Feb, 2007
+Description:
+ (X = CPU number)
+
+ Machine checks report internal hardware error conditions
+ detected by the CPU. Uncorrected errors typically cause a
+ machine check (often with panic), corrected ones cause a
+ machine check log entry.
+
+ For more details about the x86 machine check architecture
+ see the Intel and AMD architecture manuals from their
+ developer websites.
+
+ For more details about the architecture
+ see http://one.firstfloor.org/~andi/mce.pdf
+
+ Each CPU has its own directory.
+
+What: /sys/devices/system/machinecheck/machinecheckX/bank<Y>
+Contact: Andi Kleen <[email protected]>
+Date: Feb, 2007
+Description:
+ (Y bank number)
+
+ 64bit Hex bitmask enabling/disabling specific subevents for
+ bank Y.
+
+ When a bit in the bitmask is zero then the respective
+ subevent will not be reported.
+
+ By default all events are enabled.
+
+ Note that BIOS maintain another mask to disable specific events
+ per bank. This is not visible here
+
+What: /sys/devices/system/machinecheck/machinecheckX/check_interval
+Contact: Andi Kleen <[email protected]>
+Date: Feb, 2007
+Description:
+ The entries appear for each CPU, but they are truly shared
+ between all CPUs.
+
+ How often to poll for corrected machine check errors, in
+ seconds (Note output is hexadecimal). Default 5 minutes.
+ When the poller finds MCEs it triggers an exponential speedup
+ (poll more often) on the polling interval. When the poller
+ stops finding MCEs, it triggers an exponential backoff
+ (poll less often) on the polling interval. The check_interval
+ variable is both the initial and maximum polling interval.
+ 0 means no polling for corrected machine check errors
+ (but some corrected errors might be still reported
+ in other ways)
+
+What: /sys/devices/system/machinecheck/machinecheckX/tolerant
+Contact: Andi Kleen <[email protected]>
+Date: Feb, 2007
+Description:
+ The entries appear for each CPU, but they are truly shared
+ between all CPUs.
+
+ Tolerance level. When a machine check exception occurs for a
+ non corrected machine check the kernel can take different
+ actions.
+
+ Since machine check exceptions can happen any time it is
+ sometimes risky for the kernel to kill a process because it
+ defies normal kernel locking rules. The tolerance level
+ configures how hard the kernel tries to recover even at some
+ risk of deadlock. Higher tolerant values trade potentially
+ better uptime with the risk of a crash or even corruption
+ (for tolerant >= 3).
+
+ == ===========================================================
+ 0 always panic on uncorrected errors, log corrected errors
+ 1 panic or SIGBUS on uncorrected errors, log corrected errors
+ 2 SIGBUS or log uncorrected errors, log corrected errors
+ 3 never panic or SIGBUS, log all errors (for testing only)
+ == ===========================================================
+
+ Default: 1
+
+ Note this only makes a difference if the CPU allows recovery
+ from a machine check exception. Current x86 CPUs generally
+ do not.
+
+What: /sys/devices/system/machinecheck/machinecheckX/trigger
+Contact: Andi Kleen <[email protected]>
+Date: Feb, 2007
+Description:
+ The entries appear for each CPU, but they are truly shared
+ between all CPUs.
+
+ Program to run when a machine check event is detected.
+ This is an alternative to running mcelog regularly from cron
+ and allows to detect events faster.
+
+What: /sys/devices/system/machinecheck/machinecheckX/monarch_timeout
+Contact: Andi Kleen <[email protected]>
+Date: Feb, 2007
+Description:
+ How long to wait for the other CPUs to machine check too on a
+ exception. 0 to disable waiting for other CPUs.
+
+ Unit: us
+
diff --git a/Documentation/x86/x86_64/machinecheck.rst b/Documentation/x86/x86_64/machinecheck.rst
index b402e04bee60..cea12ee97200 100644
--- a/Documentation/x86/x86_64/machinecheck.rst
+++ b/Documentation/x86/x86_64/machinecheck.rst
@@ -21,60 +21,8 @@ from /dev/mcelog. Normally mcelog should be run regularly from a cronjob.
Each CPU has a directory in /sys/devices/system/machinecheck/machinecheckN
(N = CPU number).

-The directory contains some configurable entries:
-
-bankNctl
- (N bank number)
-
- 64bit Hex bitmask enabling/disabling specific subevents for bank N
- When a bit in the bitmask is zero then the respective
- subevent will not be reported.
- By default all events are enabled.
- Note that BIOS maintain another mask to disable specific events
- per bank. This is not visible here
-
-The following entries appear for each CPU, but they are truly shared
-between all CPUs.
-
-check_interval
- How often to poll for corrected machine check errors, in seconds
- (Note output is hexadecimal). Default 5 minutes. When the poller
- finds MCEs it triggers an exponential speedup (poll more often) on
- the polling interval. When the poller stops finding MCEs, it
- triggers an exponential backoff (poll less often) on the polling
- interval. The check_interval variable is both the initial and
- maximum polling interval. 0 means no polling for corrected machine
- check errors (but some corrected errors might be still reported
- in other ways)
-
-tolerant
- Tolerance level. When a machine check exception occurs for a non
- corrected machine check the kernel can take different actions.
- Since machine check exceptions can happen any time it is sometimes
- risky for the kernel to kill a process because it defies
- normal kernel locking rules. The tolerance level configures
- how hard the kernel tries to recover even at some risk of
- deadlock. Higher tolerant values trade potentially better uptime
- with the risk of a crash or even corruption (for tolerant >= 3).
-
- 0: always panic on uncorrected errors, log corrected errors
- 1: panic or SIGBUS on uncorrected errors, log corrected errors
- 2: SIGBUS or log uncorrected errors, log corrected errors
- 3: never panic or SIGBUS, log all errors (for testing only)
-
- Default: 1
-
- Note this only makes a difference if the CPU allows recovery
- from a machine check exception. Current x86 CPUs generally do not.
-
-trigger
- Program to run when a machine check event is detected.
- This is an alternative to running mcelog regularly from cron
- and allows to detect events faster.
-monarch_timeout
- How long to wait for the other CPUs to machine check too on a
- exception. 0 to disable waiting for other CPUs.
- Unit: us
+The directory contains some configurable entries. See
+Documentation/ABI/testing/sysfs-mce for more details.

TBD document entries for AMD threshold interrupt configuration

diff --git a/MAINTAINERS b/MAINTAINERS
index e9fd362ef4d6..360311ea0b43 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -20457,6 +20457,8 @@ M: Tony Luck <[email protected]>
M: Borislav Petkov <[email protected]>
L: [email protected]
S: Maintained
+F: Documentation/ABI/testing/sysfs-mce
+F: Documentation/x86/x86_64/machinecheck.rst
F: arch/x86/kernel/cpu/mce/*

X86 MICROCODE UPDATE SUPPORT
--
2.31.1

2021-09-30 13:01:42

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 6/7] ABI: sysfs-class-extcon: use uppercase X for wildcards

Uppercase letters X, Y and Z are handled as wildcards by
scripts/get_abi.pl.

We can't do that with lowercase letters, as they're used
everywhere.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/

Documentation/ABI/testing/sysfs-class-extcon | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Documentation/ABI/testing/sysfs-class-extcon b/Documentation/ABI/testing/sysfs-class-extcon
index fde0fecd5de9..f8e705375b24 100644
--- a/Documentation/ABI/testing/sysfs-class-extcon
+++ b/Documentation/ABI/testing/sysfs-class-extcon
@@ -65,19 +65,19 @@ Description:
interface associated with each cable cannot update
multiple cable states of an extcon device simultaneously.

-What: /sys/class/extcon/.../cable.x/name
+What: /sys/class/extcon/.../cable.X/name
Date: February 2012
Contact: MyungJoo Ham <[email protected]>
Description:
- The /sys/class/extcon/.../cable.x/name shows the name of cable
- "x" (integer between 0 and 31) of an extcon device.
+ The /sys/class/extcon/.../cable.X/name shows the name of cable
+ "X" (integer between 0 and 31) of an extcon device.

-What: /sys/class/extcon/.../cable.x/state
+What: /sys/class/extcon/.../cable.X/state
Date: February 2012
Contact: MyungJoo Ham <[email protected]>
Description:
- The /sys/class/extcon/.../cable.x/state shows and stores the
- state of cable "x" (integer between 0 and 31) of an extcon
+ The /sys/class/extcon/.../cable.X/state shows and stores the
+ state of cable "X" (integer between 0 and 31) of an extcon
device. The state value is either 0 (detached) or 1
(attached).

--
2.31.1

2021-09-30 14:23:40

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm

Such ABI symbol is currently not described. Document it.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/

Documentation/ABI/testing/sysfs-class-hwmon | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-class-hwmon b/Documentation/ABI/testing/sysfs-class-hwmon
index ea5a129ae082..1f20687def44 100644
--- a/Documentation/ABI/testing/sysfs-class-hwmon
+++ b/Documentation/ABI/testing/sysfs-class-hwmon
@@ -410,6 +410,20 @@ Description:

RW

+What: /sys/class/hwmon/hwmonX/tempY_crit_alarm
+Description:
+ Critical high temperature alarm flag.
+
+ - 0: OK
+ - 1: temperature has reached tempY_crit
+
+ RW
+
+ Contrary to regular alarm flags which clear themselves
+ automatically when read, this one sticks until cleared by
+ the user. This is done by writing 0 to the file. Writing
+ other values is unsupported.
+
What: /sys/class/hwmon/hwmonX/tempY_crit_hyst
Description:
Temperature hysteresis value for critical limit.
--
2.31.1

2021-09-30 14:23:43

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI

The thermal ABI is described, together with the internal
development details at:

Documentation/driver-api/thermal/sysfs-api.rst

Move the sysfs API description to Documentation/ABI,
ensuring that scripts/get_abi.pl will properly parse it.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/

Documentation/ABI/testing/sysfs-class-thermal | 259 ++++++++++++++++++
.../driver-api/thermal/sysfs-api.rst | 225 +--------------
MAINTAINERS | 2 +
3 files changed, 264 insertions(+), 222 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-class-thermal

diff --git a/Documentation/ABI/testing/sysfs-class-thermal b/Documentation/ABI/testing/sysfs-class-thermal
new file mode 100644
index 000000000000..2c52bb1f864c
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-thermal
@@ -0,0 +1,259 @@
+What: /sys/class/thermal/thermal_zoneX/type
+Description:
+ Strings which represent the thermal zone type.
+ This is given by thermal zone driver as part of registration.
+ E.g: "acpitz" indicates it's an ACPI thermal device.
+ In order to keep it consistent with hwmon sys attribute; this
+ shouldbe a short, lowercase string, not containing spaces nor
+ dashes.
+
+ RO, Required
+
+What: /sys/class/thermal/thermal_zoneX/temp
+Description:
+ Current temperature as reported by thermal zone (sensor).
+
+ Unit: millidegree Celsius
+
+ RO, Required
+
+What: /sys/class/thermal/thermal_zoneX/mode
+Description:
+ One of the predefined values in [enabled, disabled].
+ This file gives information about the algorithm that is
+ currently managing the thermal zone. It can be either default
+ kernel based algorithm or user space application.
+
+ enabled
+ enable Kernel Thermal management.
+ disabled
+ Preventing kernel thermal zone driver actions upon
+ trip points so that user application can take full
+ charge of the thermal management.
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/policy
+Description:
+ One of the various thermal governors used for a particular zone.
+
+ RW, Required
+
+What: /sys/class/thermal/thermal_zoneX/available_policies
+Description:
+ Available thermal governors which can be used for a
+ particular zone.
+
+ RO, Required
+
+What: /sys/class/thermal/thermal_zoneX/trip_point_Y_temp
+Description:
+ The temperature above which trip point will be fired.
+
+ Unit: millidegree Celsius
+
+ RO, Optional
+
+What: /sys/class/thermal/thermal_zoneX/trip_point_Y_type
+Description:
+ Strings which indicate the type of the trip point.
+
+ E.g. it can be one of critical, hot, passive, `active[0-*]`
+ for ACPI thermal zone.
+
+ RO, Optional
+
+What: /sys/class/thermal/thermal_zoneX/trip_point_Y_hyst
+Description:
+ The hysteresis value for a trip point, represented as an
+ integer.
+
+ Unit: Celsius
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/cdevY
+Description:
+ Sysfs link to the thermal cooling device node where the sys I/F
+ for cooling device throttling control represents.
+
+ RO, Optional
+
+What: /sys/class/thermal/thermal_zoneX/cdevY_trip_point
+Description:
+ The trip point in this thermal zone which `cdev[0-*]` is
+ associated with; -1 means the cooling device is not
+ associated with any trip point.
+
+ RO, Optional
+
+What: /sys/class/thermal/thermal_zoneX/cdevY_weight
+Description:
+ The influence of `cdev[0-*]` in this thermal zone. This value
+ is relative to the rest of cooling devices in the thermal
+ zone. For example, if a cooling device has a weight double
+ than that of other, it's twice as effective in cooling the
+ thermal zone.
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/emul_temp
+Description:
+ Interface to set the emulated temperature method in thermal zone
+ (sensor). After setting this temperature, the thermal zone may
+ pass this temperature to platform emulation function if
+ registered or cache it locally. This is useful in debugging
+ different temperature threshold and its associated cooling
+ action. This is write only node and writing 0 on this node
+ should disable emulation.
+
+ Unit: millidegree Celsius
+
+ WO, Optional
+
+ WARNING:
+ Be careful while enabling this option on production systems,
+ because userland can easily disable the thermal policy by simply
+ flooding this sysfs node with low temperature values.
+
+
+What: /sys/class/thermal/thermal_zoneX/k_d
+Description:
+ The derivative term of the power allocator governor's PID
+ controller. For more information see
+ Documentation/driver-api/thermal/power_allocator.rst
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/k_i
+Description:
+ The integral term of the power allocator governor's PID
+ controller. This term allows the PID controller to compensate
+ for long term drift. For more information see
+ Documentation/driver-api/thermal/power_allocator.rst
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/k_po
+Description:
+ The proportional term of the power allocator governor's PID
+ controller during temperature overshoot. Temperature overshoot
+ is when the current temperature is above the "desired
+ temperature" trip point. For more information see
+ Documentation/driver-api/thermal/power_allocator.rst
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/k_pu
+Description:
+ The proportional term of the power allocator governor's PID
+ controller during temperature undershoot. Temperature undershoot
+ is when the current temperature is below the "desired
+ temperature" trip point. For more information see
+ Documentation/driver-api/thermal/power_allocator.rst
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/integral_cutoff
+Description:
+ Temperature offset from the desired temperature trip point
+ above which the integral term of the power allocator
+ governor's PID controller starts accumulating errors. For
+ example, if integral_cutoff is 0, then the integral term only
+ accumulates error when temperature is above the desired
+ temperature trip point. For more information see
+ Documentation/driver-api/thermal/power_allocator.rst
+
+ Unit: millidegree Celsius
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/slope
+Description:
+ The slope constant used in a linear extrapolation model
+ to determine a hotspot temperature based off the sensor's
+ raw readings. It is up to the device driver to determine
+ the usage of these values.
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/offset
+Description:
+ The offset constant used in a linear extrapolation model
+ to determine a hotspot temperature based off the sensor's
+ raw readings. It is up to the device driver to determine
+ the usage of these values.
+
+ RW, Optional
+
+What: /sys/class/thermal/thermal_zoneX/sustainable_power
+Description:
+ An estimate of the sustained power that can be dissipated by
+ the thermal zone. Used by the power allocator governor. For
+ more information see
+ Documentation/driver-api/thermal/power_allocator.rst
+
+ Unit: milliwatts
+
+ RW, Optional
+
+What: /sys/class/thermal/cooling_deviceX/type
+Description:
+ String which represents the type of device, e.g:
+
+ - for generic ACPI: should be "Fan", "Processor" or "LCD"
+ - for memory controller device on intel_menlow platform:
+ should be "Memory controller".
+
+ RO, Required
+
+What: /sys/class/thermal/cooling_deviceX/max_state
+Description:
+ The maximum permissible cooling state of this cooling device.
+
+ RO, Required
+
+What: /sys/class/thermal/cooling_deviceX/cur_state
+Description:
+ The current cooling state of this cooling device.
+ The value can any integer numbers between 0 and max_state:
+
+ - cur_state == 0 means no cooling
+ - cur_state == max_state means the maximum cooling.
+
+ RW, Required
+
+What: /sys/class/thermal/cooling_deviceX/stats/reset
+Description:
+ Writing any value resets the cooling device's statistics.
+
+ WO, Required
+
+What: /sys/class/thermal/cooling_deviceX/stats/time_in_state_ms:
+Description:
+ The amount of time spent by the cooling device in various
+ cooling states. The output will have "<state> <time>" pair
+ in each line, which will mean this cooling device spent <time>
+ msec of time at <state>.
+
+ Output will have one line for each of the supported states.
+
+ RO, Required
+
+What: /sys/class/thermal/cooling_deviceX/stats/total_trans
+Description:
+ A single positive value showing the total number of times
+ the state of a cooling device is changed.
+
+ RO, Required
+
+What: /sys/class/thermal/cooling_deviceX/stats/trans_table
+Description:
+ This gives fine grained information about all the cooling state
+ transitions. The cat output here is a two dimensional matrix,
+ where an entry <i,j> (row i, column j) represents the number
+ of transitions from State_i to State_j. If the transition
+ table is bigger than PAGE_SIZE, reading this will return
+ an -EFBIG error.
+
+ RO, Required
diff --git a/Documentation/driver-api/thermal/sysfs-api.rst b/Documentation/driver-api/thermal/sysfs-api.rst
index c93fa5e961a0..2e0f79a9e2ee 100644
--- a/Documentation/driver-api/thermal/sysfs-api.rst
+++ b/Documentation/driver-api/thermal/sysfs-api.rst
@@ -428,6 +428,9 @@ of thermal zone device. E.g. the generic thermal driver registers one hwmon
class device and build the associated hwmon sysfs I/F for all the registered
ACPI thermal zones.

+Please read Documentation/ABI/testing/sysfs-class-thermal for thermal
+zone and cooling device attribute details.
+
::

/sys/class/hwmon/hwmon[0-*]:
@@ -437,228 +440,6 @@ ACPI thermal zones.

Please read Documentation/hwmon/sysfs-interface.rst for additional information.

-Thermal zone attributes
------------------------
-
-type
- Strings which represent the thermal zone type.
- This is given by thermal zone driver as part of registration.
- E.g: "acpitz" indicates it's an ACPI thermal device.
- In order to keep it consistent with hwmon sys attribute; this should
- be a short, lowercase string, not containing spaces nor dashes.
- RO, Required
-
-temp
- Current temperature as reported by thermal zone (sensor).
- Unit: millidegree Celsius
- RO, Required
-
-mode
- One of the predefined values in [enabled, disabled].
- This file gives information about the algorithm that is currently
- managing the thermal zone. It can be either default kernel based
- algorithm or user space application.
-
- enabled
- enable Kernel Thermal management.
- disabled
- Preventing kernel thermal zone driver actions upon
- trip points so that user application can take full
- charge of the thermal management.
-
- RW, Optional
-
-policy
- One of the various thermal governors used for a particular zone.
-
- RW, Required
-
-available_policies
- Available thermal governors which can be used for a particular zone.
-
- RO, Required
-
-`trip_point_[0-*]_temp`
- The temperature above which trip point will be fired.
-
- Unit: millidegree Celsius
-
- RO, Optional
-
-`trip_point_[0-*]_type`
- Strings which indicate the type of the trip point.
-
- E.g. it can be one of critical, hot, passive, `active[0-*]` for ACPI
- thermal zone.
-
- RO, Optional
-
-`trip_point_[0-*]_hyst`
- The hysteresis value for a trip point, represented as an integer
- Unit: Celsius
- RW, Optional
-
-`cdev[0-*]`
- Sysfs link to the thermal cooling device node where the sys I/F
- for cooling device throttling control represents.
-
- RO, Optional
-
-`cdev[0-*]_trip_point`
- The trip point in this thermal zone which `cdev[0-*]` is associated
- with; -1 means the cooling device is not associated with any trip
- point.
-
- RO, Optional
-
-`cdev[0-*]_weight`
- The influence of `cdev[0-*]` in this thermal zone. This value
- is relative to the rest of cooling devices in the thermal
- zone. For example, if a cooling device has a weight double
- than that of other, it's twice as effective in cooling the
- thermal zone.
-
- RW, Optional
-
-emul_temp
- Interface to set the emulated temperature method in thermal zone
- (sensor). After setting this temperature, the thermal zone may pass
- this temperature to platform emulation function if registered or
- cache it locally. This is useful in debugging different temperature
- threshold and its associated cooling action. This is write only node
- and writing 0 on this node should disable emulation.
- Unit: millidegree Celsius
-
- WO, Optional
-
- WARNING:
- Be careful while enabling this option on production systems,
- because userland can easily disable the thermal policy by simply
- flooding this sysfs node with low temperature values.
-
-sustainable_power
- An estimate of the sustained power that can be dissipated by
- the thermal zone. Used by the power allocator governor. For
- more information see Documentation/driver-api/thermal/power_allocator.rst
-
- Unit: milliwatts
-
- RW, Optional
-
-k_po
- The proportional term of the power allocator governor's PID
- controller during temperature overshoot. Temperature overshoot
- is when the current temperature is above the "desired
- temperature" trip point. For more information see
- Documentation/driver-api/thermal/power_allocator.rst
-
- RW, Optional
-
-k_pu
- The proportional term of the power allocator governor's PID
- controller during temperature undershoot. Temperature undershoot
- is when the current temperature is below the "desired
- temperature" trip point. For more information see
- Documentation/driver-api/thermal/power_allocator.rst
-
- RW, Optional
-
-k_i
- The integral term of the power allocator governor's PID
- controller. This term allows the PID controller to compensate
- for long term drift. For more information see
- Documentation/driver-api/thermal/power_allocator.rst
-
- RW, Optional
-
-k_d
- The derivative term of the power allocator governor's PID
- controller. For more information see
- Documentation/driver-api/thermal/power_allocator.rst
-
- RW, Optional
-
-integral_cutoff
- Temperature offset from the desired temperature trip point
- above which the integral term of the power allocator
- governor's PID controller starts accumulating errors. For
- example, if integral_cutoff is 0, then the integral term only
- accumulates error when temperature is above the desired
- temperature trip point. For more information see
- Documentation/driver-api/thermal/power_allocator.rst
-
- Unit: millidegree Celsius
-
- RW, Optional
-
-slope
- The slope constant used in a linear extrapolation model
- to determine a hotspot temperature based off the sensor's
- raw readings. It is up to the device driver to determine
- the usage of these values.
-
- RW, Optional
-
-offset
- The offset constant used in a linear extrapolation model
- to determine a hotspot temperature based off the sensor's
- raw readings. It is up to the device driver to determine
- the usage of these values.
-
- RW, Optional
-
-Cooling device attributes
--------------------------
-
-type
- String which represents the type of device, e.g:
-
- - for generic ACPI: should be "Fan", "Processor" or "LCD"
- - for memory controller device on intel_menlow platform:
- should be "Memory controller".
-
- RO, Required
-
-max_state
- The maximum permissible cooling state of this cooling device.
-
- RO, Required
-
-cur_state
- The current cooling state of this cooling device.
- The value can any integer numbers between 0 and max_state:
-
- - cur_state == 0 means no cooling
- - cur_state == max_state means the maximum cooling.
-
- RW, Required
-
-stats/reset
- Writing any value resets the cooling device's statistics.
- WO, Required
-
-stats/time_in_state_ms:
- The amount of time spent by the cooling device in various cooling
- states. The output will have "<state> <time>" pair in each line, which
- will mean this cooling device spent <time> msec of time at <state>.
- Output will have one line for each of the supported states.
- RO, Required
-
-
-stats/total_trans:
- A single positive value showing the total number of times the state of a
- cooling device is changed.
-
- RO, Required
-
-stats/trans_table:
- This gives fine grained information about all the cooling state
- transitions. The cat output here is a two dimensional matrix, where an
- entry <i,j> (row i, column j) represents the number of transitions from
- State_i to State_j. If the transition table is bigger than PAGE_SIZE,
- reading this will return an -EFBIG error.
- RO, Required
-
3. A simple implementation
==========================

diff --git a/MAINTAINERS b/MAINTAINERS
index 9b765cbc90d1..179eadaebe76 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -18653,7 +18653,9 @@ L: [email protected]
S: Supported
Q: https://patchwork.kernel.org/project/linux-pm/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git
+F: Documentation/ABI/testing/sysfs-class-thermal
F: Documentation/devicetree/bindings/thermal/
+F: Documentation/driver-api/thermal/
F: drivers/thermal/
F: include/linux/cpu_cooling.h
F: include/linux/thermal.h
--
2.31.1

2021-10-01 18:51:51

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI

On Thu, Sep 30, 2021 at 11:45 AM Mauro Carvalho Chehab
<[email protected]> wrote:
>
> The thermal ABI is described, together with the internal
> development details at:
>
> Documentation/driver-api/thermal/sysfs-api.rst
>
> Move the sysfs API description to Documentation/ABI,
> ensuring that scripts/get_abi.pl will properly parse it.

So the subject of the patch should be something like

thermal: Move ABI documentation do Documentation/ABI

Also please mention the MAINTAINERS update in the changelog.

> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> ---
>
> See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/
>
> Documentation/ABI/testing/sysfs-class-thermal | 259 ++++++++++++++++++
> .../driver-api/thermal/sysfs-api.rst | 225 +--------------
> MAINTAINERS | 2 +
> 3 files changed, 264 insertions(+), 222 deletions(-)
> create mode 100644 Documentation/ABI/testing/sysfs-class-thermal
>
> diff --git a/Documentation/ABI/testing/sysfs-class-thermal b/Documentation/ABI/testing/sysfs-class-thermal
> new file mode 100644
> index 000000000000..2c52bb1f864c
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-class-thermal
> @@ -0,0 +1,259 @@
> +What: /sys/class/thermal/thermal_zoneX/type
> +Description:
> + Strings which represent the thermal zone type.
> + This is given by thermal zone driver as part of registration.
> + E.g: "acpitz" indicates it's an ACPI thermal device.
> + In order to keep it consistent with hwmon sys attribute; this
> + shouldbe a short, lowercase string, not containing spaces nor
> + dashes.
> +
> + RO, Required
> +
> +What: /sys/class/thermal/thermal_zoneX/temp
> +Description:
> + Current temperature as reported by thermal zone (sensor).
> +
> + Unit: millidegree Celsius
> +
> + RO, Required
> +
> +What: /sys/class/thermal/thermal_zoneX/mode
> +Description:
> + One of the predefined values in [enabled, disabled].
> + This file gives information about the algorithm that is
> + currently managing the thermal zone. It can be either default
> + kernel based algorithm or user space application.
> +
> + enabled
> + enable Kernel Thermal management.
> + disabled
> + Preventing kernel thermal zone driver actions upon
> + trip points so that user application can take full
> + charge of the thermal management.
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/policy
> +Description:
> + One of the various thermal governors used for a particular zone.
> +
> + RW, Required
> +
> +What: /sys/class/thermal/thermal_zoneX/available_policies
> +Description:
> + Available thermal governors which can be used for a
> + particular zone.
> +
> + RO, Required
> +
> +What: /sys/class/thermal/thermal_zoneX/trip_point_Y_temp
> +Description:
> + The temperature above which trip point will be fired.
> +
> + Unit: millidegree Celsius
> +
> + RO, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/trip_point_Y_type
> +Description:
> + Strings which indicate the type of the trip point.
> +
> + E.g. it can be one of critical, hot, passive, `active[0-*]`
> + for ACPI thermal zone.
> +
> + RO, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/trip_point_Y_hyst
> +Description:
> + The hysteresis value for a trip point, represented as an
> + integer.
> +
> + Unit: Celsius
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/cdevY
> +Description:
> + Sysfs link to the thermal cooling device node where the sys I/F
> + for cooling device throttling control represents.
> +
> + RO, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/cdevY_trip_point
> +Description:
> + The trip point in this thermal zone which `cdev[0-*]` is
> + associated with; -1 means the cooling device is not
> + associated with any trip point.
> +
> + RO, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/cdevY_weight
> +Description:
> + The influence of `cdev[0-*]` in this thermal zone. This value
> + is relative to the rest of cooling devices in the thermal
> + zone. For example, if a cooling device has a weight double
> + than that of other, it's twice as effective in cooling the
> + thermal zone.
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/emul_temp
> +Description:
> + Interface to set the emulated temperature method in thermal zone
> + (sensor). After setting this temperature, the thermal zone may
> + pass this temperature to platform emulation function if
> + registered or cache it locally. This is useful in debugging
> + different temperature threshold and its associated cooling
> + action. This is write only node and writing 0 on this node
> + should disable emulation.
> +
> + Unit: millidegree Celsius
> +
> + WO, Optional
> +
> + WARNING:
> + Be careful while enabling this option on production systems,
> + because userland can easily disable the thermal policy by simply
> + flooding this sysfs node with low temperature values.
> +
> +
> +What: /sys/class/thermal/thermal_zoneX/k_d
> +Description:
> + The derivative term of the power allocator governor's PID
> + controller. For more information see
> + Documentation/driver-api/thermal/power_allocator.rst
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/k_i
> +Description:
> + The integral term of the power allocator governor's PID
> + controller. This term allows the PID controller to compensate
> + for long term drift. For more information see
> + Documentation/driver-api/thermal/power_allocator.rst
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/k_po
> +Description:
> + The proportional term of the power allocator governor's PID
> + controller during temperature overshoot. Temperature overshoot
> + is when the current temperature is above the "desired
> + temperature" trip point. For more information see
> + Documentation/driver-api/thermal/power_allocator.rst
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/k_pu
> +Description:
> + The proportional term of the power allocator governor's PID
> + controller during temperature undershoot. Temperature undershoot
> + is when the current temperature is below the "desired
> + temperature" trip point. For more information see
> + Documentation/driver-api/thermal/power_allocator.rst
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/integral_cutoff
> +Description:
> + Temperature offset from the desired temperature trip point
> + above which the integral term of the power allocator
> + governor's PID controller starts accumulating errors. For
> + example, if integral_cutoff is 0, then the integral term only
> + accumulates error when temperature is above the desired
> + temperature trip point. For more information see
> + Documentation/driver-api/thermal/power_allocator.rst
> +
> + Unit: millidegree Celsius
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/slope
> +Description:
> + The slope constant used in a linear extrapolation model
> + to determine a hotspot temperature based off the sensor's
> + raw readings. It is up to the device driver to determine
> + the usage of these values.
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/offset
> +Description:
> + The offset constant used in a linear extrapolation model
> + to determine a hotspot temperature based off the sensor's
> + raw readings. It is up to the device driver to determine
> + the usage of these values.
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/thermal_zoneX/sustainable_power
> +Description:
> + An estimate of the sustained power that can be dissipated by
> + the thermal zone. Used by the power allocator governor. For
> + more information see
> + Documentation/driver-api/thermal/power_allocator.rst
> +
> + Unit: milliwatts
> +
> + RW, Optional
> +
> +What: /sys/class/thermal/cooling_deviceX/type
> +Description:
> + String which represents the type of device, e.g:
> +
> + - for generic ACPI: should be "Fan", "Processor" or "LCD"
> + - for memory controller device on intel_menlow platform:
> + should be "Memory controller".
> +
> + RO, Required
> +
> +What: /sys/class/thermal/cooling_deviceX/max_state
> +Description:
> + The maximum permissible cooling state of this cooling device.
> +
> + RO, Required
> +
> +What: /sys/class/thermal/cooling_deviceX/cur_state
> +Description:
> + The current cooling state of this cooling device.
> + The value can any integer numbers between 0 and max_state:
> +
> + - cur_state == 0 means no cooling
> + - cur_state == max_state means the maximum cooling.
> +
> + RW, Required
> +
> +What: /sys/class/thermal/cooling_deviceX/stats/reset
> +Description:
> + Writing any value resets the cooling device's statistics.
> +
> + WO, Required
> +
> +What: /sys/class/thermal/cooling_deviceX/stats/time_in_state_ms:
> +Description:
> + The amount of time spent by the cooling device in various
> + cooling states. The output will have "<state> <time>" pair
> + in each line, which will mean this cooling device spent <time>
> + msec of time at <state>.
> +
> + Output will have one line for each of the supported states.
> +
> + RO, Required
> +
> +What: /sys/class/thermal/cooling_deviceX/stats/total_trans
> +Description:
> + A single positive value showing the total number of times
> + the state of a cooling device is changed.
> +
> + RO, Required
> +
> +What: /sys/class/thermal/cooling_deviceX/stats/trans_table
> +Description:
> + This gives fine grained information about all the cooling state
> + transitions. The cat output here is a two dimensional matrix,
> + where an entry <i,j> (row i, column j) represents the number
> + of transitions from State_i to State_j. If the transition
> + table is bigger than PAGE_SIZE, reading this will return
> + an -EFBIG error.
> +
> + RO, Required
> diff --git a/Documentation/driver-api/thermal/sysfs-api.rst b/Documentation/driver-api/thermal/sysfs-api.rst
> index c93fa5e961a0..2e0f79a9e2ee 100644
> --- a/Documentation/driver-api/thermal/sysfs-api.rst
> +++ b/Documentation/driver-api/thermal/sysfs-api.rst
> @@ -428,6 +428,9 @@ of thermal zone device. E.g. the generic thermal driver registers one hwmon
> class device and build the associated hwmon sysfs I/F for all the registered
> ACPI thermal zones.
>
> +Please read Documentation/ABI/testing/sysfs-class-thermal for thermal
> +zone and cooling device attribute details.
> +
> ::
>
> /sys/class/hwmon/hwmon[0-*]:
> @@ -437,228 +440,6 @@ ACPI thermal zones.
>
> Please read Documentation/hwmon/sysfs-interface.rst for additional information.
>
> -Thermal zone attributes
> ------------------------
> -
> -type
> - Strings which represent the thermal zone type.
> - This is given by thermal zone driver as part of registration.
> - E.g: "acpitz" indicates it's an ACPI thermal device.
> - In order to keep it consistent with hwmon sys attribute; this should
> - be a short, lowercase string, not containing spaces nor dashes.
> - RO, Required
> -
> -temp
> - Current temperature as reported by thermal zone (sensor).
> - Unit: millidegree Celsius
> - RO, Required
> -
> -mode
> - One of the predefined values in [enabled, disabled].
> - This file gives information about the algorithm that is currently
> - managing the thermal zone. It can be either default kernel based
> - algorithm or user space application.
> -
> - enabled
> - enable Kernel Thermal management.
> - disabled
> - Preventing kernel thermal zone driver actions upon
> - trip points so that user application can take full
> - charge of the thermal management.
> -
> - RW, Optional
> -
> -policy
> - One of the various thermal governors used for a particular zone.
> -
> - RW, Required
> -
> -available_policies
> - Available thermal governors which can be used for a particular zone.
> -
> - RO, Required
> -
> -`trip_point_[0-*]_temp`
> - The temperature above which trip point will be fired.
> -
> - Unit: millidegree Celsius
> -
> - RO, Optional
> -
> -`trip_point_[0-*]_type`
> - Strings which indicate the type of the trip point.
> -
> - E.g. it can be one of critical, hot, passive, `active[0-*]` for ACPI
> - thermal zone.
> -
> - RO, Optional
> -
> -`trip_point_[0-*]_hyst`
> - The hysteresis value for a trip point, represented as an integer
> - Unit: Celsius
> - RW, Optional
> -
> -`cdev[0-*]`
> - Sysfs link to the thermal cooling device node where the sys I/F
> - for cooling device throttling control represents.
> -
> - RO, Optional
> -
> -`cdev[0-*]_trip_point`
> - The trip point in this thermal zone which `cdev[0-*]` is associated
> - with; -1 means the cooling device is not associated with any trip
> - point.
> -
> - RO, Optional
> -
> -`cdev[0-*]_weight`
> - The influence of `cdev[0-*]` in this thermal zone. This value
> - is relative to the rest of cooling devices in the thermal
> - zone. For example, if a cooling device has a weight double
> - than that of other, it's twice as effective in cooling the
> - thermal zone.
> -
> - RW, Optional
> -
> -emul_temp
> - Interface to set the emulated temperature method in thermal zone
> - (sensor). After setting this temperature, the thermal zone may pass
> - this temperature to platform emulation function if registered or
> - cache it locally. This is useful in debugging different temperature
> - threshold and its associated cooling action. This is write only node
> - and writing 0 on this node should disable emulation.
> - Unit: millidegree Celsius
> -
> - WO, Optional
> -
> - WARNING:
> - Be careful while enabling this option on production systems,
> - because userland can easily disable the thermal policy by simply
> - flooding this sysfs node with low temperature values.
> -
> -sustainable_power
> - An estimate of the sustained power that can be dissipated by
> - the thermal zone. Used by the power allocator governor. For
> - more information see Documentation/driver-api/thermal/power_allocator.rst
> -
> - Unit: milliwatts
> -
> - RW, Optional
> -
> -k_po
> - The proportional term of the power allocator governor's PID
> - controller during temperature overshoot. Temperature overshoot
> - is when the current temperature is above the "desired
> - temperature" trip point. For more information see
> - Documentation/driver-api/thermal/power_allocator.rst
> -
> - RW, Optional
> -
> -k_pu
> - The proportional term of the power allocator governor's PID
> - controller during temperature undershoot. Temperature undershoot
> - is when the current temperature is below the "desired
> - temperature" trip point. For more information see
> - Documentation/driver-api/thermal/power_allocator.rst
> -
> - RW, Optional
> -
> -k_i
> - The integral term of the power allocator governor's PID
> - controller. This term allows the PID controller to compensate
> - for long term drift. For more information see
> - Documentation/driver-api/thermal/power_allocator.rst
> -
> - RW, Optional
> -
> -k_d
> - The derivative term of the power allocator governor's PID
> - controller. For more information see
> - Documentation/driver-api/thermal/power_allocator.rst
> -
> - RW, Optional
> -
> -integral_cutoff
> - Temperature offset from the desired temperature trip point
> - above which the integral term of the power allocator
> - governor's PID controller starts accumulating errors. For
> - example, if integral_cutoff is 0, then the integral term only
> - accumulates error when temperature is above the desired
> - temperature trip point. For more information see
> - Documentation/driver-api/thermal/power_allocator.rst
> -
> - Unit: millidegree Celsius
> -
> - RW, Optional
> -
> -slope
> - The slope constant used in a linear extrapolation model
> - to determine a hotspot temperature based off the sensor's
> - raw readings. It is up to the device driver to determine
> - the usage of these values.
> -
> - RW, Optional
> -
> -offset
> - The offset constant used in a linear extrapolation model
> - to determine a hotspot temperature based off the sensor's
> - raw readings. It is up to the device driver to determine
> - the usage of these values.
> -
> - RW, Optional
> -
> -Cooling device attributes
> --------------------------
> -
> -type
> - String which represents the type of device, e.g:
> -
> - - for generic ACPI: should be "Fan", "Processor" or "LCD"
> - - for memory controller device on intel_menlow platform:
> - should be "Memory controller".
> -
> - RO, Required
> -
> -max_state
> - The maximum permissible cooling state of this cooling device.
> -
> - RO, Required
> -
> -cur_state
> - The current cooling state of this cooling device.
> - The value can any integer numbers between 0 and max_state:
> -
> - - cur_state == 0 means no cooling
> - - cur_state == max_state means the maximum cooling.
> -
> - RW, Required
> -
> -stats/reset
> - Writing any value resets the cooling device's statistics.
> - WO, Required
> -
> -stats/time_in_state_ms:
> - The amount of time spent by the cooling device in various cooling
> - states. The output will have "<state> <time>" pair in each line, which
> - will mean this cooling device spent <time> msec of time at <state>.
> - Output will have one line for each of the supported states.
> - RO, Required
> -
> -
> -stats/total_trans:
> - A single positive value showing the total number of times the state of a
> - cooling device is changed.
> -
> - RO, Required
> -
> -stats/trans_table:
> - This gives fine grained information about all the cooling state
> - transitions. The cat output here is a two dimensional matrix, where an
> - entry <i,j> (row i, column j) represents the number of transitions from
> - State_i to State_j. If the transition table is bigger than PAGE_SIZE,
> - reading this will return an -EFBIG error.
> - RO, Required
> -
> 3. A simple implementation
> ==========================
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 9b765cbc90d1..179eadaebe76 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -18653,7 +18653,9 @@ L: [email protected]
> S: Supported
> Q: https://patchwork.kernel.org/project/linux-pm/list/
> T: git git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git
> +F: Documentation/ABI/testing/sysfs-class-thermal
> F: Documentation/devicetree/bindings/thermal/
> +F: Documentation/driver-api/thermal/
> F: drivers/thermal/
> F: include/linux/cpu_cooling.h
> F: include/linux/thermal.h
> --
> 2.31.1
>

2021-10-04 23:55:47

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file


On 9/30/2021 2:44 AM, Mauro Carvalho Chehab wrote:
> Reduce the gap of missing ABIs for Intel servers with MCE
> by adding a new ABI file.
>
> The contents of this file comes from:
> Documentation/x86/x86_64/machinecheck.rst
>
> Cc: Andi Kleen <[email protected]>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>

Reviewed-by: Andi Kleen <[email protected]>


2021-10-08 14:55:23

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it

On 9/30/21 2:44 AM, Mauro Carvalho Chehab wrote:
> Move the ABI attributes documentation from:
> Documentation/hwmon/sysfs-interface.rst
>
The patche moves th documentation; it doesn't add it.
That should be reflected in the subject.


> in order for it to follow the usual ABI documentation. That
> allows script/get_abi.pl to properly handle it.
> > Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> ---
>
> See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/
>
> Documentation/ABI/testing/sysfs-class-hwmon | 918 ++++++++++++++++++++
> Documentation/hwmon/sysfs-interface.rst | 596 +------------
> MAINTAINERS | 1 +
> 3 files changed, 961 insertions(+), 554 deletions(-)
> create mode 100644 Documentation/ABI/testing/sysfs-class-hwmon
>
> diff --git a/Documentation/ABI/testing/sysfs-class-hwmon b/Documentation/ABI/testing/sysfs-class-hwmon
> new file mode 100644
> index 000000000000..ea5a129ae082
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-class-hwmon
> @@ -0,0 +1,918 @@
> +What: /sys/class/hwmon/hwmonX/name
> +Description:
> + The chip name.
> + This should be a short, lowercase string, not containing
> + whitespace, dashes, or the wildcard character '*'.
> + This attribute represents the chip name. It is the only
> + mandatory attribute.
> + I2C devices get this attribute created automatically.

The above sentence is obsolete and should be removed. The name attribute is generated
automatically for all non-obsolete APIs.

> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/update_interval
> +Description:
> + The interval at which the chip will update readings.
> + Unit: millisecond
> +
> + RW
> +
> + Some devices have a variable update rate or interval.
> + This attribute can be used to change it to the desired value.
> +
> +What: /sys/class/hwmon/hwmonX/inY_min
> +Description:
> + Voltage min value.
> +
> + Unit: millivolt
> +
> + RW
> +
The range of "Y" gets lost in those definitions. They are still retained in
the original file, so maybe tit doesn't matter. It seems a bit
incomplete, though.

> +What: /sys/class/hwmon/hwmonX/inY_lcrit
> +Description:
> + Voltage critical min value.
> +
> + Unit: millivolt
> +
> + RW
> +
> + If voltage drops to or below this limit, the system may
> + take drastic action such as power down or reset. At the very
> + least, it should report a fault.
> +
> +What: /sys/class/hwmon/hwmonX/inY_max
> +Description:
> + Voltage max value.
> +
> + Unit: millivolt
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/inY_crit
> +Description:
> + Voltage critical max value.
> +
> + Unit: millivolt
> +
> + RW
> +
> + If voltage reaches or exceeds this limit, the system may
> + take drastic action such as power down or reset. At the very
> + least, it should report a fault.
> +
> +What: /sys/class/hwmon/hwmonX/inY_input
> +Description:
> + Voltage input value.
> +
> + Unit: millivolt
> +
> + RO
> +
> + Voltage measured on the chip pin.
> +
> + Actual voltage depends on the scaling resistors on the
> + motherboard, as recommended in the chip datasheet.
> +
> + This varies by chip and by motherboard.
> + Because of this variation, values are generally NOT scaled
> + by the chip driver, and must be done by the application.
> + However, some drivers (notably lm87 and via686a)
> + do scale, because of internal resistors built into a chip.
> + These drivers will output the actual voltage. Rule of
> + thumb: drivers should report the voltage values at the
> + "pins" of the chip.
> +
> +What: /sys/class/hwmon/hwmonX/inY_average
> +Description:
> + Average voltage
> +
> + Unit: millivolt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/inY_lowest
> +Description:
> + Historical minimum voltage
> +
> + Unit: millivolt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/inY_highest
> +Description:
> + Historical maximum voltage
> +
> + Unit: millivolt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/inY_reset_history
> +Description:
> + Reset inX_lowest and inX_highest
> +
> + WO
> +
> +What: /sys/class/hwmon/hwmonX/in_reset_history
> +Description:
> + Reset inX_lowest and inX_highest for all sensors
> +
> + WO
> +
> +What: /sys/class/hwmon/hwmonX/inY_label
> +Description:
> + Suggested voltage channel label.
> +
> + Text string
> +
> + Should only be created if the driver has hints about what
> + this voltage channel is being used for, and user-space
> + doesn't. In all other cases, the label is provided by
> + user-space.
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/inY_enable
> +Description:
> + Enable or disable the sensors.
> +
> + When disabled the sensor read will return -ENODATA.
> +
> + - 1: Enable
> + - 0: Disable
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/cpuY_vid
> +Description:
> + CPU core reference voltage.
> +
> + Unit: millivolt
> +
> + RO
> +
> + Not always correct.
> +
> +What: /sys/class/hwmon/hwmonX/vrm
> +Description:
> + Voltage Regulator Module version number.
> +
> + RW (but changing it should no more be necessary)
> +
> + Originally the VRM standard version multiplied by 10, but now
> + an arbitrary number, as not all standards have a version
> + number.
> +
> + Affects the way the driver calculates the CPU core reference
> + voltage from the vid pins.
> +
> +What: /sys/class/hwmon/hwmonX/inY_rated_min
> +Description:
> + Minimum rated voltage.
> +
> + Unit: millivolt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/inY_rated_max
> +Description:
> + Maximum rated voltage.
> +
> + Unit: millivolt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/fanY_min
> +Description:
> + Fan minimum value
> +
> + Unit: revolution/min (RPM)
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/fanY_max
> +Description:
> + Fan maximum value
> +
> + Unit: revolution/min (RPM)
> +
> + Only rarely supported by the hardware.
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/fanY_input
> +Description:
> + Fan input value.
> +
> + Unit: revolution/min (RPM)
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/fanY_div
> +Description:
> + Fan divisor.
> +
> + Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
> +
> + RW
> +
> + Some chips only support values 1, 2, 4 and 8.
> + Note that this is actually an internal clock divisor, which
> + affects the measurable speed range, not the read value.
> +
> +What: /sys/class/hwmon/hwmonX/fanY_pulses
> +Description:
> + Number of tachometer pulses per fan revolution.
> +
> + Integer value, typically between 1 and 4.
> +
> + RW
> +
> + This value is a characteristic of the fan connected to the
> + device's input, so it has to be set in accordance with the fan
> + model.
> +
> + Should only be created if the chip has a register to configure
> + the number of pulses. In the absence of such a register (and
> + thus attribute) the value assumed by all devices is 2 pulses
> + per fan revolution.
> +
> +What: /sys/class/hwmon/hwmonX/fanY_target
> +Description:
> + Desired fan speed
> +
> + Unit: revolution/min (RPM)
> +
> + RW
> +
> + Only makes sense if the chip supports closed-loop fan speed
> + control based on the measured fan speed.
> +
> +What: /sys/class/hwmon/hwmonX/fanY_label
> +Description:
> + Suggested fan channel label.
> +
> + Text string
> +
> + Should only be created if the driver has hints about what
> + this fan channel is being used for, and user-space doesn't.
> + In all other cases, the label is provided by user-space.
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/fanY_enable
> +Description:
> + Enable or disable the sensors.
> +
> + When disabled the sensor read will return -ENODATA.
> +
> + - 1: Enable
> + - 0: Disable
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/pwmY
> +Description:
> + Pulse width modulation fan control.
> +
> + Integer value in the range 0 to 255
> +
> + RW
> +
> + 255 is max or 100%.
> +
> +What: /sys/class/hwmon/hwmonX/pwmY_enable
> +Description:
> + Fan speed control method:
> +
> + - 0: no fan speed control (i.e. fan at full speed)
> + - 1: manual fan speed control enabled (using `pwmY`)
> + - 2+: automatic fan speed control enabled
> +
> + Check individual chip documentation files for automatic mode
> + details.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/pwmY_mode
> +Description:
> + - 0: DC mode (direct current)
> + - 1: PWM mode (pulse-width modulation)
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/pwmY_freq
> +Description:
> + Base PWM frequency in Hz.
> +
> + Only possibly available when pwmN_mode is PWM, but not always
> + present even then.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/pwmY_auto_channels_temp
> +Description:
> + Select which temperature channels affect this PWM output in
> + auto mode.
> +
> + Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
> + Which values are possible depend on the chip used.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/pwmY_auto_pointZ_pwm
> +What: /sys/class/hwmon/hwmonX/pwmY_auto_pointZ_temp
> +What: /sys/class/hwmon/hwmonX/pwmY_auto_pointZ_temp_hyst
> +Description:
> + Define the PWM vs temperature curve.
> +
> + Number of trip points is chip-dependent. Use this for chips
> + which associate trip points to PWM output channels.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_auto_pointZ_pwm
> +What: /sys/class/hwmon/hwmonX/tempY_auto_pointZ_temp
> +What: /sys/class/hwmon/hwmonX/tempY_auto_pointZ_temp_hyst
> +Description:
> + Define the PWM vs temperature curve.
> +
> + Number of trip points is chip-dependent. Use this for chips
> + which associate trip points to temperature channels.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_type
> +Description:
> + Sensor type selection.
> +
> + Integers 1 to 6
> +
> + RW
> +
> + - 1: CPU embedded diode
> + - 2: 3904 transistor
> + - 3: thermal diode
> + - 4: thermistor
> + - 5: AMD AMDSI
> + - 6: Intel PECI
> +
> + Not all types are supported by all chips
> +
> +What: /sys/class/hwmon/hwmonX/tempY_max
> +Description:
> + Temperature max value.
> +
> + Unit: millidegree Celsius (or millivolt, see below)
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_min
> +Description:
> + Temperature min value.
> +
> + Unit: millidegree Celsius
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_max_hyst
> +Description:
> + Temperature hysteresis value for max limit.
> +
> + Unit: millidegree Celsius
> +
> + Must be reported as an absolute temperature, NOT a delta
> + from the max value.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_min_hyst
> +Description:
> + Temperature hysteresis value for min limit.
> + Unit: millidegree Celsius
> +
> + Must be reported as an absolute temperature, NOT a delta
> + from the min value.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_input
> +Description:
> + Temperature input value.
> +
> + Unit: millidegree Celsius
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/tempY_crit
> +Description:
> + Temperature critical max value, typically greater than
> + corresponding temp_max values.
> +
> + Unit: millidegree Celsius
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_crit_hyst
> +Description:
> + Temperature hysteresis value for critical limit.
> +
> + Unit: millidegree Celsius
> +
> + Must be reported as an absolute temperature, NOT a delta
> + from the critical value.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_emergency
> +Description:
> + Temperature emergency max value, for chips supporting more than
> + two upper temperature limits. Must be equal or greater than
> + corresponding temp_crit values.
> +
> + Unit: millidegree Celsius
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_emergency_hyst
> +Description:
> + Temperature hysteresis value for emergency limit.
> +
> + Unit: millidegree Celsius
> +
> + Must be reported as an absolute temperature, NOT a delta
> + from the emergency value.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_lcrit
> +Description:
> + Temperature critical min value, typically lower than
> + corresponding temp_min values.
> +
> + Unit: millidegree Celsius
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_lcrit_hyst
> +Description:
> + Temperature hysteresis value for critical min limit.
> +
> + Unit: millidegree Celsius
> +
> + Must be reported as an absolute temperature, NOT a delta
> + from the critical min value.
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_offset
> +Description:
> + Temperature offset which is added to the temperature reading
> + by the chip.
> +
> + Unit: millidegree Celsius
> +
> + Read/Write value.
> +
> +What: /sys/class/hwmon/hwmonX/tempY_label
> +Description:
> + Suggested temperature channel label.
> +
> + Text string
> +
> + Should only be created if the driver has hints about what
> + this temperature channel is being used for, and user-space
> + doesn't. In all other cases, the label is provided by
> + user-space.
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/tempY_lowest
> +Description:
> + Historical minimum temperature
> +
> + Unit: millidegree Celsius
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/tempY_highest
> +Description:
> + Historical maximum temperature
> +
> + Unit: millidegree Celsius
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/tempY_reset_history
> +Description:
> + Reset temp_lowest and temp_highest
> +
> + WO
> +
> +What: /sys/class/hwmon/hwmonX/temp_reset_history
> +Description:
> + Reset temp_lowest and temp_highest for all sensors
> +
> + WO
> +
> +What: /sys/class/hwmon/hwmonX/tempY_enable
> +Description:
> + Enable or disable the sensors.
> +
> + When disabled the sensor read will return -ENODATA.
> +
> + - 1: Enable
> + - 0: Disable
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/tempY_rated_min
> +Description:
> + Minimum rated temperature.
> +
> + Unit: millidegree Celsius
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/tempY_rated_max
> +Description:
> + Maximum rated temperature.
> +
> + Unit: millidegree Celsius
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/currY_max
> +Description:
> + Current max value
> +
> + Unit: milliampere
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/currY_min
> +Description:
> + Current min value.
> +
> + Unit: milliampere
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/currY_lcrit
> +Description:
> + Current critical low value
> +
> + Unit: milliampere
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/currY_crit
> +Description:
> + Current critical high value.
> +
> + Unit: milliampere
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/currY_input
> +Description:
> + Current input value
> +
> + Unit: milliampere
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/currY_average
> +Description:
> + Average current use
> +
> + Unit: milliampere
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/currY_lowest
> +Description:
> + Historical minimum current
> +
> + Unit: milliampere
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/currY_highest
> +Description:
> + Historical maximum current
> + Unit: milliampere
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/currY_reset_history
> +Description:
> + Reset currX_lowest and currX_highest
> +
> + WO
> +
> +What: /sys/class/hwmon/hwmonX/curr_reset_history
> +Description:
> + Reset currX_lowest and currX_highest for all sensors
> +
> + WO
> +
> +What: /sys/class/hwmon/hwmonX/currY_enable
> +Description:
> + Enable or disable the sensors.
> +
> + When disabled the sensor read will return -ENODATA.
> +
> + - 1: Enable
> + - 0: Disable
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/currY_rated_min
> +Description:
> + Minimum rated current.
> +
> + Unit: milliampere
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/currY_rated_max
> +Description:
> + Maximum rated current.
> +
> + Unit: milliampere
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average
> +Description:
> + Average power use
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average_interval
> +Description:
> + Power use averaging interval. A poll
> + notification is sent to this file if the
> + hardware changes the averaging interval.
> +
> + Unit: milliseconds
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average_interval_max
> +Description:
> + Maximum power use averaging interval
> +
> + Unit: milliseconds
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average_interval_min
> +Description:
> + Minimum power use averaging interval
> +
> + Unit: milliseconds
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average_highest
> +Description:
> + Historical average maximum power use
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average_lowest
> +Description:
> + Historical average minimum power use
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average_max
> +Description:
> + A poll notification is sent to
> + `powerY_average` when power use
> + rises above this value.
> +
> + Unit: microWatt
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_average_min
> +Description:
> + A poll notification is sent to
> + `powerY_average` when power use
> + sinks below this value.
> +
> + Unit: microWatt
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_input
> +Description:
> + Instantaneous power use
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_input_highest
> +Description:
> + Historical maximum power use
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_input_lowest
> +Description:
> + Historical minimum power use
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_reset_history
> +Description:
> + Reset input_highest, input_lowest,
> + average_highest and average_lowest.
> +
> + WO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_accuracy
> +Description:
> + Accuracy of the power meter.
> +
> + Unit: Percent
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_cap
> +Description:
> + If power use rises above this limit, the
> + system should take action to reduce power use.
> + A poll notification is sent to this file if the
> + cap is changed by the hardware. The `*_cap`
> + files only appear if the cap is known to be
> + enforced by hardware.
> +
> + Unit: microWatt
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_cap_hyst
> +Description:
> + Margin of hysteresis built around capping and
> + notification.
> +
> + Unit: microWatt
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_cap_max
> +Description:
> + Maximum cap that can be set.
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_cap_min
> +Description:
> + Minimum cap that can be set.
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_max
> +Description:
> + Maximum power.
> +
> + Unit: microWatt
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_crit
> +Description:
> + Critical maximum power.
> +
> + If power rises to or above this limit, the
> + system is expected take drastic action to reduce
> + power consumption, such as a system shutdown or
> + a forced powerdown of some devices.
> +
> + Unit: microWatt
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_enable
> +Description:
> + Enable or disable the sensors.
> +
> + When disabled the sensor read will return
> + -ENODATA.
> +
> + - 1: Enable
> + - 0: Disable
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/powerY_rated_min
> +Description:
> + Minimum rated power.
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/powerY_rated_max
> +Description:
> + Maximum rated power.
> +
> + Unit: microWatt
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/energyY_input
> +Description:
> + Cumulative energy use
> +
> + Unit: microJoule
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/energyY_enable
> +Description:
> + Enable or disable the sensors.
> +
> + When disabled the sensor read will return
> + -ENODATA.
> +
> + - 1: Enable
> + - 0: Disable
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/humidityY_input
> +Description:
> + Humidity
> +
> + Unit: milli-percent (per cent mille, pcm)
> +
> + RO
> +
> +
> +What: /sys/class/hwmon/hwmonX/humidityY_enable
> +Description:
> + Enable or disable the sensors
> +
> + When disabled the sensor read will return
> + -ENODATA.
> +
> + - 1: Enable
> + - 0: Disable
> +
> + RW
> +
> +What: /sys/class/hwmon/hwmonX/humidityY_rated_min
> +Description:
> + Minimum rated humidity.
> +
> + Unit: milli-percent (per cent mille, pcm)
> +
> + RO
> +
> +What: /sys/class/hwmon/hwmonX/humidityY_rated_max
> +Description:
> + Maximum rated humidity.
> +
> + Unit: milli-percent (per cent mille, pcm)
> +
> + RO
> +
> +
> +What: /sys/class/hwmon/hwmonX/intrusionY_alarm
> +Description:
> + Chassis intrusion detection
> +
> + - 0: OK
> + - 1: intrusion detected
> +
> + RW
> +
> + Contrary to regular alarm flags which clear themselves
> + automatically when read, this one sticks until cleared by
> + the user. This is done by writing 0 to the file. Writing
> + other values is unsupported.
> +
> +What: /sys/class/hwmon/hwmonX/intrusionY_beep
> +Description:
> + Chassis intrusion beep
> +
> + - 0: disable
> + - 1: enable
> +
> + RW
> diff --git a/Documentation/hwmon/sysfs-interface.rst b/Documentation/hwmon/sysfs-interface.rst
> index 13c5acb72d63..85652a6aaa3e 100644
> --- a/Documentation/hwmon/sysfs-interface.rst
> +++ b/Documentation/hwmon/sysfs-interface.rst
> @@ -89,6 +89,8 @@ hardware implementation.
> All entries (except name) are optional, and should only be created in a
> given driver if the chip has the feature.
>
> +See Documentation/ABI/testing/sysfs-class-hwmon for a complete description
> +of the attributes.
>
> *****************
> Global attributes
> @@ -96,22 +98,9 @@ Global attributes
>
> `name`
> The chip name.
> - This should be a short, lowercase string, not containing
> - whitespace, dashes, or the wildcard character '*'.
> - This attribute represents the chip name. It is the only
> - mandatory attribute.
> - I2C devices get this attribute created automatically.
> -
> - RO
>
> `update_interval`
> The interval at which the chip will update readings.
> - Unit: millisecond
> -
> - RW
> -
> - Some devices have a variable update rate or interval.
> - This attribute can be used to change it to the desired value.
>
>
> ********
> @@ -121,148 +110,51 @@ Voltages
> `in[0-*]_min`
> Voltage min value.
>
> - Unit: millivolt
> -
> - RW
> -
> `in[0-*]_lcrit`
> Voltage critical min value.
>
> - Unit: millivolt
> -
> - RW
> -
> - If voltage drops to or below this limit, the system may
> - take drastic action such as power down or reset. At the very
> - least, it should report a fault.
> -
> `in[0-*]_max`
> Voltage max value.
>
> - Unit: millivolt
> -
> - RW
> -
> `in[0-*]_crit`
> Voltage critical max value.
>
> - Unit: millivolt
> -
> - RW
> -
> - If voltage reaches or exceeds this limit, the system may
> - take drastic action such as power down or reset. At the very
> - least, it should report a fault.
> -
> `in[0-*]_input`
> Voltage input value.
>
> - Unit: millivolt
> -
> - RO
> -
> - Voltage measured on the chip pin.
> -
> - Actual voltage depends on the scaling resistors on the
> - motherboard, as recommended in the chip datasheet.
> -
> - This varies by chip and by motherboard.
> - Because of this variation, values are generally NOT scaled
> - by the chip driver, and must be done by the application.
> - However, some drivers (notably lm87 and via686a)
> - do scale, because of internal resistors built into a chip.
> - These drivers will output the actual voltage. Rule of
> - thumb: drivers should report the voltage values at the
> - "pins" of the chip.
> -
> `in[0-*]_average`
> Average voltage
>
> - Unit: millivolt
> -
> - RO
> -
> `in[0-*]_lowest`
> Historical minimum voltage
>
> - Unit: millivolt
> -
> - RO
> -
> `in[0-*]_highest`
> Historical maximum voltage
>
> - Unit: millivolt
> -
> - RO
> -
> `in[0-*]_reset_history`
> Reset inX_lowest and inX_highest
>
> - WO
> -
> `in_reset_history`
> Reset inX_lowest and inX_highest for all sensors
>
> - WO
> -
> `in[0-*]_label`
> Suggested voltage channel label.
>
> - Text string
> -
> - Should only be created if the driver has hints about what
> - this voltage channel is being used for, and user-space
> - doesn't. In all other cases, the label is provided by
> - user-space.
> -
> - RO
> -
> `in[0-*]_enable`
> Enable or disable the sensors.
>
> - When disabled the sensor read will return -ENODATA.
> -
> - - 1: Enable
> - - 0: Disable
> -
> - RW
> -
> `cpu[0-*]_vid`
> CPU core reference voltage.
>
> - Unit: millivolt
> -
> - RO
> -
> - Not always correct.
> -
> `vrm`
> Voltage Regulator Module version number.
>
> - RW (but changing it should no more be necessary)
> -
> - Originally the VRM standard version multiplied by 10, but now
> - an arbitrary number, as not all standards have a version
> - number.
> -
> - Affects the way the driver calculates the CPU core reference
> - voltage from the vid pins.
> -
> `in[0-*]_rated_min`
> Minimum rated voltage.
>
> - Unit: millivolt
> -
> - RO
> -
> `in[0-*]_rated_max`
> Maximum rated voltage.
>
> - Unit: millivolt
> -
> - RO
> -
> Also see the Alarms section for status flags associated with voltages.
>
>
> @@ -273,83 +165,27 @@ Fans
> `fan[1-*]_min`
> Fan minimum value
>
> - Unit: revolution/min (RPM)
> -
> - RW
> -
> `fan[1-*]_max`
> Fan maximum value
>
> - Unit: revolution/min (RPM)
> -
> - Only rarely supported by the hardware.
> - RW
> -
> `fan[1-*]_input`
> Fan input value.
>
> - Unit: revolution/min (RPM)
> -
> - RO
> -
> `fan[1-*]_div`
> Fan divisor.
>
> - Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
> -
> - RW
> -
> - Some chips only support values 1, 2, 4 and 8.
> - Note that this is actually an internal clock divisor, which
> - affects the measurable speed range, not the read value.
> -
> `fan[1-*]_pulses`
> Number of tachometer pulses per fan revolution.
>
> - Integer value, typically between 1 and 4.
> -
> - RW
> -
> - This value is a characteristic of the fan connected to the
> - device's input, so it has to be set in accordance with the fan
> - model.
> -
> - Should only be created if the chip has a register to configure
> - the number of pulses. In the absence of such a register (and
> - thus attribute) the value assumed by all devices is 2 pulses
> - per fan revolution.
> -
> `fan[1-*]_target`
> Desired fan speed
>
> - Unit: revolution/min (RPM)
> -
> - RW
> -
> - Only makes sense if the chip supports closed-loop fan speed
> - control based on the measured fan speed.
> -
> `fan[1-*]_label`
> Suggested fan channel label.
>
> - Text string
> -
> - Should only be created if the driver has hints about what
> - this fan channel is being used for, and user-space doesn't.
> - In all other cases, the label is provided by user-space.
> -
> - RO
> -
> `fan[1-*]_enable`
> Enable or disable the sensors.
>
> - When disabled the sensor read will return -ENODATA.
> -
> - - 1: Enable
> - - 0: Disable
> -
> - RW
> -
> Also see the Alarms section for status flags associated with fans.
>
>
> @@ -360,63 +196,25 @@ PWM
> `pwm[1-*]`
> Pulse width modulation fan control.
>
> - Integer value in the range 0 to 255
> -
> - RW
> -
> - 255 is max or 100%.
> -
> `pwm[1-*]_enable`
> Fan speed control method:
>
> - - 0: no fan speed control (i.e. fan at full speed)
> - - 1: manual fan speed control enabled (using `pwm[1-*]`)
> - - 2+: automatic fan speed control enabled
> -
> - Check individual chip documentation files for automatic mode
> - details.
> -
> - RW
> -
> `pwm[1-*]_mode`
> - - 0: DC mode (direct current)
> - - 1: PWM mode (pulse-width modulation)
> -
> - RW
> + direct current or pulse-width modulation.
>
> `pwm[1-*]_freq`
> Base PWM frequency in Hz.
>
> - Only possibly available when pwmN_mode is PWM, but not always
> - present even then.
> -
> - RW
> -
> `pwm[1-*]_auto_channels_temp`
> Select which temperature channels affect this PWM output in
> auto mode.
>
> - Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
> - Which values are possible depend on the chip used.
> -
> - RW
> -
> `pwm[1-*]_auto_point[1-*]_pwm` / `pwm[1-*]_auto_point[1-*]_temp` / `pwm[1-*]_auto_point[1-*]_temp_hyst`
> Define the PWM vs temperature curve.
>
> - Number of trip points is chip-dependent. Use this for chips
> - which associate trip points to PWM output channels.
> -
> - RW
> -
> `temp[1-*]_auto_point[1-*]_pwm` / `temp[1-*]_auto_point[1-*]_temp` / `temp[1-*]_auto_point[1-*]_temp_hyst`
> Define the PWM vs temperature curve.
>
> - Number of trip points is chip-dependent. Use this for chips
> - which associate trip points to temperature channels.
> -
> - RW
> -
> There is a third case where trip points are associated to both PWM output
> channels and temperature channels: the PWM values are associated to PWM
> output channels while the temperature values are associated to temperature
> @@ -434,182 +232,70 @@ Temperatures
> `temp[1-*]_type`
> Sensor type selection.
>
> - Integers 1 to 6
> -
> - RW
> -
> - - 1: CPU embedded diode
> - - 2: 3904 transistor
> - - 3: thermal diode
> - - 4: thermistor
> - - 5: AMD AMDSI
> - - 6: Intel PECI
> -
> - Not all types are supported by all chips
> -
> `temp[1-*]_max`
> Temperature max value.
>
> - Unit: millidegree Celsius (or millivolt, see below)
> -
> - RW
> -
> `temp[1-*]_min`
> Temperature min value.
>
> - Unit: millidegree Celsius
> -
> - RW
> -
> `temp[1-*]_max_hyst`
> Temperature hysteresis value for max limit.
>
> - Unit: millidegree Celsius
> -
> - Must be reported as an absolute temperature, NOT a delta
> - from the max value.
> -
> - RW
> -
> `temp[1-*]_min_hyst`
> Temperature hysteresis value for min limit.
> - Unit: millidegree Celsius
> -
> - Must be reported as an absolute temperature, NOT a delta
> - from the min value.
> -
> - RW
>
> `temp[1-*]_input`
> - Temperature input value.
> -
> - Unit: millidegree Celsius
> -
> - RO
> + Temperature input value.
>
> `temp[1-*]_crit`
> Temperature critical max value, typically greater than
> corresponding temp_max values.
>
> - Unit: millidegree Celsius
> -
> - RW
> -
> `temp[1-*]_crit_hyst`
> Temperature hysteresis value for critical limit.
>
> - Unit: millidegree Celsius
> -
> - Must be reported as an absolute temperature, NOT a delta
> - from the critical value.
> -
> - RW
> -
> `temp[1-*]_emergency`
> Temperature emergency max value, for chips supporting more than
> - two upper temperature limits. Must be equal or greater than
> - corresponding temp_crit values.
> -
> - Unit: millidegree Celsius
> -
> - RW
> + two upper temperature limits.
>
> `temp[1-*]_emergency_hyst`
> Temperature hysteresis value for emergency limit.
>
> - Unit: millidegree Celsius
> -
> - Must be reported as an absolute temperature, NOT a delta
> - from the emergency value.
> -
> - RW
> -
> `temp[1-*]_lcrit`
> Temperature critical min value, typically lower than
> corresponding temp_min values.
>
> - Unit: millidegree Celsius
> -
> - RW
> -
> `temp[1-*]_lcrit_hyst`
> Temperature hysteresis value for critical min limit.
>
> - Unit: millidegree Celsius
> -
> - Must be reported as an absolute temperature, NOT a delta
> - from the critical min value.
> -
> - RW
> -
> `temp[1-*]_offset`
> Temperature offset which is added to the temperature reading
> by the chip.
>
> - Unit: millidegree Celsius
> -
> - Read/Write value.
> -
> `temp[1-*]_label`
> Suggested temperature channel label.
>
> - Text string
> -
> - Should only be created if the driver has hints about what
> - this temperature channel is being used for, and user-space
> - doesn't. In all other cases, the label is provided by
> - user-space.
> -
> - RO
> -
> `temp[1-*]_lowest`
> Historical minimum temperature
>
> - Unit: millidegree Celsius
> -
> - RO
> -
> `temp[1-*]_highest`
> Historical maximum temperature
>
> - Unit: millidegree Celsius
> -
> - RO
> -
> `temp[1-*]_reset_history`
> Reset temp_lowest and temp_highest
>
> - WO
> -
> `temp_reset_history`
> Reset temp_lowest and temp_highest for all sensors
>
> - WO
> -
> `temp[1-*]_enable`
> Enable or disable the sensors.
>
> - When disabled the sensor read will return -ENODATA.
> -
> - - 1: Enable
> - - 0: Disable
> -
> - RW
> -
> `temp[1-*]_rated_min`
> Minimum rated temperature.
>
> - Unit: millidegree Celsius
> -
> - RO
> -
> `temp[1-*]_rated_max`
> Maximum rated temperature.
>
> - Unit: millidegree Celsius
> -
> - RO
> -
> Some chips measure temperature using external thermistors and an ADC, and
> report the temperature measurement as a voltage. Converting this voltage
> back to a temperature (or the other way around for limits) requires
> @@ -627,58 +313,28 @@ Currents
> ********
>
> `curr[1-*]_max`
> - Current max value
> -
> - Unit: milliampere
> -
> - RW
> + Current max value.
>
> `curr[1-*]_min`
> Current min value.
>
> - Unit: milliampere
> -
> - RW
> -
> `curr[1-*]_lcrit`
> Current critical low value
>
> - Unit: milliampere
> -
> - RW
> -
> `curr[1-*]_crit`
> Current critical high value.
>
> - Unit: milliampere
> -
> - RW
> -
> `curr[1-*]_input`
> - Current input value
> -
> - Unit: milliampere
> -
> - RO
> + Current input value.
>
> `curr[1-*]_average`
> - Average current use
> -
> - Unit: milliampere
> -
> - RO
> + Average current use.
>
> `curr[1-*]_lowest`
> - Historical minimum current
> -
> - Unit: milliampere
> -
> - RO
> + Historical minimum current.
>
> `curr[1-*]_highest`
> - Historical maximum current
> - Unit: milliampere
> - RO
> + Historical maximum current.
>
> `curr[1-*]_reset_history`
> Reset currX_lowest and currX_highest
> @@ -686,34 +342,17 @@ Currents
> WO
>
> `curr_reset_history`
> - Reset currX_lowest and currX_highest for all sensors
> -
> - WO
> + Reset currX_lowest and currX_highest for all sensors.
>
> `curr[1-*]_enable`
> Enable or disable the sensors.
>
> - When disabled the sensor read will return -ENODATA.
> -
> - - 1: Enable
> - - 0: Disable
> -
> - RW
> -
> `curr[1-*]_rated_min`
> Minimum rated current.
>
> - Unit: milliampere
> -
> - RO
> -
> `curr[1-*]_rated_max`
> Maximum rated current.
>
> - Unit: milliampere
> -
> - RO
> -
> Also see the Alarms section for status flags associated with currents.
>
> *****
> @@ -721,141 +360,62 @@ Power
> *****
>
> `power[1-*]_average`
> - Average power use
> -
> - Unit: microWatt
> -
> - RO
> + Average power use.
>
> `power[1-*]_average_interval`
> - Power use averaging interval. A poll
> - notification is sent to this file if the
> - hardware changes the averaging interval.
> -
> - Unit: milliseconds
> -
> - RW
> + Power use averaging interval.
>
> `power[1-*]_average_interval_max`
> - Maximum power use averaging interval
> -
> - Unit: milliseconds
> -
> - RO
> + Maximum power use averaging interval.
>
> `power[1-*]_average_interval_min`
> - Minimum power use averaging interval
> -
> - Unit: milliseconds
> -
> - RO
> + Minimum power use averaging interval.
>
> `power[1-*]_average_highest`
> - Historical average maximum power use
> -
> - Unit: microWatt
> -
> - RO
> + Historical average maximum power use
>
> `power[1-*]_average_lowest`
> - Historical average minimum power use
> -
> - Unit: microWatt
> -
> - RO
> + Historical average minimum power use
>
> `power[1-*]_average_max`
> - A poll notification is sent to
> - `power[1-*]_average` when power use
> - rises above this value.
> -
> - Unit: microWatt
> -
> - RW
> + A poll notification is sent to `power[1-*]_average` when
> + power use rises above this value.
>
> `power[1-*]_average_min`
> - A poll notification is sent to
> - `power[1-*]_average` when power use
> - sinks below this value.
> -
> - Unit: microWatt
> -
> - RW
> + A poll notification is sent to `power[1-*]_average` when
> + power use sinks below this value.
>
> `power[1-*]_input`
> - Instantaneous power use
> -
> - Unit: microWatt
> -
> - RO
> + Instantaneous power use.
>
> `power[1-*]_input_highest`
> - Historical maximum power use
> -
> - Unit: microWatt
> -
> - RO
> + Historical maximum power use
>
> `power[1-*]_input_lowest`
> - Historical minimum power use
> -
> - Unit: microWatt
> -
> - RO
> + Historical minimum power use.
>
> `power[1-*]_reset_history`
> - Reset input_highest, input_lowest,
> - average_highest and average_lowest.
> -
> - WO
> + Reset input_highest, input_lowest, average_highest and
> + average_lowest.
>
> `power[1-*]_accuracy`
> - Accuracy of the power meter.
> -
> - Unit: Percent
> -
> - RO
> + Accuracy of the power meter.
>
> `power[1-*]_cap`
> - If power use rises above this limit, the
> - system should take action to reduce power use.
> - A poll notification is sent to this file if the
> - cap is changed by the hardware. The `*_cap`
> - files only appear if the cap is known to be
> - enforced by hardware.
> -
> - Unit: microWatt
> -
> - RW
> + If power use rises above this limit, the
> + system should take action to reduce power use.
>
> `power[1-*]_cap_hyst`
> - Margin of hysteresis built around capping and
> - notification.
> -
> - Unit: microWatt
> -
> - RW
> + Margin of hysteresis built around capping and notification.
>
> `power[1-*]_cap_max`
> - Maximum cap that can be set.
> -
> - Unit: microWatt
> -
> - RO
> + Maximum cap that can be set.
>
> `power[1-*]_cap_min`
> - Minimum cap that can be set.
> -
> - Unit: microWatt
> -
> - RO
> + Minimum cap that can be set.
>
> `power[1-*]_max`
> - Maximum power.
> -
> - Unit: microWatt
> -
> - RW
> + Maximum power.
>
> `power[1-*]_crit`
> Critical maximum power.
> @@ -923,37 +483,16 @@ Humidity
> ********
>
> `humidity[1-*]_input`
> - Humidity
> -
> - Unit: milli-percent (per cent mille, pcm)
> -
> - RO
> -
> + Humidity.
>
> `humidity[1-*]_enable`
> - Enable or disable the sensors
> -
> - When disabled the sensor read will return
> - -ENODATA.
> -
> - - 1: Enable
> - - 0: Disable
> -
> - RW
> + Enable or disable the sensors.
>
> `humidity[1-*]_rated_min`
> - Minimum rated humidity.
> -
> - Unit: milli-percent (per cent mille, pcm)
> -
> - RO
> + Minimum rated humidity.
>
> `humidity[1-*]_rated_max`
> - Maximum rated humidity.
> -
> - Unit: milli-percent (per cent mille, pcm)
> -
> - RO
> + Maximum rated humidity.
>
> ******
> Alarms
> @@ -1004,30 +543,15 @@ supports it. When this boolean has value 1, the measurement for that
> channel should not be trusted.
>
> `fan[1-*]_fault` / `temp[1-*]_fault`
> - Input fault condition
> -
> - - 0: no fault occurred
> - - 1: fault condition
> -
> - RO
> + Input fault condition.
>
> Some chips also offer the possibility to get beeped when an alarm occurs:
>
> `beep_enable`
> - Master beep enable
> -
> - - 0: no beeps
> - - 1: beeps
> -
> - RW
> + Master beep enable.
>
> `in[0-*]_beep`, `curr[1-*]_beep`, `fan[1-*]_beep`, `temp[1-*]_beep`,
> - Channel beep
> -
> - - 0: disable
> - - 1: enable
> -
> - RW
> + Channel beep.
>
> In theory, a chip could provide per-limit beep masking, but no such chip
> was seen so far.
> @@ -1039,29 +563,8 @@ for compatibility reasons:
> `alarms`
> Alarm bitmask.
>
> - RO
> -
> - Integer representation of one to four bytes.
> -
> - A '1' bit means an alarm.
> -
> - Chips should be programmed for 'comparator' mode so that
> - the alarm will 'come back' after you read the register
> - if it is still valid.
> -
> - Generally a direct representation of a chip's internal
> - alarm registers; there is no standard for the position
> - of individual bits. For this reason, the use of this
> - interface file for new drivers is discouraged. Use
> - `individual *_alarm` and `*_fault` files instead.
> - Bits are defined in kernel/include/sensors.h.
> -
> `beep_mask`
> Bitmask for beep.
> - Same format as 'alarms' with the same bit locations,
> - use discouraged for the same reason. Use individual
> - `*_beep` files instead.
> - RW
>
>
> *******************
> @@ -1069,25 +572,10 @@ Intrusion detection
> *******************
>
> `intrusion[0-*]_alarm`
> - Chassis intrusion detection
> -
> - - 0: OK
> - - 1: intrusion detected
> -
> - RW
> -
> - Contrary to regular alarm flags which clear themselves
> - automatically when read, this one sticks until cleared by
> - the user. This is done by writing 0 to the file. Writing
> - other values is unsupported.
> + Chassis intrusion detection.
>
> `intrusion[0-*]_beep`
> - Chassis intrusion beep
> -
> - 0: disable
> - 1: enable
> -
> - RW
> + Chassis intrusion beep.
>
> ****************************
> Average sample configuration
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 179eadaebe76..e9fd362ef4d6 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -8274,6 +8274,7 @@ L: [email protected]
> S: Maintained
> W: http://hwmon.wiki.kernel.org/
> T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
> +F: Documentation/ABI/testing/sysfs-class-hwmon
> F: Documentation/devicetree/bindings/hwmon/
> F: Documentation/hwmon/
> F: drivers/hwmon/
>

2021-10-08 14:57:09

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm

On 9/30/21 2:44 AM, Mauro Carvalho Chehab wrote:
> Such ABI symbol is currently not described. Document it.
>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> ---
>
> See [PATCH v2 0/7] at: https://lore.kernel.org/all/[email protected]/
>
> Documentation/ABI/testing/sysfs-class-hwmon | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-class-hwmon b/Documentation/ABI/testing/sysfs-class-hwmon
> index ea5a129ae082..1f20687def44 100644
> --- a/Documentation/ABI/testing/sysfs-class-hwmon
> +++ b/Documentation/ABI/testing/sysfs-class-hwmon
> @@ -410,6 +410,20 @@ Description:
>
> RW
>
> +What: /sys/class/hwmon/hwmonX/tempY_crit_alarm
> +Description:
> + Critical high temperature alarm flag.
> +
> + - 0: OK
> + - 1: temperature has reached tempY_crit
> +
> + RW
> +
> + Contrary to regular alarm flags which clear themselves
> + automatically when read, this one sticks until cleared by
> + the user. This is done by writing 0 to the file. Writing
> + other values is unsupported.
> +

That is not really correct. It _may_ be current implementation for some drivers,
but such an implementation would not be correct. The proper implementation would
be to auto-clear the flag after it was read unless the condition persists.

> What: /sys/class/hwmon/hwmonX/tempY_crit_hyst
> Description:
> Temperature hysteresis value for critical limit.
>

This should be documented as part of the previous patch, together with
all other alarm attributes.

Guenter