Driver core changes for 5.16-rc1
Here is the big set of driver core changes for 5.16-rc1. All of these have been in linux-next for a while now with no reported problems. Included in here are: - big update and cleanup of the sysfs abi documentation files and scripts from Mauro. We are almost at the place where we can properly check that the running kernel's sysfs abi is documented fully. - firmware loader updates - dyndbg updates - kernfs cleanups and fixes from Christoph - device property updates - component fix - other minor driver core cleanups and fixes Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCYYPbjQ8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ync9gCfXKMUI1GAnCfJWAwTdTcd18q5akoAoMw32/AH 0yh5TjAWFyFd7xz5d7qs =itsC -----END PGP SIGNATURE----- Merge tag 'driver-core-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core Pull driver core updates from Greg KH: "Here is the big set of driver core changes for 5.16-rc1. All of these have been in linux-next for a while now with no reported problems. Included in here are: - big update and cleanup of the sysfs abi documentation files and scripts from Mauro. We are almost at the place where we can properly check that the running kernel's sysfs abi is documented fully. - firmware loader updates - dyndbg updates - kernfs cleanups and fixes from Christoph - device property updates - component fix - other minor driver core cleanups and fixes" * tag 'driver-core-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (122 commits) device property: Drop redundant NULL checks x86/build: Tuck away built-in firmware under FW_LOADER vmlinux.lds.h: wrap built-in firmware support under FW_LOADER firmware_loader: move struct builtin_fw to the only place used x86/microcode: Use the firmware_loader built-in API firmware_loader: remove old DECLARE_BUILTIN_FIRMWARE() firmware_loader: formalize built-in firmware API component: do not leave master devres group open after bind dyndbg: refine verbosity 1-4 summary-detail gpiolib: acpi: Replace custom code with device_match_acpi_handle() i2c: acpi: Replace custom function with device_match_acpi_handle() driver core: Provide device_match_acpi_handle() helper dyndbg: fix spurious vNpr_info change dyndbg: no vpr-info on empty queries dyndbg: vpr-info on remove-module complete, not starting device property: Add missed header in fwnode.h Documentation: dyndbg: Improve cli param examples dyndbg: Remove support for ddebug_query param dyndbg: make dyndbg a known cli param dyndbg: show module in vpr-info in dd-exec-queries ...
This commit is contained in:
commit
95faf6ba65
11
Documentation/ABI/obsolete/o2cb
Normal file
11
Documentation/ABI/obsolete/o2cb
Normal file
@ -0,0 +1,11 @@
|
||||
What: /sys/o2cb
|
||||
Date: Dec 2005
|
||||
KernelVersion: 2.6.16
|
||||
Contact: ocfs2-devel@oss.oracle.com
|
||||
Description: Ocfs2-tools looks at 'interface-revision' for versioning
|
||||
information. Each logmask/ file controls a set of debug prints
|
||||
and can be written into with the strings "allow", "deny", or
|
||||
"off". Reading the file returns the current state.
|
||||
Was renamed to /sys/fs/u2cb/
|
||||
Users: ocfs2-tools. It's sufficient to mail proposed changes to
|
||||
ocfs2-devel@oss.oracle.com.
|
@ -6,6 +6,7 @@ Description:
|
||||
|
||||
Since Kernel 5.11, multiple buffers are supported.
|
||||
so, it is better to use, instead:
|
||||
|
||||
/sys/bus/iio/devices/iio:deviceX/bufferY/length
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/enable
|
||||
@ -17,6 +18,7 @@ Description:
|
||||
|
||||
Since Kernel 5.11, multiple buffers are supported.
|
||||
so, it is better to use, instead:
|
||||
|
||||
/sys/bus/iio/devices/iio:deviceX/bufferY/enable
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/scan_elements
|
||||
@ -165,6 +167,7 @@ Description:
|
||||
|
||||
Since Kernel 5.11, multiple buffers are supported.
|
||||
so, it is better to use, instead:
|
||||
|
||||
/sys/bus/iio/devices/iio:deviceX/bufferY/watermark
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/data_available
|
||||
@ -179,4 +182,5 @@ Description:
|
||||
|
||||
Since Kernel 5.11, multiple buffers are supported.
|
||||
so, it is better to use, instead:
|
||||
|
||||
/sys/bus/iio/devices/iio:deviceX/bufferY/data_available
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/fs/o2cb/ (was /sys/o2cb)
|
||||
What: /sys/fs/o2cb/
|
||||
Date: Dec 2005
|
||||
KernelVersion: 2.6.16
|
||||
Contact: ocfs2-devel@oss.oracle.com
|
||||
|
@ -232,10 +232,10 @@ Description: The RoCE type of the associated GID resides at index <gid-index>.
|
||||
or "RoCE v2" for RoCE v2 based GIDs.
|
||||
|
||||
|
||||
What: /sys/class/infiniband_mad/umadN/ibdev
|
||||
What: /sys/class/infiniband_mad/umadN/port
|
||||
What: /sys/class/infiniband_mad/issmN/ibdev
|
||||
What: /sys/class/infiniband_mad/issmN/port
|
||||
What: /sys/class/infiniband_mad/umad<N>/ibdev
|
||||
What: /sys/class/infiniband_mad/umad<N>/port
|
||||
What: /sys/class/infiniband_mad/issm<N>/ibdev
|
||||
What: /sys/class/infiniband_mad/issm<N>/port
|
||||
Date: Apr, 2005
|
||||
KernelVersion: v2.6.12
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -261,8 +261,8 @@ Description:
|
||||
userspace ABI compatibility of umad & issm devices.
|
||||
|
||||
|
||||
What: /sys/class/infiniband_verbs/uverbsN/ibdev
|
||||
What: /sys/class/infiniband_verbs/uverbsN/abi_version
|
||||
What: /sys/class/infiniband_verbs/uverbs<N>/ibdev
|
||||
What: /sys/class/infiniband_verbs/uverbs<N>/abi_version
|
||||
Date: Sept, 2005
|
||||
KernelVersion: v2.6.14
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -471,7 +471,7 @@ Description:
|
||||
=============== ======================================================
|
||||
|
||||
|
||||
What: /sys/class/infiniband/qibX/ports/N/sl2vl/[0-15]
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/sl2vl/[0-15]
|
||||
Date: May, 2010
|
||||
KernelVersion: v2.6.35
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -480,8 +480,8 @@ Description:
|
||||
the Service Level (SL). Listing the SL files returns the Virtual
|
||||
Lane (VL) as programmed by the SL.
|
||||
|
||||
What: /sys/class/infiniband/qibX/ports/N/CCMgtA/cc_settings_bin
|
||||
What: /sys/class/infiniband/qibX/ports/N/CCMgtA/cc_table_bin
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/CCMgtA/cc_settings_bin
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/CCMgtA/cc_table_bin
|
||||
Date: May, 2010
|
||||
KernelVersion: v2.6.35
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -499,11 +499,11 @@ Description:
|
||||
delay.
|
||||
=============== ================================================
|
||||
|
||||
What: /sys/class/infiniband/qibX/ports/N/linkstate/loopback
|
||||
What: /sys/class/infiniband/qibX/ports/N/linkstate/led_override
|
||||
What: /sys/class/infiniband/qibX/ports/N/linkstate/hrtbt_enable
|
||||
What: /sys/class/infiniband/qibX/ports/N/linkstate/status
|
||||
What: /sys/class/infiniband/qibX/ports/N/linkstate/status_str
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/linkstate/loopback
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/linkstate/led_override
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/linkstate/hrtbt_enable
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/linkstate/status
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/linkstate/status_str
|
||||
Date: May, 2010
|
||||
KernelVersion: v2.6.35
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -523,16 +523,16 @@ Description:
|
||||
"Fatal_Hardware_Error".
|
||||
=============== ===============================================
|
||||
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/rc_resends
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/seq_naks
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/rdma_seq
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/rnr_naks
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/other_naks
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/rc_timeouts
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/look_pkts
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/pkt_drops
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/dma_wait
|
||||
What: /sys/class/infiniband/qibX/ports/N/diag_counters/unaligned
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/rc_resends
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/seq_naks
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/rdma_seq
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/rnr_naks
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/other_naks
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/rc_timeouts
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/look_pkts
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/pkt_drops
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/dma_wait
|
||||
What: /sys/class/infiniband/qibX/ports/<N>/diag_counters/unaligned
|
||||
Date: May, 2010
|
||||
KernelVersion: v2.6.35
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -650,9 +650,9 @@ Description:
|
||||
=============== =============================================
|
||||
|
||||
|
||||
What: /sys/class/infiniband/hfi1_X/ports/N/CCMgtA/cc_settings_bin
|
||||
What: /sys/class/infiniband/hfi1_X/ports/N/CCMgtA/cc_table_bin
|
||||
What: /sys/class/infiniband/hfi1_X/ports/N/CCMgtA/cc_prescan
|
||||
What: /sys/class/infiniband/hfi1_X/ports/<N>/CCMgtA/cc_settings_bin
|
||||
What: /sys/class/infiniband/hfi1_X/ports/<N>/CCMgtA/cc_table_bin
|
||||
What: /sys/class/infiniband/hfi1_X/ports/<N>/CCMgtA/cc_prescan
|
||||
Date: May, 2016
|
||||
KernelVersion: v4.6
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -675,9 +675,9 @@ Description:
|
||||
disable.
|
||||
=============== ================================================
|
||||
|
||||
What: /sys/class/infiniband/hfi1_X/ports/N/sc2vl/[0-31]
|
||||
What: /sys/class/infiniband/hfi1_X/ports/N/sl2sc/[0-31]
|
||||
What: /sys/class/infiniband/hfi1_X/ports/N/vl2mtu/[0-15]
|
||||
What: /sys/class/infiniband/hfi1_X/ports/<N>/sc2vl/[0-31]
|
||||
What: /sys/class/infiniband/hfi1_X/ports/<N>/sl2sc/[0-31]
|
||||
What: /sys/class/infiniband/hfi1_X/ports/<N>/vl2mtu/[0-15]
|
||||
Date: May, 2016
|
||||
KernelVersion: v4.6
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
@ -691,8 +691,8 @@ Description:
|
||||
=============== ===================================================
|
||||
|
||||
|
||||
What: /sys/class/infiniband/hfi1_X/sdma_N/cpu_list
|
||||
What: /sys/class/infiniband/hfi1_X/sdma_N/vl
|
||||
What: /sys/class/infiniband/hfi1_X/sdma_<N>/cpu_list
|
||||
What: /sys/class/infiniband/hfi1_X/sdma_<N>/vl
|
||||
Date: Sept, 2016
|
||||
KernelVersion: v4.8
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
|
@ -195,7 +195,7 @@ Description: The "tpm_version_major" property shows the TCG spec major version
|
||||
|
||||
2
|
||||
|
||||
What: /sys/class/tpm/tpmX/pcr-H/N
|
||||
What: /sys/class/tpm/tpmX/pcr-<H>/<N>
|
||||
Date: March 2021
|
||||
KernelVersion: 5.12
|
||||
Contact: linux-integrity@vger.kernel.org
|
||||
|
@ -23,3 +23,10 @@ Contact: Device Tree mailing list <devicetree@vger.kernel.org>
|
||||
Description:
|
||||
If CONFIG_OF is enabled, then this file is present. When
|
||||
read, it returns full name of the device node.
|
||||
|
||||
What: /sys/devices/*/dev
|
||||
Date: Jun 2006
|
||||
Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Description:
|
||||
Major and minor numbers of the character device corresponding
|
||||
to the device (in <major>:<minor> format).
|
||||
|
@ -1,8 +1,7 @@
|
||||
What: /sys/module
|
||||
Description:
|
||||
The /sys/module tree consists of the following structure:
|
||||
The /sys/module tree consists of the following structure:
|
||||
|
||||
/sys/module/MODULENAME
|
||||
What: /sys/module/<MODULENAME>
|
||||
Description:
|
||||
The name of the module that is in the kernel. This
|
||||
module name will always show up if the module is loaded as a
|
||||
dynamic module. If it is built directly into the kernel, it
|
||||
@ -12,7 +11,8 @@ Description:
|
||||
Note: The conditions of creation in the built-in case are not
|
||||
by design and may be removed in the future.
|
||||
|
||||
/sys/module/MODULENAME/parameters
|
||||
What: /sys/module/<MODULENAME>/parameters
|
||||
Description:
|
||||
This directory contains individual files that are each
|
||||
individual parameters of the module that are able to be
|
||||
changed at runtime. See the individual module
|
||||
@ -25,10 +25,23 @@ Description:
|
||||
individual driver documentation for details as to the
|
||||
stability of the different parameters.
|
||||
|
||||
/sys/module/MODULENAME/refcnt
|
||||
What: /sys/module/<MODULENAME>/refcnt
|
||||
Description:
|
||||
If the module is able to be unloaded from the kernel, this file
|
||||
will contain the current reference count of the module.
|
||||
|
||||
Note: If the module is built into the kernel, or if the
|
||||
CONFIG_MODULE_UNLOAD kernel configuration value is not enabled,
|
||||
this file will not be present.
|
||||
|
||||
What: /sys/module/<MODULENAME>/srcversion
|
||||
Date: Jun 2005
|
||||
Description:
|
||||
If the module source has MODULE_VERSION, this file will contain
|
||||
the checksum of the the source code.
|
||||
|
||||
What: /sys/module/<MODULENAME>/version
|
||||
Date: Jun 2005
|
||||
Description:
|
||||
If the module source has MODULE_VERSION, this file will contain
|
||||
the version of the source code.
|
||||
|
@ -4,23 +4,29 @@ KernelVersion: 4.14
|
||||
Description:
|
||||
The attributes:
|
||||
|
||||
========== ===================================
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
c_mute_present capture mute control enable
|
||||
===================== =======================================
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
c_mute_present capture mute control enable
|
||||
c_volume_present capture volume control enable
|
||||
c_volume_min capture volume control min value (in 1/256 dB)
|
||||
c_volume_max capture volume control max value (in 1/256 dB)
|
||||
c_volume_res capture volume control resolution (in 1/256 dB)
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
p_mute_present playback mute control enable
|
||||
c_volume_min capture volume control min value
|
||||
(in 1/256 dB)
|
||||
c_volume_max capture volume control max value
|
||||
(in 1/256 dB)
|
||||
c_volume_res capture volume control resolution
|
||||
(in 1/256 dB)
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
p_mute_present playback mute control enable
|
||||
p_volume_present playback volume control enable
|
||||
p_volume_min playback volume control min value (in 1/256 dB)
|
||||
p_volume_max playback volume control max value (in 1/256 dB)
|
||||
p_volume_res playback volume control resolution (in 1/256 dB)
|
||||
req_number the number of pre-allocated request
|
||||
for both capture and playback
|
||||
========== ===================================
|
||||
p_volume_min playback volume control min value
|
||||
(in 1/256 dB)
|
||||
p_volume_max playback volume control max value
|
||||
(in 1/256 dB)
|
||||
p_volume_res playback volume control resolution
|
||||
(in 1/256 dB)
|
||||
req_number the number of pre-allocated request
|
||||
for both capture and playback
|
||||
===================== =======================================
|
||||
|
@ -4,23 +4,30 @@ KernelVersion: 3.18
|
||||
Description:
|
||||
The attributes:
|
||||
|
||||
========= ============================
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
c_sync capture synchronization type (async/adaptive)
|
||||
c_mute_present capture mute control enable
|
||||
===================== =======================================
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
c_sync capture synchronization type
|
||||
(async/adaptive)
|
||||
c_mute_present capture mute control enable
|
||||
c_volume_present capture volume control enable
|
||||
c_volume_min capture volume control min value (in 1/256 dB)
|
||||
c_volume_max capture volume control max value (in 1/256 dB)
|
||||
c_volume_res capture volume control resolution (in 1/256 dB)
|
||||
fb_max maximum extra bandwidth in async mode
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
p_mute_present playback mute control enable
|
||||
c_volume_min capture volume control min value
|
||||
(in 1/256 dB)
|
||||
c_volume_max capture volume control max value
|
||||
(in 1/256 dB)
|
||||
c_volume_res capture volume control resolution
|
||||
(in 1/256 dB)
|
||||
fb_max maximum extra bandwidth in async mode
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
p_mute_present playback mute control enable
|
||||
p_volume_present playback volume control enable
|
||||
p_volume_min playback volume control min value (in 1/256 dB)
|
||||
p_volume_max playback volume control max value (in 1/256 dB)
|
||||
p_volume_res playback volume control resolution (in 1/256 dB)
|
||||
========= ============================
|
||||
p_volume_min playback volume control min value
|
||||
(in 1/256 dB)
|
||||
p_volume_max playback volume control max value
|
||||
(in 1/256 dB)
|
||||
p_volume_res playback volume control resolution
|
||||
(in 1/256 dB)
|
||||
===================== =======================================
|
||||
|
@ -1,4 +1,5 @@
|
||||
What: security/evm
|
||||
What: /sys/kernel/security/evm
|
||||
What: /sys/kernel/security/*/evm
|
||||
Date: March 2011
|
||||
Contact: Mimi Zohar <zohar@us.ibm.com>
|
||||
Description:
|
||||
@ -93,7 +94,7 @@ Description:
|
||||
core/ima-setup) have support for loading keys at boot
|
||||
time.
|
||||
|
||||
What: security/integrity/evm/evm_xattrs
|
||||
What: /sys/kernel/security/*/evm/evm_xattrs
|
||||
Date: April 2018
|
||||
Contact: Matthew Garrett <mjg59@google.com>
|
||||
Description:
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: security/ima/policy
|
||||
What: /sys/kernel/security/*/ima/policy
|
||||
Date: May 2008
|
||||
Contact: Mimi Zohar <zohar@us.ibm.com>
|
||||
Description:
|
||||
|
@ -1,4 +1,5 @@
|
||||
What: /sys/fs/pstore/... (or /dev/pstore/...)
|
||||
What: /sys/fs/pstore/...
|
||||
What: /dev/pstore/...
|
||||
Date: March 2011
|
||||
KernelVersion: 2.6.39
|
||||
Contact: tony.luck@intel.com
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/class/ata_...
|
||||
What: /sys/class/ata_*
|
||||
Description:
|
||||
Provide a place in sysfs for storing the ATA topology of the
|
||||
system. This allows retrieving various information about ATA
|
||||
|
@ -1,4 +1,5 @@
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/
|
||||
What: /sys/class/mdio_bus/.../statistics/
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -7,6 +8,7 @@ Description:
|
||||
MDIO bus address statistics.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/transfers
|
||||
What: /sys/class/mdio_bus/.../transfers
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -14,6 +16,7 @@ Description:
|
||||
Total number of transfers for this MDIO bus.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/errors
|
||||
What: /sys/class/mdio_bus/.../statistics/errors
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -21,6 +24,7 @@ Description:
|
||||
Total number of transfer errors for this MDIO bus.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/writes
|
||||
What: /sys/class/mdio_bus/.../statistics/writes
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -28,6 +32,7 @@ Description:
|
||||
Total number of write transactions for this MDIO bus.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/reads
|
||||
What: /sys/class/mdio_bus/.../statistics/reads
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -35,6 +40,7 @@ Description:
|
||||
Total number of read transactions for this MDIO bus.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/transfers_<addr>
|
||||
What: /sys/class/mdio_bus/.../statistics/transfers_<addr>
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -42,6 +48,7 @@ Description:
|
||||
Total number of transfers for this MDIO bus address.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/errors_<addr>
|
||||
What: /sys/class/mdio_bus/.../statistics/errors_<addr>
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -49,6 +56,7 @@ Description:
|
||||
Total number of transfer errors for this MDIO bus address.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/writes_<addr>
|
||||
What: /sys/class/mdio_bus/.../statistics/writes_<addr>
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
@ -56,6 +64,7 @@ Description:
|
||||
Total number of write transactions for this MDIO bus address.
|
||||
|
||||
What: /sys/bus/mdio_bus/devices/.../statistics/reads_<addr>
|
||||
What: /sys/class/mdio_bus/.../statistics/reads_<addr>
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: netdev@vger.kernel.org
|
||||
|
@ -1,4 +1,5 @@
|
||||
What: /sys/bus/pci/drivers/.../bind
|
||||
What: /sys/devices/pciX/.../bind
|
||||
Date: December 2003
|
||||
Contact: linux-pci@vger.kernel.org
|
||||
Description:
|
||||
@ -14,6 +15,7 @@ Description:
|
||||
(Note: kernels before 2.6.28 may require echo -n).
|
||||
|
||||
What: /sys/bus/pci/drivers/.../unbind
|
||||
What: /sys/devices/pciX/.../unbind
|
||||
Date: December 2003
|
||||
Contact: linux-pci@vger.kernel.org
|
||||
Description:
|
||||
@ -29,6 +31,7 @@ Description:
|
||||
(Note: kernels before 2.6.28 may require echo -n).
|
||||
|
||||
What: /sys/bus/pci/drivers/.../new_id
|
||||
What: /sys/devices/pciX/.../new_id
|
||||
Date: December 2003
|
||||
Contact: linux-pci@vger.kernel.org
|
||||
Description:
|
||||
@ -47,6 +50,7 @@ Description:
|
||||
# echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id
|
||||
|
||||
What: /sys/bus/pci/drivers/.../remove_id
|
||||
What: /sys/devices/pciX/.../remove_id
|
||||
Date: February 2009
|
||||
Contact: Chris Wright <chrisw@sous-sol.org>
|
||||
Description:
|
||||
@ -160,7 +164,7 @@ Description:
|
||||
If the underlying VPD has a writable section then the
|
||||
corresponding section of this file will be writable.
|
||||
|
||||
What: /sys/bus/pci/devices/.../virtfnN
|
||||
What: /sys/bus/pci/devices/.../virtfn<N>
|
||||
Date: March 2009
|
||||
Contact: Yu Zhao <yu.zhao@intel.com>
|
||||
Description:
|
||||
@ -187,6 +191,24 @@ Description:
|
||||
The symbolic link points to the PCI device sysfs entry of the
|
||||
Physical Function this device associates with.
|
||||
|
||||
What: /sys/bus/pci/devices/.../modalias
|
||||
Date: May 2005
|
||||
Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Description:
|
||||
This attribute indicates the PCI ID of the device object.
|
||||
|
||||
That is in the format:
|
||||
pci:vXXXXXXXXdXXXXXXXXsvXXXXXXXXsdXXXXXXXXbcXXscXXiXX,
|
||||
where:
|
||||
|
||||
- vXXXXXXXX contains the vendor ID;
|
||||
- dXXXXXXXX contains the device ID;
|
||||
- svXXXXXXXX contains the sub-vendor ID;
|
||||
- sdXXXXXXXX contains the subsystem device ID;
|
||||
- bcXX contains the device class;
|
||||
- scXX contains the device subclass;
|
||||
- iXX contains the device class programming interface.
|
||||
|
||||
What: /sys/bus/pci/slots/.../module
|
||||
Date: June 2009
|
||||
Contact: linux-pci@vger.kernel.org
|
||||
|
@ -42,3 +42,15 @@ Date: August 2021
|
||||
Contact: Barry Song <song.bao.hua@hisilicon.com>
|
||||
Description:
|
||||
This attribute will show "msi" if <N> is a valid msi irq
|
||||
|
||||
What: /sys/bus/platform/devices/.../modalias
|
||||
Description:
|
||||
Same as MODALIAS in the uevent at device creation.
|
||||
|
||||
A platform device that it is exposed via devicetree uses:
|
||||
|
||||
- of:N`of node name`T`type`
|
||||
|
||||
Other platform devices use, instead:
|
||||
|
||||
- platform:`driver name`
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>
|
||||
Description:
|
||||
For each RapidIO device, the RapidIO subsystem creates files in
|
||||
an individual subdirectory with the following name format of
|
||||
@ -29,7 +29,7 @@ Description:
|
||||
Attributes Common for All RapidIO Devices
|
||||
-----------------------------------------
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/did
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/did
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -37,7 +37,7 @@ Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
Description:
|
||||
(RO) returns the device identifier
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/vid
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/vid
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -45,7 +45,7 @@ Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
Description:
|
||||
(RO) returns the device vendor identifier
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/device_rev
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/device_rev
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -53,7 +53,7 @@ Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
Description:
|
||||
(RO) returns the device revision level
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/asm_did
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/asm_did
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -61,7 +61,7 @@ Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
Description:
|
||||
(RO) returns identifier for the assembly containing the device
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/asm_rev
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/asm_rev
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -70,7 +70,7 @@ Description:
|
||||
(RO) returns revision level of the assembly containing the
|
||||
device
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/asm_vid
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/asm_vid
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -79,7 +79,7 @@ Description:
|
||||
(RO) returns vendor identifier of the assembly containing the
|
||||
device
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/destid
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/destid
|
||||
Date: Mar, 2011
|
||||
KernelVersion: v2.6.3
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -88,7 +88,7 @@ Description:
|
||||
(RO) returns device destination ID assigned by the enumeration
|
||||
routine
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/lprev
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/lprev
|
||||
Date: Mar, 2011
|
||||
KernelVersion: v2.6.39
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -97,7 +97,7 @@ Description:
|
||||
(RO) returns name of previous device (switch) on the path to the
|
||||
device that that owns this attribute
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/modalias
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/modalias
|
||||
Date: Jul, 2013
|
||||
KernelVersion: v3.11
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -105,7 +105,7 @@ Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
Description:
|
||||
(RO) returns the device modalias
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:d:iiii/config
|
||||
What: /sys/bus/rapidio/devices/<nn>:<d>:<iiii>/config
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -128,7 +128,7 @@ device-specific sysfs attributes by specifying a callback function that may be
|
||||
set by the switch initialization routine during enumeration or discovery
|
||||
process.
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:s:iiii/routes
|
||||
What: /sys/bus/rapidio/devices/<nn>:<s>:<iiii>/routes
|
||||
Date: Nov, 2005
|
||||
KernelVersion: v2.6.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -138,7 +138,7 @@ Description:
|
||||
This attribute reports only valid routing table entries, one
|
||||
line for each entry.
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:s:iiii/destid
|
||||
What: /sys/bus/rapidio/devices/<nn>:<s>:<iiii>/destid
|
||||
Date: Mar, 2011
|
||||
KernelVersion: v2.6.3
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -147,7 +147,7 @@ Description:
|
||||
(RO) device destination ID of the associated device that defines
|
||||
a route to the switch
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:s:iiii/hopcount
|
||||
What: /sys/bus/rapidio/devices/<nn>:<s>:<iiii>/hopcount
|
||||
Date: Mar, 2011
|
||||
KernelVersion: v2.6.39
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -155,7 +155,7 @@ Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
Description:
|
||||
(RO) number of hops on the path to the switch
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:s:iiii/lnext
|
||||
What: /sys/bus/rapidio/devices/<nn>:<s>:<iiii>/lnext
|
||||
Date: Mar, 2011
|
||||
KernelVersion: v2.6.39
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -172,7 +172,7 @@ Device-specific Switch Attributes
|
||||
|
||||
IDT_GEN2-
|
||||
|
||||
What: /sys/bus/rapidio/devices/nn:s:iiii/errlog
|
||||
What: /sys/bus/rapidio/devices/<nn>:<s>:<iiii>/errlog
|
||||
Date: Oct, 2010
|
||||
KernelVersion: v2.6.37
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/bus/usb/devices/INTERFACE/authorized
|
||||
What: /sys/bus/usb/devices/<INTERFACE>/authorized
|
||||
Date: August 2015
|
||||
Description:
|
||||
This allows to authorize (1) or deauthorize (0)
|
||||
@ -166,14 +166,14 @@ Description:
|
||||
The file will be present for all speeds of USB devices, and will
|
||||
always read "no" for USB 1.1 and USB 2.0 devices.
|
||||
|
||||
What: /sys/bus/usb/devices/.../(hub interface)/portX
|
||||
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>
|
||||
Date: August 2012
|
||||
Contact: Lan Tianyu <tianyu.lan@intel.com>
|
||||
Description:
|
||||
The /sys/bus/usb/devices/.../(hub interface)/portX
|
||||
The /sys/bus/usb/devices/.../<hub_interface>/port<X>
|
||||
is usb port device's sysfs directory.
|
||||
|
||||
What: /sys/bus/usb/devices/.../(hub interface)/portX/connect_type
|
||||
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/connect_type
|
||||
Date: January 2013
|
||||
Contact: Lan Tianyu <tianyu.lan@intel.com>
|
||||
Description:
|
||||
@ -182,7 +182,7 @@ Description:
|
||||
The file will read "hotplug", "hardwired" and "not used" if the
|
||||
information is available, and "unknown" otherwise.
|
||||
|
||||
What: /sys/bus/usb/devices/.../(hub interface)/portX/location
|
||||
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/location
|
||||
Date: October 2018
|
||||
Contact: Bjørn Mork <bjorn@mork.no>
|
||||
Description:
|
||||
@ -192,7 +192,7 @@ Description:
|
||||
raw location value as a hex integer.
|
||||
|
||||
|
||||
What: /sys/bus/usb/devices/.../(hub interface)/portX/quirks
|
||||
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/quirks
|
||||
Date: May 2018
|
||||
Contact: Nicolas Boichat <drinkcat@chromium.org>
|
||||
Description:
|
||||
@ -216,7 +216,7 @@ Description:
|
||||
used to help make enumeration work better on some high speed
|
||||
devices.
|
||||
|
||||
What: /sys/bus/usb/devices/.../(hub interface)/portX/over_current_count
|
||||
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/over_current_count
|
||||
Date: February 2018
|
||||
Contact: Richard Leitner <richard.leitner@skidata.com>
|
||||
Description:
|
||||
@ -230,10 +230,10 @@ Description:
|
||||
Any time this value changes the corresponding hub device will send a
|
||||
udev event with the following attributes::
|
||||
|
||||
OVER_CURRENT_PORT=/sys/bus/usb/devices/.../(hub interface)/portX
|
||||
OVER_CURRENT_PORT=/sys/bus/usb/devices/.../<hub_interface>/port<X>
|
||||
OVER_CURRENT_COUNT=[current value of this sysfs attribute]
|
||||
|
||||
What: /sys/bus/usb/devices/.../(hub interface)/portX/usb3_lpm_permit
|
||||
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/usb3_lpm_permit
|
||||
Date: November 2015
|
||||
Contact: Lu Baolu <baolu.lu@linux.intel.com>
|
||||
Description:
|
||||
@ -288,3 +288,277 @@ Description:
|
||||
USB 3.2 adds Dual-lane support, 2 rx and 2 tx -lanes over Type-C.
|
||||
Inter-Chip SSIC devices support asymmetric lanes up to 4 lanes per
|
||||
direction. Devices before USB 3.2 are single lane (tx_lanes = 1)
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bAlternateSetting
|
||||
Description:
|
||||
The current interface alternate setting number, in decimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bcdDevice
|
||||
Description:
|
||||
The device's release number, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bConfigurationValue
|
||||
Description:
|
||||
While a USB device typically have just one configuration
|
||||
setting, some devices support multiple configurations.
|
||||
|
||||
This value shows the current configuration, in decimal.
|
||||
|
||||
Changing its value will change the device's configuration
|
||||
to another setting.
|
||||
|
||||
The number of configurations supported by a device is at:
|
||||
|
||||
/sys/bus/usb/devices/usbX/bNumConfigurations
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bDeviceClass
|
||||
Description:
|
||||
Class code of the device, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bDeviceProtocol
|
||||
Description:
|
||||
Protocol code of the device, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bDeviceSubClass
|
||||
Description:
|
||||
Subclass code of the device, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bInterfaceClass
|
||||
Description:
|
||||
Class code of the interface, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bInterfaceNumber
|
||||
Description:
|
||||
Interface number, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bInterfaceProtocol
|
||||
Description:
|
||||
Protocol code of the interface, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bInterfaceSubClass
|
||||
Description:
|
||||
Subclass code of the interface, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bmAttributes
|
||||
Description:
|
||||
Attributes of the current configuration, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bMaxPacketSize0
|
||||
Description:
|
||||
Maximum endpoint 0 packet size, in decimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bMaxPower
|
||||
Description:
|
||||
Maximum power consumption of the active configuration of
|
||||
the device, in miliamperes.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bNumConfigurations
|
||||
Description:
|
||||
Number of the possible configurations of the device, in
|
||||
decimal. The current configuration is controlled via:
|
||||
|
||||
/sys/bus/usb/devices/usbX/bConfigurationValue
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bNumEndpoints
|
||||
Description:
|
||||
Number of endpoints used on this interface, in hexadecimal.
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/bNumInterfaces
|
||||
Description:
|
||||
Number of interfaces on this device, in decimal.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/busnum
|
||||
Description:
|
||||
Number of the bus.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/configuration
|
||||
Description:
|
||||
Contents of the string descriptor associated with the
|
||||
current configuration. It may include the firmware version
|
||||
of a device and/or its serial number.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/descriptors
|
||||
Description:
|
||||
Contains the interface descriptors, in binary.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/idProduct
|
||||
Description:
|
||||
Product ID, in hexadecimal.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/idVendor
|
||||
Description:
|
||||
Vendor ID, in hexadecimal.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/devspec
|
||||
Description:
|
||||
Displays the Device Tree Open Firmware node of the interface.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/avoid_reset_quirk
|
||||
Description:
|
||||
Most devices have this set to zero.
|
||||
|
||||
If the value is 1, enable a USB quirk that prevents this
|
||||
device to use reset.
|
||||
|
||||
(read/write)
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/devnum
|
||||
Description:
|
||||
USB interface device number, in decimal.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/devpath
|
||||
Description:
|
||||
String containing the USB interface device path.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/manufacturer
|
||||
Description:
|
||||
Vendor specific string containing the name of the
|
||||
manufacturer of the device.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/maxchild
|
||||
Description:
|
||||
Number of ports of an USB hub
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/persist
|
||||
Description:
|
||||
Keeps the device even if it gets disconnected.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/product
|
||||
Description:
|
||||
Vendor specific string containing the name of the
|
||||
device's product.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/speed
|
||||
Description:
|
||||
Shows the device's max speed, according to the USB version,
|
||||
in Mbps.
|
||||
Can be:
|
||||
|
||||
======= ====================
|
||||
Unknown speed unknown
|
||||
1.5 Low speed
|
||||
15 Full speed
|
||||
480 High Speed
|
||||
5000 Super Speed
|
||||
10000 Super Speed+
|
||||
20000 Super Speed+ Gen 2x2
|
||||
======= ====================
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/supports_autosuspend
|
||||
Description:
|
||||
Returns 1 if the device doesn't support autosuspend.
|
||||
Otherwise, returns 0.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/urbnum
|
||||
Description:
|
||||
Number of URBs submitted for the whole device.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/version
|
||||
Description:
|
||||
String containing the USB device version, as encoded
|
||||
at the BCD descriptor.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/power/autosuspend
|
||||
Description:
|
||||
Time in milliseconds for the device to autosuspend. If the
|
||||
value is negative, then autosuspend is prevented.
|
||||
|
||||
(read/write)
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/power/active_duration
|
||||
Description:
|
||||
The total time the device has not been suspended.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/power/connected_duration
|
||||
Description:
|
||||
The total time (in msec) that the device has been connected.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/power/level
|
||||
Description:
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/bEndpointAddress
|
||||
Description:
|
||||
The address of the endpoint described by this descriptor,
|
||||
in hexadecimal. The endpoint direction on this bitmapped field
|
||||
is also shown at:
|
||||
|
||||
/sys/bus/usb/devices/usbX/ep_<N>/direction
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/bInterval
|
||||
Description:
|
||||
The interval of the endpoint as described on its descriptor,
|
||||
in hexadecimal. The actual interval depends on the version
|
||||
of the USB. Also shown in time units at
|
||||
/sys/bus/usb/devices/usbX/ep_<N>/interval.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/bLength
|
||||
Description:
|
||||
Number of bytes of the endpoint descriptor, in hexadecimal.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/bmAttributes
|
||||
Description:
|
||||
Attributes which apply to the endpoint as described on its
|
||||
descriptor, in hexadecimal. The endpoint type on this
|
||||
bitmapped field is also shown at:
|
||||
|
||||
/sys/bus/usb/devices/usbX/ep_<N>/type
|
||||
|
||||
See USB specs for its meaning.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/direction
|
||||
Description:
|
||||
Direction of the endpoint. Can be:
|
||||
|
||||
- both (on control endpoints)
|
||||
- in
|
||||
- out
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/interval
|
||||
Description:
|
||||
Interval for polling endpoint for data transfers, in
|
||||
milisseconds or microseconds.
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/type
|
||||
Description:
|
||||
Descriptor type. Can be:
|
||||
|
||||
- Control
|
||||
- Isoc
|
||||
- Bulk
|
||||
- Interrupt
|
||||
- unknown
|
||||
|
||||
What: /sys/bus/usb/devices/usbX/ep_<N>/wMaxPacketSize
|
||||
Description:
|
||||
Maximum packet size this endpoint is capable of
|
||||
sending or receiving, in hexadecimal.
|
||||
|
@ -23,14 +23,17 @@ default
|
||||
The default backing dev, used for non-block device backed
|
||||
filesystems which do not provide their own BDI.
|
||||
|
||||
Files under /sys/class/bdi/<bdi>/
|
||||
|
||||
read_ahead_kb (read-write)
|
||||
|
||||
What: /sys/class/bdi/<bdi>/read_ahead_kb
|
||||
Date: January 2008
|
||||
Contact: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
Description:
|
||||
Size of the read-ahead window in kilobytes
|
||||
|
||||
min_ratio (read-write)
|
||||
|
||||
(read-write)
|
||||
What: /sys/class/bdi/<bdi>/min_ratio
|
||||
Date: January 2008
|
||||
Contact: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
Description:
|
||||
Under normal circumstances each device is given a part of the
|
||||
total write-back cache that relates to its current average
|
||||
writeout speed in relation to the other devices.
|
||||
@ -39,8 +42,12 @@ min_ratio (read-write)
|
||||
percentage of the write-back cache to a particular device.
|
||||
For example, this is useful for providing a minimum QoS.
|
||||
|
||||
max_ratio (read-write)
|
||||
(read-write)
|
||||
|
||||
What: /sys/class/bdi/<bdi>/max_ratio
|
||||
Date: January 2008
|
||||
Contact: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
Description:
|
||||
Allows limiting a particular device to use not more than the
|
||||
given percentage of the write-back cache. This is useful in
|
||||
situations where we want to avoid one device taking all or
|
||||
@ -48,7 +55,12 @@ max_ratio (read-write)
|
||||
mount that is prone to get stuck, or a FUSE mount which cannot
|
||||
be trusted to play fair.
|
||||
|
||||
stable_pages_required (read-only)
|
||||
|
||||
(read-write)
|
||||
What: /sys/class/bdi/<bdi>/stable_pages_required
|
||||
Date: January 2008
|
||||
Contact: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
Description:
|
||||
If set, the backing device requires that all pages comprising a write
|
||||
request must not be changed until writeout is complete.
|
||||
|
||||
(read-only)
|
||||
|
@ -166,10 +166,11 @@ Description: read only
|
||||
Decimal value of the Per Process MMIO space length.
|
||||
Users: https://github.com/ibm-capi/libcxl
|
||||
|
||||
What: /sys/class/cxl/<afu>m/pp_mmio_off (not in a guest)
|
||||
What: /sys/class/cxl/<afu>m/pp_mmio_off
|
||||
Date: September 2014
|
||||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read only
|
||||
(not in a guest)
|
||||
Decimal value of the Per Process MMIO space offset.
|
||||
Users: https://github.com/ibm-capi/libcxl
|
||||
|
||||
@ -190,28 +191,31 @@ Description: read only
|
||||
Identifies the revision level of the PSL.
|
||||
Users: https://github.com/ibm-capi/libcxl
|
||||
|
||||
What: /sys/class/cxl/<card>/base_image (not in a guest)
|
||||
What: /sys/class/cxl/<card>/base_image
|
||||
Date: September 2014
|
||||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read only
|
||||
(not in a guest)
|
||||
Identifies the revision level of the base image for devices
|
||||
that support loadable PSLs. For FPGAs this field identifies
|
||||
the image contained in the on-adapter flash which is loaded
|
||||
during the initial program load.
|
||||
Users: https://github.com/ibm-capi/libcxl
|
||||
|
||||
What: /sys/class/cxl/<card>/image_loaded (not in a guest)
|
||||
What: /sys/class/cxl/<card>/image_loaded
|
||||
Date: September 2014
|
||||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read only
|
||||
(not in a guest)
|
||||
Will return "user" or "factory" depending on the image loaded
|
||||
onto the card.
|
||||
Users: https://github.com/ibm-capi/libcxl
|
||||
|
||||
What: /sys/class/cxl/<card>/load_image_on_perst (not in a guest)
|
||||
What: /sys/class/cxl/<card>/load_image_on_perst
|
||||
Date: December 2014
|
||||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read/write
|
||||
(not in a guest)
|
||||
Valid entries are "none", "user", and "factory".
|
||||
"none" means PERST will not cause image to be loaded to the
|
||||
card. A power cycle is required to load the image.
|
||||
@ -235,10 +239,11 @@ Description: write only
|
||||
contexts on the card AFUs.
|
||||
Users: https://github.com/ibm-capi/libcxl
|
||||
|
||||
What: /sys/class/cxl/<card>/perst_reloads_same_image (not in a guest)
|
||||
What: /sys/class/cxl/<card>/perst_reloads_same_image
|
||||
Date: July 2015
|
||||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read/write
|
||||
(not in a guest)
|
||||
Trust that when an image is reloaded via PERST, it will not
|
||||
have changed.
|
||||
|
||||
|
@ -1,25 +1,25 @@
|
||||
What: /sys/class/devfreq-event/event(x)/
|
||||
What: /sys/class/devfreq-event/event<x>/
|
||||
Date: January 2017
|
||||
Contact: Chanwoo Choi <cw00.choi@samsung.com>
|
||||
Description:
|
||||
Provide a place in sysfs for the devfreq-event objects.
|
||||
This allows accessing various devfreq-event specific variables.
|
||||
The name of devfreq-event object denoted as 'event(x)' which
|
||||
The name of devfreq-event object denoted as 'event<x>' which
|
||||
includes the unique number of 'x' for each devfreq-event object.
|
||||
|
||||
What: /sys/class/devfreq-event/event(x)/name
|
||||
What: /sys/class/devfreq-event/event<x>/name
|
||||
Date: January 2017
|
||||
Contact: Chanwoo Choi <cw00.choi@samsung.com>
|
||||
Description:
|
||||
The /sys/class/devfreq-event/event(x)/name attribute contains
|
||||
The /sys/class/devfreq-event/event<x>/name attribute contains
|
||||
the name of the devfreq-event object. This attribute is
|
||||
read-only.
|
||||
|
||||
What: /sys/class/devfreq-event/event(x)/enable_count
|
||||
What: /sys/class/devfreq-event/event<x>/enable_count
|
||||
Date: January 2017
|
||||
Contact: Chanwoo Choi <cw00.choi@samsung.com>
|
||||
Description:
|
||||
The /sys/class/devfreq-event/event(x)/enable_count attribute
|
||||
The /sys/class/devfreq-event/event<x>/enable_count attribute
|
||||
contains the reference count to enable the devfreq-event
|
||||
object. If the device is enabled, the value of attribute is
|
||||
greater than zero.
|
||||
|
@ -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).
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/class/gnss/gnssN/type
|
||||
What: /sys/class/gnss/gnss<N>/type
|
||||
Date: May 2018
|
||||
KernelVersion: 4.18
|
||||
Contact: Johan Hovold <johan@kernel.org>
|
||||
|
932
Documentation/ABI/testing/sysfs-class-hwmon
Normal file
932
Documentation/ABI/testing/sysfs-class-hwmon
Normal file
@ -0,0 +1,932 @@
|
||||
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_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.
|
||||
|
||||
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
|
@ -6,7 +6,7 @@ Description:
|
||||
The mei/ class sub-directory belongs to mei device class
|
||||
|
||||
|
||||
What: /sys/class/mei/meiN/
|
||||
What: /sys/class/mei/mei<N>/
|
||||
Date: May 2014
|
||||
KernelVersion: 3.17
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -14,7 +14,7 @@ Description:
|
||||
The /sys/class/mei/meiN directory is created for
|
||||
each probed mei device
|
||||
|
||||
What: /sys/class/mei/meiN/fw_status
|
||||
What: /sys/class/mei/mei<N>/fw_status
|
||||
Date: Nov 2014
|
||||
KernelVersion: 3.19
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -29,7 +29,7 @@ Description: Display fw status registers content
|
||||
Also number of registers varies between 1 and 6
|
||||
depending on generation.
|
||||
|
||||
What: /sys/class/mei/meiN/hbm_ver
|
||||
What: /sys/class/mei/mei<N>/hbm_ver
|
||||
Date: Aug 2016
|
||||
KernelVersion: 4.9
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -38,7 +38,7 @@ Description: Display the negotiated HBM protocol version.
|
||||
The HBM protocol version negotiated
|
||||
between the driver and the device.
|
||||
|
||||
What: /sys/class/mei/meiN/hbm_ver_drv
|
||||
What: /sys/class/mei/mei<N>/hbm_ver_drv
|
||||
Date: Aug 2016
|
||||
KernelVersion: 4.9
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -46,7 +46,7 @@ Description: Display the driver HBM protocol version.
|
||||
|
||||
The HBM protocol version supported by the driver.
|
||||
|
||||
What: /sys/class/mei/meiN/tx_queue_limit
|
||||
What: /sys/class/mei/mei<N>/tx_queue_limit
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.16
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -55,7 +55,7 @@ Description: Configure tx queue limit
|
||||
Set maximal number of pending writes
|
||||
per opened session.
|
||||
|
||||
What: /sys/class/mei/meiN/fw_ver
|
||||
What: /sys/class/mei/mei<N>/fw_ver
|
||||
Date: May 2018
|
||||
KernelVersion: 4.18
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -66,7 +66,7 @@ Description: Display the ME firmware version.
|
||||
There can be up to three such blocks for different
|
||||
FW components.
|
||||
|
||||
What: /sys/class/mei/meiN/dev_state
|
||||
What: /sys/class/mei/mei<N>/dev_state
|
||||
Date: Mar 2019
|
||||
KernelVersion: 5.1
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -81,7 +81,7 @@ Description: Display the ME device state.
|
||||
POWER_DOWN
|
||||
POWER_UP
|
||||
|
||||
What: /sys/class/mei/meiN/trc
|
||||
What: /sys/class/mei/mei<N>/trc
|
||||
Date: Nov 2019
|
||||
KernelVersion: 5.5
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
@ -91,7 +91,7 @@ Description: Display trc status register content
|
||||
status information into trc status register
|
||||
for BIOS and OS to monitor fw health.
|
||||
|
||||
What: /sys/class/mei/meiN/kind
|
||||
What: /sys/class/mei/mei<N>/kind
|
||||
Date: Jul 2020
|
||||
KernelVersion: 5.8
|
||||
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||
|
@ -8,7 +8,7 @@ Description:
|
||||
PCIe form factor add-in Coprocessor card based on the Intel Many
|
||||
Integrated Core (MIC) architecture that runs a Linux OS.
|
||||
|
||||
What: /sys/class/mic/mic(x)
|
||||
What: /sys/class/mic/mic<X>
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -17,7 +17,7 @@ Description:
|
||||
represent MIC devices (0,1,..etc). Each directory has
|
||||
information specific to that MIC device.
|
||||
|
||||
What: /sys/class/mic/mic(x)/family
|
||||
What: /sys/class/mic/mic<X>/family
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -25,7 +25,7 @@ Description:
|
||||
Provides information about the Coprocessor family for an Intel
|
||||
MIC device. For example - "x100"
|
||||
|
||||
What: /sys/class/mic/mic(x)/stepping
|
||||
What: /sys/class/mic/mic<X>/stepping
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -33,7 +33,7 @@ Description:
|
||||
Provides information about the silicon stepping for an Intel
|
||||
MIC device. For example - "A0" or "B0"
|
||||
|
||||
What: /sys/class/mic/mic(x)/state
|
||||
What: /sys/class/mic/mic<X>/state
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -69,7 +69,7 @@ Description:
|
||||
"shutdown" Initiates card OS shutdown.
|
||||
========== ===================================================
|
||||
|
||||
What: /sys/class/mic/mic(x)/shutdown_status
|
||||
What: /sys/class/mic/mic<X>/shutdown_status
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -88,7 +88,7 @@ Description:
|
||||
"restart" Shutdown because of a restart command.
|
||||
========== ===================================================
|
||||
|
||||
What: /sys/class/mic/mic(x)/cmdline
|
||||
What: /sys/class/mic/mic<X>/cmdline
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -104,7 +104,7 @@ Description:
|
||||
or modify existing ones and then write the whole kernel command
|
||||
line back to this entry.
|
||||
|
||||
What: /sys/class/mic/mic(x)/firmware
|
||||
What: /sys/class/mic/mic<X>/firmware
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -114,7 +114,7 @@ Description:
|
||||
card can be found. The entry can be written to change the
|
||||
firmware image location under /lib/firmware/.
|
||||
|
||||
What: /sys/class/mic/mic(x)/ramdisk
|
||||
What: /sys/class/mic/mic<X>/ramdisk
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -124,7 +124,7 @@ Description:
|
||||
OS boot can be found. The entry can be written to change
|
||||
the ramdisk image location under /lib/firmware/.
|
||||
|
||||
What: /sys/class/mic/mic(x)/bootmode
|
||||
What: /sys/class/mic/mic<X>/bootmode
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -135,7 +135,7 @@ Description:
|
||||
a) linux - Boot a Linux image.
|
||||
b) flash - Boot an image for flash updates.
|
||||
|
||||
What: /sys/class/mic/mic(x)/log_buf_addr
|
||||
What: /sys/class/mic/mic<X>/log_buf_addr
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -149,7 +149,7 @@ Description:
|
||||
log buffer address to be written can be found in the System.map
|
||||
file of the card OS.
|
||||
|
||||
What: /sys/class/mic/mic(x)/log_buf_len
|
||||
What: /sys/class/mic/mic<X>/log_buf_len
|
||||
Date: October 2013
|
||||
KernelVersion: 3.13
|
||||
Contact: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||
@ -163,7 +163,7 @@ Description:
|
||||
buffer length address to be written can be found in the
|
||||
System.map file of the card OS.
|
||||
|
||||
What: /sys/class/mic/mic(x)/heartbeat_enable
|
||||
What: /sys/class/mic/mic<X>/heartbeat_enable
|
||||
Date: March 2015
|
||||
KernelVersion: 4.4
|
||||
Contact: Ashutosh Dixit <ashutosh.dixit@intel.com>
|
||||
|
@ -7,7 +7,7 @@ Description:
|
||||
Framework and provides a sysfs interface for using MUX
|
||||
controllers.
|
||||
|
||||
What: /sys/class/mux/muxchipN/
|
||||
What: /sys/class/mux/muxchip<N>/
|
||||
Date: April 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: Peter Rosin <peda@axentia.se>
|
||||
|
@ -7,7 +7,7 @@ Description:
|
||||
Framework and provides a sysfs interface for using PWM
|
||||
channels.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/
|
||||
What: /sys/class/pwm/pwmchip<N>/
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
@ -16,14 +16,14 @@ Description:
|
||||
probed PWM controller/chip where N is the base of the
|
||||
PWM chip.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/npwm
|
||||
What: /sys/class/pwm/pwmchip<N>/npwm
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
Description:
|
||||
The number of PWM channels supported by the PWM chip.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/export
|
||||
What: /sys/class/pwm/pwmchip<N>/export
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
@ -31,14 +31,14 @@ Description:
|
||||
Exports a PWM channel from the PWM chip for sysfs control.
|
||||
Value is between 0 and /sys/class/pwm/pwmchipN/npwm - 1.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/unexport
|
||||
What: /sys/class/pwm/pwmchip<N>/unexport
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
Description:
|
||||
Unexports a PWM channel.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/pwmX
|
||||
What: /sys/class/pwm/pwmchip<N>/pwmX
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
@ -47,21 +47,21 @@ Description:
|
||||
each exported PWM channel where X is the exported PWM
|
||||
channel number.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/pwmX/period
|
||||
What: /sys/class/pwm/pwmchip<N>/pwmX/period
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
Description:
|
||||
Sets the PWM signal period in nanoseconds.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/pwmX/duty_cycle
|
||||
What: /sys/class/pwm/pwmchip<N>/pwmX/duty_cycle
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
Description:
|
||||
Sets the PWM signal duty cycle in nanoseconds.
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/pwmX/polarity
|
||||
What: /sys/class/pwm/pwmchip<N>/pwmX/polarity
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
@ -69,7 +69,7 @@ Description:
|
||||
Sets the output polarity of the PWM signal to "normal" or
|
||||
"inversed".
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/pwmX/enable
|
||||
What: /sys/class/pwm/pwmchip<N>/pwmX/enable
|
||||
Date: May 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
@ -78,7 +78,7 @@ Description:
|
||||
0 is disabled
|
||||
1 is enabled
|
||||
|
||||
What: /sys/class/pwm/pwmchipN/pwmX/capture
|
||||
What: /sys/class/pwm/pwmchip<N>/pwmX/capture
|
||||
Date: June 2016
|
||||
KernelVersion: 4.8
|
||||
Contact: Lee Jones <lee.jones@linaro.org>
|
||||
|
@ -10,7 +10,7 @@ Description:
|
||||
NOTE: An mport ID is not a RapidIO destination ID assigned to a
|
||||
given local mport device.
|
||||
|
||||
What: /sys/class/rapidio_port/rapidioN/sys_size
|
||||
What: /sys/class/rapidio_port/rapidio<N>/sys_size
|
||||
Date: Apr, 2014
|
||||
KernelVersion: v3.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
@ -22,7 +22,7 @@ Description:
|
||||
|
||||
1 = large (16-bit destination ID, max. 65536 devices).
|
||||
|
||||
What: /sys/class/rapidio_port/rapidioN/port_destid
|
||||
What: /sys/class/rapidio_port/rapidio<N>/port_destid
|
||||
Date: Apr, 2014
|
||||
KernelVersion: v3.15
|
||||
Contact: Matt Porter <mporter@kernel.crashing.org>,
|
||||
|
@ -7,7 +7,7 @@ Description:
|
||||
core and provides a sysfs interface for configuring infrared
|
||||
remote controller receivers.
|
||||
|
||||
What: /sys/class/rc/rcN/
|
||||
What: /sys/class/rc/rc<N>/
|
||||
Date: Apr 2010
|
||||
KernelVersion: 2.6.35
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
@ -15,7 +15,7 @@ Description:
|
||||
A /sys/class/rc/rcN directory is created for each remote
|
||||
control receiver device where N is the number of the receiver.
|
||||
|
||||
What: /sys/class/rc/rcN/protocols
|
||||
What: /sys/class/rc/rc<N>/protocols
|
||||
Date: Jun 2010
|
||||
KernelVersion: 2.6.36
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
@ -40,7 +40,7 @@ Description:
|
||||
Write fails with EINVAL if an invalid protocol combination or
|
||||
unknown protocol name is used.
|
||||
|
||||
What: /sys/class/rc/rcN/filter
|
||||
What: /sys/class/rc/rc<N>/filter
|
||||
Date: Jan 2014
|
||||
KernelVersion: 3.15
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
@ -55,7 +55,7 @@ Description:
|
||||
|
||||
This value may be reset to 0 if the current protocol is altered.
|
||||
|
||||
What: /sys/class/rc/rcN/filter_mask
|
||||
What: /sys/class/rc/rc<N>/filter_mask
|
||||
Date: Jan 2014
|
||||
KernelVersion: 3.15
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
@ -72,7 +72,7 @@ Description:
|
||||
|
||||
This value may be reset to 0 if the current protocol is altered.
|
||||
|
||||
What: /sys/class/rc/rcN/wakeup_protocols
|
||||
What: /sys/class/rc/rc<N>/wakeup_protocols
|
||||
Date: Feb 2017
|
||||
KernelVersion: 4.11
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
@ -98,7 +98,7 @@ Description:
|
||||
unknown protocol name is used, or if wakeup is not supported by
|
||||
the hardware.
|
||||
|
||||
What: /sys/class/rc/rcN/wakeup_filter
|
||||
What: /sys/class/rc/rc<N>/wakeup_filter
|
||||
Date: Jan 2014
|
||||
KernelVersion: 3.15
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
@ -117,7 +117,7 @@ Description:
|
||||
|
||||
This value may be reset to 0 if the wakeup protocol is altered.
|
||||
|
||||
What: /sys/class/rc/rcN/wakeup_filter_mask
|
||||
What: /sys/class/rc/rc<N>/wakeup_filter_mask
|
||||
Date: Jan 2014
|
||||
KernelVersion: 3.15
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/class/rc/rcN/wakeup_data
|
||||
What: /sys/class/rc/rc<N>/wakeup_data
|
||||
Date: Mar 2016
|
||||
KernelVersion: 4.6
|
||||
Contact: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
|
@ -200,7 +200,7 @@ Description: USB Power Delivery Specification defines a set of product types
|
||||
amc Alternate Mode Controller
|
||||
====================== ==========================
|
||||
|
||||
What: /sys/class/typec/<port>-partner>/identity/
|
||||
What: /sys/class/typec/<port>-partner/identity/
|
||||
Date: April 2017
|
||||
Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
|
||||
Description:
|
||||
|
@ -18,14 +18,14 @@ Description:
|
||||
and it will be removed. The default is 3 superframes
|
||||
(~197 ms) as required by the specification.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/
|
||||
What: /sys/class/uwb_rc/uwb<N>/
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
An individual UWB radio controller.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/beacon
|
||||
What: /sys/class/uwb_rc/uwb<N>/beacon
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -43,7 +43,7 @@ Description:
|
||||
Reading returns the currently active channel, or -1 if
|
||||
the radio controller is not beaconing.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/ASIE
|
||||
What: /sys/class/uwb_rc/uwb<N>/ASIE
|
||||
Date: August 2014
|
||||
KernelVersion: 3.18
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -56,7 +56,7 @@ Description:
|
||||
Reading returns the current ASIE. Writing replaces
|
||||
the current ASIE with the one written.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/scan
|
||||
What: /sys/class/uwb_rc/uwb<N>/scan
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -75,7 +75,7 @@ Description:
|
||||
4 scan (with start time of <bpst offset>)
|
||||
== =======================================
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/mac_address
|
||||
What: /sys/class/uwb_rc/uwb<N>/mac_address
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -85,7 +85,7 @@ Description:
|
||||
controller's EUI-48 but only do so while the device is
|
||||
not beaconing or scanning.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/wusbhc
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -93,7 +93,7 @@ Description:
|
||||
A symlink to the device (if any) of the WUSB Host
|
||||
Controller PAL using this radio controller.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/<EUI-48>/
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -102,7 +102,7 @@ Description:
|
||||
as part of a scan or is a member of the radio
|
||||
controllers beacon group.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/<EUI-48>/BPST
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/BPST
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -111,7 +111,7 @@ Description:
|
||||
interval superframe timer) of the last beacon from
|
||||
this device was received.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/<EUI-48>/DevAddr
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/DevAddr
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -119,7 +119,7 @@ Description:
|
||||
The current DevAddr of this device in colon separated
|
||||
hex octets.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/<EUI-48>/EUI_48
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/EUI_48
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -128,7 +128,7 @@ Description:
|
||||
The EUI-48 of this device in colon separated hex
|
||||
octets.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/<EUI-48>/IEs
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/IEs
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -136,7 +136,7 @@ Description:
|
||||
The latest IEs included in this device's beacon, in
|
||||
space separated hex octets with one IE per line.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/<EUI-48>/LQE
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/LQE
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
@ -146,7 +146,7 @@ Description:
|
||||
This gives an estimate on a suitable PHY rate. Refer
|
||||
to [ECMA-368] section 13.3 for more details.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/<EUI-48>/RSSI
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/RSSI
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/class/uwb_rc/uwbN/wusbhc/wusb_chid
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_chid
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
@ -9,7 +9,7 @@ Description:
|
||||
|
||||
Set an all zero CHID to stop the host controller.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/wusbhc/wusb_trust_timeout
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_trust_timeout
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
@ -24,7 +24,7 @@ Description:
|
||||
lifetime of PTKs and GTKs) it should not be changed
|
||||
from the default.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/wusbhc/wusb_phy_rate
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_phy_rate
|
||||
Date: August 2009
|
||||
KernelVersion: 2.6.32
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
@ -37,7 +37,7 @@ Description:
|
||||
Refer to [ECMA-368] section 10.3.1.1 for the value to
|
||||
use.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/wusbhc/wusb_dnts
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_dnts
|
||||
Date: June 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: Thomas Pugliese <thomas.pugliese@gmail.com>
|
||||
@ -47,7 +47,7 @@ Description:
|
||||
often the devices will have the opportunity to send
|
||||
notifications to the host.
|
||||
|
||||
What: /sys/class/uwb_rc/uwbN/wusbhc/wusb_retry_count
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_retry_count
|
||||
Date: June 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: Thomas Pugliese <thomas.pugliese@gmail.com>
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/devices/platform/dock.N/docked
|
||||
What: /sys/devices/platform/dock.<N>/docked
|
||||
Date: Dec, 2006
|
||||
KernelVersion: 2.6.19
|
||||
Contact: linux-acpi@vger.kernel.org
|
||||
@ -6,7 +6,7 @@ Description:
|
||||
(RO) Value 1 or 0 indicates whether the software believes the
|
||||
laptop is docked in a docking station.
|
||||
|
||||
What: /sys/devices/platform/dock.N/undock
|
||||
What: /sys/devices/platform/dock.<N>/undock
|
||||
Date: Dec, 2006
|
||||
KernelVersion: 2.6.19
|
||||
Contact: linux-acpi@vger.kernel.org
|
||||
@ -14,14 +14,14 @@ Description:
|
||||
(WO) Writing to this file causes the software to initiate an
|
||||
undock request to the firmware.
|
||||
|
||||
What: /sys/devices/platform/dock.N/uid
|
||||
What: /sys/devices/platform/dock.<N>/uid
|
||||
Date: Feb, 2007
|
||||
KernelVersion: v2.6.21
|
||||
Contact: linux-acpi@vger.kernel.org
|
||||
Description:
|
||||
(RO) Displays the docking station the laptop is docked to.
|
||||
|
||||
What: /sys/devices/platform/dock.N/flags
|
||||
What: /sys/devices/platform/dock.<N>/flags
|
||||
Date: May, 2007
|
||||
KernelVersion: v2.6.21
|
||||
Contact: linux-acpi@vger.kernel.org
|
||||
@ -30,7 +30,7 @@ Description:
|
||||
request has been made by the user (from the immediate_undock
|
||||
option).
|
||||
|
||||
What: /sys/devices/platform/dock.N/type
|
||||
What: /sys/devices/platform/dock.<N>/type
|
||||
Date: Aug, 2008
|
||||
KernelVersion: v2.6.27
|
||||
Contact: linux-acpi@vger.kernel.org
|
||||
|
@ -269,3 +269,39 @@ Description:
|
||||
the current runtime PM status of the device, which may be
|
||||
"suspended", "suspending", "resuming", "active", "error" (fatal
|
||||
error), or "unsupported" (runtime PM is disabled).
|
||||
|
||||
What: /sys/devices/.../power/runtime_active_time
|
||||
Date: Jul 2010
|
||||
Contact: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Description:
|
||||
Reports the total time that the device has been active.
|
||||
Used for runtime PM statistics.
|
||||
|
||||
What: /sys/devices/.../power/runtime_suspended_time
|
||||
Date: Jul 2010
|
||||
Contact: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Description:
|
||||
Reports total time that the device has been suspended.
|
||||
Used for runtime PM statistics.
|
||||
|
||||
What: /sys/devices/.../power/runtime_usage
|
||||
Date: Apr 2010
|
||||
Contact: Dominik Brodowski <linux@dominikbrodowski.net>
|
||||
Description:
|
||||
Reports the runtime PM usage count of a device.
|
||||
|
||||
What: /sys/devices/.../power/runtime_enabled
|
||||
Date: Apr 2010
|
||||
Contact: Dominik Brodowski <linux@dominikbrodowski.net>
|
||||
Description:
|
||||
Is runtime PM enabled for this device?
|
||||
States are "enabled", "disabled", "forbidden" or a
|
||||
combination of the latter two.
|
||||
|
||||
What: /sys/devices/.../power/runtime_active_kids
|
||||
Date: Apr 2010
|
||||
Contact: Dominik Brodowski <linux@dominikbrodowski.net>
|
||||
Description:
|
||||
Reports the runtime PM children usage count of a device, or
|
||||
0 if the the children will be ignored.
|
||||
|
||||
|
@ -7,10 +7,12 @@ Description:
|
||||
bus / platform-specific way. This attribute is only present for
|
||||
devices that can support determining such information:
|
||||
|
||||
"removable": device can be removed from the platform by the user
|
||||
"fixed": device is fixed to the platform / cannot be removed
|
||||
=========== ===================================================
|
||||
"removable" device can be removed from the platform by the user
|
||||
"fixed" device is fixed to the platform / cannot be removed
|
||||
by the user.
|
||||
"unknown": The information is unavailable / cannot be deduced.
|
||||
"unknown" The information is unavailable / cannot be deduced.
|
||||
=========== ===================================================
|
||||
|
||||
Currently this is only supported by USB (which infers the
|
||||
information from a combination of hub descriptor bits and
|
||||
|
@ -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.
|
||||
|
||||
@ -135,7 +135,7 @@ Description: Discover cpuidle policy and mechanism
|
||||
Documentation/driver-api/pm/cpuidle.rst for more information.
|
||||
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/name
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/name
|
||||
/sys/devices/system/cpu/cpuX/cpuidle/stateN/latency
|
||||
/sys/devices/system/cpu/cpuX/cpuidle/stateN/power
|
||||
/sys/devices/system/cpu/cpuX/cpuidle/stateN/time
|
||||
@ -174,7 +174,7 @@ Description:
|
||||
(a count).
|
||||
======== ==== =================================================
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/desc
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/desc
|
||||
Date: February 2008
|
||||
KernelVersion: v2.6.25
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
@ -182,7 +182,7 @@ Description:
|
||||
(RO) A small description about the idle state (string).
|
||||
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/disable
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/disable
|
||||
Date: March 2012
|
||||
KernelVersion: v3.10
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
@ -195,14 +195,14 @@ Description:
|
||||
does not reflect it. Likewise, if one enables a deep state but a
|
||||
lighter state still is disabled, then this has no effect.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/default_status
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/default_status
|
||||
Date: December 2019
|
||||
KernelVersion: v5.6
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
Description:
|
||||
(RO) The default status of this state, "enabled" or "disabled".
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/residency
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/residency
|
||||
Date: March 2014
|
||||
KernelVersion: v3.15
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
@ -211,7 +211,7 @@ Description:
|
||||
time (in microseconds) this cpu should spend in this idle state
|
||||
to make the transition worth the effort.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/s2idle/
|
||||
Date: March 2018
|
||||
KernelVersion: v4.17
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
@ -221,7 +221,7 @@ Description:
|
||||
This attribute group is only present for states that can be
|
||||
used in suspend-to-idle with suspended timekeeping.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/time
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/s2idle/time
|
||||
Date: March 2018
|
||||
KernelVersion: v4.17
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
@ -229,7 +229,7 @@ Description:
|
||||
Total time spent by the CPU in suspend-to-idle (with scheduler
|
||||
tick suspended) after requesting this state.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/usage
|
||||
What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/s2idle/usage
|
||||
Date: March 2018
|
||||
KernelVersion: v4.17
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
@ -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)
|
||||
|
@ -13,6 +13,7 @@ Description:
|
||||
Interface specification for more details.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/device_type
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/device_type
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the device type. This is one of the UFS
|
||||
@ -22,6 +23,7 @@ Description: This file shows the device type. This is one of the UFS
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/device_class
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/device_class
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the device class. This is one of the UFS
|
||||
@ -31,6 +33,7 @@ Description: This file shows the device class. This is one of the UFS
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/device_sub_class
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/device_sub_class
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the UFS storage subclass. This is one of
|
||||
@ -40,6 +43,7 @@ Description: This file shows the UFS storage subclass. This is one of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/protocol
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/protocol
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the protocol supported by an UFS device.
|
||||
@ -50,6 +54,7 @@ Description: This file shows the protocol supported by an UFS device.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/number_of_luns
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/number_of_luns
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows number of logical units. This is one of
|
||||
@ -59,6 +64,7 @@ Description: This file shows number of logical units. This is one of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/number_of_wluns
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/number_of_wluns
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows number of well known logical units.
|
||||
@ -69,6 +75,7 @@ Description: This file shows number of well known logical units.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/boot_enable
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/boot_enable
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows value that indicates whether the device is
|
||||
@ -79,6 +86,7 @@ Description: This file shows value that indicates whether the device is
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/descriptor_access_enable
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/descriptor_access_enable
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows value that indicates whether the device
|
||||
@ -90,6 +98,7 @@ Description: This file shows value that indicates whether the device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/initial_power_mode
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/initial_power_mode
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows value that defines the power mode after
|
||||
@ -100,6 +109,7 @@ Description: This file shows value that defines the power mode after
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/high_priority_lun
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/high_priority_lun
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the high priority lun. This is one of
|
||||
@ -109,6 +119,7 @@ Description: This file shows the high priority lun. This is one of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/secure_removal_type
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/secure_removal_type
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the secure removal type. This is one of
|
||||
@ -118,6 +129,7 @@ Description: This file shows the secure removal type. This is one of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/support_security_lun
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/support_security_lun
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether the security lun is supported.
|
||||
@ -128,6 +140,7 @@ Description: This file shows whether the security lun is supported.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/bkops_termination_latency
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/bkops_termination_latency
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the background operations termination
|
||||
@ -138,6 +151,7 @@ Description: This file shows the background operations termination
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/initial_active_icc_level
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/initial_active_icc_level
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the initial active ICC level. This is one
|
||||
@ -147,6 +161,7 @@ Description: This file shows the initial active ICC level. This is one
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/specification_version
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/specification_version
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the specification version. This is one
|
||||
@ -156,6 +171,7 @@ Description: This file shows the specification version. This is one
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/manufacturing_date
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/manufacturing_date
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the manufacturing date in BCD format.
|
||||
@ -166,6 +182,7 @@ Description: This file shows the manufacturing date in BCD format.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/manufacturer_id
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/manufacturer_id
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the manufacturer ID. This is one of the
|
||||
@ -175,6 +192,7 @@ Description: This file shows the manufacturer ID. This is one of the
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/rtt_capability
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/rtt_capability
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum number of outstanding RTTs
|
||||
@ -185,6 +203,7 @@ Description: This file shows the maximum number of outstanding RTTs
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/rtc_update
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/rtc_update
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the frequency and method of the realtime
|
||||
@ -195,6 +214,7 @@ Description: This file shows the frequency and method of the realtime
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/ufs_features
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/ufs_features
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows which features are supported by the device.
|
||||
@ -205,6 +225,7 @@ Description: This file shows which features are supported by the device.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/ffu_timeout
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/ffu_timeout
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the FFU timeout. This is one of the
|
||||
@ -214,6 +235,7 @@ Description: This file shows the FFU timeout. This is one of the
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/queue_depth
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/queue_depth
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the device queue depth. This is one of the
|
||||
@ -223,6 +245,7 @@ Description: This file shows the device queue depth. This is one of the
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/device_version
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/device_version
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the device version. This is one of the
|
||||
@ -232,6 +255,7 @@ Description: This file shows the device version. This is one of the
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/number_of_secure_wpa
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/number_of_secure_wpa
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows number of secure write protect areas
|
||||
@ -242,6 +266,7 @@ Description: This file shows number of secure write protect areas
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/psa_max_data_size
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/psa_max_data_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum amount of data that may be
|
||||
@ -253,6 +278,7 @@ Description: This file shows the maximum amount of data that may be
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/psa_state_timeout
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/psa_state_timeout
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the command maximum timeout for a change
|
||||
@ -264,6 +290,7 @@ Description: This file shows the command maximum timeout for a change
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/interconnect_descriptor/unipro_version
|
||||
What: /sys/bus/platform/devices/*.ufs/interconnect_descriptor/unipro_version
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the MIPI UniPro version number in BCD format.
|
||||
@ -274,6 +301,7 @@ Description: This file shows the MIPI UniPro version number in BCD format.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/interconnect_descriptor/mphy_version
|
||||
What: /sys/bus/platform/devices/*.ufs/interconnect_descriptor/mphy_version
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the MIPI M-PHY version number in BCD format.
|
||||
@ -285,6 +313,7 @@ Description: This file shows the MIPI M-PHY version number in BCD format.
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/raw_device_capacity
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/raw_device_capacity
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the total memory quantity available to
|
||||
@ -296,6 +325,7 @@ Description: This file shows the total memory quantity available to
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/max_number_of_luns
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/max_number_of_luns
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum number of logical units
|
||||
@ -306,6 +336,7 @@ Description: This file shows the maximum number of logical units
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/segment_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/segment_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the segment size. This is one of the UFS
|
||||
@ -315,6 +346,7 @@ Description: This file shows the segment size. This is one of the UFS
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/allocation_unit_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/allocation_unit_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the allocation unit size. This is one of
|
||||
@ -324,6 +356,7 @@ Description: This file shows the allocation unit size. This is one of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/min_addressable_block_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/min_addressable_block_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the minimum addressable block size. This
|
||||
@ -334,6 +367,7 @@ Description: This file shows the minimum addressable block size. This
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/optimal_read_block_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/optimal_read_block_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the optimal read block size. This is one
|
||||
@ -344,6 +378,7 @@ Description: This file shows the optimal read block size. This is one
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/optimal_write_block_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/optimal_write_block_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the optimal write block size. This is one
|
||||
@ -354,6 +389,7 @@ Description: This file shows the optimal write block size. This is one
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/max_in_buffer_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/max_in_buffer_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum data-in buffer size. This
|
||||
@ -364,6 +400,7 @@ Description: This file shows the maximum data-in buffer size. This
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/max_out_buffer_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/max_out_buffer_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum data-out buffer size. This
|
||||
@ -374,6 +411,7 @@ Description: This file shows the maximum data-out buffer size. This
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/rpmb_rw_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/rpmb_rw_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum number of RPMB frames allowed
|
||||
@ -384,6 +422,7 @@ Description: This file shows the maximum number of RPMB frames allowed
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/dyn_capacity_resource_policy
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/dyn_capacity_resource_policy
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the dynamic capacity resource policy. This
|
||||
@ -394,6 +433,7 @@ Description: This file shows the dynamic capacity resource policy. This
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/data_ordering
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/data_ordering
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows support for out-of-order data transfer.
|
||||
@ -404,6 +444,7 @@ Description: This file shows support for out-of-order data transfer.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/max_number_of_contexts
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/max_number_of_contexts
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows maximum available number of contexts which
|
||||
@ -414,6 +455,7 @@ Description: This file shows maximum available number of contexts which
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/sys_data_tag_unit_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/sys_data_tag_unit_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows system data tag unit size. This is one of
|
||||
@ -423,6 +465,7 @@ Description: This file shows system data tag unit size. This is one of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/sys_data_tag_resource_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/sys_data_tag_resource_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows maximum storage area size allocated by
|
||||
@ -434,6 +477,7 @@ Description: This file shows maximum storage area size allocated by
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/secure_removal_types
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/secure_removal_types
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows supported secure removal types. This is
|
||||
@ -444,6 +488,7 @@ Description: This file shows supported secure removal types. This is
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/memory_types
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/memory_types
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows supported memory types. This is one of
|
||||
@ -454,6 +499,7 @@ Description: This file shows supported memory types. This is one of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/*_memory_max_alloc_units
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/*_memory_max_alloc_units
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum number of allocation units for
|
||||
@ -465,6 +511,7 @@ Description: This file shows the maximum number of allocation units for
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/*_memory_capacity_adjustment_factor
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/*_memory_capacity_adjustment_factor
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the memory capacity adjustment factor for
|
||||
@ -477,6 +524,7 @@ Description: This file shows the memory capacity adjustment factor for
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/health_descriptor/eol_info
|
||||
What: /sys/bus/platform/devices/*.ufs/health_descriptor/eol_info
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows preend of life information. This is one
|
||||
@ -487,6 +535,7 @@ Description: This file shows preend of life information. This is one
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/health_descriptor/life_time_estimation_a
|
||||
What: /sys/bus/platform/devices/*.ufs/health_descriptor/life_time_estimation_a
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows indication of the device life time
|
||||
@ -497,6 +546,7 @@ Description: This file shows indication of the device life time
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/health_descriptor/life_time_estimation_b
|
||||
What: /sys/bus/platform/devices/*.ufs/health_descriptor/life_time_estimation_b
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows indication of the device life time
|
||||
@ -508,6 +558,7 @@ Description: This file shows indication of the device life time
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/power_descriptor/active_icc_levels_vcc*
|
||||
What: /sys/bus/platform/devices/*.ufs/power_descriptor/active_icc_levels_vcc*
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows maximum VCC, VCCQ and VCCQ2 value for
|
||||
@ -519,6 +570,7 @@ Description: This file shows maximum VCC, VCCQ and VCCQ2 value for
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/string_descriptors/manufacturer_name
|
||||
What: /sys/bus/platform/devices/*.ufs/string_descriptors/manufacturer_name
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file contains a device manufacturer name string.
|
||||
@ -528,6 +580,7 @@ Description: This file contains a device manufacturer name string.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/string_descriptors/product_name
|
||||
What: /sys/bus/platform/devices/*.ufs/string_descriptors/product_name
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file contains a product name string. The full information
|
||||
@ -536,6 +589,7 @@ Description: This file contains a product name string. The full information
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/string_descriptors/oem_id
|
||||
What: /sys/bus/platform/devices/*.ufs/string_descriptors/oem_id
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file contains a OEM ID string. The full information
|
||||
@ -544,6 +598,7 @@ Description: This file contains a OEM ID string. The full information
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/string_descriptors/serial_number
|
||||
What: /sys/bus/platform/devices/*.ufs/string_descriptors/serial_number
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file contains a device serial number string. The full
|
||||
@ -553,6 +608,7 @@ Description: This file contains a device serial number string. The full
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/string_descriptors/product_revision
|
||||
What: /sys/bus/platform/devices/*.ufs/string_descriptors/product_revision
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file contains a product revision string. The full
|
||||
@ -684,6 +740,7 @@ Description: This file shows the granularity of the LUN. This is one of
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/device_init
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/device_init
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the device init status. The full information
|
||||
@ -692,6 +749,7 @@ Description: This file shows the device init status. The full information
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/permanent_wpe
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/permanent_wpe
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether permanent write protection is enabled.
|
||||
@ -701,6 +759,7 @@ Description: This file shows whether permanent write protection is enabled.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/power_on_wpe
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/power_on_wpe
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether write protection is enabled on all
|
||||
@ -711,6 +770,7 @@ Description: This file shows whether write protection is enabled on all
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/bkops_enable
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/bkops_enable
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether the device background operations are
|
||||
@ -720,6 +780,7 @@ Description: This file shows whether the device background operations are
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/life_span_mode_enable
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/life_span_mode_enable
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether the device life span mode is enabled.
|
||||
@ -729,6 +790,7 @@ Description: This file shows whether the device life span mode is enabled.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/phy_resource_removal
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/phy_resource_removal
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether physical resource removal is enable.
|
||||
@ -738,6 +800,7 @@ Description: This file shows whether physical resource removal is enable.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/busy_rtc
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/busy_rtc
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether the device is executing internal
|
||||
@ -747,6 +810,7 @@ Description: This file shows whether the device is executing internal
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/disable_fw_update
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/disable_fw_update
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether the device FW update is permanently
|
||||
@ -757,6 +821,7 @@ Description: This file shows whether the device FW update is permanently
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/boot_lun_enabled
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/boot_lun_enabled
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the boot lun enabled UFS device attribute.
|
||||
@ -766,6 +831,7 @@ Description: This file provides the boot lun enabled UFS device attribute.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/current_power_mode
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/current_power_mode
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the current power mode UFS device attribute.
|
||||
@ -775,6 +841,7 @@ Description: This file provides the current power mode UFS device attribute.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/active_icc_level
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/active_icc_level
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the active icc level UFS device attribute.
|
||||
@ -784,6 +851,7 @@ Description: This file provides the active icc level UFS device attribute.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/ooo_data_enabled
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/ooo_data_enabled
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the out of order data transfer enabled UFS
|
||||
@ -793,6 +861,7 @@ Description: This file provides the out of order data transfer enabled UFS
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/bkops_status
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/bkops_status
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the background operations status UFS device
|
||||
@ -802,6 +871,7 @@ Description: This file provides the background operations status UFS device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/purge_status
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/purge_status
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the purge operation status UFS device
|
||||
@ -811,6 +881,7 @@ Description: This file provides the purge operation status UFS device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/max_data_in_size
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/max_data_in_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum data size in a DATA IN
|
||||
@ -820,6 +891,7 @@ Description: This file shows the maximum data size in a DATA IN
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/max_data_out_size
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/max_data_out_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the maximum number of bytes that can be
|
||||
@ -829,6 +901,7 @@ Description: This file shows the maximum number of bytes that can be
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/reference_clock_frequency
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/reference_clock_frequency
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the reference clock frequency UFS device
|
||||
@ -838,6 +911,7 @@ Description: This file provides the reference clock frequency UFS device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/configuration_descriptor_lock
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/configuration_descriptor_lock
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows whether the configuration descriptor is locked.
|
||||
@ -845,6 +919,7 @@ Description: This file shows whether the configuration descriptor is locked.
|
||||
UFS specifications 2.1. The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/max_number_of_rtt
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/max_number_of_rtt
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the maximum current number of
|
||||
@ -855,6 +930,7 @@ Description: This file provides the maximum current number of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/exception_event_control
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/exception_event_control
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the exception event control UFS device
|
||||
@ -864,6 +940,7 @@ Description: This file provides the exception event control UFS device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/exception_event_status
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/exception_event_status
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the exception event status UFS device
|
||||
@ -873,6 +950,7 @@ Description: This file provides the exception event status UFS device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/ffu_status
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/ffu_status
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file provides the ffu status UFS device attribute.
|
||||
@ -882,6 +960,7 @@ Description: This file provides the ffu status UFS device attribute.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/psa_state
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/psa_state
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file show the PSA feature status. The full information
|
||||
@ -890,6 +969,7 @@ Description: This file show the PSA feature status. The full information
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/psa_data_size
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/psa_data_size
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the amount of data that the host plans to
|
||||
@ -912,6 +992,7 @@ Description: This file shows the The amount of physical memory needed
|
||||
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/rpm_lvl
|
||||
What: /sys/bus/platform/devices/*.ufs/rpm_lvl
|
||||
Date: September 2014
|
||||
Contact: Subhash Jadavani <subhashj@codeaurora.org>
|
||||
Description: This entry could be used to set or show the UFS device
|
||||
@ -938,6 +1019,7 @@ Description: This entry could be used to set or show the UFS device
|
||||
== ====================================================
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/rpm_target_dev_state
|
||||
What: /sys/bus/platform/devices/*.ufs/rpm_target_dev_state
|
||||
Date: February 2018
|
||||
Contact: Subhash Jadavani <subhashj@codeaurora.org>
|
||||
Description: This entry shows the target power mode of an UFS device
|
||||
@ -946,6 +1028,7 @@ Description: This entry shows the target power mode of an UFS device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/rpm_target_link_state
|
||||
What: /sys/bus/platform/devices/*.ufs/rpm_target_link_state
|
||||
Date: February 2018
|
||||
Contact: Subhash Jadavani <subhashj@codeaurora.org>
|
||||
Description: This entry shows the target state of an UFS UIC link
|
||||
@ -954,6 +1037,7 @@ Description: This entry shows the target state of an UFS UIC link
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/spm_lvl
|
||||
What: /sys/bus/platform/devices/*.ufs/spm_lvl
|
||||
Date: September 2014
|
||||
Contact: Subhash Jadavani <subhashj@codeaurora.org>
|
||||
Description: This entry could be used to set or show the UFS device
|
||||
@ -980,6 +1064,7 @@ Description: This entry could be used to set or show the UFS device
|
||||
== ====================================================
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/spm_target_dev_state
|
||||
What: /sys/bus/platform/devices/*.ufs/spm_target_dev_state
|
||||
Date: February 2018
|
||||
Contact: Subhash Jadavani <subhashj@codeaurora.org>
|
||||
Description: This entry shows the target power mode of an UFS device
|
||||
@ -988,6 +1073,7 @@ Description: This entry shows the target power mode of an UFS device
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/spm_target_link_state
|
||||
What: /sys/bus/platform/devices/*.ufs/spm_target_link_state
|
||||
Date: February 2018
|
||||
Contact: Subhash Jadavani <subhashj@codeaurora.org>
|
||||
Description: This entry shows the target state of an UFS UIC link
|
||||
@ -996,6 +1082,7 @@ Description: This entry shows the target state of an UFS UIC link
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/monitor_enable
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/monitor_enable
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the status of performance monitor enablement
|
||||
@ -1003,6 +1090,7 @@ Description: This file shows the status of performance monitor enablement
|
||||
is stopped, the performance data collected is also cleared.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/monitor_chunk_size
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/monitor_chunk_size
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file tells the monitor to focus on requests transferring
|
||||
@ -1010,6 +1098,7 @@ Description: This file tells the monitor to focus on requests transferring
|
||||
It can only be changed when monitor is disabled.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/read_total_sectors
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/read_total_sectors
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows how many sectors (in 512 Bytes) have been
|
||||
@ -1018,6 +1107,7 @@ Description: This file shows how many sectors (in 512 Bytes) have been
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/read_total_busy
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/read_total_busy
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows how long (in micro seconds) has been spent
|
||||
@ -1026,6 +1116,7 @@ Description: This file shows how long (in micro seconds) has been spent
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/read_nr_requests
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/read_nr_requests
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows how many read requests have been sent after
|
||||
@ -1034,6 +1125,7 @@ Description: This file shows how many read requests have been sent after
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/read_req_latency_max
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/read_req_latency_max
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the maximum latency (in micro seconds) of
|
||||
@ -1042,6 +1134,7 @@ Description: This file shows the maximum latency (in micro seconds) of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/read_req_latency_min
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/read_req_latency_min
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the minimum latency (in micro seconds) of
|
||||
@ -1050,6 +1143,7 @@ Description: This file shows the minimum latency (in micro seconds) of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/read_req_latency_avg
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/read_req_latency_avg
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the average latency (in micro seconds) of
|
||||
@ -1058,6 +1152,7 @@ Description: This file shows the average latency (in micro seconds) of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/read_req_latency_sum
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/read_req_latency_sum
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the total latency (in micro seconds) of
|
||||
@ -1066,6 +1161,7 @@ Description: This file shows the total latency (in micro seconds) of
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/write_total_sectors
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/write_total_sectors
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows how many sectors (in 512 Bytes) have been sent
|
||||
@ -1074,6 +1170,7 @@ Description: This file shows how many sectors (in 512 Bytes) have been sent
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/write_total_busy
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/write_total_busy
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows how long (in micro seconds) has been spent
|
||||
@ -1082,6 +1179,7 @@ Description: This file shows how long (in micro seconds) has been spent
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/write_nr_requests
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/write_nr_requests
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows how many write requests have been sent after
|
||||
@ -1090,6 +1188,7 @@ Description: This file shows how many write requests have been sent after
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/write_req_latency_max
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/write_req_latency_max
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the maximum latency (in micro seconds) of write
|
||||
@ -1098,6 +1197,7 @@ Description: This file shows the maximum latency (in micro seconds) of write
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/write_req_latency_min
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/write_req_latency_min
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the minimum latency (in micro seconds) of write
|
||||
@ -1106,6 +1206,7 @@ Description: This file shows the minimum latency (in micro seconds) of write
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/write_req_latency_avg
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/write_req_latency_avg
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the average latency (in micro seconds) of write
|
||||
@ -1114,6 +1215,7 @@ Description: This file shows the average latency (in micro seconds) of write
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/write_req_latency_sum
|
||||
What: /sys/bus/platform/devices/*.ufs/monitor/write_req_latency_sum
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the total latency (in micro seconds) of write
|
||||
@ -1122,6 +1224,7 @@ Description: This file shows the total latency (in micro seconds) of write
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_presv_us_en
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/wb_presv_us_en
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows if preserve user-space was configured
|
||||
@ -1129,6 +1232,7 @@ Description: This entry shows if preserve user-space was configured
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_shared_alloc_units
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/wb_shared_alloc_units
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the shared allocated units of WB buffer
|
||||
@ -1136,6 +1240,7 @@ Description: This entry shows the shared allocated units of WB buffer
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_type
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/wb_type
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the configured WB type.
|
||||
@ -1144,6 +1249,7 @@ Description: This entry shows the configured WB type.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_buff_cap_adj
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/wb_buff_cap_adj
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the total user-space decrease in shared
|
||||
@ -1154,6 +1260,7 @@ Description: This entry shows the total user-space decrease in shared
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_max_alloc_units
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/wb_max_alloc_units
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the Maximum total WriteBooster Buffer size
|
||||
@ -1162,6 +1269,7 @@ Description: This entry shows the Maximum total WriteBooster Buffer size
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_max_wb_luns
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/wb_max_wb_luns
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the maximum number of luns that can support
|
||||
@ -1170,6 +1278,7 @@ Description: This entry shows the maximum number of luns that can support
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_sup_red_type
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/wb_sup_red_type
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: The supportability of user space reduction mode
|
||||
@ -1184,6 +1293,7 @@ Description: The supportability of user space reduction mode
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_sup_wb_type
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/wb_sup_wb_type
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: The supportability of WriteBooster Buffer type.
|
||||
@ -1198,6 +1308,7 @@ Description: The supportability of WriteBooster Buffer type.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/wb_enable
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/wb_enable
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the status of WriteBooster.
|
||||
@ -1210,6 +1321,7 @@ Description: This entry shows the status of WriteBooster.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/wb_flush_en
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/wb_flush_en
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows if flush is enabled.
|
||||
@ -1222,6 +1334,7 @@ Description: This entry shows if flush is enabled.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/wb_flush_during_h8
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/wb_flush_during_h8
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: Flush WriteBooster Buffer during hibernate state.
|
||||
@ -1236,6 +1349,7 @@ Description: Flush WriteBooster Buffer during hibernate state.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_avail_buf
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/wb_avail_buf
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the amount of unused WriteBooster buffer
|
||||
@ -1244,6 +1358,7 @@ Description: This entry shows the amount of unused WriteBooster buffer
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_cur_buf
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/wb_cur_buf
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the amount of unused current buffer.
|
||||
@ -1251,6 +1366,7 @@ Description: This entry shows the amount of unused current buffer.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_flush_status
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/wb_flush_status
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows the flush operation status.
|
||||
@ -1267,6 +1383,7 @@ Description: This entry shows the flush operation status.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_life_time_est
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/wb_life_time_est
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
Description: This entry shows an indication of the WriteBooster Buffer
|
||||
@ -1289,6 +1406,7 @@ Description: This entry shows the configured size of WriteBooster buffer.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/wb_on
|
||||
What: /sys/bus/platform/devices/*.ufs/wb_on
|
||||
Date: January 2021
|
||||
Contact: Bean Huo <beanhuo@micron.com>
|
||||
Description: This node is used to set or display whether UFS WriteBooster is
|
||||
@ -1300,6 +1418,7 @@ Description: This node is used to set or display whether UFS WriteBooster is
|
||||
disable/enable WriteBooster through this sysfs node.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/hpb_version
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/hpb_version
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows the HPB specification version.
|
||||
@ -1310,6 +1429,7 @@ Description: This entry shows the HPB specification version.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/hpb_control
|
||||
What: /sys/bus/platform/devices/*.ufs/device_descriptor/hpb_control
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows an indication of the HPB control mode.
|
||||
@ -1319,6 +1439,7 @@ Description: This entry shows an indication of the HPB control mode.
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_region_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_region_size
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows the bHPBRegionSize which can be calculated
|
||||
@ -1328,6 +1449,7 @@ Description: This entry shows the bHPBRegionSize which can be calculated
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_number_lu
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_number_lu
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows the maximum number of HPB LU supported by
|
||||
@ -1338,6 +1460,7 @@ Description: This entry shows the maximum number of HPB LU supported by
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_subregion_size
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_subregion_size
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows the bHPBSubRegionSize, which can be
|
||||
@ -1349,6 +1472,7 @@ Description: This entry shows the bHPBSubRegionSize, which can be
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/hpb_max_active_regions
|
||||
What: /sys/bus/platform/devices/*.ufs/geometry_descriptor/hpb_max_active_regions
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows the maximum number of active HPB regions that
|
||||
@ -1434,6 +1558,7 @@ Description: This entry shows the requeue timeout threshold for write buffer
|
||||
this entry.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/attributes/max_data_size_hpb_single_cmd
|
||||
What: /sys/bus/platform/devices/*.ufs/attributes/max_data_size_hpb_single_cmd
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows the maximum HPB data size for using a single HPB
|
||||
@ -1450,6 +1575,7 @@ Description: This entry shows the maximum HPB data size for using a single HPB
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/flags/hpb_enable
|
||||
What: /sys/bus/platform/devices/*.ufs/flags/hpb_enable
|
||||
Date: June 2021
|
||||
Contact: Daejun Park <daejun7.park@samsung.com>
|
||||
Description: This entry shows the status of HPB.
|
||||
|
@ -24,14 +24,14 @@ Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: The version of the ESRT structure provided by the firmware.
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: Each ESRT entry is identified by a GUID, and each gets a
|
||||
subdirectory under entries/ .
|
||||
example: /sys/firmware/efi/esrt/entries/entry0/
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/fw_type
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/fw_type
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: What kind of firmware entry this is:
|
||||
@ -43,33 +43,33 @@ Description: What kind of firmware entry this is:
|
||||
3 UEFI Driver
|
||||
== ===============
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/fw_class
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/fw_class
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: This is the entry's guid, and will match the directory name.
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/fw_version
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/fw_version
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: The version of the firmware currently installed. This is a
|
||||
32-bit unsigned integer.
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/lowest_supported_fw_version
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/lowest_supported_fw_version
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: The lowest version of the firmware that can be installed.
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/capsule_flags
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/capsule_flags
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: Flags that must be passed to UpdateCapsule()
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/last_attempt_version
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/last_attempt_version
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: The last firmware version for which an update was attempted.
|
||||
|
||||
What: /sys/firmware/efi/esrt/entries/entry$N/last_attempt_status
|
||||
What: /sys/firmware/efi/esrt/entries/entry<N>/last_attempt_status
|
||||
Date: February 2015
|
||||
Contact: Peter Jones <pjones@redhat.com>
|
||||
Description: The result of the last firmware update attempt for the
|
||||
|
@ -10,7 +10,7 @@ Description:
|
||||
any cache it aliases, if any).
|
||||
Users: kernel memory tuning tools
|
||||
|
||||
What: /sys/kernel/slab/cache/aliases
|
||||
What: /sys/kernel/slab/<cache>/aliases
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -19,7 +19,7 @@ Description:
|
||||
The aliases file is read-only and specifies how many caches
|
||||
have merged into this cache.
|
||||
|
||||
What: /sys/kernel/slab/cache/align
|
||||
What: /sys/kernel/slab/<cache>/align
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -28,7 +28,7 @@ Description:
|
||||
The align file is read-only and specifies the cache's object
|
||||
alignment in bytes.
|
||||
|
||||
What: /sys/kernel/slab/cache/alloc_calls
|
||||
What: /sys/kernel/slab/<cache>/alloc_calls
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -39,7 +39,7 @@ Description:
|
||||
The alloc_calls file only contains information if debugging is
|
||||
enabled for that cache (see Documentation/vm/slub.rst).
|
||||
|
||||
What: /sys/kernel/slab/cache/alloc_fastpath
|
||||
What: /sys/kernel/slab/<cache>/alloc_fastpath
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -50,7 +50,7 @@ Description:
|
||||
current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/alloc_from_partial
|
||||
What: /sys/kernel/slab/<cache>/alloc_from_partial
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -62,7 +62,7 @@ Description:
|
||||
count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/alloc_refill
|
||||
What: /sys/kernel/slab/<cache>/alloc_refill
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -73,7 +73,7 @@ Description:
|
||||
remote cpu frees. It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/alloc_slab
|
||||
What: /sys/kernel/slab/<cache>/alloc_slab
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -84,7 +84,7 @@ Description:
|
||||
clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/alloc_slowpath
|
||||
What: /sys/kernel/slab/<cache>/alloc_slowpath
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -96,7 +96,7 @@ Description:
|
||||
clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/cache_dma
|
||||
What: /sys/kernel/slab/<cache>/cache_dma
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -106,7 +106,7 @@ Description:
|
||||
are from ZONE_DMA.
|
||||
Available when CONFIG_ZONE_DMA is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/cpu_slabs
|
||||
What: /sys/kernel/slab/<cache>/cpu_slabs
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -115,7 +115,7 @@ Description:
|
||||
The cpu_slabs file is read-only and displays how many cpu slabs
|
||||
are active and their NUMA locality.
|
||||
|
||||
What: /sys/kernel/slab/cache/cpuslab_flush
|
||||
What: /sys/kernel/slab/<cache>/cpuslab_flush
|
||||
Date: April 2009
|
||||
KernelVersion: 2.6.31
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -128,7 +128,7 @@ Description:
|
||||
current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/ctor
|
||||
What: /sys/kernel/slab/<cache>/ctor
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -138,7 +138,7 @@ Description:
|
||||
constructor function, which is invoked for each object when a
|
||||
new slab is allocated.
|
||||
|
||||
What: /sys/kernel/slab/cache/deactivate_empty
|
||||
What: /sys/kernel/slab/<cache>/deactivate_empty
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -148,7 +148,7 @@ Description:
|
||||
was deactivated. It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/deactivate_full
|
||||
What: /sys/kernel/slab/<cache>/deactivate_full
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -158,7 +158,7 @@ Description:
|
||||
was deactivated. It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/deactivate_remote_frees
|
||||
What: /sys/kernel/slab/<cache>/deactivate_remote_frees
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -169,7 +169,7 @@ Description:
|
||||
remotely. It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/deactivate_to_head
|
||||
What: /sys/kernel/slab/<cache>/deactivate_to_head
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -180,7 +180,7 @@ Description:
|
||||
list. It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/deactivate_to_tail
|
||||
What: /sys/kernel/slab/<cache>/deactivate_to_tail
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -191,7 +191,7 @@ Description:
|
||||
list. It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/destroy_by_rcu
|
||||
What: /sys/kernel/slab/<cache>/destroy_by_rcu
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -200,7 +200,7 @@ Description:
|
||||
The destroy_by_rcu file is read-only and specifies whether
|
||||
slabs (not objects) are freed by rcu.
|
||||
|
||||
What: /sys/kernel/slab/cache/free_add_partial
|
||||
What: /sys/kernel/slab/<cache>/free_add_partial
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -211,7 +211,7 @@ Description:
|
||||
partial list. It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/free_calls
|
||||
What: /sys/kernel/slab/<cache>/free_calls
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -221,7 +221,7 @@ Description:
|
||||
object frees if slab debugging is enabled (see
|
||||
Documentation/vm/slub.rst).
|
||||
|
||||
What: /sys/kernel/slab/cache/free_fastpath
|
||||
What: /sys/kernel/slab/<cache>/free_fastpath
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -232,7 +232,7 @@ Description:
|
||||
It can be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/free_frozen
|
||||
What: /sys/kernel/slab/<cache>/free_frozen
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -243,7 +243,7 @@ Description:
|
||||
clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/free_remove_partial
|
||||
What: /sys/kernel/slab/<cache>/free_remove_partial
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -255,7 +255,7 @@ Description:
|
||||
count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/free_slab
|
||||
What: /sys/kernel/slab/<cache>/free_slab
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -266,7 +266,7 @@ Description:
|
||||
the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/free_slowpath
|
||||
What: /sys/kernel/slab/<cache>/free_slowpath
|
||||
Date: February 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -277,7 +277,7 @@ Description:
|
||||
be written to clear the current count.
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/hwcache_align
|
||||
What: /sys/kernel/slab/<cache>/hwcache_align
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -286,7 +286,7 @@ Description:
|
||||
The hwcache_align file is read-only and specifies whether
|
||||
objects are aligned on cachelines.
|
||||
|
||||
What: /sys/kernel/slab/cache/min_partial
|
||||
What: /sys/kernel/slab/<cache>/min_partial
|
||||
Date: February 2009
|
||||
KernelVersion: 2.6.30
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -297,7 +297,7 @@ Description:
|
||||
allocating new slabs. Such slabs may be reclaimed by utilizing
|
||||
the shrink file.
|
||||
|
||||
What: /sys/kernel/slab/cache/object_size
|
||||
What: /sys/kernel/slab/<cache>/object_size
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -306,7 +306,7 @@ Description:
|
||||
The object_size file is read-only and specifies the cache's
|
||||
object size.
|
||||
|
||||
What: /sys/kernel/slab/cache/objects
|
||||
What: /sys/kernel/slab/<cache>/objects
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -315,7 +315,7 @@ Description:
|
||||
The objects file is read-only and displays how many objects are
|
||||
active and from which nodes they are from.
|
||||
|
||||
What: /sys/kernel/slab/cache/objects_partial
|
||||
What: /sys/kernel/slab/<cache>/objects_partial
|
||||
Date: April 2008
|
||||
KernelVersion: 2.6.26
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -325,7 +325,7 @@ Description:
|
||||
objects are on partial slabs and from which nodes they are
|
||||
from.
|
||||
|
||||
What: /sys/kernel/slab/cache/objs_per_slab
|
||||
What: /sys/kernel/slab/<cache>/objs_per_slab
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -333,9 +333,9 @@ Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
Description:
|
||||
The file objs_per_slab is read-only and specifies how many
|
||||
objects may be allocated from a single slab of the order
|
||||
specified in /sys/kernel/slab/cache/order.
|
||||
specified in /sys/kernel/slab/<cache>/order.
|
||||
|
||||
What: /sys/kernel/slab/cache/order
|
||||
What: /sys/kernel/slab/<cache>/order
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -352,7 +352,7 @@ Description:
|
||||
order is used and this sysfs entry can not be used to change
|
||||
the order at run time.
|
||||
|
||||
What: /sys/kernel/slab/cache/order_fallback
|
||||
What: /sys/kernel/slab/<cache>/order_fallback
|
||||
Date: April 2008
|
||||
KernelVersion: 2.6.26
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -365,7 +365,7 @@ Description:
|
||||
|
||||
Available when CONFIG_SLUB_STATS is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/partial
|
||||
What: /sys/kernel/slab/<cache>/partial
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -374,7 +374,7 @@ Description:
|
||||
The partial file is read-only and displays how long many
|
||||
partial slabs there are and how long each node's list is.
|
||||
|
||||
What: /sys/kernel/slab/cache/poison
|
||||
What: /sys/kernel/slab/<cache>/poison
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -383,7 +383,7 @@ Description:
|
||||
The poison file specifies whether objects should be poisoned
|
||||
when a new slab is allocated.
|
||||
|
||||
What: /sys/kernel/slab/cache/reclaim_account
|
||||
What: /sys/kernel/slab/<cache>/reclaim_account
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -392,7 +392,7 @@ Description:
|
||||
The reclaim_account file specifies whether the cache's objects
|
||||
are reclaimable (and grouped by their mobility).
|
||||
|
||||
What: /sys/kernel/slab/cache/red_zone
|
||||
What: /sys/kernel/slab/<cache>/red_zone
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -401,7 +401,7 @@ Description:
|
||||
The red_zone file specifies whether the cache's objects are red
|
||||
zoned.
|
||||
|
||||
What: /sys/kernel/slab/cache/remote_node_defrag_ratio
|
||||
What: /sys/kernel/slab/<cache>/remote_node_defrag_ratio
|
||||
Date: January 2008
|
||||
KernelVersion: 2.6.25
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -415,7 +415,7 @@ Description:
|
||||
|
||||
Available when CONFIG_NUMA is enabled.
|
||||
|
||||
What: /sys/kernel/slab/cache/sanity_checks
|
||||
What: /sys/kernel/slab/<cache>/sanity_checks
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -426,7 +426,7 @@ Description:
|
||||
checks. Caches that enable sanity_checks cannot be merged with
|
||||
caches that do not.
|
||||
|
||||
What: /sys/kernel/slab/cache/shrink
|
||||
What: /sys/kernel/slab/<cache>/shrink
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -442,7 +442,7 @@ Description:
|
||||
adversely impact other running applications. So it
|
||||
should be used with care.
|
||||
|
||||
What: /sys/kernel/slab/cache/slab_size
|
||||
What: /sys/kernel/slab/<cache>/slab_size
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -451,7 +451,7 @@ Description:
|
||||
The slab_size file is read-only and specifies the object size
|
||||
with metadata (debugging information and alignment) in bytes.
|
||||
|
||||
What: /sys/kernel/slab/cache/slabs
|
||||
What: /sys/kernel/slab/<cache>/slabs
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -461,7 +461,7 @@ Description:
|
||||
there are (both cpu and partial) and from which nodes they are
|
||||
from.
|
||||
|
||||
What: /sys/kernel/slab/cache/store_user
|
||||
What: /sys/kernel/slab/<cache>/store_user
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -470,7 +470,7 @@ Description:
|
||||
The store_user file specifies whether the location of
|
||||
allocation or free should be tracked for a cache.
|
||||
|
||||
What: /sys/kernel/slab/cache/total_objects
|
||||
What: /sys/kernel/slab/<cache>/total_objects
|
||||
Date: April 2008
|
||||
KernelVersion: 2.6.26
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -479,7 +479,7 @@ Description:
|
||||
The total_objects file is read-only and displays how many total
|
||||
objects a cache has and from which nodes they are from.
|
||||
|
||||
What: /sys/kernel/slab/cache/trace
|
||||
What: /sys/kernel/slab/<cache>/trace
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -488,7 +488,7 @@ Description:
|
||||
The trace file specifies whether object allocations and frees
|
||||
should be traced.
|
||||
|
||||
What: /sys/kernel/slab/cache/validate
|
||||
What: /sys/kernel/slab/<cache>/validate
|
||||
Date: May 2007
|
||||
KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
@ -496,3 +496,24 @@ Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
Description:
|
||||
Writing to the validate file causes SLUB to traverse all of its
|
||||
cache's objects and check the validity of metadata.
|
||||
|
||||
What: /sys/kernel/slab/<cache>/usersize
|
||||
Date: Jun 2017
|
||||
Contact: David Windsor <dave@nullcore.net>
|
||||
Description:
|
||||
The usersize file is read-only and contains the usercopy
|
||||
region size.
|
||||
|
||||
What: /sys/kernel/slab/<cache>/slabs_cpu_partial
|
||||
Date: Aug 2011
|
||||
Contact: Christoph Lameter <cl@linux.com>
|
||||
Description:
|
||||
This read-only file shows the number of partialli allocated
|
||||
frozen slabs.
|
||||
|
||||
What: /sys/kernel/slab/<cache>/cpu_partial
|
||||
Date: Aug 2011
|
||||
Contact: Christoph Lameter <cl@linux.com>
|
||||
Description:
|
||||
This read-only file shows the number of per cpu partial
|
||||
pages to keep around.
|
||||
|
129
Documentation/ABI/testing/sysfs-mce
Normal file
129
Documentation/ABI/testing/sysfs-mce
Normal file
@ -0,0 +1,129 @@
|
||||
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
|
||||
|
||||
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.
|
@ -41,6 +41,13 @@ KernelVersion: 3.3
|
||||
Contact: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Description: Module size in bytes.
|
||||
|
||||
What: /sys/module/*/initstate
|
||||
Date: Nov 2006
|
||||
KernelVersion: 2.6.19
|
||||
Contact: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Description: Show the initialization state(live, coming, going) of
|
||||
the module.
|
||||
|
||||
What: /sys/module/*/taint
|
||||
Date: Jan 2012
|
||||
KernelVersion: 3.3
|
||||
|
@ -133,7 +133,10 @@ Contact: linux-acpi@vger.kernel.org
|
||||
Description:
|
||||
(RO) Presents SSC (spread spectrum clock) information for EMI
|
||||
(Electro magnetic interference) control. This is a bit mask.
|
||||
|
||||
======= ==========================================
|
||||
Bits Description
|
||||
======= ==========================================
|
||||
[7:0] Sets clock spectrum spread percentage:
|
||||
0x00=0.2% , 0x3F=10%
|
||||
1 LSB = 0.1% increase in spread (for
|
||||
@ -151,3 +154,4 @@ Description:
|
||||
[10] 0: No white noise. 1: Add white noise
|
||||
to spread waveform
|
||||
[11] When 1, future writes are ignored.
|
||||
======= ==========================================
|
||||
|
@ -1,4 +1,4 @@
|
||||
What: /sys/devices/platform/8086%x:00/firmware_version
|
||||
What: /sys/devices/platform/8086<x>:00/firmware_version
|
||||
Date: November 2016
|
||||
KernelVersion: 4.10
|
||||
Contact: "Sebastien Guiriec" <sebastien.guiriec@intel.com>
|
||||
|
@ -6,7 +6,7 @@ Description:
|
||||
providing a standardized interface to the ancillary
|
||||
features of PTP hardware clocks.
|
||||
|
||||
What: /sys/class/ptp/ptpN/
|
||||
What: /sys/class/ptp/ptp<N>/
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -14,7 +14,7 @@ Description:
|
||||
hardware clock registered into the PTP class driver
|
||||
subsystem.
|
||||
|
||||
What: /sys/class/ptp/ptpN/clock_name
|
||||
What: /sys/class/ptp/ptp<N>/clock_name
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -25,7 +25,7 @@ Description:
|
||||
MAC based ones. The string does not necessarily have
|
||||
to be any kind of unique id.
|
||||
|
||||
What: /sys/class/ptp/ptpN/max_adjustment
|
||||
What: /sys/class/ptp/ptp<N>/max_adjustment
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -33,42 +33,42 @@ Description:
|
||||
frequency adjustment value (a positive integer) in
|
||||
parts per billion.
|
||||
|
||||
What: /sys/class/ptp/ptpN/max_vclocks
|
||||
What: /sys/class/ptp/ptp<N>/max_vclocks
|
||||
Date: May 2021
|
||||
Contact: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
Description:
|
||||
This file contains the maximum number of ptp vclocks.
|
||||
Write integer to re-configure it.
|
||||
|
||||
What: /sys/class/ptp/ptpN/n_alarms
|
||||
What: /sys/class/ptp/ptp<N>/n_alarms
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
This file contains the number of periodic or one shot
|
||||
alarms offer by the PTP hardware clock.
|
||||
|
||||
What: /sys/class/ptp/ptpN/n_external_timestamps
|
||||
What: /sys/class/ptp/ptp<N>/n_external_timestamps
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
This file contains the number of external timestamp
|
||||
channels offered by the PTP hardware clock.
|
||||
|
||||
What: /sys/class/ptp/ptpN/n_periodic_outputs
|
||||
What: /sys/class/ptp/ptp<N>/n_periodic_outputs
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
This file contains the number of programmable periodic
|
||||
output channels offered by the PTP hardware clock.
|
||||
|
||||
What: /sys/class/ptp/ptpN/n_pins
|
||||
What: /sys/class/ptp/ptp<N>/n_pins
|
||||
Date: March 2014
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
This file contains the number of programmable pins
|
||||
offered by the PTP hardware clock.
|
||||
|
||||
What: /sys/class/ptp/ptpN/n_vclocks
|
||||
What: /sys/class/ptp/ptp<N>/n_vclocks
|
||||
Date: May 2021
|
||||
Contact: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
Description:
|
||||
@ -81,7 +81,7 @@ Description:
|
||||
switches the physical clock back to normal, adjustable
|
||||
operation.
|
||||
|
||||
What: /sys/class/ptp/ptpN/pins
|
||||
What: /sys/class/ptp/ptp<N>/pins
|
||||
Date: March 2014
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -94,7 +94,7 @@ Description:
|
||||
assignment may be changed by two writing numbers into
|
||||
the file.
|
||||
|
||||
What: /sys/class/ptp/ptpN/pps_available
|
||||
What: /sys/class/ptp/ptp<N>/pps_available
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -103,7 +103,7 @@ Description:
|
||||
"1" means that the PPS is supported, while "0" means
|
||||
not supported.
|
||||
|
||||
What: /sys/class/ptp/ptpN/extts_enable
|
||||
What: /sys/class/ptp/ptp<N>/extts_enable
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -113,7 +113,7 @@ Description:
|
||||
To disable external timestamps, write the channel
|
||||
index followed by a "0" into the file.
|
||||
|
||||
What: /sys/class/ptp/ptpN/fifo
|
||||
What: /sys/class/ptp/ptp<N>/fifo
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -121,7 +121,7 @@ Description:
|
||||
the form of three integers: channel index, seconds,
|
||||
and nanoseconds.
|
||||
|
||||
What: /sys/class/ptp/ptpN/period
|
||||
What: /sys/class/ptp/ptp<N>/period
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
@ -132,7 +132,7 @@ Description:
|
||||
period nanoseconds. To disable a periodic output, set
|
||||
all the seconds and nanoseconds values to zero.
|
||||
|
||||
What: /sys/class/ptp/ptpN/pps_enable
|
||||
What: /sys/class/ptp/ptp<N>/pps_enable
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
Description:
|
||||
|
@ -9,7 +9,7 @@ Description:
|
||||
The file supports poll() to detect virtual
|
||||
console switches.
|
||||
|
||||
What: /sys/class/tty/tty0/active
|
||||
What: /sys/class/tty/tty<x>/active
|
||||
Date: Nov 2010
|
||||
Contact: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Description:
|
||||
@ -18,7 +18,7 @@ Description:
|
||||
The file supports poll() to detect virtual
|
||||
console switches.
|
||||
|
||||
What: /sys/class/tty/ttyS0/uartclk
|
||||
What: /sys/class/tty/ttyS<x>/uartclk
|
||||
Date: Sep 2012
|
||||
Contact: Tomas Hlavacek <tmshlvck@gmail.com>
|
||||
Description:
|
||||
@ -29,7 +29,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/type
|
||||
What: /sys/class/tty/ttyS<x>/type
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -38,7 +38,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/line
|
||||
What: /sys/class/tty/ttyS<x>/line
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -47,7 +47,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/port
|
||||
What: /sys/class/tty/ttyS<x>/port
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -56,7 +56,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/irq
|
||||
What: /sys/class/tty/ttyS<x>/irq
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -65,7 +65,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/flags
|
||||
What: /sys/class/tty/ttyS<x>/flags
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -74,7 +74,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/xmit_fifo_size
|
||||
What: /sys/class/tty/ttyS<x>/xmit_fifo_size
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -83,7 +83,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/close_delay
|
||||
What: /sys/class/tty/ttyS<x>/close_delay
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -92,7 +92,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/closing_wait
|
||||
What: /sys/class/tty/ttyS<x>/closing_wait
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -101,7 +101,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/custom_divisor
|
||||
What: /sys/class/tty/ttyS<x>/custom_divisor
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -110,7 +110,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/io_type
|
||||
What: /sys/class/tty/ttyS<x>/io_type
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -120,7 +120,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/iomem_base
|
||||
What: /sys/class/tty/ttyS<x>/iomem_base
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -129,7 +129,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/iomem_reg_shift
|
||||
What: /sys/class/tty/ttyS<x>/iomem_reg_shift
|
||||
Date: October 2012
|
||||
Contact: Alan Cox <alan@linux.intel.com>
|
||||
Description:
|
||||
@ -139,7 +139,7 @@ Description:
|
||||
These sysfs values expose the TIOCGSERIAL interface via
|
||||
sysfs rather than via ioctls.
|
||||
|
||||
What: /sys/class/tty/ttyS0/rx_trig_bytes
|
||||
What: /sys/class/tty/ttyS<x>/rx_trig_bytes
|
||||
Date: May 2014
|
||||
Contact: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com>
|
||||
Description:
|
||||
@ -155,7 +155,7 @@ Description:
|
||||
16550A, which has 1/4/8/14 bytes trigger, the RX trigger is
|
||||
automatically changed to 4 bytes.
|
||||
|
||||
What: /sys/class/tty/ttyS0/console
|
||||
What: /sys/class/tty/ttyS<x>/console
|
||||
Date: February 2020
|
||||
Contact: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
Description:
|
||||
|
@ -249,8 +249,7 @@ Debug messages during Boot Process
|
||||
|
||||
To activate debug messages for core code and built-in modules during
|
||||
the boot process, even before userspace and debugfs exists, use
|
||||
``dyndbg="QUERY"``, ``module.dyndbg="QUERY"``, or ``ddebug_query="QUERY"``
|
||||
(``ddebug_query`` is obsoleted by ``dyndbg``, and deprecated). QUERY follows
|
||||
``dyndbg="QUERY"`` or ``module.dyndbg="QUERY"``. QUERY follows
|
||||
the syntax described above, but must not exceed 1023 characters. Your
|
||||
bootloader may impose lower limits.
|
||||
|
||||
@ -270,8 +269,7 @@ this boot parameter for debugging purposes.
|
||||
|
||||
If ``foo`` module is not built-in, ``foo.dyndbg`` will still be processed at
|
||||
boot time, without effect, but will be reprocessed when module is
|
||||
loaded later. ``ddebug_query=`` and bare ``dyndbg=`` are only processed at
|
||||
boot.
|
||||
loaded later. Bare ``dyndbg=`` is only processed at boot.
|
||||
|
||||
|
||||
Debug Messages at Module Initialization Time
|
||||
@ -358,8 +356,11 @@ Examples
|
||||
// boot-args example, with newlines and comments for readability
|
||||
Kernel command line: ...
|
||||
// see whats going on in dyndbg=value processing
|
||||
dynamic_debug.verbose=1
|
||||
// enable pr_debugs in 2 builtins, #cmt is stripped
|
||||
dyndbg="module params +p #cmt ; module sys +p"
|
||||
dynamic_debug.verbose=3
|
||||
// enable pr_debugs in the btrfs module (can be builtin or loadable)
|
||||
btrfs.dyndbg="+p"
|
||||
// enable pr_debugs in all files under init/
|
||||
// and the function parse_one, #cmt is stripped
|
||||
dyndbg="file init/* +p #cmt ; func parse_one +p"
|
||||
// enable pr_debugs in 2 functions in a module loaded later
|
||||
pc87360.dyndbg="func pc87360_init_device +p; func pc87360_find +p"
|
||||
|
@ -841,11 +841,6 @@
|
||||
Format: <port#>,<type>
|
||||
See also Documentation/input/devices/joystick-parport.rst
|
||||
|
||||
ddebug_query= [KNL,DYNAMIC_DEBUG] Enable debug messages at early boot
|
||||
time. See
|
||||
Documentation/admin-guide/dynamic-debug-howto.rst for
|
||||
details. Deprecated, see dyndbg.
|
||||
|
||||
debug [KNL] Enable kernel debugging (events log level).
|
||||
|
||||
debug_boot_weak_hash
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -8317,6 +8317,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/
|
||||
@ -20557,6 +20558,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
|
||||
|
@ -130,14 +130,11 @@ static inline unsigned int x86_cpuid_family(void)
|
||||
extern void __init load_ucode_bsp(void);
|
||||
extern void load_ucode_ap(void);
|
||||
void reload_early_microcode(void);
|
||||
extern bool get_builtin_firmware(struct cpio_data *cd, const char *name);
|
||||
extern bool initrd_gone;
|
||||
#else
|
||||
static inline void __init load_ucode_bsp(void) { }
|
||||
static inline void load_ucode_ap(void) { }
|
||||
static inline void reload_early_microcode(void) { }
|
||||
static inline bool
|
||||
get_builtin_firmware(struct cpio_data *cd, const char *name) { return false; }
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_X86_MICROCODE_H */
|
||||
|
@ -456,17 +456,23 @@ apply_microcode_early_amd(u32 cpuid_1_eax, void *ucode, size_t size, bool save_p
|
||||
|
||||
static bool get_builtin_microcode(struct cpio_data *cp, unsigned int family)
|
||||
{
|
||||
#ifdef CONFIG_X86_64
|
||||
char fw_name[36] = "amd-ucode/microcode_amd.bin";
|
||||
struct firmware fw;
|
||||
|
||||
if (IS_ENABLED(CONFIG_X86_32))
|
||||
return false;
|
||||
|
||||
if (family >= 0x15)
|
||||
snprintf(fw_name, sizeof(fw_name),
|
||||
"amd-ucode/microcode_amd_fam%.2xh.bin", family);
|
||||
|
||||
return get_builtin_firmware(cp, fw_name);
|
||||
#else
|
||||
if (firmware_request_builtin(&fw, fw_name)) {
|
||||
cp->size = fw.size;
|
||||
cp->data = (void *)fw.data;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void __load_ucode_amd(unsigned int cpuid_1_eax, struct cpio_data *ret)
|
||||
|
@ -140,23 +140,6 @@ static bool __init check_loader_disabled_bsp(void)
|
||||
return *res;
|
||||
}
|
||||
|
||||
extern struct builtin_fw __start_builtin_fw[];
|
||||
extern struct builtin_fw __end_builtin_fw[];
|
||||
|
||||
bool get_builtin_firmware(struct cpio_data *cd, const char *name)
|
||||
{
|
||||
struct builtin_fw *b_fw;
|
||||
|
||||
for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++) {
|
||||
if (!strcmp(name, b_fw->name)) {
|
||||
cd->size = b_fw->size;
|
||||
cd->data = b_fw->data;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void __init load_ucode_bsp(void)
|
||||
{
|
||||
unsigned int cpuid_1_eax;
|
||||
|
@ -456,6 +456,7 @@ static void save_mc_for_early(struct ucode_cpu_info *uci, u8 *mc, unsigned int s
|
||||
static bool load_builtin_intel_microcode(struct cpio_data *cp)
|
||||
{
|
||||
unsigned int eax = 1, ebx, ecx = 0, edx;
|
||||
struct firmware fw;
|
||||
char name[30];
|
||||
|
||||
if (IS_ENABLED(CONFIG_X86_32))
|
||||
@ -466,7 +467,13 @@ static bool load_builtin_intel_microcode(struct cpio_data *cp)
|
||||
sprintf(name, "intel-ucode/%02x-%02x-%02x",
|
||||
x86_family(eax), x86_model(eax), x86_stepping(eax));
|
||||
|
||||
return get_builtin_firmware(cp, name);
|
||||
if (firmware_request_builtin(&fw, name)) {
|
||||
cp->size = fw.size;
|
||||
cp->data = (void *)fw.data;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -68,7 +68,9 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
|
||||
"(__parainstructions|__alt_instructions)(_end)?|"
|
||||
"(__iommu_table|__apicdrivers|__smp_locks)(_end)?|"
|
||||
"__(start|end)_pci_.*|"
|
||||
#if CONFIG_FW_LOADER_BUILTIN
|
||||
"__(start|end)_builtin_fw|"
|
||||
#endif
|
||||
"__(start|stop)___ksymtab(_gpl)?|"
|
||||
"__(start|stop)___kcrctab(_gpl)?|"
|
||||
"__(start|stop)___param|"
|
||||
|
@ -12,15 +12,12 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/sched/topology.h>
|
||||
#include <linux/cpuset.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/percpu.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
static DEFINE_PER_CPU(struct scale_freq_data __rcu *, sft_data);
|
||||
static struct cpumask scale_freq_counters_mask;
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/component.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/slab.h>
|
||||
@ -246,7 +245,7 @@ static int try_to_bring_up_master(struct master *master,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!devres_open_group(master->parent, NULL, GFP_KERNEL))
|
||||
if (!devres_open_group(master->parent, master, GFP_KERNEL))
|
||||
return -ENOMEM;
|
||||
|
||||
/* Found all components */
|
||||
@ -258,6 +257,7 @@ static int try_to_bring_up_master(struct master *master,
|
||||
return ret;
|
||||
}
|
||||
|
||||
devres_close_group(master->parent, NULL);
|
||||
master->bound = true;
|
||||
return 1;
|
||||
}
|
||||
@ -282,7 +282,7 @@ static void take_down_master(struct master *master)
|
||||
{
|
||||
if (master->bound) {
|
||||
master->ops->unbind(master->parent);
|
||||
devres_release_group(master->parent, NULL);
|
||||
devres_release_group(master->parent, master);
|
||||
master->bound = false;
|
||||
}
|
||||
}
|
||||
|
@ -821,9 +821,7 @@ struct device_link *device_link_add(struct device *consumer,
|
||||
dev_bus_name(supplier), dev_name(supplier),
|
||||
dev_bus_name(consumer), dev_name(consumer));
|
||||
if (device_register(&link->link_dev)) {
|
||||
put_device(consumer);
|
||||
put_device(supplier);
|
||||
kfree(link);
|
||||
put_device(&link->link_dev);
|
||||
link = NULL;
|
||||
goto out;
|
||||
}
|
||||
@ -2875,7 +2873,7 @@ void device_initialize(struct device *dev)
|
||||
spin_lock_init(&dev->devres_lock);
|
||||
INIT_LIST_HEAD(&dev->devres_head);
|
||||
device_pm_init(dev);
|
||||
set_dev_node(dev, -1);
|
||||
set_dev_node(dev, NUMA_NO_NODE);
|
||||
#ifdef CONFIG_GENERIC_MSI_IRQ
|
||||
raw_spin_lock_init(&dev->msi_lock);
|
||||
INIT_LIST_HEAD(&dev->msi_list);
|
||||
@ -4690,6 +4688,11 @@ define_dev_printk_level(_dev_info, KERN_INFO);
|
||||
*
|
||||
* return dev_err_probe(dev, err, ...);
|
||||
*
|
||||
* Note that it is deemed acceptable to use this function for error
|
||||
* prints during probe even if the @err is known to never be -EPROBE_DEFER.
|
||||
* The benefit compared to a normal dev_err() is the standardized format
|
||||
* of the error code and the fact that the error code is returned.
|
||||
*
|
||||
* Returns @err.
|
||||
*
|
||||
*/
|
||||
@ -4835,6 +4838,12 @@ int device_match_acpi_dev(struct device *dev, const void *adev)
|
||||
}
|
||||
EXPORT_SYMBOL(device_match_acpi_dev);
|
||||
|
||||
int device_match_acpi_handle(struct device *dev, const void *handle)
|
||||
{
|
||||
return ACPI_HANDLE(dev) == handle;
|
||||
}
|
||||
EXPORT_SYMBOL(device_match_acpi_handle);
|
||||
|
||||
int device_match_any(struct device *dev, const void *unused)
|
||||
{
|
||||
return 1;
|
||||
|
@ -1,11 +1,13 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y += main.o
|
||||
|
||||
# Create $(fwdir) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
|
||||
# leading /, it's relative to $(srctree).
|
||||
fwdir := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE_DIR))
|
||||
fwdir := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
|
||||
|
||||
obj-y := $(addsuffix .gen.o, $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE)))
|
||||
firmware := $(addsuffix .gen.o, $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE)))
|
||||
obj-y += $(firmware)
|
||||
|
||||
FWNAME = $(patsubst $(obj)/%.gen.S,%,$@)
|
||||
FWSTR = $(subst $(comma),_,$(subst /,_,$(subst .,_,$(subst -,_,$(FWNAME)))))
|
||||
@ -34,7 +36,7 @@ $(obj)/%.gen.S: FORCE
|
||||
$(call filechk,fwbin)
|
||||
|
||||
# The .o files depend on the binaries directly; the .S files don't.
|
||||
$(addprefix $(obj)/, $(obj-y)): $(obj)/%.gen.o: $(fwdir)/%
|
||||
$(addprefix $(obj)/, $(firmware)): $(obj)/%.gen.o: $(fwdir)/%
|
||||
|
||||
targets := $(patsubst $(obj)/%,%, \
|
||||
$(shell find $(obj) -name \*.gen.S 2>/dev/null))
|
||||
|
106
drivers/base/firmware_loader/builtin/main.c
Normal file
106
drivers/base/firmware_loader/builtin/main.c
Normal file
@ -0,0 +1,106 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/* Builtin firmware support */
|
||||
|
||||
#include <linux/firmware.h>
|
||||
#include "../firmware.h"
|
||||
|
||||
/* Only if FW_LOADER=y */
|
||||
#ifdef CONFIG_FW_LOADER
|
||||
|
||||
struct builtin_fw {
|
||||
char *name;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
};
|
||||
|
||||
extern struct builtin_fw __start_builtin_fw[];
|
||||
extern struct builtin_fw __end_builtin_fw[];
|
||||
|
||||
static bool fw_copy_to_prealloc_buf(struct firmware *fw,
|
||||
void *buf, size_t size)
|
||||
{
|
||||
if (!buf)
|
||||
return true;
|
||||
if (size < fw->size)
|
||||
return false;
|
||||
memcpy(buf, fw->data, fw->size);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* firmware_request_builtin() - load builtin firmware
|
||||
* @fw: pointer to firmware struct
|
||||
* @name: name of firmware file
|
||||
*
|
||||
* Some use cases in the kernel have a requirement so that no memory allocator
|
||||
* is involved as these calls take place early in boot process. An example is
|
||||
* the x86 CPU microcode loader. In these cases all the caller wants is to see
|
||||
* if the firmware was built-in and if so use it right away. This can be used
|
||||
* for such cases.
|
||||
*
|
||||
* This looks for the firmware in the built-in kernel. Only if the kernel was
|
||||
* built-in with the firmware you are looking for will this return successfully.
|
||||
*
|
||||
* Callers of this API do not need to use release_firmware() as the pointer to
|
||||
* the firmware is expected to be provided locally on the stack of the caller.
|
||||
**/
|
||||
bool firmware_request_builtin(struct firmware *fw, const char *name)
|
||||
{
|
||||
struct builtin_fw *b_fw;
|
||||
|
||||
if (!fw)
|
||||
return false;
|
||||
|
||||
for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++) {
|
||||
if (strcmp(name, b_fw->name) == 0) {
|
||||
fw->size = b_fw->size;
|
||||
fw->data = b_fw->data;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(firmware_request_builtin, TEST_FIRMWARE);
|
||||
|
||||
/**
|
||||
* firmware_request_builtin_buf() - load builtin firmware into optional buffer
|
||||
* @fw: pointer to firmware struct
|
||||
* @name: name of firmware file
|
||||
* @buf: If set this lets you use a pre-allocated buffer so that the built-in
|
||||
* firmware into is copied into. This field can be NULL. It is used by
|
||||
* callers such as request_firmware_into_buf() and
|
||||
* request_partial_firmware_into_buf()
|
||||
* @size: if buf was provided, the max size of the allocated buffer available.
|
||||
* If the built-in firmware does not fit into the pre-allocated @buf this
|
||||
* call will fail.
|
||||
*
|
||||
* This looks for the firmware in the built-in kernel. Only if the kernel was
|
||||
* built-in with the firmware you are looking for will this call possibly
|
||||
* succeed. If you passed a @buf the firmware will be copied into it *iff* the
|
||||
* built-in firmware fits into the pre-allocated buffer size specified in
|
||||
* @size.
|
||||
*
|
||||
* This caller is to be used internally by the firmware_loader only.
|
||||
**/
|
||||
bool firmware_request_builtin_buf(struct firmware *fw, const char *name,
|
||||
void *buf, size_t size)
|
||||
{
|
||||
if (!firmware_request_builtin(fw, name))
|
||||
return false;
|
||||
|
||||
return fw_copy_to_prealloc_buf(fw, buf, size);
|
||||
}
|
||||
|
||||
bool firmware_is_builtin(const struct firmware *fw)
|
||||
{
|
||||
struct builtin_fw *b_fw;
|
||||
|
||||
for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++)
|
||||
if (fw->data == b_fw->data)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
@ -151,6 +151,23 @@ static inline void fw_state_done(struct fw_priv *fw_priv)
|
||||
|
||||
int assign_fw(struct firmware *fw, struct device *device);
|
||||
|
||||
#ifdef CONFIG_FW_LOADER
|
||||
bool firmware_is_builtin(const struct firmware *fw);
|
||||
bool firmware_request_builtin_buf(struct firmware *fw, const char *name,
|
||||
void *buf, size_t size);
|
||||
#else /* module case */
|
||||
static inline bool firmware_is_builtin(const struct firmware *fw)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
static inline bool firmware_request_builtin_buf(struct firmware *fw,
|
||||
const char *name,
|
||||
void *buf, size_t size)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FW_LOADER_PAGED_BUF
|
||||
void fw_free_paged_buf(struct fw_priv *fw_priv);
|
||||
int fw_grow_paged_buf(struct fw_priv *fw_priv, int pages_needed);
|
||||
|
@ -93,65 +93,6 @@ DEFINE_MUTEX(fw_lock);
|
||||
|
||||
static struct firmware_cache fw_cache;
|
||||
|
||||
/* Builtin firmware support */
|
||||
|
||||
#ifdef CONFIG_FW_LOADER
|
||||
|
||||
extern struct builtin_fw __start_builtin_fw[];
|
||||
extern struct builtin_fw __end_builtin_fw[];
|
||||
|
||||
static void fw_copy_to_prealloc_buf(struct firmware *fw,
|
||||
void *buf, size_t size)
|
||||
{
|
||||
if (!buf || size < fw->size)
|
||||
return;
|
||||
memcpy(buf, fw->data, fw->size);
|
||||
}
|
||||
|
||||
static bool fw_get_builtin_firmware(struct firmware *fw, const char *name,
|
||||
void *buf, size_t size)
|
||||
{
|
||||
struct builtin_fw *b_fw;
|
||||
|
||||
for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++) {
|
||||
if (strcmp(name, b_fw->name) == 0) {
|
||||
fw->size = b_fw->size;
|
||||
fw->data = b_fw->data;
|
||||
fw_copy_to_prealloc_buf(fw, buf, size);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool fw_is_builtin_firmware(const struct firmware *fw)
|
||||
{
|
||||
struct builtin_fw *b_fw;
|
||||
|
||||
for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++)
|
||||
if (fw->data == b_fw->data)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#else /* Module case - no builtin firmware support */
|
||||
|
||||
static inline bool fw_get_builtin_firmware(struct firmware *fw,
|
||||
const char *name, void *buf,
|
||||
size_t size)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool fw_is_builtin_firmware(const struct firmware *fw)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void fw_state_init(struct fw_priv *fw_priv)
|
||||
{
|
||||
struct fw_state *fw_st = &fw_priv->fw_st;
|
||||
@ -736,7 +677,7 @@ _request_firmware_prepare(struct firmware **firmware_p, const char *name,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (fw_get_builtin_firmware(firmware, name, dbuf, size)) {
|
||||
if (firmware_request_builtin_buf(firmware, name, dbuf, size)) {
|
||||
dev_dbg(device, "using built-in %s\n", name);
|
||||
return 0; /* assigned */
|
||||
}
|
||||
@ -1051,7 +992,7 @@ EXPORT_SYMBOL(request_partial_firmware_into_buf);
|
||||
void release_firmware(const struct firmware *fw)
|
||||
{
|
||||
if (fw) {
|
||||
if (!fw_is_builtin_firmware(fw))
|
||||
if (!firmware_is_builtin(fw))
|
||||
firmware_free_data(fw);
|
||||
kfree(fw);
|
||||
}
|
||||
@ -1215,7 +1156,7 @@ static int uncache_firmware(const char *fw_name)
|
||||
|
||||
pr_debug("%s: %s\n", __func__, fw_name);
|
||||
|
||||
if (fw_get_builtin_firmware(&fw, fw_name, NULL, 0))
|
||||
if (firmware_request_builtin(&fw, fw_name))
|
||||
return 0;
|
||||
|
||||
fw_priv = lookup_fw_priv(fw_name);
|
||||
|
@ -1466,8 +1466,7 @@ int platform_dma_configure(struct device *dev)
|
||||
}
|
||||
|
||||
static const struct dev_pm_ops platform_dev_pm_ops = {
|
||||
.runtime_suspend = pm_generic_runtime_suspend,
|
||||
.runtime_resume = pm_generic_runtime_resume,
|
||||
SET_RUNTIME_PM_OPS(pm_generic_runtime_suspend, pm_generic_runtime_resume, NULL)
|
||||
USE_PLATFORM_PM_SLEEP_OPS
|
||||
};
|
||||
|
||||
|
@ -413,9 +413,6 @@ software_node_get_name(const struct fwnode_handle *fwnode)
|
||||
{
|
||||
const struct swnode *swnode = to_swnode(fwnode);
|
||||
|
||||
if (!swnode)
|
||||
return "(null)";
|
||||
|
||||
return kobject_name(&swnode->kobj);
|
||||
}
|
||||
|
||||
@ -507,9 +504,6 @@ software_node_get_reference_args(const struct fwnode_handle *fwnode,
|
||||
int error;
|
||||
int i;
|
||||
|
||||
if (!swnode)
|
||||
return -ENOENT;
|
||||
|
||||
prop = property_entry_get(swnode->node->properties, propname);
|
||||
if (!prop)
|
||||
return -ENOENT;
|
||||
|
@ -95,10 +95,7 @@ static bool acpi_gpio_deferred_req_irqs_done;
|
||||
|
||||
static int acpi_gpiochip_find(struct gpio_chip *gc, void *data)
|
||||
{
|
||||
if (!gc->parent)
|
||||
return false;
|
||||
|
||||
return ACPI_HANDLE(gc->parent) == data;
|
||||
return gc->parent && device_match_acpi_handle(gc->parent, data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -398,24 +398,20 @@ u32 i2c_acpi_find_bus_speed(struct device *dev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(i2c_acpi_find_bus_speed);
|
||||
|
||||
static int i2c_acpi_find_match_adapter(struct device *dev, const void *data)
|
||||
{
|
||||
struct i2c_adapter *adapter = i2c_verify_adapter(dev);
|
||||
|
||||
if (!adapter)
|
||||
return 0;
|
||||
|
||||
return ACPI_HANDLE(dev) == (acpi_handle)data;
|
||||
}
|
||||
|
||||
struct i2c_adapter *i2c_acpi_find_adapter_by_handle(acpi_handle handle)
|
||||
{
|
||||
struct i2c_adapter *adapter;
|
||||
struct device *dev;
|
||||
|
||||
dev = bus_find_device(&i2c_bus_type, NULL, handle,
|
||||
i2c_acpi_find_match_adapter);
|
||||
dev = bus_find_device(&i2c_bus_type, NULL, handle, device_match_acpi_handle);
|
||||
if (!dev)
|
||||
return NULL;
|
||||
|
||||
return dev ? i2c_verify_adapter(dev) : NULL;
|
||||
adapter = i2c_verify_adapter(dev);
|
||||
if (!adapter)
|
||||
put_device(dev);
|
||||
|
||||
return adapter;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(i2c_acpi_find_adapter_by_handle);
|
||||
|
||||
|
@ -81,8 +81,10 @@ static ssize_t pci_dev_show_local_cpu(struct device *dev, bool list,
|
||||
const struct cpumask *mask;
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
mask = (dev_to_node(dev) == -1) ? cpu_online_mask :
|
||||
cpumask_of_node(dev_to_node(dev));
|
||||
if (dev_to_node(dev) == NUMA_NO_NODE)
|
||||
mask = cpu_online_mask;
|
||||
else
|
||||
mask = cpumask_of_node(dev_to_node(dev));
|
||||
#else
|
||||
mask = cpumask_of_pcibus(to_pci_dev(dev)->bus);
|
||||
#endif
|
||||
|
@ -36,8 +36,7 @@ struct kernfs_node *kernfs_create_link(struct kernfs_node *parent,
|
||||
gid = target->iattr->ia_gid;
|
||||
}
|
||||
|
||||
kn = kernfs_new_node(parent, name, S_IFLNK|S_IRWXUGO, uid, gid,
|
||||
KERNFS_LINK);
|
||||
kn = kernfs_new_node(parent, name, S_IFLNK|0777, uid, gid, KERNFS_LINK);
|
||||
if (!kn)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
|
@ -56,8 +56,7 @@ int sysfs_create_dir_ns(struct kobject *kobj, const void *ns)
|
||||
|
||||
kobject_get_ownership(kobj, &uid, &gid);
|
||||
|
||||
kn = kernfs_create_dir_ns(parent, kobject_name(kobj),
|
||||
S_IRWXU | S_IRUGO | S_IXUGO, uid, gid,
|
||||
kn = kernfs_create_dir_ns(parent, kobject_name(kobj), 0755, uid, gid,
|
||||
kobj, ns);
|
||||
if (IS_ERR(kn)) {
|
||||
if (PTR_ERR(kn) == -EEXIST)
|
||||
|
136
fs/sysfs/file.c
136
fs/sysfs/file.c
@ -45,6 +45,9 @@ static int sysfs_kf_seq_show(struct seq_file *sf, void *v)
|
||||
ssize_t count;
|
||||
char *buf;
|
||||
|
||||
if (WARN_ON_ONCE(!ops->show))
|
||||
return -EINVAL;
|
||||
|
||||
/* acquire buffer and ensure that it's >= PAGE_SIZE and clear */
|
||||
count = seq_get_buf(sf, &buf);
|
||||
if (count < PAGE_SIZE) {
|
||||
@ -53,15 +56,9 @@ static int sysfs_kf_seq_show(struct seq_file *sf, void *v)
|
||||
}
|
||||
memset(buf, 0, PAGE_SIZE);
|
||||
|
||||
/*
|
||||
* Invoke show(). Control may reach here via seq file lseek even
|
||||
* if @ops->show() isn't implemented.
|
||||
*/
|
||||
if (ops->show) {
|
||||
count = ops->show(kobj, of->kn->priv, buf);
|
||||
if (count < 0)
|
||||
return count;
|
||||
}
|
||||
count = ops->show(kobj, of->kn->priv, buf);
|
||||
if (count < 0)
|
||||
return count;
|
||||
|
||||
/*
|
||||
* The code works fine with PAGE_SIZE return but it's likely to
|
||||
@ -255,67 +252,82 @@ static const struct kernfs_ops sysfs_bin_kfops_mmap = {
|
||||
};
|
||||
|
||||
int sysfs_add_file_mode_ns(struct kernfs_node *parent,
|
||||
const struct attribute *attr, bool is_bin,
|
||||
umode_t mode, kuid_t uid, kgid_t gid, const void *ns)
|
||||
const struct attribute *attr, umode_t mode, kuid_t uid,
|
||||
kgid_t gid, const void *ns)
|
||||
{
|
||||
struct kobject *kobj = parent->priv;
|
||||
const struct sysfs_ops *sysfs_ops = kobj->ktype->sysfs_ops;
|
||||
struct lock_class_key *key = NULL;
|
||||
const struct kernfs_ops *ops;
|
||||
const struct kernfs_ops *ops = NULL;
|
||||
struct kernfs_node *kn;
|
||||
loff_t size;
|
||||
|
||||
if (!is_bin) {
|
||||
struct kobject *kobj = parent->priv;
|
||||
const struct sysfs_ops *sysfs_ops = kobj->ktype->sysfs_ops;
|
||||
/* every kobject with an attribute needs a ktype assigned */
|
||||
if (WARN(!sysfs_ops, KERN_ERR
|
||||
"missing sysfs attribute operations for kobject: %s\n",
|
||||
kobject_name(kobj)))
|
||||
return -EINVAL;
|
||||
|
||||
/* every kobject with an attribute needs a ktype assigned */
|
||||
if (WARN(!sysfs_ops, KERN_ERR
|
||||
"missing sysfs attribute operations for kobject: %s\n",
|
||||
kobject_name(kobj)))
|
||||
return -EINVAL;
|
||||
|
||||
if (sysfs_ops->show && sysfs_ops->store) {
|
||||
if (mode & SYSFS_PREALLOC)
|
||||
ops = &sysfs_prealloc_kfops_rw;
|
||||
else
|
||||
ops = &sysfs_file_kfops_rw;
|
||||
} else if (sysfs_ops->show) {
|
||||
if (mode & SYSFS_PREALLOC)
|
||||
ops = &sysfs_prealloc_kfops_ro;
|
||||
else
|
||||
ops = &sysfs_file_kfops_ro;
|
||||
} else if (sysfs_ops->store) {
|
||||
if (mode & SYSFS_PREALLOC)
|
||||
ops = &sysfs_prealloc_kfops_wo;
|
||||
else
|
||||
ops = &sysfs_file_kfops_wo;
|
||||
} else
|
||||
ops = &sysfs_file_kfops_empty;
|
||||
|
||||
size = PAGE_SIZE;
|
||||
if (mode & SYSFS_PREALLOC) {
|
||||
if (sysfs_ops->show && sysfs_ops->store)
|
||||
ops = &sysfs_prealloc_kfops_rw;
|
||||
else if (sysfs_ops->show)
|
||||
ops = &sysfs_prealloc_kfops_ro;
|
||||
else if (sysfs_ops->store)
|
||||
ops = &sysfs_prealloc_kfops_wo;
|
||||
} else {
|
||||
struct bin_attribute *battr = (void *)attr;
|
||||
|
||||
if (battr->mmap)
|
||||
ops = &sysfs_bin_kfops_mmap;
|
||||
else if (battr->read && battr->write)
|
||||
ops = &sysfs_bin_kfops_rw;
|
||||
else if (battr->read)
|
||||
ops = &sysfs_bin_kfops_ro;
|
||||
else if (battr->write)
|
||||
ops = &sysfs_bin_kfops_wo;
|
||||
else
|
||||
ops = &sysfs_file_kfops_empty;
|
||||
|
||||
size = battr->size;
|
||||
if (sysfs_ops->show && sysfs_ops->store)
|
||||
ops = &sysfs_file_kfops_rw;
|
||||
else if (sysfs_ops->show)
|
||||
ops = &sysfs_file_kfops_ro;
|
||||
else if (sysfs_ops->store)
|
||||
ops = &sysfs_file_kfops_wo;
|
||||
}
|
||||
|
||||
if (!ops)
|
||||
ops = &sysfs_file_kfops_empty;
|
||||
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
if (!attr->ignore_lockdep)
|
||||
key = attr->key ?: (struct lock_class_key *)&attr->skey;
|
||||
#endif
|
||||
|
||||
kn = __kernfs_create_file(parent, attr->name, mode & 0777, uid, gid,
|
||||
size, ops, (void *)attr, ns, key);
|
||||
PAGE_SIZE, ops, (void *)attr, ns, key);
|
||||
if (IS_ERR(kn)) {
|
||||
if (PTR_ERR(kn) == -EEXIST)
|
||||
sysfs_warn_dup(parent, attr->name);
|
||||
return PTR_ERR(kn);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
|
||||
const struct bin_attribute *battr, umode_t mode,
|
||||
kuid_t uid, kgid_t gid, const void *ns)
|
||||
{
|
||||
const struct attribute *attr = &battr->attr;
|
||||
struct lock_class_key *key = NULL;
|
||||
const struct kernfs_ops *ops;
|
||||
struct kernfs_node *kn;
|
||||
|
||||
if (battr->mmap)
|
||||
ops = &sysfs_bin_kfops_mmap;
|
||||
else if (battr->read && battr->write)
|
||||
ops = &sysfs_bin_kfops_rw;
|
||||
else if (battr->read)
|
||||
ops = &sysfs_bin_kfops_ro;
|
||||
else if (battr->write)
|
||||
ops = &sysfs_bin_kfops_wo;
|
||||
else
|
||||
ops = &sysfs_file_kfops_empty;
|
||||
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
if (!attr->ignore_lockdep)
|
||||
key = attr->key ?: (struct lock_class_key *)&attr->skey;
|
||||
#endif
|
||||
|
||||
kn = __kernfs_create_file(parent, attr->name, mode & 0777, uid, gid,
|
||||
battr->size, ops, (void *)attr, ns, key);
|
||||
if (IS_ERR(kn)) {
|
||||
if (PTR_ERR(kn) == -EEXIST)
|
||||
sysfs_warn_dup(parent, attr->name);
|
||||
@ -340,9 +352,7 @@ int sysfs_create_file_ns(struct kobject *kobj, const struct attribute *attr,
|
||||
return -EINVAL;
|
||||
|
||||
kobject_get_ownership(kobj, &uid, &gid);
|
||||
return sysfs_add_file_mode_ns(kobj->sd, attr, false, attr->mode,
|
||||
uid, gid, ns);
|
||||
|
||||
return sysfs_add_file_mode_ns(kobj->sd, attr, attr->mode, uid, gid, ns);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sysfs_create_file_ns);
|
||||
|
||||
@ -385,8 +395,8 @@ int sysfs_add_file_to_group(struct kobject *kobj,
|
||||
return -ENOENT;
|
||||
|
||||
kobject_get_ownership(kobj, &uid, &gid);
|
||||
error = sysfs_add_file_mode_ns(parent, attr, false,
|
||||
attr->mode, uid, gid, NULL);
|
||||
error = sysfs_add_file_mode_ns(parent, attr, attr->mode, uid, gid,
|
||||
NULL);
|
||||
kernfs_put(parent);
|
||||
|
||||
return error;
|
||||
@ -555,8 +565,8 @@ int sysfs_create_bin_file(struct kobject *kobj,
|
||||
return -EINVAL;
|
||||
|
||||
kobject_get_ownership(kobj, &uid, &gid);
|
||||
return sysfs_add_file_mode_ns(kobj->sd, &attr->attr, true,
|
||||
attr->attr.mode, uid, gid, NULL);
|
||||
return sysfs_add_bin_file_mode_ns(kobj->sd, attr, attr->attr.mode, uid,
|
||||
gid, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sysfs_create_bin_file);
|
||||
|
||||
|
@ -61,8 +61,8 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
|
||||
(*attr)->name, mode);
|
||||
|
||||
mode &= SYSFS_PREALLOC | 0664;
|
||||
error = sysfs_add_file_mode_ns(parent, *attr, false,
|
||||
mode, uid, gid, NULL);
|
||||
error = sysfs_add_file_mode_ns(parent, *attr, mode, uid,
|
||||
gid, NULL);
|
||||
if (unlikely(error))
|
||||
break;
|
||||
}
|
||||
@ -90,10 +90,9 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
|
||||
(*bin_attr)->attr.name, mode);
|
||||
|
||||
mode &= SYSFS_PREALLOC | 0664;
|
||||
error = sysfs_add_file_mode_ns(parent,
|
||||
&(*bin_attr)->attr, true,
|
||||
mode,
|
||||
uid, gid, NULL);
|
||||
error = sysfs_add_bin_file_mode_ns(parent, *bin_attr,
|
||||
mode, uid, gid,
|
||||
NULL);
|
||||
if (error)
|
||||
break;
|
||||
}
|
||||
@ -340,8 +339,8 @@ int sysfs_merge_group(struct kobject *kobj,
|
||||
kobject_get_ownership(kobj, &uid, &gid);
|
||||
|
||||
for ((i = 0, attr = grp->attrs); *attr && !error; (++i, ++attr))
|
||||
error = sysfs_add_file_mode_ns(parent, *attr, false,
|
||||
(*attr)->mode, uid, gid, NULL);
|
||||
error = sysfs_add_file_mode_ns(parent, *attr, (*attr)->mode,
|
||||
uid, gid, NULL);
|
||||
if (error) {
|
||||
while (--i >= 0)
|
||||
kernfs_remove_by_name(parent, (*--attr)->name);
|
||||
|
@ -28,9 +28,11 @@ void sysfs_warn_dup(struct kernfs_node *parent, const char *name);
|
||||
* file.c
|
||||
*/
|
||||
int sysfs_add_file_mode_ns(struct kernfs_node *parent,
|
||||
const struct attribute *attr, bool is_bin,
|
||||
umode_t amode, kuid_t uid, kgid_t gid,
|
||||
const void *ns);
|
||||
const struct attribute *attr, umode_t amode, kuid_t uid,
|
||||
kgid_t gid, const void *ns);
|
||||
int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
|
||||
const struct bin_attribute *battr, umode_t mode,
|
||||
kuid_t uid, kgid_t gid, const void *ns);
|
||||
|
||||
/*
|
||||
* symlink.c
|
||||
|
@ -476,13 +476,7 @@
|
||||
__end_pci_fixups_suspend_late = .; \
|
||||
} \
|
||||
\
|
||||
/* Built-in firmware blobs */ \
|
||||
.builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) ALIGN(8) { \
|
||||
__start_builtin_fw = .; \
|
||||
KEEP(*(.builtin_fw)) \
|
||||
__end_builtin_fw = .; \
|
||||
} \
|
||||
\
|
||||
FW_LOADER_BUILT_IN_DATA \
|
||||
TRACEDATA \
|
||||
\
|
||||
PRINTK_INDEX \
|
||||
@ -887,6 +881,18 @@
|
||||
#define ORC_UNWIND_TABLE
|
||||
#endif
|
||||
|
||||
/* Built-in firmware blobs */
|
||||
#ifdef CONFIG_FW_LOADER
|
||||
#define FW_LOADER_BUILT_IN_DATA \
|
||||
.builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) ALIGN(8) { \
|
||||
__start_builtin_fw = .; \
|
||||
KEEP(*(.builtin_fw)) \
|
||||
__end_builtin_fw = .; \
|
||||
}
|
||||
#else
|
||||
#define FW_LOADER_BUILT_IN_DATA
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM_TRACE
|
||||
#define TRACEDATA \
|
||||
. = ALIGN(4); \
|
||||
|
@ -143,6 +143,7 @@ int device_match_of_node(struct device *dev, const void *np);
|
||||
int device_match_fwnode(struct device *dev, const void *fwnode);
|
||||
int device_match_devt(struct device *dev, const void *pdevt);
|
||||
int device_match_acpi_dev(struct device *dev, const void *adev);
|
||||
int device_match_acpi_handle(struct device *dev, const void *handle);
|
||||
int device_match_any(struct device *dev, const void *unused);
|
||||
|
||||
/* iterator helpers for buses */
|
||||
|
@ -20,23 +20,19 @@ struct firmware {
|
||||
struct module;
|
||||
struct device;
|
||||
|
||||
struct builtin_fw {
|
||||
char *name;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
};
|
||||
|
||||
/* We have to play tricks here much like stringify() to get the
|
||||
__COUNTER__ macro to be expanded as we want it */
|
||||
#define __fw_concat1(x, y) x##y
|
||||
#define __fw_concat(x, y) __fw_concat1(x, y)
|
||||
|
||||
#define DECLARE_BUILTIN_FIRMWARE(name, blob) \
|
||||
DECLARE_BUILTIN_FIRMWARE_SIZE(name, &(blob), sizeof(blob))
|
||||
|
||||
#define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size) \
|
||||
static const struct builtin_fw __fw_concat(__builtin_fw,__COUNTER__) \
|
||||
__used __section(".builtin_fw") = { name, blob, size }
|
||||
/*
|
||||
* Built-in firmware functionality is only available if FW_LOADER=y, but not
|
||||
* FW_LOADER=m
|
||||
*/
|
||||
#ifdef CONFIG_FW_LOADER
|
||||
bool firmware_request_builtin(struct firmware *fw, const char *name);
|
||||
#else
|
||||
static inline bool firmware_request_builtin(struct firmware *fw,
|
||||
const char *name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
|
||||
int request_firmware(const struct firmware **fw, const char *name,
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/bits.h>
|
||||
#include <linux/err.h>
|
||||
|
||||
struct fwnode_operations;
|
||||
|
@ -269,10 +269,6 @@ struct kernfs_ops {
|
||||
struct poll_table_struct *pt);
|
||||
|
||||
int (*mmap)(struct kernfs_open_file *of, struct vm_area_struct *vma);
|
||||
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
struct lock_class_key lockdep_key;
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
@ -568,30 +564,6 @@ kernfs_create_dir(struct kernfs_node *parent, const char *name, umode_t mode,
|
||||
priv, NULL);
|
||||
}
|
||||
|
||||
static inline struct kernfs_node *
|
||||
kernfs_create_file_ns(struct kernfs_node *parent, const char *name,
|
||||
umode_t mode, kuid_t uid, kgid_t gid,
|
||||
loff_t size, const struct kernfs_ops *ops,
|
||||
void *priv, const void *ns)
|
||||
{
|
||||
struct lock_class_key *key = NULL;
|
||||
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
key = (struct lock_class_key *)&ops->lockdep_key;
|
||||
#endif
|
||||
return __kernfs_create_file(parent, name, mode, uid, gid,
|
||||
size, ops, priv, ns, key);
|
||||
}
|
||||
|
||||
static inline struct kernfs_node *
|
||||
kernfs_create_file(struct kernfs_node *parent, const char *name, umode_t mode,
|
||||
loff_t size, const struct kernfs_ops *ops, void *priv)
|
||||
{
|
||||
return kernfs_create_file_ns(parent, name, mode,
|
||||
GLOBAL_ROOT_UID, GLOBAL_ROOT_GID,
|
||||
size, ops, priv, NULL);
|
||||
}
|
||||
|
||||
static inline int kernfs_remove_by_name(struct kernfs_node *parent,
|
||||
const char *name)
|
||||
{
|
||||
|
@ -101,7 +101,6 @@ int kobject_init_and_add(struct kobject *kobj,
|
||||
|
||||
extern void kobject_del(struct kobject *kobj);
|
||||
|
||||
extern struct kobject * __must_check kobject_create(void);
|
||||
extern struct kobject * __must_check kobject_create_and_add(const char *name,
|
||||
struct kobject *parent);
|
||||
|
||||
|
@ -71,6 +71,8 @@ static DEFINE_MUTEX(ddebug_lock);
|
||||
static LIST_HEAD(ddebug_tables);
|
||||
static int verbose;
|
||||
module_param(verbose, int, 0644);
|
||||
MODULE_PARM_DESC(verbose, " dynamic_debug/control processing "
|
||||
"( 0 = off (default), 1 = module add/rm, 2 = >control summary, 3 = parsing, 4 = per-site changes)");
|
||||
|
||||
/* Return the path relative to source root */
|
||||
static inline const char *trim_prefix(const char *path)
|
||||
@ -118,6 +120,8 @@ do { \
|
||||
|
||||
#define vpr_info(fmt, ...) vnpr_info(1, fmt, ##__VA_ARGS__)
|
||||
#define v2pr_info(fmt, ...) vnpr_info(2, fmt, ##__VA_ARGS__)
|
||||
#define v3pr_info(fmt, ...) vnpr_info(3, fmt, ##__VA_ARGS__)
|
||||
#define v4pr_info(fmt, ...) vnpr_info(4, fmt, ##__VA_ARGS__)
|
||||
|
||||
static void vpr_info_dq(const struct ddebug_query *query, const char *msg)
|
||||
{
|
||||
@ -130,7 +134,7 @@ static void vpr_info_dq(const struct ddebug_query *query, const char *msg)
|
||||
fmtlen--;
|
||||
}
|
||||
|
||||
vpr_info("%s: func=\"%s\" file=\"%s\" module=\"%s\" format=\"%.*s\" lineno=%u-%u\n",
|
||||
v3pr_info("%s: func=\"%s\" file=\"%s\" module=\"%s\" format=\"%.*s\" lineno=%u-%u\n",
|
||||
msg,
|
||||
query->function ?: "",
|
||||
query->filename ?: "",
|
||||
@ -213,7 +217,7 @@ static int ddebug_change(const struct ddebug_query *query,
|
||||
static_branch_enable(&dp->key.dd_key_true);
|
||||
#endif
|
||||
dp->flags = newflags;
|
||||
v2pr_info("changed %s:%d [%s]%s =%s\n",
|
||||
v4pr_info("changed %s:%d [%s]%s =%s\n",
|
||||
trim_prefix(dp->filename), dp->lineno,
|
||||
dt->mod_name, dp->function,
|
||||
ddebug_describe_flags(dp->flags, &fbuf));
|
||||
@ -273,7 +277,7 @@ static int ddebug_tokenize(char *buf, char *words[], int maxwords)
|
||||
buf = end;
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
if (verbose >= 3) {
|
||||
int i;
|
||||
pr_info("split into words:");
|
||||
for (i = 0; i < nwords; i++)
|
||||
@ -333,7 +337,7 @@ static int parse_linerange(struct ddebug_query *query, const char *first)
|
||||
} else {
|
||||
query->last_lineno = query->first_lineno;
|
||||
}
|
||||
vpr_info("parsed line %d-%d\n", query->first_lineno,
|
||||
v3pr_info("parsed line %d-%d\n", query->first_lineno,
|
||||
query->last_lineno);
|
||||
return 0;
|
||||
}
|
||||
@ -447,7 +451,7 @@ static int ddebug_parse_flags(const char *str, struct flag_settings *modifiers)
|
||||
pr_err("bad flag-op %c, at start of %s\n", *str, str);
|
||||
return -EINVAL;
|
||||
}
|
||||
vpr_info("op='%c'\n", op);
|
||||
v3pr_info("op='%c'\n", op);
|
||||
|
||||
for (; *str ; ++str) {
|
||||
for (i = ARRAY_SIZE(opt_array) - 1; i >= 0; i--) {
|
||||
@ -461,7 +465,7 @@ static int ddebug_parse_flags(const char *str, struct flag_settings *modifiers)
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
vpr_info("flags=0x%x\n", modifiers->flags);
|
||||
v3pr_info("flags=0x%x\n", modifiers->flags);
|
||||
|
||||
/* calculate final flags, mask based upon op */
|
||||
switch (op) {
|
||||
@ -477,7 +481,7 @@ static int ddebug_parse_flags(const char *str, struct flag_settings *modifiers)
|
||||
modifiers->flags = 0;
|
||||
break;
|
||||
}
|
||||
vpr_info("*flagsp=0x%x *maskp=0x%x\n", modifiers->flags, modifiers->mask);
|
||||
v3pr_info("*flagsp=0x%x *maskp=0x%x\n", modifiers->flags, modifiers->mask);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -529,7 +533,7 @@ static int ddebug_exec_queries(char *query, const char *modname)
|
||||
if (!query || !*query || *query == '#')
|
||||
continue;
|
||||
|
||||
vpr_info("query %d: \"%s\"\n", i, query);
|
||||
vpr_info("query %d: \"%s\" mod:%s\n", i, query, modname ?: "*");
|
||||
|
||||
rc = ddebug_exec_query(query, modname);
|
||||
if (rc < 0) {
|
||||
@ -540,8 +544,9 @@ static int ddebug_exec_queries(char *query, const char *modname)
|
||||
}
|
||||
i++;
|
||||
}
|
||||
vpr_info("processed %d queries, with %d matches, %d errs\n",
|
||||
i, nfound, errs);
|
||||
if (i)
|
||||
v2pr_info("processed %d queries, with %d matches, %d errs\n",
|
||||
i, nfound, errs);
|
||||
|
||||
if (exitcode)
|
||||
return exitcode;
|
||||
@ -746,20 +751,17 @@ EXPORT_SYMBOL(__dynamic_ibdev_dbg);
|
||||
|
||||
#endif
|
||||
|
||||
#define DDEBUG_STRING_SIZE 1024
|
||||
static __initdata char ddebug_setup_string[DDEBUG_STRING_SIZE];
|
||||
|
||||
static __init int ddebug_setup_query(char *str)
|
||||
/*
|
||||
* Install a noop handler to make dyndbg look like a normal kernel cli param.
|
||||
* This avoids warnings about dyndbg being an unknown cli param when supplied
|
||||
* by a user.
|
||||
*/
|
||||
static __init int dyndbg_setup(char *str)
|
||||
{
|
||||
if (strlen(str) >= DDEBUG_STRING_SIZE) {
|
||||
pr_warn("ddebug boot param string too large\n");
|
||||
return 0;
|
||||
}
|
||||
strlcpy(ddebug_setup_string, str, DDEBUG_STRING_SIZE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("ddebug_query=", ddebug_setup_query);
|
||||
__setup("dyndbg=", dyndbg_setup);
|
||||
|
||||
/*
|
||||
* File_ops->write method for <debugfs>/dynamic_debug/control. Gathers the
|
||||
@ -781,7 +783,7 @@ static ssize_t ddebug_proc_write(struct file *file, const char __user *ubuf,
|
||||
tmpbuf = memdup_user_nul(ubuf, len);
|
||||
if (IS_ERR(tmpbuf))
|
||||
return PTR_ERR(tmpbuf);
|
||||
vpr_info("read %d bytes from userspace\n", (int)len);
|
||||
v2pr_info("read %zu bytes from userspace\n", len);
|
||||
|
||||
ret = ddebug_exec_queries(tmpbuf, NULL);
|
||||
kfree(tmpbuf);
|
||||
@ -969,7 +971,7 @@ int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
||||
list_add(&dt->link, &ddebug_tables);
|
||||
mutex_unlock(&ddebug_lock);
|
||||
|
||||
v2pr_info("%3u debug prints in module %s\n", n, dt->mod_name);
|
||||
vpr_info("%3u debug prints in module %s\n", n, dt->mod_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1028,8 +1030,6 @@ int ddebug_remove_module(const char *mod_name)
|
||||
struct ddebug_table *dt, *nextdt;
|
||||
int ret = -ENOENT;
|
||||
|
||||
v2pr_info("removing module \"%s\"\n", mod_name);
|
||||
|
||||
mutex_lock(&ddebug_lock);
|
||||
list_for_each_entry_safe(dt, nextdt, &ddebug_tables, link) {
|
||||
if (dt->mod_name == mod_name) {
|
||||
@ -1039,6 +1039,8 @@ int ddebug_remove_module(const char *mod_name)
|
||||
}
|
||||
}
|
||||
mutex_unlock(&ddebug_lock);
|
||||
if (!ret)
|
||||
v2pr_info("removed module \"%s\"\n", mod_name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1121,16 +1123,6 @@ static int __init dynamic_debug_init(void)
|
||||
entries, modct, (int)((modct * sizeof(struct ddebug_table)) >> 10),
|
||||
(int)((entries * sizeof(struct _ddebug)) >> 10));
|
||||
|
||||
/* apply ddebug_query boot param, dont unload tables on err */
|
||||
if (ddebug_setup_string[0] != '\0') {
|
||||
pr_warn("ddebug_query param name is deprecated, change it to dyndbg\n");
|
||||
ret = ddebug_exec_queries(ddebug_setup_string, NULL);
|
||||
if (ret < 0)
|
||||
pr_warn("Invalid ddebug boot param %s\n",
|
||||
ddebug_setup_string);
|
||||
else
|
||||
pr_info("%d changes by ddebug_query\n", ret);
|
||||
}
|
||||
/* now that ddebug tables are loaded, process all boot args
|
||||
* again to find and activate queries given in dyndbg params.
|
||||
* While this has already been done for known boot params, it
|
||||
|
@ -777,7 +777,7 @@ static struct kobj_type dynamic_kobj_ktype = {
|
||||
* call to kobject_put() and not kfree(), as kobject_init() has
|
||||
* already been called on this structure.
|
||||
*/
|
||||
struct kobject *kobject_create(void)
|
||||
static struct kobject *kobject_create(void)
|
||||
{
|
||||
struct kobject *kobj;
|
||||
|
||||
|
@ -1,19 +1,37 @@
|
||||
#!/usr/bin/env perl
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
BEGIN { $Pod::Usage::Formatter = 'Pod::Text::Termcap'; }
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use utf8;
|
||||
use Pod::Usage;
|
||||
use Pod::Usage qw(pod2usage);
|
||||
use Getopt::Long;
|
||||
use File::Find;
|
||||
use IO::Handle;
|
||||
use Fcntl ':mode';
|
||||
use Cwd 'abs_path';
|
||||
use Data::Dumper;
|
||||
|
||||
my $help = 0;
|
||||
my $hint = 0;
|
||||
my $man = 0;
|
||||
my $debug = 0;
|
||||
my $enable_lineno = 0;
|
||||
my $show_warnings = 1;
|
||||
my $prefix="Documentation/ABI";
|
||||
my $sysfs_prefix="/sys";
|
||||
my $search_string;
|
||||
|
||||
# Debug options
|
||||
my $dbg_what_parsing = 1;
|
||||
my $dbg_what_open = 2;
|
||||
my $dbg_dump_abi_structs = 4;
|
||||
my $dbg_undefined = 8;
|
||||
|
||||
$Data::Dumper::Indent = 1;
|
||||
$Data::Dumper::Terse = 1;
|
||||
|
||||
#
|
||||
# If true, assumes that the description is formatted with ReST
|
||||
@ -21,25 +39,27 @@ my $prefix="Documentation/ABI";
|
||||
my $description_is_rst = 1;
|
||||
|
||||
GetOptions(
|
||||
"debug|d+" => \$debug,
|
||||
"debug=i" => \$debug,
|
||||
"enable-lineno" => \$enable_lineno,
|
||||
"rst-source!" => \$description_is_rst,
|
||||
"dir=s" => \$prefix,
|
||||
'help|?' => \$help,
|
||||
"show-hints" => \$hint,
|
||||
"search-string=s" => \$search_string,
|
||||
man => \$man
|
||||
) or pod2usage(2);
|
||||
|
||||
pod2usage(1) if $help;
|
||||
pod2usage(-exitstatus => 0, -verbose => 2) if $man;
|
||||
pod2usage(-exitstatus => 0, -noperldoc, -verbose => 2) if $man;
|
||||
|
||||
pod2usage(2) if (scalar @ARGV < 1 || @ARGV > 2);
|
||||
|
||||
my ($cmd, $arg) = @ARGV;
|
||||
|
||||
pod2usage(2) if ($cmd ne "search" && $cmd ne "rest" && $cmd ne "validate");
|
||||
pod2usage(2) if ($cmd ne "search" && $cmd ne "rest" && $cmd ne "validate" && $cmd ne "undefined");
|
||||
pod2usage(2) if ($cmd eq "search" && !$arg);
|
||||
|
||||
require Data::Dumper if ($debug);
|
||||
require Data::Dumper if ($debug & $dbg_dump_abi_structs);
|
||||
|
||||
my %data;
|
||||
my %symbols;
|
||||
@ -50,6 +70,8 @@ my %symbols;
|
||||
sub parse_error($$$$) {
|
||||
my ($file, $ln, $msg, $data) = @_;
|
||||
|
||||
return if (!$show_warnings);
|
||||
|
||||
$data =~ s/\s+$/\n/;
|
||||
|
||||
print STDERR "Warning: file $file#$ln:\n\t$msg";
|
||||
@ -97,7 +119,7 @@ sub parse_abi {
|
||||
my @labels;
|
||||
my $label = "";
|
||||
|
||||
print STDERR "Opening $file\n" if ($debug > 1);
|
||||
print STDERR "Opening $file\n" if ($debug & $dbg_what_open);
|
||||
open IN, $file;
|
||||
while(<IN>) {
|
||||
$ln++;
|
||||
@ -129,12 +151,12 @@ sub parse_abi {
|
||||
push @{$symbols{$content}->{file}}, " $file:" . ($ln - 1);
|
||||
|
||||
if ($tag =~ m/what/) {
|
||||
$what .= ", " . $content;
|
||||
$what .= "\xac" . $content;
|
||||
} else {
|
||||
if ($what) {
|
||||
parse_error($file, $ln, "What '$what' doesn't have a description", "") if (!$data{$what}->{description});
|
||||
|
||||
foreach my $w(split /, /, $what) {
|
||||
foreach my $w(split /\xac/, $what) {
|
||||
$symbols{$w}->{xref} = $what;
|
||||
};
|
||||
}
|
||||
@ -164,12 +186,13 @@ sub parse_abi {
|
||||
$data{$what}->{file} = $name;
|
||||
$data{$what}->{filepath} = $file;
|
||||
} else {
|
||||
$data{$what}->{description} .= "\n\n" if (defined($data{$what}->{description}));
|
||||
if ($name ne $data{$what}->{file}) {
|
||||
$data{$what}->{file} .= " " . $name;
|
||||
$data{$what}->{filepath} .= " " . $file;
|
||||
}
|
||||
}
|
||||
print STDERR "\twhat: $what\n" if ($debug > 1);
|
||||
print STDERR "\twhat: $what\n" if ($debug & $dbg_what_parsing);
|
||||
$data{$what}->{line_no} = $ln;
|
||||
} else {
|
||||
$data{$what}->{line_no} = $ln if (!defined($data{$what}->{line_no}));
|
||||
@ -239,7 +262,7 @@ sub parse_abi {
|
||||
if ($what) {
|
||||
parse_error($file, $ln, "What '$what' doesn't have a description", "") if (!$data{$what}->{description});
|
||||
|
||||
foreach my $w(split /, /,$what) {
|
||||
foreach my $w(split /\xac/,$what) {
|
||||
$symbols{$w}->{xref} = $what;
|
||||
};
|
||||
}
|
||||
@ -328,7 +351,7 @@ sub output_rest {
|
||||
|
||||
printf ".. _%s:\n\n", $data{$what}->{label};
|
||||
|
||||
my @names = split /, /,$w;
|
||||
my @names = split /\xac/,$w;
|
||||
my $len = 0;
|
||||
|
||||
foreach my $name (@names) {
|
||||
@ -492,6 +515,7 @@ sub search_symbols {
|
||||
|
||||
my $file = $data{$what}->{filepath};
|
||||
|
||||
$what =~ s/\xac/, /g;
|
||||
my $bar = $what;
|
||||
$bar =~ s/./-/g;
|
||||
|
||||
@ -521,22 +545,420 @@ sub search_symbols {
|
||||
}
|
||||
}
|
||||
|
||||
# Exclude /sys/kernel/debug and /sys/kernel/tracing from the search path
|
||||
sub dont_parse_special_attributes {
|
||||
if (($File::Find::dir =~ m,^/sys/kernel,)) {
|
||||
return grep {!/(debug|tracing)/ } @_;
|
||||
}
|
||||
|
||||
if (($File::Find::dir =~ m,^/sys/fs,)) {
|
||||
return grep {!/(pstore|bpf|fuse)/ } @_;
|
||||
}
|
||||
|
||||
return @_
|
||||
}
|
||||
|
||||
my %leaf;
|
||||
my %aliases;
|
||||
my @files;
|
||||
my %root;
|
||||
|
||||
sub graph_add_file {
|
||||
my $file = shift;
|
||||
my $type = shift;
|
||||
|
||||
my $dir = $file;
|
||||
$dir =~ s,^(.*/).*,$1,;
|
||||
$file =~ s,.*/,,;
|
||||
|
||||
my $name;
|
||||
my $file_ref = \%root;
|
||||
foreach my $edge(split "/", $dir) {
|
||||
$name .= "$edge/";
|
||||
if (!defined ${$file_ref}{$edge}) {
|
||||
${$file_ref}{$edge} = { };
|
||||
}
|
||||
$file_ref = \%{$$file_ref{$edge}};
|
||||
${$file_ref}{"__name"} = [ $name ];
|
||||
}
|
||||
$name .= "$file";
|
||||
${$file_ref}{$file} = {
|
||||
"__name" => [ $name ]
|
||||
};
|
||||
|
||||
return \%{$$file_ref{$file}};
|
||||
}
|
||||
|
||||
sub graph_add_link {
|
||||
my $file = shift;
|
||||
my $link = shift;
|
||||
|
||||
# Traverse graph to find the reference
|
||||
my $file_ref = \%root;
|
||||
foreach my $edge(split "/", $file) {
|
||||
$file_ref = \%{$$file_ref{$edge}} || die "Missing node!";
|
||||
}
|
||||
|
||||
# do a BFS
|
||||
|
||||
my @queue;
|
||||
my %seen;
|
||||
my $st;
|
||||
|
||||
push @queue, $file_ref;
|
||||
$seen{$start}++;
|
||||
|
||||
while (@queue) {
|
||||
my $v = shift @queue;
|
||||
my @child = keys(%{$v});
|
||||
|
||||
foreach my $c(@child) {
|
||||
next if $seen{$$v{$c}};
|
||||
next if ($c eq "__name");
|
||||
|
||||
if (!defined($$v{$c}{"__name"})) {
|
||||
printf STDERR "Error: Couldn't find a non-empty name on a children of $file/.*: ";
|
||||
print STDERR Dumper(%{$v});
|
||||
exit;
|
||||
}
|
||||
|
||||
# Add new name
|
||||
my $name = @{$$v{$c}{"__name"}}[0];
|
||||
if ($name =~ s#^$file/#$link/#) {
|
||||
push @{$$v{$c}{"__name"}}, $name;
|
||||
}
|
||||
# Add child to the queue and mark as seen
|
||||
push @queue, $$v{$c};
|
||||
$seen{$c}++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $escape_symbols = qr { ([\x01-\x08\x0e-\x1f\x21-\x29\x2b-\x2d\x3a-\x40\x7b-\xfe]) }x;
|
||||
sub parse_existing_sysfs {
|
||||
my $file = $File::Find::name;
|
||||
|
||||
my $mode = (lstat($file))[2];
|
||||
my $abs_file = abs_path($file);
|
||||
|
||||
my @tmp;
|
||||
push @tmp, $file;
|
||||
push @tmp, $abs_file if ($abs_file ne $file);
|
||||
|
||||
foreach my $f(@tmp) {
|
||||
# Ignore cgroup, as this is big and has zero docs under ABI
|
||||
return if ($f =~ m#^/sys/fs/cgroup/#);
|
||||
|
||||
# Ignore firmware as it is documented elsewhere
|
||||
# Either ACPI or under Documentation/devicetree/bindings/
|
||||
return if ($f =~ m#^/sys/firmware/#);
|
||||
|
||||
# Ignore some sysfs nodes that aren't actually part of ABI
|
||||
return if ($f =~ m#/sections|notes/#);
|
||||
|
||||
# Would need to check at
|
||||
# Documentation/admin-guide/kernel-parameters.txt, but this
|
||||
# is not easily parseable.
|
||||
return if ($f =~ m#/parameters/#);
|
||||
}
|
||||
|
||||
if (S_ISLNK($mode)) {
|
||||
$aliases{$file} = $abs_file;
|
||||
return;
|
||||
}
|
||||
|
||||
return if (S_ISDIR($mode));
|
||||
|
||||
# Trivial: file is defined exactly the same way at ABI What:
|
||||
return if (defined($data{$file}));
|
||||
return if (defined($data{$abs_file}));
|
||||
|
||||
push @files, graph_add_file($abs_file, "file");
|
||||
}
|
||||
|
||||
sub get_leave($)
|
||||
{
|
||||
my $what = shift;
|
||||
my $leave;
|
||||
|
||||
my $l = $what;
|
||||
my $stop = 1;
|
||||
|
||||
$leave = $l;
|
||||
$leave =~ s,/$,,;
|
||||
$leave =~ s,.*/,,;
|
||||
$leave =~ s/[\(\)]//g;
|
||||
|
||||
# $leave is used to improve search performance at
|
||||
# check_undefined_symbols, as the algorithm there can seek
|
||||
# for a small number of "what". It also allows giving a
|
||||
# hint about a leave with the same name somewhere else.
|
||||
# However, there are a few occurences where the leave is
|
||||
# either a wildcard or a number. Just group such cases
|
||||
# altogether.
|
||||
if ($leave =~ m/\.\*/ || $leave eq "" || $leave =~ /\\d/) {
|
||||
$leave = "others";
|
||||
}
|
||||
|
||||
return $leave;
|
||||
}
|
||||
|
||||
my @not_found;
|
||||
|
||||
sub check_file($$)
|
||||
{
|
||||
my $file_ref = shift;
|
||||
my $names_ref = shift;
|
||||
my @names = @{$names_ref};
|
||||
my $file = $names[0];
|
||||
|
||||
my $found_string;
|
||||
|
||||
my $leave = get_leave($file);
|
||||
if (!defined($leaf{$leave})) {
|
||||
$leave = "others";
|
||||
}
|
||||
my @expr = @{$leaf{$leave}->{expr}};
|
||||
die ("\rmissing rules for $leave") if (!defined($leaf{$leave}));
|
||||
|
||||
my $path = $file;
|
||||
$path =~ s,(.*/).*,$1,;
|
||||
|
||||
if ($search_string) {
|
||||
return if (!($file =~ m#$search_string#));
|
||||
$found_string = 1;
|
||||
}
|
||||
|
||||
for (my $i = 0; $i < @names; $i++) {
|
||||
if ($found_string && $hint) {
|
||||
if (!$i) {
|
||||
print STDERR "--> $names[$i]\n";
|
||||
} else {
|
||||
print STDERR " $names[$i]\n";
|
||||
}
|
||||
}
|
||||
foreach my $re (@expr) {
|
||||
print STDERR "$names[$i] =~ /^$re\$/\n" if ($debug && $dbg_undefined);
|
||||
if ($names[$i] =~ $re) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($leave ne "others") {
|
||||
my @expr = @{$leaf{"others"}->{expr}};
|
||||
for (my $i = 0; $i < @names; $i++) {
|
||||
foreach my $re (@expr) {
|
||||
print STDERR "$names[$i] =~ /^$re\$/\n" if ($debug && $dbg_undefined);
|
||||
if ($names[$i] =~ $re) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
push @not_found, $file if (!$search_string || $found_string);
|
||||
|
||||
if ($hint && (!$search_string || $found_string)) {
|
||||
my $what = $leaf{$leave}->{what};
|
||||
$what =~ s/\xac/\n\t/g;
|
||||
if ($leave ne "others") {
|
||||
print STDERR "\r more likely regexes:\n\t$what\n";
|
||||
} else {
|
||||
print STDERR "\r tested regexes:\n\t$what\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub check_undefined_symbols {
|
||||
my $num_files = scalar @files;
|
||||
my $next_i = 0;
|
||||
my $start_time = times;
|
||||
|
||||
@files = sort @files;
|
||||
|
||||
my $last_time = $start_time;
|
||||
|
||||
# When either debug or hint is enabled, there's no sense showing
|
||||
# progress, as the progress will be overriden.
|
||||
if ($hint || ($debug && $dbg_undefined)) {
|
||||
$next_i = $num_files;
|
||||
}
|
||||
|
||||
my $is_console;
|
||||
$is_console = 1 if (-t STDERR);
|
||||
|
||||
for (my $i = 0; $i < $num_files; $i++) {
|
||||
my $file_ref = $files[$i];
|
||||
my @names = @{$$file_ref{"__name"}};
|
||||
|
||||
check_file($file_ref, \@names);
|
||||
|
||||
my $cur_time = times;
|
||||
|
||||
if ($i == $next_i || $cur_time > $last_time + 1) {
|
||||
my $percent = $i * 100 / $num_files;
|
||||
|
||||
my $tm = $cur_time - $start_time;
|
||||
my $time = sprintf "%d:%02d", int($tm), 60 * ($tm - int($tm));
|
||||
|
||||
printf STDERR "\33[2K\r", if ($is_console);
|
||||
printf STDERR "%s: processing sysfs files... %i%%: $names[0]", $time, $percent;
|
||||
printf STDERR "\n", if (!$is_console);
|
||||
STDERR->flush();
|
||||
|
||||
$next_i = int (($percent + 1) * $num_files / 100);
|
||||
$last_time = $cur_time;
|
||||
}
|
||||
}
|
||||
|
||||
my $cur_time = times;
|
||||
my $tm = $cur_time - $start_time;
|
||||
my $time = sprintf "%d:%02d", int($tm), 60 * ($tm - int($tm));
|
||||
|
||||
printf STDERR "\33[2K\r", if ($is_console);
|
||||
printf STDERR "%s: processing sysfs files... done\n", $time;
|
||||
|
||||
foreach my $file (@not_found) {
|
||||
print "$file not found.\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub undefined_symbols {
|
||||
print STDERR "Reading $sysfs_prefix directory contents...";
|
||||
find({
|
||||
wanted =>\&parse_existing_sysfs,
|
||||
preprocess =>\&dont_parse_special_attributes,
|
||||
no_chdir => 1
|
||||
}, $sysfs_prefix);
|
||||
print STDERR "done.\n";
|
||||
|
||||
$leaf{"others"}->{what} = "";
|
||||
|
||||
print STDERR "Converting ABI What fields into regexes...";
|
||||
foreach my $w (sort keys %data) {
|
||||
foreach my $what (split /\xac/,$w) {
|
||||
next if (!($what =~ m/^$sysfs_prefix/));
|
||||
|
||||
# Convert what into regular expressions
|
||||
|
||||
# Escape dot characters
|
||||
$what =~ s/\./\xf6/g;
|
||||
|
||||
# Temporarily change [0-9]+ type of patterns
|
||||
$what =~ s/\[0\-9\]\+/\xff/g;
|
||||
|
||||
# Temporarily change [\d+-\d+] type of patterns
|
||||
$what =~ s/\[0\-\d+\]/\xff/g;
|
||||
$what =~ s/\[(\d+)\]/\xf4$1\xf5/g;
|
||||
|
||||
# Temporarily change [0-9] type of patterns
|
||||
$what =~ s/\[(\d)\-(\d)\]/\xf4$1-$2\xf5/g;
|
||||
|
||||
# Handle multiple option patterns
|
||||
$what =~ s/[\{\<\[]([\w_]+)(?:[,|]+([\w_]+)){1,}[\}\>\]]/($1|$2)/g;
|
||||
|
||||
# Handle wildcards
|
||||
$what =~ s,\*,.*,g;
|
||||
$what =~ s,/\xf6..,/.*,g;
|
||||
$what =~ s/\<[^\>]+\>/.*/g;
|
||||
$what =~ s/\{[^\}]+\}/.*/g;
|
||||
$what =~ s/\[[^\]]+\]/.*/g;
|
||||
|
||||
$what =~ s/[XYZ]/.*/g;
|
||||
|
||||
# Recover [0-9] type of patterns
|
||||
$what =~ s/\xf4/[/g;
|
||||
$what =~ s/\xf5/]/g;
|
||||
|
||||
# Remove duplicated spaces
|
||||
$what =~ s/\s+/ /g;
|
||||
|
||||
# Special case: this ABI has a parenthesis on it
|
||||
$what =~ s/sqrt\(x^2\+y^2\+z^2\)/sqrt\(x^2\+y^2\+z^2\)/;
|
||||
|
||||
# Special case: drop comparition as in:
|
||||
# What: foo = <something>
|
||||
# (this happens on a few IIO definitions)
|
||||
$what =~ s,\s*\=.*$,,;
|
||||
|
||||
# Escape all other symbols
|
||||
$what =~ s/$escape_symbols/\\$1/g;
|
||||
$what =~ s/\\\\/\\/g;
|
||||
$what =~ s/\\([\[\]\(\)\|])/$1/g;
|
||||
$what =~ s/(\d+)\\(-\d+)/$1$2/g;
|
||||
|
||||
$what =~ s/\xff/\\d+/g;
|
||||
|
||||
# Special case: IIO ABI which a parenthesis.
|
||||
$what =~ s/sqrt(.*)/sqrt\(.*\)/;
|
||||
|
||||
# Simplify regexes with multiple .*
|
||||
$what =~ s#(?:\.\*){2,}##g;
|
||||
# $what =~ s#\.\*/\.\*#.*#g;
|
||||
|
||||
# Recover dot characters
|
||||
$what =~ s/\xf6/\./g;
|
||||
|
||||
my $leave = get_leave($what);
|
||||
|
||||
my $added = 0;
|
||||
foreach my $l (split /\|/, $leave) {
|
||||
if (defined($leaf{$l})) {
|
||||
next if ($leaf{$l}->{what} =~ m/\b$what\b/);
|
||||
$leaf{$l}->{what} .= "\xac" . $what;
|
||||
$added = 1;
|
||||
} else {
|
||||
$leaf{$l}->{what} = $what;
|
||||
$added = 1;
|
||||
}
|
||||
}
|
||||
if ($search_string && $added) {
|
||||
print STDERR "What: $what\n" if ($what =~ m#$search_string#);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
# Compile regexes
|
||||
foreach my $l (sort keys %leaf) {
|
||||
my @expr;
|
||||
foreach my $w(sort split /\xac/, $leaf{$l}->{what}) {
|
||||
push @expr, qr /^$w$/;
|
||||
}
|
||||
$leaf{$l}->{expr} = \@expr;
|
||||
}
|
||||
|
||||
# Take links into account
|
||||
foreach my $link (sort keys %aliases) {
|
||||
my $abs_file = $aliases{$link};
|
||||
graph_add_link($abs_file, $link);
|
||||
}
|
||||
print STDERR "done.\n";
|
||||
|
||||
check_undefined_symbols;
|
||||
}
|
||||
|
||||
# Ensure that the prefix will always end with a slash
|
||||
# While this is not needed for find, it makes the patch nicer
|
||||
# with --enable-lineno
|
||||
$prefix =~ s,/?$,/,;
|
||||
|
||||
if ($cmd eq "undefined" || $cmd eq "search") {
|
||||
$show_warnings = 0;
|
||||
}
|
||||
#
|
||||
# Parses all ABI files located at $prefix dir
|
||||
#
|
||||
find({wanted =>\&parse_abi, no_chdir => 1}, $prefix);
|
||||
|
||||
print STDERR Data::Dumper->Dump([\%data], [qw(*data)]) if ($debug);
|
||||
print STDERR Data::Dumper->Dump([\%data], [qw(*data)]) if ($debug & $dbg_dump_abi_structs);
|
||||
|
||||
#
|
||||
# Handles the command
|
||||
#
|
||||
if ($cmd eq "search") {
|
||||
if ($cmd eq "undefined") {
|
||||
undefined_symbols;
|
||||
} elsif ($cmd eq "search") {
|
||||
search_symbols;
|
||||
} else {
|
||||
if ($cmd eq "rest") {
|
||||
@ -562,18 +984,23 @@ abi_book.pl - parse the Linux ABI files and produce a ReST book.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
B<abi_book.pl> [--debug] [--enable-lineno] [--man] [--help]
|
||||
[--(no-)rst-source] [--dir=<dir>] <COMAND> [<ARGUMENT>]
|
||||
B<abi_book.pl> [--debug <level>] [--enable-lineno] [--man] [--help]
|
||||
[--(no-)rst-source] [--dir=<dir>] [--show-hints]
|
||||
[--search-string <regex>]
|
||||
<COMAND> [<ARGUMENT>]
|
||||
|
||||
Where <COMMAND> can be:
|
||||
Where B<COMMAND> can be:
|
||||
|
||||
=over 8
|
||||
|
||||
B<search> [SEARCH_REGEX] - search for [SEARCH_REGEX] inside ABI
|
||||
B<search> I<SEARCH_REGEX> - search for I<SEARCH_REGEX> inside ABI
|
||||
|
||||
B<rest> - output the ABI in ReST markup language
|
||||
B<rest> - output the ABI in ReST markup language
|
||||
|
||||
B<validate> - validate the ABI contents
|
||||
B<validate> - validate the ABI contents
|
||||
|
||||
B<undefined> - existing symbols at the system that aren't
|
||||
defined at Documentation/ABI
|
||||
|
||||
=back
|
||||
|
||||
@ -589,18 +1016,32 @@ the Documentation/ABI directory.
|
||||
=item B<--rst-source> and B<--no-rst-source>
|
||||
|
||||
The input file may be using ReST syntax or not. Those two options allow
|
||||
selecting between a rst-compliant source ABI (--rst-source), or a
|
||||
selecting between a rst-compliant source ABI (B<--rst-source>), or a
|
||||
plain text that may be violating ReST spec, so it requres some escaping
|
||||
logic (--no-rst-source).
|
||||
logic (B<--no-rst-source>).
|
||||
|
||||
=item B<--enable-lineno>
|
||||
|
||||
Enable output of #define LINENO lines.
|
||||
|
||||
=item B<--debug>
|
||||
=item B<--debug> I<debug level>
|
||||
|
||||
Put the script in verbose mode, useful for debugging. Can be called multiple
|
||||
times, to increase verbosity.
|
||||
Print debug information according with the level, which is given by the
|
||||
following bitmask:
|
||||
|
||||
- 1: Debug parsing What entries from ABI files;
|
||||
- 2: Shows what files are opened from ABI files;
|
||||
- 4: Dump the structs used to store the contents of the ABI files.
|
||||
|
||||
=item B<--show-hints>
|
||||
|
||||
Show hints about possible definitions for the missing ABI symbols.
|
||||
Used only when B<undefined>.
|
||||
|
||||
=item B<--search-string> I<regex string>
|
||||
|
||||
Show only occurences that match a search string.
|
||||
Used only when B<undefined>.
|
||||
|
||||
=item B<--help>
|
||||
|
||||
@ -646,11 +1087,11 @@ $ scripts/get_abi.pl rest --dir Documentation/ABI/obsolete
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Report bugs to Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
Report bugs to Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (c) 2016-2019 by Mauro Carvalho Chehab <mchehab+samsung@kernel.org>.
|
||||
Copyright (c) 2016-2021 by Mauro Carvalho Chehab <mchehab+huawei@kernel.org>.
|
||||
|
||||
License GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user