All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files
@ 2021-09-30  9:44 Mauro Carvalho Chehab
  2021-09-30  9:44 ` [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI Mauro Carvalho Chehab
                   ` (6 more replies)
  0 siblings, 7 replies; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, linux-kernel, Jonathan Corbet,
	H. Peter Anvin, Amit Kucheria, Anatoly Pugachev, Borislav Petkov,
	Carlos Bilbao, Catalin Marinas, Daniel Lezcano, Guenter Roeck,
	Ingo Molnar, Ionela Voinescu, Jean Delvare, Oded Gabbay,
	Peter Collingbourne, Thomas Gleixner, Tom Rix, Tony Luck,
	Will Deacon, Zhang Rui, linux-edac, linux-hwmon, linux-pm, x86

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



^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI
  2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
@ 2021-09-30  9:44 ` Mauro Carvalho Chehab
  2021-10-01 16:57   ` Rafael J. Wysocki
  2021-09-30  9:44 ` [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it Mauro Carvalho Chehab
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, Jonathan Corbet, Amit Kucheria,
	Daniel Lezcano, Zhang Rui, linux-kernel, linux-pm

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 <mchehab+huawei@kernel.org>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/

 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:	linux-pm@vger.kernel.org
 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


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it
  2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
  2021-09-30  9:44 ` [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI Mauro Carvalho Chehab
@ 2021-09-30  9:44 ` Mauro Carvalho Chehab
  2021-10-08 14:53   ` Guenter Roeck
  2021-09-30  9:44 ` [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm Mauro Carvalho Chehab
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, Jonathan Corbet, Guenter Roeck,
	Jean Delvare, linux-hwmon, linux-kernel

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 <mchehab+huawei@kernel.org>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/

 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:	linux-hwmon@vger.kernel.org
 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


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm
  2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
  2021-09-30  9:44 ` [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI Mauro Carvalho Chehab
  2021-09-30  9:44 ` [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it Mauro Carvalho Chehab
@ 2021-09-30  9:44 ` Mauro Carvalho Chehab
  2021-10-08 14:53   ` Guenter Roeck
  2021-09-30  9:44 ` [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file Mauro Carvalho Chehab
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, Jonathan Corbet, Guenter Roeck,
	Jean Delvare, linux-hwmon, linux-kernel

Such ABI symbol is currently not described. Document it.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/

 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


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file
  2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
                   ` (2 preceding siblings ...)
  2021-09-30  9:44 ` [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm Mauro Carvalho Chehab
@ 2021-09-30  9:44 ` Mauro Carvalho Chehab
  2021-10-04 23:19   ` Andi Kleen
  2021-09-30  9:44 ` [PATCH v2 5/7] ABI: sysfs-mce: add 3 missing files Mauro Carvalho Chehab
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, H. Peter Anvin, Jonathan Corbet,
	Borislav Petkov, Ingo Molnar, Thomas Gleixner, Tony Luck,
	linux-edac, linux-kernel, x86, Andi Kleen

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 <ak@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/

 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 <ak@linux.intel.com>
+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 <ak@linux.intel.com>
+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 <ak@linux.intel.com>
+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 <ak@linux.intel.com>
+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 <ak@linux.intel.com>
+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 <ak@linux.intel.com>
+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 <tony.luck@intel.com>
 M:	Borislav Petkov <bp@alien8.de>
 L:	linux-edac@vger.kernel.org
 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


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 5/7] ABI: sysfs-mce: add 3 missing files
  2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
                   ` (3 preceding siblings ...)
  2021-09-30  9:44 ` [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file Mauro Carvalho Chehab
@ 2021-09-30  9:44 ` Mauro Carvalho Chehab
  2021-09-30  9:44 ` [PATCH v2 6/7] ABI: sysfs-class-extcon: use uppercase X for wildcards Mauro Carvalho Chehab
  2021-09-30  9:44 ` [PATCH v2 7/7] ABI: sysfs-devices-system-cpu: use cpuX instead of cpu# Mauro Carvalho Chehab
  6 siblings, 0 replies; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, Jonathan Corbet, Borislav Petkov,
	Tony Luck, linux-edac, linux-kernel

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 <mchehab+huawei@kernel.org>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/

 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 <seto.hidetoshi@jp.fujitsu.com>
+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 <seto.hidetoshi@jp.fujitsu.com>
+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 <seto.hidetoshi@jp.fujitsu.com>
+Date:		Jun 2009
+Description:
+		Disables the CMCI feature.
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 6/7] ABI: sysfs-class-extcon: use uppercase X for wildcards
  2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
                   ` (4 preceding siblings ...)
  2021-09-30  9:44 ` [PATCH v2 5/7] ABI: sysfs-mce: add 3 missing files Mauro Carvalho Chehab
@ 2021-09-30  9:44 ` Mauro Carvalho Chehab
  2021-09-30  9:44 ` [PATCH v2 7/7] ABI: sysfs-devices-system-cpu: use cpuX instead of cpu# Mauro Carvalho Chehab
  6 siblings, 0 replies; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, Jonathan Corbet, Oded Gabbay, Tom Rix,
	linux-kernel

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 <mchehab+huawei@kernel.org>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/

 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 <myungjoo.ham@samsung.com>
 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 <myungjoo.ham@samsung.com>
 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


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 7/7] ABI: sysfs-devices-system-cpu: use cpuX instead of cpu#
  2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
                   ` (5 preceding siblings ...)
  2021-09-30  9:44 ` [PATCH v2 6/7] ABI: sysfs-class-extcon: use uppercase X for wildcards Mauro Carvalho Chehab
@ 2021-09-30  9:44 ` Mauro Carvalho Chehab
  6 siblings, 0 replies; 12+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-30  9:44 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Mauro Carvalho Chehab, Jonathan Corbet, Anatoly Pugachev,
	Carlos Bilbao, Catalin Marinas, Ionela Voinescu,
	Peter Collingbourne, Will Deacon, linux-kernel

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 <mchehab+huawei@kernel.org>
---

See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/

 .../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 <linux-mm@kvack.org>
 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 <linux-kernel@vger.kernel.org>
 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:	linux-pm@vger.kernel.org
 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:	linux-pm@vger.kernel.org
 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:	kexec@lists.infradead.org
 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 <linux-kernel@vger.kernel.org>
 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:	linux-pm@vger.kernel.org
 Description:	Intel Energy and Performance Bias Hint (EPB)
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI
  2021-09-30  9:44 ` [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI Mauro Carvalho Chehab
@ 2021-10-01 16:57   ` Rafael J. Wysocki
  0 siblings, 0 replies; 12+ messages in thread
From: Rafael J. Wysocki @ 2021-10-01 16:57 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: Linux Doc Mailing List, Greg Kroah-Hartman, Jonathan Corbet,
	Amit Kucheria, Daniel Lezcano, Zhang Rui,
	Linux Kernel Mailing List, Linux PM

On Thu, Sep 30, 2021 at 11:45 AM Mauro Carvalho Chehab
<mchehab+huawei@kernel.org> 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 <mchehab+huawei@kernel.org>
> ---
>
> See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/
>
>  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:      linux-pm@vger.kernel.org
>  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
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file
  2021-09-30  9:44 ` [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file Mauro Carvalho Chehab
@ 2021-10-04 23:19   ` Andi Kleen
  0 siblings, 0 replies; 12+ messages in thread
From: Andi Kleen @ 2021-10-04 23:19 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: H. Peter Anvin, Jonathan Corbet, Borislav Petkov, Ingo Molnar,
	Thomas Gleixner, Tony Luck, linux-edac, linux-kernel, x86


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 <ak@linux.intel.com>
> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

Reviewed-by: Andi Kleen <ak@linux.intel.com>



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm
  2021-09-30  9:44 ` [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm Mauro Carvalho Chehab
@ 2021-10-08 14:53   ` Guenter Roeck
  0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2021-10-08 14:53 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Jonathan Corbet, Jean Delvare, linux-hwmon, linux-kernel

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 <mchehab+huawei@kernel.org>
> ---
> 
> See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/
> 
>   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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it
  2021-09-30  9:44 ` [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it Mauro Carvalho Chehab
@ 2021-10-08 14:53   ` Guenter Roeck
  0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2021-10-08 14:53 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Linux Doc Mailing List, Greg Kroah-Hartman
  Cc: Jonathan Corbet, Jean Delvare, linux-hwmon, linux-kernel

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 <mchehab+huawei@kernel.org>
> ---
> 
> See [PATCH v2 0/7] at: https://lore.kernel.org/all/cover.1632994837.git.mchehab+huawei@kernel.org/
> 
>   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:	linux-hwmon@vger.kernel.org
>   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/
> 


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-10-08 14:53 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-30  9:44 [PATCH v2 0/7] ABI: add additional sysfs docs and update some other ABI files Mauro Carvalho Chehab
2021-09-30  9:44 ` [PATCH v2 1/7] ABI: sysfs-class-thermal: create a file with thermal_zone ABI Mauro Carvalho Chehab
2021-10-01 16:57   ` Rafael J. Wysocki
2021-09-30  9:44 ` [PATCH v2 2/7] ABI: sysfs-class-hwmon: add ABI documentation for it Mauro Carvalho Chehab
2021-10-08 14:53   ` Guenter Roeck
2021-09-30  9:44 ` [PATCH v2 3/7] ABI: sysfs-class-hwmon: add a description for tempY_crit_alarm Mauro Carvalho Chehab
2021-10-08 14:53   ` Guenter Roeck
2021-09-30  9:44 ` [PATCH v2 4/7] ABI: sysfs-mce: add a new ABI file Mauro Carvalho Chehab
2021-10-04 23:19   ` Andi Kleen
2021-09-30  9:44 ` [PATCH v2 5/7] ABI: sysfs-mce: add 3 missing files Mauro Carvalho Chehab
2021-09-30  9:44 ` [PATCH v2 6/7] ABI: sysfs-class-extcon: use uppercase X for wildcards Mauro Carvalho Chehab
2021-09-30  9:44 ` [PATCH v2 7/7] ABI: sysfs-devices-system-cpu: use cpuX instead of cpu# Mauro Carvalho Chehab

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.