diff options
83 files changed, 2812 insertions, 1264 deletions
diff --git a/Documentation/ABI/obsolete/o2cb b/Documentation/ABI/obsolete/o2cb new file mode 100644 index 000000000000..fe7e45e17bc7 --- /dev/null +++ b/Documentation/ABI/obsolete/o2cb @@ -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. diff --git a/Documentation/ABI/obsolete/sysfs-bus-iio b/Documentation/ABI/obsolete/sysfs-bus-iio index c9531bb64816..b64394b0b374 100644 --- a/Documentation/ABI/obsolete/sysfs-bus-iio +++ b/Documentation/ABI/obsolete/sysfs-bus-iio @@ -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 diff --git a/Documentation/ABI/stable/o2cb b/Documentation/ABI/stable/o2cb index 5eb1545e0b8d..b62a967f01a0 100644 --- a/Documentation/ABI/stable/o2cb +++ b/Documentation/ABI/stable/o2cb @@ -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 diff --git a/Documentation/ABI/stable/sysfs-class-infiniband b/Documentation/ABI/stable/sysfs-class-infiniband index 9b1bdfa43354..ebf08c604336 100644 --- a/Documentation/ABI/stable/sysfs-class-infiniband +++ b/Documentation/ABI/stable/sysfs-class-infiniband @@ -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 diff --git a/Documentation/ABI/stable/sysfs-class-tpm b/Documentation/ABI/stable/sysfs-class-tpm index d897ecb9615f..411d5895bed4 100644 --- a/Documentation/ABI/stable/sysfs-class-tpm +++ b/Documentation/ABI/stable/sysfs-class-tpm @@ -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 diff --git a/Documentation/ABI/stable/sysfs-devices b/Documentation/ABI/stable/sysfs-devices index 42bf1eab5677..98a8ef99ac5f 100644 --- a/Documentation/ABI/stable/sysfs-devices +++ b/Documentation/ABI/stable/sysfs-devices @@ -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). diff --git a/Documentation/ABI/stable/sysfs-module b/Documentation/ABI/stable/sysfs-module index 6272ae5fb366..560b4a3278df 100644 --- a/Documentation/ABI/stable/sysfs-module +++ b/Documentation/ABI/stable/sysfs-module @@ -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. diff --git a/Documentation/ABI/testing/configfs-usb-gadget-uac1 b/Documentation/ABI/testing/configfs-usb-gadget-uac1 index dd647d44d975..b576b3d6ea6d 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-uac1 +++ b/Documentation/ABI/testing/configfs-usb-gadget-uac1 @@ -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 + ===================== ======================================= diff --git a/Documentation/ABI/testing/configfs-usb-gadget-uac2 b/Documentation/ABI/testing/configfs-usb-gadget-uac2 index cfd160ff8b56..244d96650123 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-uac2 +++ b/Documentation/ABI/testing/configfs-usb-gadget-uac2 @@ -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) + ===================== ======================================= diff --git a/Documentation/ABI/testing/evm b/Documentation/ABI/testing/evm index 553fd8a33e56..44750a933db4 100644 --- a/Documentation/ABI/testing/evm +++ b/Documentation/ABI/testing/evm @@ -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: diff --git a/Documentation/ABI/testing/ima_policy b/Documentation/ABI/testing/ima_policy index e1a04bd3b9e5..839fab811b18 100644 --- a/Documentation/ABI/testing/ima_policy +++ b/Documentation/ABI/testing/ima_policy @@ -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: diff --git a/Documentation/ABI/testing/pstore b/Documentation/ABI/testing/pstore index 5b02540781a2..d3cff4a7ee10 100644 --- a/Documentation/ABI/testing/pstore +++ b/Documentation/ABI/testing/pstore @@ -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 diff --git a/Documentation/ABI/testing/sysfs-ata b/Documentation/ABI/testing/sysfs-ata index 9ab0ef1dd1c7..2f726c914752 100644 --- a/Documentation/ABI/testing/sysfs-ata +++ b/Documentation/ABI/testing/sysfs-ata @@ -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 diff --git a/Documentation/ABI/testing/sysfs-bus-mdio b/Documentation/ABI/testing/sysfs-bus-mdio index da86efc7781b..38be04dfc05e 100644 --- a/Documentation/ABI/testing/sysfs-bus-mdio +++ b/Documentation/ABI/testing/sysfs-bus-mdio @@ -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 diff --git a/Documentation/ABI/testing/sysfs-bus-pci b/Documentation/ABI/testing/sysfs-bus-pci index d4ae03296861..16afe3f59cbd 100644 --- a/Documentation/ABI/testing/sysfs-bus-pci +++ b/Documentation/ABI/testing/sysfs-bus-pci @@ -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 diff --git a/Documentation/ABI/testing/sysfs-bus-platform b/Documentation/ABI/testing/sysfs-bus-platform index ff30728595ef..c4dfe7355c2d 100644 --- a/Documentation/ABI/testing/sysfs-bus-platform +++ b/Documentation/ABI/testing/sysfs-bus-platform @@ -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` diff --git a/Documentation/ABI/testing/sysfs-bus-rapidio b/Documentation/ABI/testing/sysfs-bus-rapidio index 634ea207a50a..f8b6728dac10 100644 --- a/Documentation/ABI/testing/sysfs-bus-rapidio +++ b/Documentation/ABI/testing/sysfs-bus-rapidio @@ -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>, diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb index 73eb23bc1f34..2ebe5708b4bc 100644 --- a/Documentation/ABI/testing/sysfs-bus-usb +++ b/Documentation/ABI/testing/sysfs-bus-usb @@ -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. diff --git a/Documentation/ABI/testing/sysfs-class-bdi b/Documentation/ABI/testing/sysfs-class-bdi index 5402bd74ba43..6d2a2fc189dd 100644 --- a/Documentation/ABI/testing/sysfs-class-bdi +++ b/Documentation/ABI/testing/sysfs-class-bdi @@ -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) diff --git a/Documentation/ABI/testing/sysfs-class-cxl b/Documentation/ABI/testing/sysfs-class-cxl index 818f55970efb..3c77677e0ca7 100644 --- a/Documentation/ABI/testing/sysfs-class-cxl +++ b/Documentation/ABI/testing/sysfs-class-cxl @@ -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. diff --git a/Documentation/ABI/testing/sysfs-class-devfreq-event b/Documentation/ABI/testing/sysfs-class-devfreq-event index ceaf0f686d4a..dbe48495e55a 100644 --- a/Documentation/ABI/testing/sysfs-class-devfreq-event +++ b/Documentation/ABI/testing/sysfs-class-devfreq-event @@ -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. diff --git a/Documentation/ABI/testing/sysfs-class-extcon b/Documentation/ABI/testing/sysfs-class-extcon index fde0fecd5de9..f8e705375b24 100644 --- a/Documentation/ABI/testing/sysfs-class-extcon +++ b/Documentation/ABI/testing/sysfs-class-extcon @@ -65,19 +65,19 @@ Description: interface associated with each cable cannot update multiple cable states of an extcon device simultaneously. -What: /sys/class/extcon/.../cable.x/name +What: /sys/class/extcon/.../cable.X/name Date: February 2012 Contact: MyungJoo Ham <myungjoo.ham@samsung.com> Description: - The /sys/class/extcon/.../cable.x/name shows the name of cable - "x" (integer between 0 and 31) of an extcon device. + The /sys/class/extcon/.../cable.X/name shows the name of cable + "X" (integer between 0 and 31) of an extcon device. -What: /sys/class/extcon/.../cable.x/state +What: /sys/class/extcon/.../cable.X/state Date: February 2012 Contact: MyungJoo Ham <myungjoo.ham@samsung.com> Description: - The /sys/class/extcon/.../cable.x/state shows and stores the - state of cable "x" (integer between 0 and 31) of an extcon + The /sys/class/extcon/.../cable.X/state shows and stores the + state of cable "X" (integer between 0 and 31) of an extcon device. The state value is either 0 (detached) or 1 (attached). diff --git a/Documentation/ABI/testing/sysfs-class-gnss b/Documentation/ABI/testing/sysfs-class-gnss index c8553d972edd..9650f3a7fc03 100644 --- a/Documentation/ABI/testing/sysfs-class-gnss +++ b/Documentation/ABI/testing/sysfs-class-gnss @@ -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> diff --git a/Documentation/ABI/testing/sysfs-class-hwmon b/Documentation/ABI/testing/sysfs-class-hwmon new file mode 100644 index 000000000000..1f20687def44 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-hwmon @@ -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 diff --git a/Documentation/ABI/testing/sysfs-class-mei b/Documentation/ABI/testing/sysfs-class-mei index 5c52372b43cb..1db36ddf8e58 100644 --- a/Documentation/ABI/testing/sysfs-class-mei +++ b/Documentation/ABI/testing/sysfs-class-mei @@ -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> diff --git a/Documentation/ABI/testing/sysfs-class-mic b/Documentation/ABI/testing/sysfs-class-mic index bd0e780c3760..5e5f36d10055 100644 --- a/Documentation/ABI/testing/sysfs-class-mic +++ b/Documentation/ABI/testing/sysfs-class-mic @@ -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> diff --git a/Documentation/ABI/testing/sysfs-class-mux b/Documentation/ABI/testing/sysfs-class-mux index 8715f9c7bd4f..c58b7b6e1aa6 100644 --- a/Documentation/ABI/testing/sysfs-class-mux +++ b/Documentation/ABI/testing/sysfs-class-mux @@ -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> diff --git a/Documentation/ABI/testing/sysfs-class-pwm b/Documentation/ABI/testing/sysfs-class-pwm index c20e61354561..3d65285bcd5f 100644 --- a/Documentation/ABI/testing/sysfs-class-pwm +++ b/Documentation/ABI/testing/sysfs-class-pwm @@ -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> diff --git a/Documentation/ABI/testing/sysfs-class-rapidio b/Documentation/ABI/testing/sysfs-class-rapidio index 19aefb21b639..81e09145525a 100644 --- a/Documentation/ABI/testing/sysfs-class-rapidio +++ b/Documentation/ABI/testing/sysfs-class-rapidio @@ -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>, diff --git a/Documentation/ABI/testing/sysfs-class-rc b/Documentation/ABI/testing/sysfs-class-rc index 9c8ff7910858..84e46d70d82b 100644 --- a/Documentation/ABI/testing/sysfs-class-rc +++ b/Documentation/ABI/testing/sysfs-class-rc @@ -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> diff --git a/Documentation/ABI/testing/sysfs-class-rc-nuvoton b/Documentation/ABI/testing/sysfs-class-rc-nuvoton index d3abe45f8690..f7bad8ecd08f 100644 --- a/Documentation/ABI/testing/sysfs-class-rc-nuvoton +++ b/Documentation/ABI/testing/sysfs-class-rc-nuvoton @@ -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> diff --git a/Documentation/ABI/testing/sysfs-class-typec b/Documentation/ABI/testing/sysfs-class-typec index 40122d915ae1..75088ecad202 100644 --- a/Documentation/ABI/testing/sysfs-class-typec +++ b/Documentation/ABI/testing/sysfs-class-typec @@ -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: diff --git a/Documentation/ABI/testing/sysfs-class-uwb_rc b/Documentation/ABI/testing/sysfs-class-uwb_rc index 6c5dcad21e19..a7ea169dc4eb 100644 --- a/Documentation/ABI/testing/sysfs-class-uwb_rc +++ b/Documentation/ABI/testing/sysfs-class-uwb_rc @@ -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 diff --git a/Documentation/ABI/testing/sysfs-class-uwb_rc-wusbhc b/Documentation/ABI/testing/sysfs-class-uwb_rc-wusbhc index 5977e2875325..55eb55cac92e 100644 --- a/Documentation/ABI/testing/sysfs-class-uwb_rc-wusbhc +++ b/Documentation/ABI/testing/sysfs-class-uwb_rc-wusbhc @@ -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> diff --git a/Documentation/ABI/testing/sysfs-devices-platform-dock b/Documentation/ABI/testing/sysfs-devices-platform-dock index 1d8c18f905c7..411c174de830 100644 --- a/Documentation/ABI/testing/sysfs-devices-platform-dock +++ b/Documentation/ABI/testing/sysfs-devices-platform-dock @@ -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 diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power index 1763e64dd152..1b2a2d41ff80 100644 --- a/Documentation/ABI/testing/sysfs-devices-power +++ b/Documentation/ABI/testing/sysfs-devices-power @@ -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. + diff --git a/Documentation/ABI/testing/sysfs-devices-removable b/Documentation/ABI/testing/sysfs-devices-removable index bda6c320c8d3..754ecb4587ca 100644 --- a/Documentation/ABI/testing/sysfs-devices-removable +++ b/Documentation/ABI/testing/sysfs-devices-removable @@ -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 diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu index b46ef147616a..69c65da16dff 100644 --- a/Documentation/ABI/testing/sysfs-devices-system-cpu +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu @@ -7,7 +7,7 @@ Description: Individual CPU attributes are contained in subdirectories named by the kernel's logical CPU number, e.g.: - /sys/devices/system/cpu/cpu#/ + /sys/devices/system/cpu/cpuX/ What: /sys/devices/system/cpu/kernel_max /sys/devices/system/cpu/offline @@ -53,7 +53,7 @@ Description: Dynamic addition and removal of CPU's. This is not hotplug the system. Information written to the file to remove CPU's is architecture specific. -What: /sys/devices/system/cpu/cpu#/node +What: /sys/devices/system/cpu/cpuX/node Date: October 2009 Contact: Linux memory management mailing list <linux-mm@kvack.org> Description: Discover NUMA node a CPU belongs to @@ -67,41 +67,41 @@ Description: Discover NUMA node a CPU belongs to /sys/devices/system/cpu/cpu42/node2 -> ../../node/node2 -What: /sys/devices/system/cpu/cpu#/topology/core_id - /sys/devices/system/cpu/cpu#/topology/core_siblings - /sys/devices/system/cpu/cpu#/topology/core_siblings_list - /sys/devices/system/cpu/cpu#/topology/physical_package_id - /sys/devices/system/cpu/cpu#/topology/thread_siblings - /sys/devices/system/cpu/cpu#/topology/thread_siblings_list +What: /sys/devices/system/cpu/cpuX/topology/core_id + /sys/devices/system/cpu/cpuX/topology/core_siblings + /sys/devices/system/cpu/cpuX/topology/core_siblings_list + /sys/devices/system/cpu/cpuX/topology/physical_package_id + /sys/devices/system/cpu/cpuX/topology/thread_siblings + /sys/devices/system/cpu/cpuX/topology/thread_siblings_list Date: December 2008 Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> Description: CPU topology files that describe a logical CPU's relationship to other cores and threads in the same physical package. - One cpu# directory is created per logical CPU in the system, + One cpuX directory is created per logical CPU in the system, e.g. /sys/devices/system/cpu/cpu42/. Briefly, the files above are: - core_id: the CPU core ID of cpu#. Typically it is the + core_id: the CPU core ID of cpuX. Typically it is the hardware platform's identifier (rather than the kernel's). The actual value is architecture and platform dependent. - core_siblings: internal kernel map of cpu#'s hardware threads + core_siblings: internal kernel map of cpuX's hardware threads within the same physical_package_id. core_siblings_list: human-readable list of the logical CPU - numbers within the same physical_package_id as cpu#. + numbers within the same physical_package_id as cpuX. - physical_package_id: physical package id of cpu#. Typically + physical_package_id: physical package id of cpuX. Typically corresponds to a physical socket number, but the actual value is architecture and platform dependent. - thread_siblings: internal kernel map of cpu#'s hardware - threads within the same core as cpu# + thread_siblings: internal kernel map of cpuX's hardware + threads within the same core as cpuX - thread_siblings_list: human-readable list of cpu#'s hardware - threads within the same core as cpu# + thread_siblings_list: human-readable list of cpuX's hardware + threads within the same core as cpuX See Documentation/admin-guide/cputopology.rst for more information. @@ -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) diff --git a/Documentation/ABI/testing/sysfs-driver-ufs b/Documentation/ABI/testing/sysfs-driver-ufs index ec3a7149ced5..863cc4897277 100644 --- a/Documentation/ABI/testing/sysfs-driver-ufs +++ b/Documentation/ABI/testing/sysfs-driver-ufs @@ -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. diff --git a/Documentation/ABI/testing/sysfs-firmware-efi-esrt b/Documentation/ABI/testing/sysfs-firmware-efi-esrt index 31b57676d4ad..4c2d440487dd 100644 --- a/Documentation/ABI/testing/sysfs-firmware-efi-esrt +++ b/Documentation/ABI/testing/sysfs-firmware-efi-esrt @@ -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 diff --git a/Documentation/ABI/testing/sysfs-kernel-slab b/Documentation/ABI/testing/sysfs-kernel-slab index c9f12baf8baa..c440f4946e12 100644 --- a/Documentation/ABI/testing/sysfs-kernel-slab +++ b/Documentation/ABI/testing/sysfs-kernel-slab @@ -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. diff --git a/Documentation/ABI/testing/sysfs-mce b/Documentation/ABI/testing/sysfs-mce new file mode 100644 index 000000000000..c8cd989034b4 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-mce @@ -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. diff --git a/Documentation/ABI/testing/sysfs-module b/Documentation/ABI/testing/sysfs-module index 88bddf192ceb..08886367d047 100644 --- a/Documentation/ABI/testing/sysfs-module +++ b/Documentation/ABI/testing/sysfs-module @@ -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 diff --git a/Documentation/ABI/testing/sysfs-platform-dptf b/Documentation/ABI/testing/sysfs-platform-dptf index 53c6b1000320..620fd20434a5 100644 --- a/Documentation/ABI/testing/sysfs-platform-dptf +++ b/Documentation/ABI/testing/sysfs-platform-dptf @@ -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. + ======= ========================================== diff --git a/Documentation/ABI/testing/sysfs-platform-sst-atom b/Documentation/ABI/testing/sysfs-platform-sst-atom index d5f6e21f0e42..0154b0fba759 100644 --- a/Documentation/ABI/testing/sysfs-platform-sst-atom +++ b/Documentation/ABI/testing/sysfs-platform-sst-atom @@ -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> diff --git a/Documentation/ABI/testing/sysfs-ptp b/Documentation/ABI/testing/sysfs-ptp index d378f57c1b73..9c317ac7c47a 100644 --- a/Documentation/ABI/testing/sysfs-ptp +++ b/Documentation/ABI/testing/sysfs-ptp @@ -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: diff --git a/Documentation/ABI/testing/sysfs-tty b/Documentation/ABI/testing/sysfs-tty index e157130a6792..820e412d38a8 100644 --- a/Documentation/ABI/testing/sysfs-tty +++ b/Documentation/ABI/testing/sysfs-tty @@ -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: diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst b/Documentation/admin-guide/dynamic-debug-howto.rst index b119b8277b3e..a89cfa083155 100644 --- a/Documentation/admin-guide/dynamic-debug-howto.rst +++ b/Documentation/admin-guide/dynamic-debug-howto.rst @@ -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" diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 6aea495b0970..756bfb7d5235 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -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 diff --git a/Documentation/hwmon/sysfs-interface.rst b/Documentation/hwmon/sysfs-interface.rst index 13c5acb72d63..85652a6aaa3e 100644 --- a/Documentation/hwmon/sysfs-interface.rst +++ b/Documentation/hwmon/sysfs-interface.rst @@ -89,6 +89,8 @@ hardware implementation. All entries (except name) are optional, and should only be created in a given driver if the chip has the feature. +See Documentation/ABI/testing/sysfs-class-hwmon for a complete description +of the attributes. ***************** Global attributes @@ -96,22 +98,9 @@ Global attributes `name` The chip name. - This should be a short, lowercase string, not containing - whitespace, dashes, or the wildcard character '*'. - This attribute represents the chip name. It is the only - mandatory attribute. - I2C devices get this attribute created automatically. - - RO `update_interval` The interval at which the chip will update readings. - Unit: millisecond - - RW - - Some devices have a variable update rate or interval. - This attribute can be used to change it to the desired value. ******** @@ -121,148 +110,51 @@ Voltages `in[0-*]_min` Voltage min value. - Unit: millivolt - - RW - `in[0-*]_lcrit` Voltage critical min value. - Unit: millivolt - - RW - - If voltage drops to or below this limit, the system may - take drastic action such as power down or reset. At the very - least, it should report a fault. - `in[0-*]_max` Voltage max value. - Unit: millivolt - - RW - `in[0-*]_crit` Voltage critical max value. - Unit: millivolt - - RW - - If voltage reaches or exceeds this limit, the system may - take drastic action such as power down or reset. At the very - least, it should report a fault. - `in[0-*]_input` Voltage input value. - Unit: millivolt - - RO - - Voltage measured on the chip pin. - - Actual voltage depends on the scaling resistors on the - motherboard, as recommended in the chip datasheet. - - This varies by chip and by motherboard. - Because of this variation, values are generally NOT scaled - by the chip driver, and must be done by the application. - However, some drivers (notably lm87 and via686a) - do scale, because of internal resistors built into a chip. - These drivers will output the actual voltage. Rule of - thumb: drivers should report the voltage values at the - "pins" of the chip. - `in[0-*]_average` Average voltage - Unit: millivolt - - RO - `in[0-*]_lowest` Historical minimum voltage - Unit: millivolt - - RO - `in[0-*]_highest` Historical maximum voltage - Unit: millivolt - - RO - `in[0-*]_reset_history` Reset inX_lowest and inX_highest - WO - `in_reset_history` Reset inX_lowest and inX_highest for all sensors - WO - `in[0-*]_label` Suggested voltage channel label. - Text string - - Should only be created if the driver has hints about what - this voltage channel is being used for, and user-space - doesn't. In all other cases, the label is provided by - user-space. - - RO - `in[0-*]_enable` Enable or disable the sensors. - When disabled the sensor read will return -ENODATA. - - - 1: Enable - - 0: Disable - - RW - `cpu[0-*]_vid` CPU core reference voltage. - Unit: millivolt - - RO - - Not always correct. - `vrm` Voltage Regulator Module version number. - RW (but changing it should no more be necessary) - - Originally the VRM standard version multiplied by 10, but now - an arbitrary number, as not all standards have a version - number. - - Affects the way the driver calculates the CPU core reference - voltage from the vid pins. - `in[0-*]_rated_min` Minimum rated voltage. - Unit: millivolt - - RO - `in[0-*]_rated_max` Maximum rated voltage. - Unit: millivolt - - RO - Also see the Alarms section for status flags associated with voltages. @@ -273,83 +165,27 @@ Fans `fan[1-*]_min` Fan minimum value - Unit: revolution/min (RPM) - - RW - `fan[1-*]_max` Fan maximum value - Unit: revolution/min (RPM) - - Only rarely supported by the hardware. - RW - `fan[1-*]_input` Fan input value. - Unit: revolution/min (RPM) - - RO - `fan[1-*]_div` Fan divisor. - Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128). - - RW - - Some chips only support values 1, 2, 4 and 8. - Note that this is actually an internal clock divisor, which - affects the measurable speed range, not the read value. - `fan[1-*]_pulses` Number of tachometer pulses per fan revolution. - Integer value, typically between 1 and 4. - - RW - - This value is a characteristic of the fan connected to the - device's input, so it has to be set in accordance with the fan - model. - - Should only be created if the chip has a register to configure - the number of pulses. In the absence of such a register (and - thus attribute) the value assumed by all devices is 2 pulses - per fan revolution. - `fan[1-*]_target` Desired fan speed - Unit: revolution/min (RPM) - - RW - - Only makes sense if the chip supports closed-loop fan speed - control based on the measured fan speed. - `fan[1-*]_label` Suggested fan channel label. - Text string - - Should only be created if the driver has hints about what - this fan channel is being used for, and user-space doesn't. - In all other cases, the label is provided by user-space. - - RO - `fan[1-*]_enable` Enable or disable the sensors. - When disabled the sensor read will return -ENODATA. - - - 1: Enable - - 0: Disable - - RW - Also see the Alarms section for status flags associated with fans. @@ -360,63 +196,25 @@ PWM `pwm[1-*]` Pulse width modulation fan control. - Integer value in the range 0 to 255 - - RW - - 255 is max or 100%. - `pwm[1-*]_enable` Fan speed control method: - - 0: no fan speed control (i.e. fan at full speed) - - 1: manual fan speed control enabled (using `pwm[1-*]`) - - 2+: automatic fan speed control enabled - - Check individual chip documentation files for automatic mode - details. - - RW - `pwm[1-*]_mode` - - 0: DC mode (direct current) - - 1: PWM mode (pulse-width modulation) - - RW + direct current or pulse-width modulation. `pwm[1-*]_freq` Base PWM frequency in Hz. - Only possibly available when pwmN_mode is PWM, but not always - present even then. - - RW - `pwm[1-*]_auto_channels_temp` Select which temperature channels affect this PWM output in auto mode. - Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc... - Which values are possible depend on the chip used. - - RW - `pwm[1-*]_auto_point[1-*]_pwm` / `pwm[1-*]_auto_point[1-*]_temp` / `pwm[1-*]_auto_point[1-*]_temp_hyst` Define the PWM vs temperature curve. - Number of trip points is chip-dependent. Use this for chips - which associate trip points to PWM output channels. - - RW - `temp[1-*]_auto_point[1-*]_pwm` / `temp[1-*]_auto_point[1-*]_temp` / `temp[1-*]_auto_point[1-*]_temp_hyst` Define the PWM vs temperature curve. - Number of trip points is chip-dependent. Use this for chips - which associate trip points to temperature channels. - - RW - There is a third case where trip points are associated to both PWM output channels and temperature channels: the PWM values are associated to PWM output channels while the temperature values are associated to temperature @@ -434,182 +232,70 @@ Temperatures `temp[1-*]_type` Sensor type selection. - Integers 1 to 6 - - RW - - - 1: CPU embedded diode - - 2: 3904 transistor - - 3: thermal diode - - 4: thermistor - - 5: AMD AMDSI - - 6: Intel PECI - - Not all types are supported by all chips - `temp[1-*]_max` Temperature max value. - Unit: millidegree Celsius (or millivolt, see below) - - RW - `temp[1-*]_min` Temperature min value. - Unit: millidegree Celsius - - RW - `temp[1-*]_max_hyst` Temperature hysteresis value for max limit. - Unit: millidegree Celsius - - Must be reported as an absolute temperature, NOT a delta - from the max value. - - RW - `temp[1-*]_min_hyst` Temperature hysteresis value for min limit. - Unit: millidegree Celsius - - Must be reported as an absolute temperature, NOT a delta - from the min value. - - RW `temp[1-*]_input` - Temperature input value. - - Unit: millidegree Celsius - - RO + Temperature input value. `temp[1-*]_crit` Temperature critical max value, typically greater than corresponding temp_max values. - Unit: millidegree Celsius - - RW - `temp[1-*]_crit_hyst` Temperature hysteresis value for critical limit. - Unit: millidegree Celsius - - Must be reported as an absolute temperature, NOT a delta - from the critical value. - - RW - `temp[1-*]_emergency` Temperature emergency max value, for chips supporting more than - two upper temperature limits. Must be equal or greater than - corresponding temp_crit values. - - Unit: millidegree Celsius - - RW + two upper temperature limits. `temp[1-*]_emergency_hyst` Temperature hysteresis value for emergency limit. - Unit: millidegree Celsius - - Must be reported as an absolute temperature, NOT a delta - from the emergency value. - - RW - `temp[1-*]_lcrit` Temperature critical min value, typically lower than corresponding temp_min values. - Unit: millidegree Celsius - - RW - `temp[1-*]_lcrit_hyst` Temperature hysteresis value for critical min limit. - Unit: millidegree Celsius - - Must be reported as an absolute temperature, NOT a delta - from the critical min value. - - RW - `temp[1-*]_offset` Temperature offset which is added to the temperature reading by the chip. - Unit: millidegree Celsius - - Read/Write value. - `temp[1-*]_label` Suggested temperature channel label. - Text string - - Should only be created if the driver has hints about what - this temperature channel is being used for, and user-space - doesn't. In all other cases, the label is provided by - user-space. - - RO - `temp[1-*]_lowest` Historical minimum temperature - Unit: millidegree Celsius - - RO - `temp[1-*]_highest` Historical maximum temperature - Unit: millidegree Celsius - - RO - `temp[1-*]_reset_history` Reset temp_lowest and temp_highest - WO - `temp_reset_history` Reset temp_lowest and temp_highest for all sensors - WO - `temp[1-*]_enable` Enable or disable the sensors. - When disabled the sensor read will return -ENODATA. - - - 1: Enable - - 0: Disable - - RW - `temp[1-*]_rated_min` Minimum rated temperature. - Unit: millidegree Celsius - - RO - `temp[1-*]_rated_max` Maximum rated temperature. - Unit: millidegree Celsius - - RO - Some chips measure temperature using external thermistors and an ADC, and report the temperature measurement as a voltage. Converting this voltage back to a temperature (or the other way around for limits) requires @@ -627,58 +313,28 @@ Currents ******** `curr[1-*]_max` - Current max value - - Unit: milliampere - - RW + Current max value. `curr[1-*]_min` Current min value. - Unit: milliampere - - RW - `curr[1-*]_lcrit` Current critical low value - Unit: milliampere - - RW - `curr[1-*]_crit` Current critical high value. - Unit: milliampere - - RW - `curr[1-*]_input` - Current input value - - Unit: milliampere - - RO + Current input value. `curr[1-*]_average` - Average current use - - Unit: milliampere - - RO + Average current use. `curr[1-*]_lowest` - Historical minimum current - - Unit: milliampere - - RO + Historical minimum current. `curr[1-*]_highest` - Historical maximum current - Unit: milliampere - RO + Historical maximum current. `curr[1-*]_reset_history` Reset currX_lowest and currX_highest @@ -686,34 +342,17 @@ Currents WO `curr_reset_history` - Reset currX_lowest and currX_highest for all sensors - - WO + Reset currX_lowest and currX_highest for all sensors. `curr[1-*]_enable` Enable or disable the sensors. - When disabled the sensor read will return -ENODATA. - - - 1: Enable - - 0: Disable - - RW - `curr[1-*]_rated_min` Minimum rated current. - Unit: milliampere - - RO - `curr[1-*]_rated_max` Maximum rated current. - Unit: milliampere - - RO - Also see the Alarms section for status flags associated with currents. ***** @@ -721,141 +360,62 @@ Power ***** `power[1-*]_average` - Average power use - - Unit: microWatt - - RO + Average power use. `power[1-*]_average_interval` - Power use averaging interval. A poll - notification is sent to this file if the - hardware changes the averaging interval. - - Unit: milliseconds - - RW + Power use averaging interval. `power[1-*]_average_interval_max` - Maximum power use averaging interval - - Unit: milliseconds - - RO + Maximum power use averaging interval. `power[1-*]_average_interval_min` - Minimum power use averaging interval - - Unit: milliseconds - - RO + Minimum power use averaging interval. `power[1-*]_average_highest` - Historical average maximum power use - - Unit: microWatt - - RO + Historical average maximum power use `power[1-*]_average_lowest` - Historical average minimum power use - - Unit: microWatt - - RO + Historical average minimum power use `power[1-*]_average_max` - A poll notification is sent to - `power[1-*]_average` when power use - rises above this value. - - Unit: microWatt - - RW + A poll notification is sent to `power[1-*]_average` when + power use rises above this value. `power[1-*]_average_min` - A poll notification is sent to - `power[1-*]_average` when power use - sinks below this value. - - Unit: microWatt - - RW + A poll notification is sent to `power[1-*]_average` when + power use sinks below this value. `power[1-*]_input` - Instantaneous power use - - Unit: microWatt - - RO + Instantaneous power use. `power[1-*]_input_highest` - Historical maximum power use - - Unit: microWatt - - RO + Historical maximum power use `power[1-*]_input_lowest` - Historical minimum power use - - Unit: microWatt - - RO + Historical minimum power use. `power[1-*]_reset_history` - Reset input_highest, input_lowest, - average_highest and average_lowest. - - WO + Reset input_highest, input_lowest, average_highest and + average_lowest. `power[1-*]_accuracy` - Accuracy of the power meter. - - Unit: Percent - - RO + Accuracy of the power meter. `power[1-*]_cap` - If power use rises above this limit, the - system should take action to reduce power use. - A poll notification is sent to this file if the - cap is changed by the hardware. The `*_cap` - files only appear if the cap is known to be - enforced by hardware. - - Unit: microWatt - - RW + If power use rises above this limit, the + system should take action to reduce power use. `power[1-*]_cap_hyst` - Margin of hysteresis built around capping and - notification. - - Unit: microWatt - - RW + Margin of hysteresis built around capping and notification. `power[1-*]_cap_max` - Maximum cap that can be set. - - Unit: microWatt - - RO + Maximum cap that can be set. `power[1-*]_cap_min` - Minimum cap that can be set. - - Unit: microWatt - - RO + Minimum cap that can be set. `power[1-*]_max` - Maximum power. - - Unit: microWatt - - RW + Maximum power. `power[1-*]_crit` Critical maximum power. @@ -923,37 +483,16 @@ Humidity ******** `humidity[1-*]_input` - Humidity - - Unit: milli-percent (per cent mille, pcm) - - RO - + Humidity. `humidity[1-*]_enable` - Enable or disable the sensors - - When disabled the sensor read will return - -ENODATA. - - - 1: Enable - - 0: Disable - - RW + Enable or disable the sensors. `humidity[1-*]_rated_min` - Minimum rated humidity. - - Unit: milli-percent (per cent mille, pcm) - - RO + Minimum rated humidity. `humidity[1-*]_rated_max` - Maximum rated humidity. - - Unit: milli-percent (per cent mille, pcm) - - RO + Maximum rated humidity. ****** Alarms @@ -1004,30 +543,15 @@ supports it. When this boolean has value 1, the measurement for that channel should not be trusted. `fan[1-*]_fault` / `temp[1-*]_fault` - Input fault condition - - - 0: no fault occurred - - 1: fault condition - - RO + Input fault condition. Some chips also offer the possibility to get beeped when an alarm occurs: `beep_enable` - Master beep enable - - - 0: no beeps - - 1: beeps - - RW + Master beep enable. `in[0-*]_beep`, `curr[1-*]_beep`, `fan[1-*]_beep`, `temp[1-*]_beep`, - Channel beep - - - 0: disable - - 1: enable - - RW + Channel beep. In theory, a chip could provide per-limit beep masking, but no such chip was seen so far. @@ -1039,29 +563,8 @@ for compatibility reasons: `alarms` Alarm bitmask. - RO - - Integer representation of one to four bytes. - - A '1' bit means an alarm. - - Chips should be programmed for 'comparator' mode so that - the alarm will 'come back' after you read the register - if it is still valid. - - Generally a direct representation of a chip's internal - alarm registers; there is no standard for the position - of individual bits. For this reason, the use of this - interface file for new drivers is discouraged. Use - `individual *_alarm` and `*_fault` files instead. - Bits are defined in kernel/include/sensors.h. - `beep_mask` Bitmask for beep. - Same format as 'alarms' with the same bit locations, - use discouraged for the same reason. Use individual - `*_beep` files instead. - RW ******************* @@ -1069,25 +572,10 @@ Intrusion detection ******************* `intrusion[0-*]_alarm` - Chassis intrusion detection - - - 0: OK - - 1: intrusion detected - - RW - - Contrary to regular alarm flags which clear themselves - automatically when read, this one sticks until cleared by - the user. This is done by writing 0 to the file. Writing - other values is unsupported. + Chassis intrusion detection. `intrusion[0-*]_beep` - Chassis intrusion beep - - 0: disable - 1: enable - - RW + Chassis intrusion beep. **************************** Average sample configuration diff --git a/Documentation/x86/x86_64/machinecheck.rst b/Documentation/x86/x86_64/machinecheck.rst index b402e04bee60..cea12ee97200 100644 --- a/Documentation/x86/x86_64/machinecheck.rst +++ b/Documentation/x86/x86_64/machinecheck.rst @@ -21,60 +21,8 @@ from /dev/mcelog. Normally mcelog should be run regularly from a cronjob. Each CPU has a directory in /sys/devices/system/machinecheck/machinecheckN (N = CPU number). -The directory contains some configurable entries: - -bankNctl - (N bank number) - - 64bit Hex bitmask enabling/disabling specific subevents for bank N - When a bit in the bitmask is zero then the respective - subevent will not be reported. - By default all events are enabled. - Note that BIOS maintain another mask to disable specific events - per bank. This is not visible here - -The following entries appear for each CPU, but they are truly shared -between all CPUs. - -check_interval - How often to poll for corrected machine check errors, in seconds - (Note output is hexadecimal). Default 5 minutes. When the poller - finds MCEs it triggers an exponential speedup (poll more often) on - the polling interval. When the poller stops finding MCEs, it - triggers an exponential backoff (poll less often) on the polling - interval. The check_interval variable is both the initial and - maximum polling interval. 0 means no polling for corrected machine - check errors (but some corrected errors might be still reported - in other ways) - -tolerant - Tolerance level. When a machine check exception occurs for a non - corrected machine check the kernel can take different actions. - Since machine check exceptions can happen any time it is sometimes - risky for the kernel to kill a process because it defies - normal kernel locking rules. The tolerance level configures - how hard the kernel tries to recover even at some risk of - deadlock. Higher tolerant values trade potentially better uptime - with the risk of a crash or even corruption (for tolerant >= 3). - - 0: always panic on uncorrected errors, log corrected errors - 1: panic or SIGBUS on uncorrected errors, log corrected errors - 2: SIGBUS or log uncorrected errors, log corrected errors - 3: never panic or SIGBUS, log all errors (for testing only) - - Default: 1 - - Note this only makes a difference if the CPU allows recovery - from a machine check exception. Current x86 CPUs generally do not. - -trigger - Program to run when a machine check event is detected. - This is an alternative to running mcelog regularly from cron - and allows to detect events faster. -monarch_timeout - How long to wait for the other CPUs to machine check too on a - exception. 0 to disable waiting for other CPUs. - Unit: us +The directory contains some configurable entries. See +Documentation/ABI/testing/sysfs-mce for more details. TBD document entries for AMD threshold interrupt configuration diff --git a/MAINTAINERS b/MAINTAINERS index 1cb1d2458b37..4eb537e015d1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -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 diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h index ab45a220fac4..d6bfdfb0f0af 100644 --- a/arch/x86/include/asm/microcode.h +++ b/arch/x86/include/asm/microcode.h @@ -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 */ diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index 3d4a48336084..8b2fcdfa6d31 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -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) diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c index efb69be41ab1..f955d25076ba 100644 --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -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; diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c index 7e8e07bddd5f..d28a9f8f3fec 100644 --- a/arch/x86/kernel/cpu/microcode/intel.c +++ b/arch/x86/kernel/cpu/microcode/intel.c @@ -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; } /* diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index 3f5d39768287..c736cf2ac76b 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c @@ -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|" diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c index fc0836f460fb..981e72a3dafb 100644 --- a/drivers/base/arch_topology.c +++ b/drivers/base/arch_topology.c @@ -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; diff --git a/drivers/base/component.c b/drivers/base/component.c index 5e79299f6c3f..2d25a6416587 100644 --- a/drivers/base/component.c +++ b/drivers/base/component.c @@ -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; } } diff --git a/drivers/base/core.c b/drivers/base/core.c index 249da496581a..fd034d742447 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -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; diff --git a/drivers/base/firmware_loader/builtin/Makefile b/drivers/base/firmware_loader/builtin/Makefile index 101754ad48d9..eb4be452062a 100644 --- a/drivers/base/firmware_loader/builtin/Makefile +++ b/drivers/base/firmware_loader/builtin/Makefile @@ -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)) diff --git a/drivers/base/firmware_loader/builtin/main.c b/drivers/base/firmware_loader/builtin/main.c new file mode 100644 index 000000000000..a065c3150897 --- /dev/null +++ b/drivers/base/firmware_loader/builtin/main.c @@ -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 diff --git a/drivers/base/firmware_loader/firmware.h b/drivers/base/firmware_loader/firmware.h index a3014e9e2c85..2889f446ad41 100644 --- a/drivers/base/firmware_loader/firmware.h +++ b/drivers/base/firmware_loader/firmware.h @@ -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); diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c index bdbedc6660a8..94d1789a233e 100644 --- a/drivers/base/firmware_loader/main.c +++ b/drivers/base/firmware_loader/main.c @@ -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); diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 652531f67135..598acf93a360 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -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 }; diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index c46f6a8e14d2..4debcea4fb12 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -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; diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c index 47712b6903b5..985e8589c58b 100644 --- a/drivers/gpio/gpiolib-acpi.c +++ b/drivers/gpio/gpiolib-acpi.c @@ -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); } /** diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c index 546cc935e035..80631f93ad2f 100644 --- a/drivers/i2c/i2c-core-acpi.c +++ b/drivers/i2c/i2c-core-acpi.c @@ -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; + + adapter = i2c_verify_adapter(dev); + if (!adapter) + put_device(dev); - return dev ? i2c_verify_adapter(dev) : NULL; + return adapter; } EXPORT_SYMBOL_GPL(i2c_acpi_find_adapter_by_handle); diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index 7fb5cd17cc98..f807b92afa6c 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c @@ -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 diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c index c8f8e41b8411..19a6c71c6ff5 100644 --- a/fs/kernfs/symlink.c +++ b/fs/kernfs/symlink.c @@ -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); diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 59dffd5ca517..b6b6796e1616 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -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) diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index d019d6ac6ad0..42dcf96881b6 100644 --- a/fs/sysfs/file.c +++ b/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,59 +252,74 @@ 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; - - 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; + + /* 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 (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, + 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) @@ -315,7 +327,7 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent, #endif kn = __kernfs_create_file(parent, attr->name, mode & 0777, uid, gid, - size, ops, (void *)attr, ns, key); + 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); diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c index f29d62004527..eeb0e3099421 100644 --- a/fs/sysfs/group.c +++ b/fs/sysfs/group.c @@ -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); diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h index 0050cc0c0236..3f28c9af5756 100644 --- a/fs/sysfs/sysfs.h +++ b/fs/sysfs/sysfs.h @@ -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 diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 0c0d3608ea11..42f3866bca69 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -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); \ diff --git a/include/linux/device/bus.h b/include/linux/device/bus.h index 062777a45a74..a039ab809753 100644 --- a/include/linux/device/bus.h +++ b/include/linux/device/bus.h @@ -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 */ diff --git a/include/linux/firmware.h b/include/linux/firmware.h index 25109192cebe..3b057dfc8284 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h @@ -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, diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h index 9f4ad719bfe3..3a532ba66f6c 100644 --- a/include/linux/fwnode.h +++ b/include/linux/fwnode.h @@ -11,6 +11,7 @@ #include <linux/types.h> #include <linux/list.h> +#include <linux/bits.h> #include <linux/err.h> struct fwnode_operations; diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h index 1093abf7c28c..3ccce6f24548 100644 --- a/include/linux/kernfs.h +++ b/include/linux/kernfs.h @@ -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) { diff --git a/include/linux/kobject.h b/include/linux/kobject.h index ea30529fba08..efd56f990a46 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h @@ -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); diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index cb5abb42c16a..dd7f56af9aed 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -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 diff --git a/lib/kobject.c b/lib/kobject.c index ea53b30cf483..4a56f519139d 100644 --- a/lib/kobject.c +++ b/lib/kobject.c @@ -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; diff --git a/scripts/get_abi.pl b/scripts/get_abi.pl index d7aa82094296..6212f58b69c6 100755 --- a/scripts/get_abi.pl +++ b/scripts/get_abi.pl @@ -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> + +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> -Put the script in verbose mode, useful for debugging. Can be called multiple -times, to increase verbosity. +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>. |