mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 02:36:21 +00:00
Backmerge remote-tracking branch 'drm/drm-next' into drm-misc-next
Required bump from v5.13-rc3 to v5.14-rc3, and to pick up sysfb compilation fixes. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
This commit is contained in:
commit
ca31fef11d
@ -109,8 +109,8 @@ ForEachMacros:
|
||||
- 'css_for_each_child'
|
||||
- 'css_for_each_descendant_post'
|
||||
- 'css_for_each_descendant_pre'
|
||||
- 'cxl_for_each_cmd'
|
||||
- 'device_for_each_child_node'
|
||||
- 'displayid_iter_for_each'
|
||||
- 'dma_fence_chain_for_each'
|
||||
- 'do_for_each_ftrace_op'
|
||||
- 'drm_atomic_crtc_for_each_plane'
|
||||
@ -136,6 +136,7 @@ ForEachMacros:
|
||||
- 'drm_mm_for_each_node_in_range'
|
||||
- 'drm_mm_for_each_node_safe'
|
||||
- 'flow_action_for_each'
|
||||
- 'for_each_acpi_dev_match'
|
||||
- 'for_each_active_dev_scope'
|
||||
- 'for_each_active_drhd_unit'
|
||||
- 'for_each_active_iommu'
|
||||
@ -171,7 +172,6 @@ ForEachMacros:
|
||||
- 'for_each_dapm_widgets'
|
||||
- 'for_each_dev_addr'
|
||||
- 'for_each_dev_scope'
|
||||
- 'for_each_displayid_db'
|
||||
- 'for_each_dma_cap_mask'
|
||||
- 'for_each_dpcm_be'
|
||||
- 'for_each_dpcm_be_rollback'
|
||||
@ -179,6 +179,7 @@ ForEachMacros:
|
||||
- 'for_each_dpcm_fe'
|
||||
- 'for_each_drhd_unit'
|
||||
- 'for_each_dss_dev'
|
||||
- 'for_each_dtpm_table'
|
||||
- 'for_each_efi_memory_desc'
|
||||
- 'for_each_efi_memory_desc_in_map'
|
||||
- 'for_each_element'
|
||||
@ -215,6 +216,7 @@ ForEachMacros:
|
||||
- 'for_each_migratetype_order'
|
||||
- 'for_each_msi_entry'
|
||||
- 'for_each_msi_entry_safe'
|
||||
- 'for_each_msi_vector'
|
||||
- 'for_each_net'
|
||||
- 'for_each_net_continue_reverse'
|
||||
- 'for_each_netdev'
|
||||
@ -270,6 +272,12 @@ ForEachMacros:
|
||||
- 'for_each_prime_number_from'
|
||||
- 'for_each_process'
|
||||
- 'for_each_process_thread'
|
||||
- 'for_each_prop_codec_conf'
|
||||
- 'for_each_prop_dai_codec'
|
||||
- 'for_each_prop_dai_cpu'
|
||||
- 'for_each_prop_dlc_codecs'
|
||||
- 'for_each_prop_dlc_cpus'
|
||||
- 'for_each_prop_dlc_platforms'
|
||||
- 'for_each_property_of_node'
|
||||
- 'for_each_registered_fb'
|
||||
- 'for_each_requested_gpio'
|
||||
@ -430,6 +438,7 @@ ForEachMacros:
|
||||
- 'queue_for_each_hw_ctx'
|
||||
- 'radix_tree_for_each_slot'
|
||||
- 'radix_tree_for_each_tagged'
|
||||
- 'rb_for_each'
|
||||
- 'rbtree_postorder_for_each_entry_safe'
|
||||
- 'rdma_for_each_block'
|
||||
- 'rdma_for_each_port'
|
||||
|
6
.mailmap
6
.mailmap
@ -102,6 +102,7 @@ Felipe W Damasio <felipewd@terra.com.br>
|
||||
Felix Kuhling <fxkuehl@gmx.de>
|
||||
Felix Moeller <felix@derklecks.de>
|
||||
Filipe Lautert <filipe@icewall.org>
|
||||
Finn Thain <fthain@linux-m68k.org> <fthain@telegraphics.com.au>
|
||||
Franck Bui-Huu <vagabon.xyz@gmail.com>
|
||||
Frank Rowand <frowand.list@gmail.com> <frank.rowand@am.sony.com>
|
||||
Frank Rowand <frowand.list@gmail.com> <frank.rowand@sonymobile.com>
|
||||
@ -212,6 +213,8 @@ Manivannan Sadhasivam <mani@kernel.org> <manivannanece23@gmail.com>
|
||||
Manivannan Sadhasivam <mani@kernel.org> <manivannan.sadhasivam@linaro.org>
|
||||
Marcin Nowakowski <marcin.nowakowski@mips.com> <marcin.nowakowski@imgtec.com>
|
||||
Marc Zyngier <maz@kernel.org> <marc.zyngier@arm.com>
|
||||
Marek Behún <kabel@kernel.org> <marek.behun@nic.cz>
|
||||
Marek Behún <kabel@kernel.org> Marek Behun <marek.behun@nic.cz>
|
||||
Mark Brown <broonie@sirena.org.uk>
|
||||
Mark Starovoytov <mstarovo@pm.me> <mstarovoitov@marvell.com>
|
||||
Mark Yao <markyao0591@gmail.com> <mark.yao@rock-chips.com>
|
||||
@ -243,6 +246,9 @@ Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
|
||||
Mayuresh Janorkar <mayur@ti.com>
|
||||
Michael Buesch <m@bues.ch>
|
||||
Michel Dänzer <michel@tungstengraphics.com>
|
||||
Michel Lespinasse <michel@lespinasse.org>
|
||||
Michel Lespinasse <michel@lespinasse.org> <walken@google.com>
|
||||
Michel Lespinasse <michel@lespinasse.org> <walken@zoy.org>
|
||||
Miguel Ojeda <ojeda@kernel.org> <miguel.ojeda.sandonis@gmail.com>
|
||||
Mike Rapoport <rppt@kernel.org> <mike@compulab.co.il>
|
||||
Mike Rapoport <rppt@kernel.org> <mike.rapoport@gmail.com>
|
||||
|
182
Documentation/ABI/obsolete/sysfs-bus-iio
Normal file
182
Documentation/ABI/obsolete/sysfs-bus-iio
Normal file
@ -0,0 +1,182 @@
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/length
|
||||
KernelVersion: 2.6.35
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Number of scans contained by the buffer.
|
||||
|
||||
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
|
||||
KernelVersion: 2.6.35
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Actually start the buffer capture up. Will start trigger
|
||||
if first device and appropriate.
|
||||
|
||||
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
|
||||
KernelVersion: 2.6.37
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Directory containing interfaces for elements that will be
|
||||
captured for a single triggered sample set in the buffer.
|
||||
|
||||
Since kernel 5.11 the scan_elements attributes are merged into
|
||||
the bufferY directory, to be configurable per buffer.
|
||||
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_z_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_z_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_z_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_tilt_comp_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_tilt_comp_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_timestamp_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY-voltageZ_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressure_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_quaternion_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_proximity_en
|
||||
KernelVersion: 2.6.37
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Scan element control for triggered data capture.
|
||||
|
||||
Since kernel 5.11 the scan_elements attributes are merged into
|
||||
the bufferY directory, to be configurable per buffer.
|
||||
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_timestamp_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressure_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_quaternion_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_proximity_type
|
||||
KernelVersion: 2.6.37
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Description of the scan element data storage within the buffer
|
||||
and hence the form in which it is read from user-space.
|
||||
Form is [be|le]:[s|u]bits/storagebits[>>shift].
|
||||
be or le specifies big or little endian. s or u specifies if
|
||||
signed (2's complement) or unsigned. bits is the number of bits
|
||||
of data and storagebits is the space (after padding) that it
|
||||
occupies in the buffer. shift if specified, is the shift that
|
||||
needs to be applied prior to masking out unused bits. Some
|
||||
devices put their data in the middle of the transferred elements
|
||||
with additional information on both sides. Note that some
|
||||
devices will have additional information in the unused bits
|
||||
so to get a clean value, the bits value must be used to mask
|
||||
the buffer output value appropriately. The storagebits value
|
||||
also specifies the data alignment. So s48/64>>2 will be a
|
||||
signed 48 bit integer stored in a 64 bit location aligned to
|
||||
a 64 bit boundary. To obtain the clean value, shift right 2
|
||||
and apply a mask to zero the top 16 bits of the result.
|
||||
For other storage combinations this attribute will be extended
|
||||
appropriately.
|
||||
|
||||
Since kernel 5.11 the scan_elements attributes are merged into
|
||||
the bufferY directory, to be configurable per buffer.
|
||||
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_z_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_z_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_z_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_tilt_comp_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_tilt_comp_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_timestamp_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressure_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_quaternion_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_proximity_index
|
||||
KernelVersion: 2.6.37
|
||||
Description:
|
||||
A single positive integer specifying the position of this
|
||||
scan element in the buffer. Note these are not dependent on
|
||||
what is enabled and may not be contiguous. Thus for user-space
|
||||
to establish the full layout these must be used in conjunction
|
||||
with all _en attributes to establish which channels are present,
|
||||
and the relevant _type attributes to establish the data storage
|
||||
format.
|
||||
|
||||
Since kernel 5.11 the scan_elements attributes are merged into
|
||||
the bufferY directory, to be configurable per buffer.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/watermark
|
||||
KernelVersion: 4.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
A single positive integer specifying the maximum number of scan
|
||||
elements to wait for.
|
||||
|
||||
Poll will block until the watermark is reached.
|
||||
|
||||
Blocking read will wait until the minimum between the requested
|
||||
read amount or the low water mark is available.
|
||||
|
||||
Non-blocking read will retrieve the available samples from the
|
||||
buffer even if there are less samples then watermark level. This
|
||||
allows the application to block on poll with a timeout and read
|
||||
the available samples after the timeout expires and thus have a
|
||||
maximum delay guarantee.
|
||||
|
||||
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
|
||||
KernelVersion: 4.16
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
A read-only value indicating the bytes of data available in the
|
||||
buffer. In the case of an output buffer, this indicates the
|
||||
amount of empty space available to write data to. In the case of
|
||||
an input buffer, this indicates the amount of data available for
|
||||
reading.
|
||||
|
||||
Since Kernel 5.11, multiple buffers are supported.
|
||||
so, it is better to use, instead:
|
||||
/sys/bus/iio/devices/iio:deviceX/bufferY/data_available
|
@ -6,4 +6,4 @@ Description:
|
||||
with the update that cpuidle governor can be changed at runtime in default,
|
||||
both current_governor and current_governor_ro co-exist under
|
||||
/sys/devices/system/cpu/cpuidle/ file, it's duplicate so make
|
||||
current_governor_ro obselete.
|
||||
current_governor_ro obsolete.
|
||||
|
@ -5,7 +5,7 @@ Contact: Dhaval Giani <dhaval@linux.vnet.ibm.com>
|
||||
Description:
|
||||
The /sys/kernel/uids/<uid>/cpu_shares tunable is used
|
||||
to set the cpu bandwidth a user is allowed. This is a
|
||||
propotional value. What that means is that if there
|
||||
proportional value. What that means is that if there
|
||||
are two users logged in, each with an equal number of
|
||||
shares, then they will get equal CPU bandwidth. Another
|
||||
example would be, if User A has shares = 1024 and user
|
||||
|
@ -61,7 +61,7 @@ Date: September. 2017
|
||||
KernelVersion: 4.14
|
||||
Contact: Stephen Hemminger <sthemmin@microsoft.com>
|
||||
Description: Directory for per-channel information
|
||||
NN is the VMBUS relid associtated with the channel.
|
||||
NN is the VMBUS relid associated with the channel.
|
||||
|
||||
What: /sys/bus/vmbus/devices/<UUID>/channels/<N>/cpu
|
||||
Date: September. 2017
|
||||
|
@ -19,7 +19,7 @@ Date: April 2011
|
||||
KernelVersion: 3.0
|
||||
Contact: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Description:
|
||||
The major:minor number (in hexidecimal) of the
|
||||
The major:minor number (in hexadecimal) of the
|
||||
physical device providing the storage for this backend
|
||||
block device.
|
||||
|
||||
|
@ -731,26 +731,6 @@ Description:
|
||||
is the irq number of "sdma3", and M is irq number of "sdma4" in
|
||||
the /proc/interrupts file.
|
||||
|
||||
|
||||
sysfs interface for Intel(R) X722 iWARP i40iw driver
|
||||
----------------------------------------------------
|
||||
|
||||
What: /sys/class/infiniband/i40iwX/hw_rev
|
||||
What: /sys/class/infiniband/i40iwX/hca_type
|
||||
What: /sys/class/infiniband/i40iwX/board_id
|
||||
Date: Jan, 2016
|
||||
KernelVersion: v4.10
|
||||
Contact: linux-rdma@vger.kernel.org
|
||||
Description:
|
||||
=============== ==== ========================
|
||||
hw_rev: (RO) Hardware revision number
|
||||
|
||||
hca_type: (RO) Show HCA type (I40IW)
|
||||
|
||||
board_id: (RO) I40IW board ID
|
||||
=============== ==== ========================
|
||||
|
||||
|
||||
sysfs interface for QLogic qedr NIC Driver
|
||||
------------------------------------------
|
||||
|
||||
|
@ -23,3 +23,86 @@ Description: Default value for the Data Stream Control Register (DSCR) on
|
||||
here).
|
||||
If set by a process it will be inherited by child processes.
|
||||
Values: 64 bit unsigned integer (bit field)
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/physical_package_id
|
||||
Description: physical package id of cpuX. Typically corresponds to a physical
|
||||
socket number, but the actual value is architecture and platform
|
||||
dependent.
|
||||
Values: integer
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/die_id
|
||||
Description: the CPU die ID of cpuX. Typically it is the hardware platform's
|
||||
identifier (rather than the kernel's). The actual value is
|
||||
architecture and platform dependent.
|
||||
Values: integer
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/core_id
|
||||
Description: 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.
|
||||
Values: integer
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/book_id
|
||||
Description: the book ID of cpuX. Typically it is the hardware platform's
|
||||
identifier (rather than the kernel's). The actual value is
|
||||
architecture and platform dependent. it's only used on s390.
|
||||
Values: integer
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/drawer_id
|
||||
Description: the drawer ID of cpuX. Typically it is the hardware platform's
|
||||
identifier (rather than the kernel's). The actual value is
|
||||
architecture and platform dependent. it's only used on s390.
|
||||
Values: integer
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/core_cpus
|
||||
Description: internal kernel map of CPUs within the same core.
|
||||
(deprecated name: "thread_siblings")
|
||||
Values: hexadecimal bitmask.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/core_cpus_list
|
||||
Description: human-readable list of CPUs within the same core.
|
||||
The format is like 0-3, 8-11, 14,17.
|
||||
(deprecated name: "thread_siblings_list").
|
||||
Values: decimal list.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/package_cpus
|
||||
Description: internal kernel map of the CPUs sharing the same physical_package_id.
|
||||
(deprecated name: "core_siblings").
|
||||
Values: hexadecimal bitmask.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/package_cpus_list
|
||||
Description: human-readable list of CPUs sharing the same physical_package_id.
|
||||
The format is like 0-3, 8-11, 14,17.
|
||||
(deprecated name: "core_siblings_list")
|
||||
Values: decimal list.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/die_cpus
|
||||
Description: internal kernel map of CPUs within the same die.
|
||||
Values: hexadecimal bitmask.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/die_cpus_list
|
||||
Description: human-readable list of CPUs within the same die.
|
||||
The format is like 0-3, 8-11, 14,17.
|
||||
Values: decimal list.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/book_siblings
|
||||
Description: internal kernel map of cpuX's hardware threads within the same
|
||||
book_id. it's only used on s390.
|
||||
Values: hexadecimal bitmask.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/book_siblings_list
|
||||
Description: human-readable list of cpuX's hardware threads within the same
|
||||
book_id.
|
||||
The format is like 0-3, 8-11, 14,17. it's only used on s390.
|
||||
Values: decimal list.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/drawer_siblings
|
||||
Description: internal kernel map of cpuX's hardware threads within the same
|
||||
drawer_id. it's only used on s390.
|
||||
Values: hexadecimal bitmask.
|
||||
|
||||
What: /sys/devices/system/cpu/cpuX/topology/drawer_siblings_list
|
||||
Description: human-readable list of cpuX's hardware threads within the same
|
||||
drawer_id.
|
||||
The format is like 0-3, 8-11, 14,17. it's only used on s390.
|
||||
Values: decimal list.
|
||||
|
@ -173,7 +173,7 @@ What: /sys/bus/dsa/devices/wq<m>.<n>/priority
|
||||
Date: Oct 25, 2019
|
||||
KernelVersion: 5.6.0
|
||||
Contact: dmaengine@vger.kernel.org
|
||||
Description: The priority value of this work queue, it is a vlue relative to
|
||||
Description: The priority value of this work queue, it is a value relative to
|
||||
other work queue in the same group to control quality of service
|
||||
for dispatching work from multiple workqueues in the same group.
|
||||
|
||||
|
@ -137,7 +137,7 @@ Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||
Description: These files show the system reset cause, as following:
|
||||
COMEX thermal shutdown; wathchdog power off or reset was derived
|
||||
by one of the next components: COMEX, switch board or by Small Form
|
||||
Factor mezzanine, reset requested from ASIC, reset cuased by BIOS
|
||||
Factor mezzanine, reset requested from ASIC, reset caused by BIOS
|
||||
reload. Value 1 in file means this is reset cause, 0 - otherwise.
|
||||
Only one of the above causes could be 1 at the same time, representing
|
||||
only last reset cause.
|
||||
@ -183,7 +183,7 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/vpd_wp
|
||||
Date: January 2020
|
||||
KernelVersion: 5.6
|
||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||
Description: This file allows to overwrite system VPD hardware wrtie
|
||||
Description: This file allows to overwrite system VPD hardware write
|
||||
protection when attribute is set 1.
|
||||
|
||||
The file is read/write.
|
||||
|
13
Documentation/ABI/stable/sysfs-driver-w1_ds2438
Normal file
13
Documentation/ABI/stable/sysfs-driver-w1_ds2438
Normal file
@ -0,0 +1,13 @@
|
||||
What: /sys/bus/w1/devices/.../page1
|
||||
Date: April 2021
|
||||
Contact: Luiz Sampaio <sampaio.ime@gmail.com>
|
||||
Description: read the contents of the page1 of the DS2438
|
||||
see Documentation/w1/slaves/w1_ds2438.rst for detailed information
|
||||
Users: any user space application which wants to communicate with DS2438
|
||||
|
||||
What: /sys/bus/w1/devices/.../offset
|
||||
Date: April 2021
|
||||
Contact: Luiz Sampaio <sampaio.ime@gmail.com>
|
||||
Description: write the contents to the offset register of the DS2438
|
||||
see Documentation/w1/slaves/w1_ds2438.rst for detailed information
|
||||
Users: any user space application which wants to communicate with DS2438
|
@ -31,4 +31,4 @@ Date: April 2016
|
||||
KernelVersion: 4.7
|
||||
Description:
|
||||
Dummy IIO devices directory. Creating a directory here will result
|
||||
in creating a dummy IIO device in the IIO subystem.
|
||||
in creating a dummy IIO device in the IIO subsystem.
|
||||
|
@ -20,7 +20,7 @@ Description:
|
||||
|
||||
subbuffer_size
|
||||
configure the sub-buffer size for this channel
|
||||
(needed for synchronous and isochrnous data)
|
||||
(needed for synchronous and isochronous data)
|
||||
|
||||
|
||||
num_buffers
|
||||
@ -75,7 +75,7 @@ Description:
|
||||
|
||||
subbuffer_size
|
||||
configure the sub-buffer size for this channel
|
||||
(needed for synchronous and isochrnous data)
|
||||
(needed for synchronous and isochronous data)
|
||||
|
||||
|
||||
num_buffers
|
||||
@ -130,7 +130,7 @@ Description:
|
||||
|
||||
subbuffer_size
|
||||
configure the sub-buffer size for this channel
|
||||
(needed for synchronous and isochrnous data)
|
||||
(needed for synchronous and isochronous data)
|
||||
|
||||
|
||||
num_buffers
|
||||
@ -196,7 +196,7 @@ Description:
|
||||
|
||||
subbuffer_size
|
||||
configure the sub-buffer size for this channel
|
||||
(needed for synchronous and isochrnous data)
|
||||
(needed for synchronous and isochronous data)
|
||||
|
||||
|
||||
num_buffers
|
||||
|
@ -137,7 +137,7 @@ Description:
|
||||
This group contains "OS String" extension handling attributes.
|
||||
|
||||
============= ===============================================
|
||||
use flag turning "OS Desctiptors" support on/off
|
||||
use flag turning "OS Descriptors" support on/off
|
||||
b_vendor_code one-byte value used for custom per-device and
|
||||
per-interface requests
|
||||
qw_sign an identifier to be reported as "OS String"
|
||||
|
@ -8,6 +8,8 @@ Description:
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
c_sync capture synchronization type (async/adaptive)
|
||||
fb_max maximum extra bandwidth in async mode
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
|
@ -170,7 +170,7 @@ Description: Default color matching descriptors
|
||||
bMatrixCoefficients matrix used to compute luma and
|
||||
chroma values from the color primaries
|
||||
bTransferCharacteristics optoelectronic transfer
|
||||
characteristic of the source picutre,
|
||||
characteristic of the source picture,
|
||||
also called the gamma function
|
||||
bColorPrimaries color primaries and the reference
|
||||
white
|
||||
@ -311,7 +311,7 @@ Description: Specific streaming header descriptors
|
||||
a hardware trigger interrupt event
|
||||
bTriggerSupport flag specifying if hardware
|
||||
triggering is supported
|
||||
bStillCaptureMethod method of still image caputre
|
||||
bStillCaptureMethod method of still image capture
|
||||
supported
|
||||
bTerminalLink id of the output terminal to which
|
||||
the video endpoint of this interface
|
||||
|
@ -31,7 +31,7 @@ What: /sys/kernel/debug/genwqe/genwqe<n>_card/prev_regs
|
||||
Date: Oct 2013
|
||||
Contact: haver@linux.vnet.ibm.com
|
||||
Description: Dump of the error registers before the last reset of
|
||||
the card occured.
|
||||
the card occurred.
|
||||
Only available for PF.
|
||||
|
||||
What: /sys/kernel/debug/genwqe/genwqe<n>_card/prev_dbg_uid0
|
||||
|
@ -153,7 +153,7 @@ KernelVersion: 5.1
|
||||
Contact: ogabbay@kernel.org
|
||||
Description: Triggers an I2C transaction that is generated by the device's
|
||||
CPU. Writing to this file generates a write transaction while
|
||||
reading from the file generates a read transcation
|
||||
reading from the file generates a read transaction
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/i2c_reg
|
||||
Date: Jan 2019
|
||||
@ -207,6 +207,14 @@ Contact: ogabbay@kernel.org
|
||||
Description: Sets the PCI power state. Valid values are "1" for D0 and "2"
|
||||
for D3Hot
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/skip_reset_on_timeout
|
||||
Date: Jun 2021
|
||||
KernelVersion: 5.13
|
||||
Contact: ynudelman@habana.ai
|
||||
Description: Sets the skip reset on timeout option for the device. Value of
|
||||
"0" means device will be reset in case some CS has timed out,
|
||||
otherwise it will not be reset.
|
||||
|
||||
What: /sys/kernel/debug/habanalabs/hl<n>/stop_on_err
|
||||
Date: Mar 2020
|
||||
KernelVersion: 5.6
|
||||
|
@ -24,7 +24,7 @@ Description:
|
||||
1 Enable digital signature validation
|
||||
2 Permit modification of EVM-protected metadata at
|
||||
runtime. Not supported if HMAC validation and
|
||||
creation is enabled.
|
||||
creation is enabled (deprecated).
|
||||
31 Disable further runtime modification of EVM policy
|
||||
=== ==================================================
|
||||
|
||||
@ -47,10 +47,38 @@ Description:
|
||||
|
||||
will enable digital signature validation, permit
|
||||
modification of EVM-protected metadata and
|
||||
disable all further modification of policy
|
||||
disable all further modification of policy. This option is now
|
||||
deprecated in favor of::
|
||||
|
||||
Note that once a key has been loaded, it will no longer be
|
||||
possible to enable metadata modification.
|
||||
echo 0x80000002 ><securityfs>/evm
|
||||
|
||||
as the outstanding issues that prevent the usage of EVM portable
|
||||
signatures have been solved.
|
||||
|
||||
Echoing a value is additive, the new value is added to the
|
||||
existing initialization flags.
|
||||
|
||||
For example, after::
|
||||
|
||||
echo 2 ><securityfs>/evm
|
||||
|
||||
another echo can be performed::
|
||||
|
||||
echo 1 ><securityfs>/evm
|
||||
|
||||
and the resulting value will be 3.
|
||||
|
||||
Note that once an HMAC key has been loaded, it will no longer
|
||||
be possible to enable metadata modification. Signaling that an
|
||||
HMAC key has been loaded will clear the corresponding flag.
|
||||
For example, if the current value is 6 (2 and 4 set)::
|
||||
|
||||
echo 1 ><securityfs>/evm
|
||||
|
||||
will set the new value to 3 (4 cleared).
|
||||
|
||||
Loading an HMAC key is the only way to disable metadata
|
||||
modification.
|
||||
|
||||
Until key loading has been signaled EVM can not create
|
||||
or validate the 'security.evm' xattr, but returns
|
||||
|
@ -57,6 +57,7 @@ Description:
|
||||
What: /sys/bus/counter/devices/counterX/countY/count_mode_available
|
||||
What: /sys/bus/counter/devices/counterX/countY/error_noise_available
|
||||
What: /sys/bus/counter/devices/counterX/countY/function_available
|
||||
What: /sys/bus/counter/devices/counterX/countY/prescaler_available
|
||||
What: /sys/bus/counter/devices/counterX/countY/signalZ_action_available
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -154,6 +155,15 @@ Description:
|
||||
Count Y. If possible, this should match the name of the
|
||||
respective channel as it appears in the device datasheet.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/countY/prescaler
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Configure the prescaler value associated with Count Y.
|
||||
On the FlexTimer, the counter clock source passes through a
|
||||
prescaler (i.e. a counter). This acts like a clock
|
||||
divider.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/countY/preset
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -193,6 +203,15 @@ Description:
|
||||
both edges:
|
||||
Any state transition.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/countY/spike_filter_ns
|
||||
KernelVersion: 5.14
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
If the counter device supports programmable spike filter this
|
||||
attribute indicates the value in nanoseconds where noise pulses
|
||||
shorter or equal to configured value are ignored. Value 0 means
|
||||
filter is disabled.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/name
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -215,11 +234,45 @@ Description:
|
||||
Read-only attribute that indicates the total number of Signals
|
||||
belonging to the Counter.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/signal
|
||||
What: /sys/bus/counter/devices/counterX/signalY/cable_fault
|
||||
KernelVersion: 5.7
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read-only attribute that indicates whether a differential
|
||||
encoder cable fault (not connected or loose wires) is detected
|
||||
for the respective channel of Signal Y. Valid attribute values
|
||||
are boolean. Detection must first be enabled via the
|
||||
corresponding cable_fault_enable attribute.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/cable_fault_enable
|
||||
KernelVersion: 5.7
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Whether detection of differential encoder cable faults for the
|
||||
respective channel of Signal Y is enabled. Valid attribute
|
||||
values are boolean.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/filter_clock_prescaler
|
||||
KernelVersion: 5.7
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Filter clock factor for input Signal Y. This prescaler value
|
||||
affects the inputs of both quadrature pair signals.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/index_polarity
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Signal data of Signal Y represented as a string.
|
||||
Active level of index input Signal Y; irrelevant in
|
||||
non-synchronous load mode.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/index_polarity_available
|
||||
What: /sys/bus/counter/devices/counterX/signalY/synchronous_mode_available
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Discrete set of available values for the respective Signal Y
|
||||
configuration are listed in this file.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/name
|
||||
KernelVersion: 5.2
|
||||
@ -228,3 +281,31 @@ Description:
|
||||
Read-only attribute that indicates the device-specific name of
|
||||
Signal Y. If possible, this should match the name of the
|
||||
respective signal as it appears in the device datasheet.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/signal
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Signal data of Signal Y represented as a string.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/synchronous_mode
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Configure the counter associated with Signal Y for
|
||||
non-synchronous or synchronous load mode. Synchronous load mode
|
||||
cannot be selected in non-quadrature (Pulse-Direction) clock
|
||||
mode.
|
||||
|
||||
non-synchronous:
|
||||
A logic low level is the active level at this index
|
||||
input. The index function (as enabled via preset_enable)
|
||||
is performed directly on the active level of the index
|
||||
input.
|
||||
|
||||
synchronous:
|
||||
Intended for interfacing with encoder Index output in
|
||||
quadrature clock mode. The active level is configured
|
||||
via index_polarity. The index function (as enabled via
|
||||
preset_enable) is performed synchronously with the
|
||||
quadrature clock on the active level of the index input.
|
||||
|
@ -1,61 +0,0 @@
|
||||
What: /sys/bus/counter/devices/counterX/signalY/cable_fault
|
||||
KernelVersion: 5.7
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read-only attribute that indicates whether a differential
|
||||
encoder cable fault (not connected or loose wires) is detected
|
||||
for the respective channel of Signal Y. Valid attribute values
|
||||
are boolean. Detection must first be enabled via the
|
||||
corresponding cable_fault_enable attribute.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/cable_fault_enable
|
||||
KernelVersion: 5.7
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Whether detection of differential encoder cable faults for the
|
||||
respective channel of Signal Y is enabled. Valid attribute
|
||||
values are boolean.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/filter_clock_prescaler
|
||||
KernelVersion: 5.7
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Filter clock factor for input Signal Y. This prescaler value
|
||||
affects the inputs of both quadrature pair signals.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/index_polarity
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Active level of index input Signal Y; irrelevant in
|
||||
non-synchronous load mode.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/index_polarity_available
|
||||
What: /sys/bus/counter/devices/counterX/signalY/synchronous_mode_available
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Discrete set of available values for the respective Signal Y
|
||||
configuration are listed in this file.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/synchronous_mode
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Configure the counter associated with Signal Y for
|
||||
non-synchronous or synchronous load mode. Synchronous load mode
|
||||
cannot be selected in non-quadrature (Pulse-Direction) clock
|
||||
mode.
|
||||
|
||||
non-synchronous:
|
||||
A logic low level is the active level at this index
|
||||
input. The index function (as enabled via preset_enable)
|
||||
is performed directly on the active level of the index
|
||||
input.
|
||||
|
||||
synchronous:
|
||||
Intended for interfacing with encoder Index output in
|
||||
quadrature clock mode. The active level is configured
|
||||
via index_polarity. The index function (as enabled via
|
||||
preset_enable) is performed synchronously with the
|
||||
quadrature clock on the active level of the index input.
|
@ -1,16 +0,0 @@
|
||||
What: /sys/bus/counter/devices/counterX/countY/prescaler_available
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Discrete set of available values for the respective Count Y
|
||||
configuration are listed in this file. Values are delimited by
|
||||
newline characters.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/countY/prescaler
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Configure the prescaler value associated with Count Y.
|
||||
On the FlexTimer, the counter clock source passes through a
|
||||
prescaler (i.e. a counter). This acts like a clock
|
||||
divider.
|
@ -24,3 +24,106 @@ Description:
|
||||
(RO) "Persistent Only Capacity" as bytes. Represents the
|
||||
identically named field in the Identify Memory Device Output
|
||||
Payload in the CXL-2.0 specification.
|
||||
|
||||
What: /sys/bus/cxl/devices/*/devtype
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
CXL device objects export the devtype attribute which mirrors
|
||||
the same value communicated in the DEVTYPE environment variable
|
||||
for uevents for devices on the "cxl" bus.
|
||||
|
||||
What: /sys/bus/cxl/devices/portX/uport
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
CXL port objects are enumerated from either a platform firmware
|
||||
device (ACPI0017 and ACPI0016) or PCIe switch upstream port with
|
||||
CXL component registers. The 'uport' symlink connects the CXL
|
||||
portX object to the device that published the CXL port
|
||||
capability.
|
||||
|
||||
What: /sys/bus/cxl/devices/portX/dportY
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
CXL port objects are enumerated from either a platform firmware
|
||||
device (ACPI0017 and ACPI0016) or PCIe switch upstream port with
|
||||
CXL component registers. The 'dportY' symlink identifies one or
|
||||
more downstream ports that the upstream port may target in its
|
||||
decode of CXL memory resources. The 'Y' integer reflects the
|
||||
hardware port unique-id used in the hardware decoder target
|
||||
list.
|
||||
|
||||
What: /sys/bus/cxl/devices/decoderX.Y
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
CXL decoder objects are enumerated from either a platform
|
||||
firmware description, or a CXL HDM decoder register set in a
|
||||
PCIe device (see CXL 2.0 section 8.2.5.12 CXL HDM Decoder
|
||||
Capability Structure). The 'X' in decoderX.Y represents the
|
||||
cxl_port container of this decoder, and 'Y' represents the
|
||||
instance id of a given decoder resource.
|
||||
|
||||
What: /sys/bus/cxl/devices/decoderX.Y/{start,size}
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
The 'start' and 'size' attributes together convey the physical
|
||||
address base and number of bytes mapped in the decoder's decode
|
||||
window. For decoders of devtype "cxl_decoder_root" the address
|
||||
range is fixed. For decoders of devtype "cxl_decoder_switch" the
|
||||
address is bounded by the decode range of the cxl_port ancestor
|
||||
of the decoder's cxl_port, and dynamically updates based on the
|
||||
active memory regions in that address space.
|
||||
|
||||
What: /sys/bus/cxl/devices/decoderX.Y/locked
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
CXL HDM decoders have the capability to lock the configuration
|
||||
until the next device reset. For decoders of devtype
|
||||
"cxl_decoder_root" there is no standard facility to unlock them.
|
||||
For decoders of devtype "cxl_decoder_switch" a secondary bus
|
||||
reset, of the PCIe bridge that provides the bus for this
|
||||
decoders uport, unlocks / resets the decoder.
|
||||
|
||||
What: /sys/bus/cxl/devices/decoderX.Y/target_list
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
Display a comma separated list of the current decoder target
|
||||
configuration. The list is ordered by the current configured
|
||||
interleave order of the decoder's dport instances. Each entry in
|
||||
the list is a dport id.
|
||||
|
||||
What: /sys/bus/cxl/devices/decoderX.Y/cap_{pmem,ram,type2,type3}
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
When a CXL decoder is of devtype "cxl_decoder_root", it
|
||||
represents a fixed memory window identified by platform
|
||||
firmware. A fixed window may only support a subset of memory
|
||||
types. The 'cap_*' attributes indicate whether persistent
|
||||
memory, volatile memory, accelerator memory, and / or expander
|
||||
memory may be mapped behind this decoder's memory window.
|
||||
|
||||
What: /sys/bus/cxl/devices/decoderX.Y/target_type
|
||||
Date: June, 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
When a CXL decoder is of devtype "cxl_decoder_switch", it can
|
||||
optionally decode either accelerator memory (type-2) or expander
|
||||
memory (type-3). The 'target_type' attribute indicates the
|
||||
current setting which may dynamically change based on what
|
||||
memory regions are activated in this decode hierarchy.
|
||||
|
@ -12,7 +12,7 @@ KernelVersion: 4.12
|
||||
Contact: linux-fsi@lists.ozlabs.org
|
||||
Description:
|
||||
Sends an FSI BREAK command on a master's communication
|
||||
link to any connnected slaves. A BREAK resets connected
|
||||
link to any connected slaves. A BREAK resets connected
|
||||
device's logic and preps it to receive further commands
|
||||
from the master.
|
||||
|
||||
|
@ -455,6 +455,19 @@ Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Hardware applied calibration offset (assumed to fix production
|
||||
inaccuracies).
|
||||
icm42600: For this device values are real physical offsets
|
||||
expressed in SI units (m/s^2 for accelerometers and rad/s
|
||||
for gyroscope)/
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_calibbias_available
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_calibbias_available
|
||||
KernelVersion: 5.8
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Available values of calibbias. Maybe expressed as either of:
|
||||
|
||||
- a small discrete set of values like "0 2 4 6 8"
|
||||
- a range specified as "[min step max]"
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale
|
||||
@ -652,6 +665,25 @@ Description:
|
||||
Output frequency for channel Y in Hz. The number must always be
|
||||
specified and unique if the output corresponds to a single
|
||||
channel.
|
||||
Some drivers have additional constraints:
|
||||
ADF4371 has an integrated VCO with fundamendal output
|
||||
frequency ranging from 4000000000 Hz 8000000000 Hz.
|
||||
|
||||
out_altvoltage0_frequency:
|
||||
A divide by 1, 2, 4, 8, 16, 32 or circuit generates
|
||||
frequencies from 62500000 Hz to 8000000000 Hz.
|
||||
out_altvoltage1_frequency:
|
||||
This channel duplicates the channel 0 frequency
|
||||
out_altvoltage2_frequency:
|
||||
A frequency doubler generates frequencies from
|
||||
8000000000 Hz to 16000000000 Hz.
|
||||
out_altvoltage3_frequency:
|
||||
A frequency quadrupler generates frequencies from
|
||||
16000000000 Hz to 32000000000 Hz.
|
||||
|
||||
Note: writes to one of the channels will affect the frequency of
|
||||
all the other channels, since it involves changing the VCO
|
||||
fundamental output frequency.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_phase
|
||||
KernelVersion: 3.4.0
|
||||
@ -663,6 +695,17 @@ Description:
|
||||
specified and unique if the output corresponds to a single
|
||||
channel.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_currentY_raw
|
||||
Date: May 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set/get output current for channel Y. Units after application
|
||||
of scale and offset are milliamps.
|
||||
For some devices current channels are used to specify
|
||||
current supplied to elements used in taking a measurement
|
||||
of a different type. E.g. LED currents.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/events
|
||||
KernelVersion: 2.6.35
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -786,7 +829,7 @@ What: /sys/.../events/in_capacitanceY_adaptive_thresh_rising_en
|
||||
What: /sys/.../events/in_capacitanceY_adaptive_thresh_falling_en
|
||||
KernelVersion: 5.13
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Descrption:
|
||||
Description:
|
||||
Adaptive thresholds are similar to normal fixed thresholds
|
||||
but the value is expressed as an offset from a value which
|
||||
provides a low frequency approximation of the channel itself.
|
||||
@ -798,10 +841,10 @@ What: /sys/.../in_capacitanceY_adaptive_thresh_rising_timeout
|
||||
What: /sys/.../in_capacitanceY_adaptive_thresh_falling_timeout
|
||||
KernelVersion: 5.11
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Descrption:
|
||||
Description:
|
||||
When adaptive thresholds are used, the tracking signal
|
||||
may adjust too slowly to step changes in the raw signal.
|
||||
*_timeout (in seconds) specifies a time for which the
|
||||
Thus these specify the time in seconds for which the
|
||||
difference between the slow tracking signal and the raw
|
||||
signal is allowed to remain out-of-range before a reset
|
||||
event occurs in which the tracking signal is made equal
|
||||
@ -1195,16 +1238,12 @@ Description:
|
||||
The name of the trigger source being used, as per string given
|
||||
in /sys/class/iio/triggerY/name.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/length
|
||||
KernelVersion: 2.6.35
|
||||
What: /sys/bus/iio/devices/iio:deviceX/bufferY/length
|
||||
KernelVersion: 5.11
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Number of scans contained by the buffer.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/enable
|
||||
KernelVersion: 2.6.35
|
||||
What: /sys/bus/iio/devices/iio:deviceX/bufferY/enable
|
||||
KernelVersion: 5.11
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -1212,8 +1251,6 @@ Description:
|
||||
Actually start the buffer capture up. Will start trigger
|
||||
if first device and appropriate.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/scan_elements
|
||||
KernelVersion: 2.6.37
|
||||
What: /sys/bus/iio/devices/iio:deviceX/bufferY
|
||||
KernelVersion: 5.11
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -1224,34 +1261,6 @@ Description:
|
||||
Since kernel 5.11 the scan_elements attributes are merged into
|
||||
the bufferY directory, to be configurable per buffer.
|
||||
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_z_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_z_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_z_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_tilt_comp_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_tilt_comp_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_timestamp_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY-voltageZ_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_x_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_y_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressure_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_quaternion_en
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_proximity_en
|
||||
KernelVersion: 2.6.37
|
||||
What: /sys/.../iio:deviceX/bufferY/in_accel_x_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_accel_y_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_accel_z_en
|
||||
@ -1284,23 +1293,6 @@ Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Scan element control for triggered data capture.
|
||||
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_timestamp_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressure_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_quaternion_type
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_proximity_type
|
||||
KernelVersion: 2.6.37
|
||||
What: /sys/.../iio:deviceX/bufferY/in_accel_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_anglvel_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_magn_type
|
||||
@ -1347,33 +1339,6 @@ Description:
|
||||
If the type parameter can take one of a small set of values,
|
||||
this attribute lists them.
|
||||
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_accel_z_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_anglvel_z_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_magn_z_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_tilt_comp_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_tilt_comp_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_x_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_incli_y_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_timestamp_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressureY_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_pressure_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_rot_quaternion_index
|
||||
What: /sys/.../iio:deviceX/scan_elements/in_proximity_index
|
||||
KernelVersion: 2.6.37
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_index
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_supply_index
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_i_index
|
||||
@ -1613,8 +1578,6 @@ Description:
|
||||
Specifies number of seconds in which we compute the steps
|
||||
that occur in order to decide if the consumer is making steps.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/watermark
|
||||
KernelVersion: 4.2
|
||||
What: /sys/bus/iio/devices/iio:deviceX/bufferY/watermark
|
||||
KernelVersion: 5.11
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -1633,8 +1596,6 @@ Description:
|
||||
the available samples after the timeout expires and thus have a
|
||||
maximum delay guarantee.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/buffer/data_available
|
||||
KernelVersion: 4.16
|
||||
What: /sys/bus/iio/devices/iio:deviceX/bufferY/data_available
|
||||
KernelVersion: 5.11
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
|
@ -1,28 +1,3 @@
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Stores the PLL frequency in Hz for channel Y.
|
||||
Reading returns the actual frequency in Hz.
|
||||
The ADF4371 has an integrated VCO with fundamendal output
|
||||
frequency ranging from 4000000000 Hz 8000000000 Hz.
|
||||
|
||||
out_altvoltage0_frequency:
|
||||
A divide by 1, 2, 4, 8, 16, 32 or circuit generates
|
||||
frequencies from 62500000 Hz to 8000000000 Hz.
|
||||
out_altvoltage1_frequency:
|
||||
This channel duplicates the channel 0 frequency
|
||||
out_altvoltage2_frequency:
|
||||
A frequency doubler generates frequencies from
|
||||
8000000000 Hz to 16000000000 Hz.
|
||||
out_altvoltage3_frequency:
|
||||
A frequency quadrupler generates frequencies from
|
||||
16000000000 Hz to 32000000000 Hz.
|
||||
|
||||
Note: writes to one of the channels will affect the frequency of
|
||||
all the other channels, since it involves changing the VCO
|
||||
fundamental output frequency.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_name
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -34,11 +9,3 @@ Description:
|
||||
out_altvoltage2_name: RF16x
|
||||
out_altvoltage3_name: RF32x
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_powerdown
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
This attribute allows the user to power down the PLL and it's
|
||||
RFOut buffers.
|
||||
Writing 1 causes the specified channel to power down.
|
||||
Clearing returns to normal operation.
|
||||
|
@ -18,6 +18,8 @@ Description:
|
||||
respectively which simply helper channels containing the
|
||||
calculated difference in the value of stage 1 - 2 and 3 - 4.
|
||||
The values are expressed in 24-bit twos complement.
|
||||
The LED current for the stage is controlled via
|
||||
out_currentY_raw.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_intensityY_offset
|
||||
Date: May 2016
|
||||
@ -35,11 +37,3 @@ Contact: Andrew F. Davis <afd@ti.com>
|
||||
Description:
|
||||
Get and set the resistance and the capacitance settings for the
|
||||
Transimpedance Amplifier during the associated stage.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_currentY_raw
|
||||
Date: May 2016
|
||||
KernelVersion:
|
||||
Contact: Andrew F. Davis <afd@ti.com>
|
||||
Description:
|
||||
Get and set the LED current for the specified LED active during
|
||||
this stage. Y is the specific stage number.
|
||||
|
@ -1,20 +0,0 @@
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibbias
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibbias
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibbias
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibbias
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibbias
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibbias
|
||||
KernelVersion: 5.8
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Hardware applied calibration offset (assumed to fix production
|
||||
inaccuracies). Values represent a real physical offset expressed
|
||||
in SI units (m/s^2 for accelerometer and rad/s for gyroscope).
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_calibbias_available
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_calibbias_available
|
||||
KernelVersion: 5.8
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Range of available values for hardware offset. Values in SI
|
||||
units (m/s^2 for accelerometer and rad/s for gyroscope).
|
@ -41,14 +41,6 @@ Description:
|
||||
Get the current light zone (0..4) as defined by the
|
||||
in_illuminance0_threshY_{falling,rising} thresholds.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_currentY_raw
|
||||
Date: May 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Get output current for channel Y (0..255), that is,
|
||||
out_currentY_currentZ_raw, where Z is the current zone.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_currentY_currentZ_raw
|
||||
Date: May 2012
|
||||
KernelVersion: 3.5
|
||||
@ -59,3 +51,6 @@ Description:
|
||||
|
||||
These values correspond to the ALS-mapper target registers for
|
||||
ALS-mapper Y + 1.
|
||||
|
||||
Note that out_currentY_raw provides the current for the
|
||||
current zone.
|
||||
|
@ -39,9 +39,11 @@ KernelVersion: v5.9
|
||||
Contact: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>, nvdimm@lists.linux.dev,
|
||||
Description:
|
||||
(RO) Report various performance stats related to papr-scm NVDIMM
|
||||
device. Each stat is reported on a new line with each line
|
||||
composed of a stat-identifier followed by it value. Below are
|
||||
currently known dimm performance stats which are reported:
|
||||
device. This attribute is only available for NVDIMM devices
|
||||
that support reporting NVDIMM performance stats. Each stat is
|
||||
reported on a new line with each line composed of a
|
||||
stat-identifier followed by it value. Below are currently known
|
||||
dimm performance stats which are reported:
|
||||
|
||||
* "CtlResCt" : Controller Reset Count
|
||||
* "CtlResTm" : Controller Reset Elapsed Time
|
||||
|
@ -139,8 +139,8 @@ Description:
|
||||
binary file containing the Vital Product Data for the
|
||||
device. It should follow the VPD format defined in
|
||||
PCI Specification 2.1 or 2.2, but users should consider
|
||||
that some devices may have malformatted data. If the
|
||||
underlying VPD has a writable section then the
|
||||
that some devices may have incorrectly formatted data.
|
||||
If the underlying VPD has a writable section then the
|
||||
corresponding section of this file will be writable.
|
||||
|
||||
What: /sys/bus/pci/devices/.../virtfnN
|
||||
|
31
Documentation/ABI/testing/sysfs-bus-spi-devices-spi-nor
Normal file
31
Documentation/ABI/testing/sysfs-bus-spi-devices-spi-nor
Normal file
@ -0,0 +1,31 @@
|
||||
What: /sys/bus/spi/devices/.../spi-nor/jedec_id
|
||||
Date: April 2021
|
||||
KernelVersion: 5.14
|
||||
Contact: linux-mtd@lists.infradead.org
|
||||
Description: (RO) The JEDEC ID of the SPI NOR flash as reported by the
|
||||
flash device.
|
||||
|
||||
|
||||
What: /sys/bus/spi/devices/.../spi-nor/manufacturer
|
||||
Date: April 2021
|
||||
KernelVersion: 5.14
|
||||
Contact: linux-mtd@lists.infradead.org
|
||||
Description: (RO) Manufacturer of the SPI NOR flash.
|
||||
|
||||
|
||||
What: /sys/bus/spi/devices/.../spi-nor/partname
|
||||
Date: April 2021
|
||||
KernelVersion: 5.14
|
||||
Contact: linux-mtd@lists.infradead.org
|
||||
Description: (RO) Part name of the SPI NOR flash.
|
||||
|
||||
|
||||
What: /sys/bus/spi/devices/.../spi-nor/sfdp
|
||||
Date: April 2021
|
||||
KernelVersion: 5.14
|
||||
Contact: linux-mtd@lists.infradead.org
|
||||
Description: (RO) This attribute is only present if the SPI NOR flash
|
||||
device supports the "Read SFDP" command (5Ah).
|
||||
|
||||
If present, it contains the complete SFDP (serial flash
|
||||
discoverable parameters) binary data of the flash.
|
@ -1,4 +1,4 @@
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/boot_acl
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/boot_acl
|
||||
Date: Jun 2018
|
||||
KernelVersion: 4.17
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
@ -21,7 +21,7 @@ Description: Holds a comma separated list of device unique_ids that
|
||||
If a device is authorized automatically during boot its
|
||||
boot attribute is set to 1.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/deauthorization
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/deauthorization
|
||||
Date: May 2021
|
||||
KernelVersion: 5.12
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
@ -30,7 +30,7 @@ Description: This attribute tells whether the system supports
|
||||
de-authorize PCIe tunnel by writing 0 to authorized
|
||||
attribute under each device.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/iommu_dma_protection
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/iommu_dma_protection
|
||||
Date: Mar 2019
|
||||
KernelVersion: 4.21
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
@ -39,7 +39,7 @@ Description: This attribute tells whether the system uses IOMMU
|
||||
it is not (DMA protection is solely based on Thunderbolt
|
||||
security levels).
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/security
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/security
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
@ -61,7 +61,7 @@ Description: This attribute holds current Thunderbolt security level
|
||||
the BIOS.
|
||||
======= ==================================================
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../authorized
|
||||
What: /sys/bus/thunderbolt/devices/.../authorized
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
@ -95,14 +95,14 @@ Description: This attribute is used to authorize Thunderbolt devices
|
||||
EKEYREJECTED if the challenge response did not match.
|
||||
== ========================================================
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../boot
|
||||
What: /sys/bus/thunderbolt/devices/.../boot
|
||||
Date: Jun 2018
|
||||
KernelVersion: 4.17
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Description: This attribute contains 1 if Thunderbolt device was already
|
||||
authorized on boot and 0 otherwise.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../generation
|
||||
What: /sys/bus/thunderbolt/devices/.../generation
|
||||
Date: Jan 2020
|
||||
KernelVersion: 5.5
|
||||
Contact: Christian Kellner <christian@kellner.me>
|
||||
@ -110,7 +110,7 @@ Description: This attribute contains the generation of the Thunderbolt
|
||||
controller associated with the device. It will contain 4
|
||||
for USB4.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../key
|
||||
What: /sys/bus/thunderbolt/devices/.../key
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
@ -213,12 +213,15 @@ Description: When new NVM image is written to the non-active NVM
|
||||
restarted with the new NVM firmware. If the image
|
||||
verification fails an error code is returned instead.
|
||||
|
||||
This file will accept writing values "1" or "2"
|
||||
This file will accept writing values "1", "2" or "3".
|
||||
|
||||
- Writing "1" will flush the image to the storage
|
||||
area and authenticate the image in one action.
|
||||
- Writing "2" will run some basic validation on the image
|
||||
and flush it to the storage area.
|
||||
- Writing "3" will authenticate the image that is
|
||||
currently written in the storage area. This is only
|
||||
supported with USB4 devices and retimers.
|
||||
|
||||
When read holds status of the last authentication
|
||||
operation if an error occurred during the process. This
|
||||
@ -226,6 +229,20 @@ Description: When new NVM image is written to the non-active NVM
|
||||
based mailbox before the device is power cycled. Writing
|
||||
0 here clears the status.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../nvm_authenticate_on_disconnect
|
||||
Date: Oct 2020
|
||||
KernelVersion: v5.9
|
||||
Contact: Mario Limonciello <mario.limonciello@dell.com>
|
||||
Description: For supported devices, automatically authenticate the new Thunderbolt
|
||||
image when the device is disconnected from the host system.
|
||||
|
||||
This file will accept writing values "1" or "2"
|
||||
|
||||
- Writing "1" will flush the image to the storage
|
||||
area and prepare the device for authentication on disconnect.
|
||||
- Writing "2" will run some basic validation on the image
|
||||
and flush it to the storage area.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/<xdomain>.<service>/key
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.15
|
||||
@ -276,6 +293,39 @@ Contact: thunderbolt-software@lists.01.org
|
||||
Description: This contains XDomain service specific settings as
|
||||
bitmask. Format: %x
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/usb4_portX/link
|
||||
Date: Sep 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: Returns the current link mode. Possible values are
|
||||
"usb4", "tbt" and "none".
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/usb4_portX/offline
|
||||
Date: Sep 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Rajmohan Mani <rajmohan.mani@intel.com>
|
||||
Description: Writing 1 to this attribute puts the USB4 port into
|
||||
offline mode. Only allowed when there is nothing
|
||||
connected to the port (link attribute returns "none").
|
||||
Once the port is in offline mode it does not receive any
|
||||
hotplug events. This is used to update NVM firmware of
|
||||
on-board retimers. Writing 0 puts the port back to
|
||||
online mode.
|
||||
|
||||
This attribute is only visible if the platform supports
|
||||
powering on retimers when there is no cable connected.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/usb4_portX/rescan
|
||||
Date: Sep 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Rajmohan Mani <rajmohan.mani@intel.com>
|
||||
Description: When the USB4 port is in offline mode writing 1 to this
|
||||
attribute forces rescan of the sideband for on-board
|
||||
retimers. Each retimer appear under the USB4 port as if
|
||||
the USB4 link was up. These retimers act in the same way
|
||||
as if the cable was connected so upgrading their NVM
|
||||
firmware can be done the usual way.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/<device>:<port>.<index>/device
|
||||
Date: Oct 2020
|
||||
KernelVersion: v5.9
|
||||
@ -308,17 +358,3 @@ Date: Oct 2020
|
||||
KernelVersion: v5.9
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: Retimer vendor identifier read from the hardware.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../nvm_authenticate_on_disconnect
|
||||
Date: Oct 2020
|
||||
KernelVersion: v5.9
|
||||
Contact: Mario Limonciello <mario.limonciello@dell.com>
|
||||
Description: For supported devices, automatically authenticate the new Thunderbolt
|
||||
image when the device is disconnected from the host system.
|
||||
|
||||
This file will accept writing values "1" or "2"
|
||||
|
||||
- Writing "1" will flush the image to the storage
|
||||
area and prepare the device for authentication on disconnect.
|
||||
- Writing "2" will run some basic validation on the image
|
||||
and flush it to the storage area.
|
||||
|
@ -154,17 +154,6 @@ Description:
|
||||
files hold a string value (enable or disable) indicating whether
|
||||
or not USB3 hardware LPM U1 or U2 is enabled for the device.
|
||||
|
||||
What: /sys/bus/usb/devices/.../removable
|
||||
Date: February 2012
|
||||
Contact: Matthew Garrett <mjg@redhat.com>
|
||||
Description:
|
||||
Some information about whether a given USB device is
|
||||
physically fixed to the platform can be inferred from a
|
||||
combination of hub descriptor bits and platform-specific data
|
||||
such as ACPI. This file will read either "removable" or
|
||||
"fixed" if the information is available, and "unknown"
|
||||
otherwise.
|
||||
|
||||
What: /sys/bus/usb/devices/.../ltm_capable
|
||||
Date: July 2012
|
||||
Contact: Sarah Sharp <sarah.a.sharp@linux.intel.com>
|
||||
|
@ -84,3 +84,103 @@ Description:
|
||||
It can be enabled by writing the value stored in
|
||||
/sys/class/backlight/<backlight>/max_brightness to
|
||||
/sys/class/backlight/<backlight>/brightness.
|
||||
|
||||
What: /sys/class/backlight/<backlight>/<ambient light zone>_max
|
||||
Date: Sep, 2009
|
||||
KernelVersion: v2.6.32
|
||||
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||
Description:
|
||||
Control the maximum brightness for <ambient light zone>
|
||||
on this <backlight>. Values are between 0 and 127. This file
|
||||
will also show the brightness level stored for this
|
||||
<ambient light zone>.
|
||||
|
||||
The <ambient light zone> is device-driver specific:
|
||||
|
||||
For ADP5520 and ADP5501, <ambient light zone> can be:
|
||||
|
||||
=========== ================================================
|
||||
Ambient sysfs entry
|
||||
light zone
|
||||
=========== ================================================
|
||||
daylight /sys/class/backlight/<backlight>/daylight_max
|
||||
office /sys/class/backlight/<backlight>/office_max
|
||||
dark /sys/class/backlight/<backlight>/dark_max
|
||||
=========== ================================================
|
||||
|
||||
For ADP8860, <ambient light zone> can be:
|
||||
|
||||
=========== ================================================
|
||||
Ambient sysfs entry
|
||||
light zone
|
||||
=========== ================================================
|
||||
l1_daylight /sys/class/backlight/<backlight>/l1_daylight_max
|
||||
l2_office /sys/class/backlight/<backlight>/l2_office_max
|
||||
l3_dark /sys/class/backlight/<backlight>/l3_dark_max
|
||||
=========== ================================================
|
||||
|
||||
For ADP8870, <ambient light zone> can be:
|
||||
|
||||
=========== ================================================
|
||||
Ambient sysfs entry
|
||||
light zone
|
||||
=========== ================================================
|
||||
l1_daylight /sys/class/backlight/<backlight>/l1_daylight_max
|
||||
l2_bright /sys/class/backlight/<backlight>/l2_bright_max
|
||||
l3_office /sys/class/backlight/<backlight>/l3_office_max
|
||||
l4_indoor /sys/class/backlight/<backlight>/l4_indoor_max
|
||||
l5_dark /sys/class/backlight/<backlight>/l5_dark_max
|
||||
=========== ================================================
|
||||
|
||||
See also: /sys/class/backlight/<backlight>/ambient_light_zone.
|
||||
|
||||
What: /sys/class/backlight/<backlight>/<ambient light zone>_dim
|
||||
Date: Sep, 2009
|
||||
KernelVersion: v2.6.32
|
||||
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||
Description:
|
||||
Control the dim brightness for <ambient light zone>
|
||||
on this <backlight>. Values are between 0 and 127, typically
|
||||
set to 0. Full off when the backlight is disabled.
|
||||
This file will also show the dim brightness level stored for
|
||||
this <ambient light zone>.
|
||||
|
||||
The <ambient light zone> is device-driver specific:
|
||||
|
||||
For ADP5520 and ADP5501, <ambient light zone> can be:
|
||||
|
||||
=========== ================================================
|
||||
Ambient sysfs entry
|
||||
light zone
|
||||
=========== ================================================
|
||||
daylight /sys/class/backlight/<backlight>/daylight_dim
|
||||
office /sys/class/backlight/<backlight>/office_dim
|
||||
dark /sys/class/backlight/<backlight>/dark_dim
|
||||
=========== ================================================
|
||||
|
||||
For ADP8860, <ambient light zone> can be:
|
||||
|
||||
=========== ================================================
|
||||
Ambient sysfs entry
|
||||
light zone
|
||||
=========== ================================================
|
||||
l1_daylight /sys/class/backlight/<backlight>/l1_daylight_dim
|
||||
l2_office /sys/class/backlight/<backlight>/l2_office_dim
|
||||
l3_dark /sys/class/backlight/<backlight>/l3_dark_dim
|
||||
=========== ================================================
|
||||
|
||||
For ADP8870, <ambient light zone> can be:
|
||||
|
||||
=========== ================================================
|
||||
Ambient sysfs entry
|
||||
light zone
|
||||
=========== ================================================
|
||||
l1_daylight /sys/class/backlight/<backlight>/l1_daylight_dim
|
||||
l2_bright /sys/class/backlight/<backlight>/l2_bright_dim
|
||||
l3_office /sys/class/backlight/<backlight>/l3_office_dim
|
||||
l4_indoor /sys/class/backlight/<backlight>/l4_indoor_dim
|
||||
l5_dark /sys/class/backlight/<backlight>/l5_dark_dim
|
||||
=========== ================================================
|
||||
|
||||
See also: /sys/class/backlight/<backlight>/ambient_light_zone.
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
sysfs interface for analog devices adp5520(01) backlight driver
|
||||
---------------------------------------------------------------
|
||||
|
||||
The backlight brightness control operates at three different levels for the
|
||||
adp5520 and adp5501 devices: daylight (level 1), office (level 2) and dark
|
||||
(level 3). By default the brightness operates at the daylight brightness level.
|
||||
|
||||
What: /sys/class/backlight/<backlight>/daylight_max
|
||||
What: /sys/class/backlight/<backlight>/office_max
|
||||
What: /sys/class/backlight/<backlight>/dark_max
|
||||
Date: Sep, 2009
|
||||
KernelVersion: v2.6.32
|
||||
Contact: Michael Hennerich <michael.hennerich@analog.com>
|
||||
Description:
|
||||
(RW) Maximum current setting for the backlight when brightness
|
||||
is at one of the three levels (daylight, office or dark). This
|
||||
is an input code between 0 and 127, which is transformed to a
|
||||
value between 0 mA and 30 mA using linear or non-linear
|
||||
algorithms.
|
||||
|
||||
What: /sys/class/backlight/<backlight>/daylight_dim
|
||||
What: /sys/class/backlight/<backlight>/office_dim
|
||||
What: /sys/class/backlight/<backlight>/dark_dim
|
||||
Date: Sep, 2009
|
||||
KernelVersion: v2.6.32
|
||||
Contact: Michael Hennerich <michael.hennerich@analog.com>
|
||||
Description:
|
||||
(RW) Dim current setting for the backlight when brightness is at
|
||||
one of the three levels (daylight, office or dark). This is an
|
||||
input code between 0 and 127, which is transformed to a value
|
||||
between 0 mA and 30 mA using linear or non-linear algorithms.
|
@ -1,37 +0,0 @@
|
||||
sysfs interface for analog devices adp8860 backlight driver
|
||||
-----------------------------------------------------------
|
||||
|
||||
The backlight brightness control operates at three different levels for the
|
||||
adp8860, adp8861 and adp8863 devices: daylight (level 1), office (level 2) and
|
||||
dark (level 3). By default the brightness operates at the daylight brightness
|
||||
level.
|
||||
|
||||
See also /sys/class/backlight/<backlight>/ambient_light_level and
|
||||
/sys/class/backlight/<backlight>/ambient_light_zone.
|
||||
|
||||
|
||||
What: /sys/class/backlight/<backlight>/l1_daylight_max
|
||||
What: /sys/class/backlight/<backlight>/l2_office_max
|
||||
What: /sys/class/backlight/<backlight>/l3_dark_max
|
||||
Date: Apr, 2010
|
||||
KernelVersion: v2.6.35
|
||||
Contact: Michael Hennerich <michael.hennerich@analog.com>
|
||||
Description:
|
||||
(RW) Maximum current setting for the backlight when brightness
|
||||
is at one of the three levels (daylight, office or dark). This
|
||||
is an input code between 0 and 127, which is transformed to a
|
||||
value between 0 mA and 30 mA using linear or non-linear
|
||||
algorithms.
|
||||
|
||||
|
||||
What: /sys/class/backlight/<backlight>/l1_daylight_dim
|
||||
What: /sys/class/backlight/<backlight>/l2_office_dim
|
||||
What: /sys/class/backlight/<backlight>/l3_dark_dim
|
||||
Date: Apr, 2010
|
||||
KernelVersion: v2.6.35
|
||||
Contact: Michael Hennerich <michael.hennerich@analog.com>
|
||||
Description:
|
||||
(RW) Dim current setting for the backlight when brightness is at
|
||||
one of the three levels (daylight, office or dark). This is an
|
||||
input code between 0 and 127, which is transformed to a value
|
||||
between 0 mA and 30 mA using linear or non-linear algorithms.
|
@ -1,32 +0,0 @@
|
||||
See also /sys/class/backlight/<backlight>/ambient_light_level and
|
||||
/sys/class/backlight/<backlight>/ambient_light_zone.
|
||||
|
||||
What: /sys/class/backlight/<backlight>/<ambient light zone>_max
|
||||
What: /sys/class/backlight/<backlight>/l1_daylight_max
|
||||
What: /sys/class/backlight/<backlight>/l2_bright_max
|
||||
What: /sys/class/backlight/<backlight>/l3_office_max
|
||||
What: /sys/class/backlight/<backlight>/l4_indoor_max
|
||||
What: /sys/class/backlight/<backlight>/l5_dark_max
|
||||
Date: May 2011
|
||||
KernelVersion: 3.0
|
||||
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||
Description:
|
||||
Control the maximum brightness for <ambient light zone>
|
||||
on this <backlight>. Values are between 0 and 127. This file
|
||||
will also show the brightness level stored for this
|
||||
<ambient light zone>.
|
||||
|
||||
What: /sys/class/backlight/<backlight>/<ambient light zone>_dim
|
||||
What: /sys/class/backlight/<backlight>/l2_bright_dim
|
||||
What: /sys/class/backlight/<backlight>/l3_office_dim
|
||||
What: /sys/class/backlight/<backlight>/l4_indoor_dim
|
||||
What: /sys/class/backlight/<backlight>/l5_dark_dim
|
||||
Date: May 2011
|
||||
KernelVersion: 3.0
|
||||
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||
Description:
|
||||
Control the dim brightness for <ambient light zone>
|
||||
on this <backlight>. Values are between 0 and 127, typically
|
||||
set to 0. Full off when the backlight is disabled.
|
||||
This file will also show the dim brightness level stored for
|
||||
this <ambient light zone>.
|
@ -197,8 +197,24 @@ Description:
|
||||
Drivers may emit a CHANGE uevent when a password is set or unset
|
||||
userspace may check it again.
|
||||
|
||||
On Dell systems, if Admin password is set, then all BIOS attributes
|
||||
On Dell and Lenovo systems, if Admin password is set, then all BIOS attributes
|
||||
require password validation.
|
||||
On Lenovo systems if you change the Admin password the new password is not active until
|
||||
the next boot.
|
||||
|
||||
Lenovo specific class extensions
|
||||
------------------------------
|
||||
|
||||
On Lenovo systems the following additional settings are available:
|
||||
|
||||
lenovo_encoding:
|
||||
The encoding method that is used. This can be either "ascii"
|
||||
or "scancode". Default is set to "ascii"
|
||||
|
||||
lenovo_kbdlang:
|
||||
The keyboard language method that is used. This is generally a
|
||||
two char code (e.g. "us", "fr", "gr") and may vary per platform.
|
||||
Default is set to "us"
|
||||
|
||||
What: /sys/class/firmware-attributes/*/attributes/pending_reboot
|
||||
Date: February 2021
|
||||
|
@ -1,9 +0,0 @@
|
||||
What: /sys/class/leds/<led>/repeat
|
||||
Date: September 2019
|
||||
KernelVersion: 5.5
|
||||
Description:
|
||||
EL15203000 supports only indefinitely patterns,
|
||||
so this file should always store -1.
|
||||
|
||||
For more info, please see:
|
||||
Documentation/ABI/testing/sysfs-class-led-trigger-pattern
|
@ -35,3 +35,6 @@ Description:
|
||||
|
||||
This file will always return the originally written repeat
|
||||
number.
|
||||
|
||||
It should be noticed that some leds, like EL15203000 may
|
||||
only support indefinitely patterns, so they always store -1.
|
||||
|
19
Documentation/ABI/testing/sysfs-class-spi-eeprom
Normal file
19
Documentation/ABI/testing/sysfs-class-spi-eeprom
Normal file
@ -0,0 +1,19 @@
|
||||
What: /sys/class/spi_master/spi<bus>/spi<bus>.<dev>/fram
|
||||
Date: June 2021
|
||||
KernelVersion: 5.14
|
||||
Contact: Jiri Prchal <jiri.prchal@aksignal.cz>
|
||||
Description:
|
||||
Contains the FRAM binary data. Same as EEPROM, just another file
|
||||
name to indicate that it employs ferroelectric process.
|
||||
It performs write operations at bus speed - no write delays.
|
||||
|
||||
What: /sys/class/spi_master/spi<bus>/spi<bus>.<dev>/sernum
|
||||
Date: May 2021
|
||||
KernelVersion: 5.14
|
||||
Contact: Jiri Prchal <jiri.prchal@aksignal.cz>
|
||||
Description:
|
||||
Contains the serial number of the Cypress FRAM (FM25VN) if it is
|
||||
present. It will be displayed as a 8 byte hex string, as read
|
||||
from the device.
|
||||
|
||||
This is a read-only attribute.
|
78
Documentation/ABI/testing/sysfs-devices-platform-soc-ipa
Normal file
78
Documentation/ABI/testing/sysfs-devices-platform-soc-ipa
Normal file
@ -0,0 +1,78 @@
|
||||
What: /sys/devices/platform/soc@X/XXXXXXX.ipa/
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/platform/soc@X/XXXXXXX.ipa/ directory
|
||||
contains read-only attributes exposing information about
|
||||
an IPA device. The X values could vary, but are typically
|
||||
"soc@0/1e40000.ipa".
|
||||
|
||||
What: .../XXXXXXX.ipa/version
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The .../XXXXXXX.ipa/version file contains the IPA hardware
|
||||
version, as a period-separated set of two or three integers
|
||||
(e.g., "3.5.1" or "4.2").
|
||||
|
||||
What: .../XXXXXXX.ipa/feature/
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The .../XXXXXXX.ipa/feature/ directory contains a set of
|
||||
attributes describing features implemented by the IPA
|
||||
hardware.
|
||||
|
||||
What: .../XXXXXXX.ipa/feature/rx_offload
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The .../XXXXXXX.ipa/feature/rx_offload file contains a
|
||||
string indicating the type of receive checksum offload
|
||||
that is supported by the hardware. The possible values
|
||||
are "MAPv4" or "MAPv5".
|
||||
|
||||
What: .../XXXXXXX.ipa/feature/tx_offload
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The .../XXXXXXX.ipa/feature/tx_offload file contains a
|
||||
string indicating the type of transmit checksum offload
|
||||
that is supported by the hardware. The possible values
|
||||
are "MAPv4" or "MAPv5".
|
||||
|
||||
What: .../XXXXXXX.ipa/modem/
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The .../XXXXXXX.ipa/modem/ directory contains a set of
|
||||
attributes describing properties of the modem execution
|
||||
environment reachable by the IPA hardware.
|
||||
|
||||
What: .../XXXXXXX.ipa/modem/rx_endpoint_id
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The .../XXXXXXX.ipa/feature/rx_endpoint_id file contains
|
||||
the AP endpoint ID that receives packets originating from
|
||||
the modem execution environment. The "rx" is from the
|
||||
perspective of the AP; this endpoint is considered an "IPA
|
||||
producer". An endpoint ID is a small unsigned integer.
|
||||
|
||||
What: .../XXXXXXX.ipa/modem/tx_endpoint_id
|
||||
Date: June 2021
|
||||
KernelVersion: v5.14
|
||||
Contact: Alex Elder <elder@kernel.org>
|
||||
Description:
|
||||
The .../XXXXXXX.ipa/feature/tx_endpoint_id file contains
|
||||
the AP endpoint ID used to transmit packets destined for
|
||||
the modem execution environment. The "tx" is from the
|
||||
perspective of the AP; this endpoint is considered an "IPA
|
||||
consumer". An endpoint ID is a small unsigned integer.
|
18
Documentation/ABI/testing/sysfs-devices-removable
Normal file
18
Documentation/ABI/testing/sysfs-devices-removable
Normal file
@ -0,0 +1,18 @@
|
||||
What: /sys/devices/.../removable
|
||||
Date: May 2021
|
||||
Contact: Rajat Jain <rajatxjain@gmail.com>
|
||||
Description:
|
||||
Information about whether a given device can be removed from the
|
||||
platform by the user. This is determined by its subsystem in a
|
||||
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
|
||||
by the user.
|
||||
"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
|
||||
platform-specific data such as ACPI) and PCI (which gets this
|
||||
from ACPI / device tree).
|
@ -50,7 +50,7 @@ Description: Dynamic addition and removal of CPU's. This is not hotplug
|
||||
architecture specific.
|
||||
|
||||
release: writes to this file dynamically remove a CPU from
|
||||
the system. Information writtento the file to remove CPU's
|
||||
the system. Information written to the file to remove CPU's
|
||||
is architecture specific.
|
||||
|
||||
What: /sys/devices/system/cpu/cpu#/node
|
||||
@ -97,7 +97,7 @@ Description: CPU topology files that describe a logical CPU's relationship
|
||||
corresponds to a physical socket number, but the actual value
|
||||
is architecture and platform dependent.
|
||||
|
||||
thread_siblings: internel kernel map of cpu#'s hardware
|
||||
thread_siblings: internal kernel map of cpu#'s hardware
|
||||
threads within the same core as cpu#
|
||||
|
||||
thread_siblings_list: human-readable list of cpu#'s hardware
|
||||
@ -280,7 +280,7 @@ Description: Disable L3 cache indices
|
||||
on a processor with this functionality will return the currently
|
||||
disabled index for that node. There is one L3 structure per
|
||||
node, or per internal node on MCM machines. Writing a valid
|
||||
index to one of these files will cause the specificed cache
|
||||
index to one of these files will cause the specified cache
|
||||
index to be disabled.
|
||||
|
||||
All AMD processors with L3 caches provide this functionality.
|
||||
@ -295,7 +295,7 @@ Description: Processor frequency boosting control
|
||||
|
||||
This switch controls the boost setting for the whole system.
|
||||
Boosting allows the CPU and the firmware to run at a frequency
|
||||
beyound it's nominal limit.
|
||||
beyond it's nominal limit.
|
||||
|
||||
More details can be found in
|
||||
Documentation/admin-guide/pm/cpufreq.rst
|
||||
@ -532,7 +532,7 @@ What: /sys/devices/system/cpu/smt
|
||||
/sys/devices/system/cpu/smt/control
|
||||
Date: June 2018
|
||||
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||
Description: Control Symetric Multi Threading (SMT)
|
||||
Description: Control Symmetric Multi Threading (SMT)
|
||||
|
||||
active: Tells whether SMT is active (enabled and siblings online)
|
||||
|
||||
|
@ -168,7 +168,7 @@ Description: This file shows the manufacturing date in BCD format.
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/manufacturer_id
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the manufacturee ID. This is one of the
|
||||
Description: This file shows the manufacturer ID. This is one of the
|
||||
UFS device descriptor parameters. The full information about
|
||||
the descriptor could be found at UFS specifications 2.1.
|
||||
|
||||
@ -521,7 +521,7 @@ Description: This file shows maximum VCC, VCCQ and VCCQ2 value for
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/string_descriptors/manufacturer_name
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file contains a device manufactureer name string.
|
||||
Description: This file contains a device manufacturer name string.
|
||||
The full information about the descriptor could be found at
|
||||
UFS specifications 2.1.
|
||||
|
||||
@ -995,6 +995,132 @@ 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
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file shows the status of performance monitor enablement
|
||||
and it can be used to start/stop the monitor. When the monitor
|
||||
is stopped, the performance data collected is also cleared.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/monitor/monitor_chunk_size
|
||||
Date: January 2021
|
||||
Contact: Can Guo <cang@codeaurora.org>
|
||||
Description: This file tells the monitor to focus on requests transferring
|
||||
data of specific chunk size (in Bytes). 0 means any chunk size.
|
||||
It can only be changed when monitor is disabled.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
sent from device to host after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
sending data from device to host after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
read requests after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
read requests after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
read requests after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
read requests sent after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
from host to device after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
sending data from host to device after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
requests after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
requests after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
requests after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/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
|
||||
requests after monitor gets started.
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_presv_us_en
|
||||
Date: June 2020
|
||||
Contact: Asutosh Das <asutoshd@codeaurora.org>
|
||||
|
@ -56,6 +56,10 @@ Description:
|
||||
- System RAM
|
||||
- ACPI Tables
|
||||
- ACPI Non-volatile Storage
|
||||
- Unusable memory
|
||||
- Persistent Memory (legacy)
|
||||
- Persistent Memory
|
||||
- Soft Reserved
|
||||
- reserved
|
||||
|
||||
Following shell snippet can be used to display that memory
|
||||
|
@ -203,7 +203,34 @@ Description: Shows total written kbytes issued to disk.
|
||||
What: /sys/fs/f2fs/<disk>/features
|
||||
Date: July 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Shows all enabled features in current device.
|
||||
Description: <deprecated: should use /sys/fs/f2fs/<disk>/feature_list/
|
||||
Shows all enabled features in current device.
|
||||
Supported features:
|
||||
encryption, blkzoned, extra_attr, projquota, inode_checksum,
|
||||
flexible_inline_xattr, quota_ino, inode_crtime, lost_found,
|
||||
verity, sb_checksum, casefold, readonly, compression, pin_file.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/feature_list/
|
||||
Date: June 2021
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Expand /sys/fs/f2fs/<disk>/features to meet sysfs rule.
|
||||
Supported on-disk features:
|
||||
encryption, block_zoned (aka blkzoned), extra_attr,
|
||||
project_quota (aka projquota), inode_checksum,
|
||||
flexible_inline_xattr, quota_ino, inode_crtime, lost_found,
|
||||
verity, sb_checksum, casefold, readonly, compression.
|
||||
Note that, pin_file is moved into /sys/fs/f2fs/features/.
|
||||
|
||||
What: /sys/fs/f2fs/features/
|
||||
Date: July 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Shows all enabled kernel features.
|
||||
Supported features:
|
||||
encryption, block_zoned, extra_attr, project_quota,
|
||||
inode_checksum, flexible_inline_xattr, quota_ino,
|
||||
inode_crtime, lost_found, verity, sb_checksum,
|
||||
casefold, readonly, compression, test_dummy_encryption_v2,
|
||||
atomic_write, pin_file, encrypted_casefold.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/inject_rate
|
||||
Date: May 2016
|
||||
@ -238,7 +265,7 @@ Description: Shows current reserved blocks in system, it may be temporarily
|
||||
What: /sys/fs/f2fs/<disk>/gc_urgent
|
||||
Date: August 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Do background GC agressively when set. When gc_urgent = 1,
|
||||
Description: Do background GC aggressively when set. When gc_urgent = 1,
|
||||
background thread starts to do GC by given gc_urgent_sleep_time
|
||||
interval. When gc_urgent = 2, F2FS will lower the bar of
|
||||
checking idle in order to process outstanding discard commands
|
||||
@ -438,3 +465,31 @@ Description: Show the count of inode newly enabled for compression since mount.
|
||||
Note that when the compression is disabled for the files, this count
|
||||
doesn't decrease. If you write "0" here, you can initialize
|
||||
compr_new_inode to "0".
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/atgc_candidate_ratio
|
||||
Date: May 2021
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description: When ATGC is on, it controls candidate ratio in order to limit total
|
||||
number of potential victim in all candidates, the value should be in
|
||||
range of [0, 100], by default it was initialized as 20(%).
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/atgc_candidate_count
|
||||
Date: May 2021
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description: When ATGC is on, it controls candidate count in order to limit total
|
||||
number of potential victim in all candidates, by default it was
|
||||
initialized as 10 (sections).
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/atgc_age_weight
|
||||
Date: May 2021
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description: When ATGC is on, it controls age weight to balance weight proportion
|
||||
in between aging and valid blocks, the value should be in range of
|
||||
[0, 100], by default it was initialized as 60(%).
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/atgc_age_threshold
|
||||
Date: May 2021
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description: When ATGC is on, it controls age threshold to bypass GCing young
|
||||
candidates whose age is not beyond the threshold, by default it was
|
||||
initialized as 604800 seconds (equals to 7 days).
|
||||
|
@ -25,14 +25,10 @@ Description: /sys/kernel/iommu_groups/reserved_regions list IOVA
|
||||
the base IOVA, the second is the end IOVA and the third
|
||||
field describes the type of the region.
|
||||
|
||||
What: /sys/kernel/iommu_groups/reserved_regions
|
||||
Date: June 2019
|
||||
KernelVersion: v5.3
|
||||
Contact: Eric Auger <eric.auger@redhat.com>
|
||||
Description: In case an RMRR is used only by graphics or USB devices
|
||||
it is now exposed as "direct-relaxable" instead of "direct".
|
||||
In device assignment use case, for instance, those RMRR
|
||||
are considered to be relaxable and safe.
|
||||
Since kernel 5.3, in case an RMRR is used only by graphics or
|
||||
USB devices it is now exposed as "direct-relaxable" instead
|
||||
of "direct". In device assignment use case, for instance,
|
||||
those RMRR are considered to be relaxable and safe.
|
||||
|
||||
What: /sys/kernel/iommu_groups/<grp_id>/type
|
||||
Date: November 2020
|
||||
|
55
Documentation/ABI/testing/sysfs-platform-dell-privacy-wmi
Normal file
55
Documentation/ABI/testing/sysfs-platform-dell-privacy-wmi
Normal file
@ -0,0 +1,55 @@
|
||||
What: /sys/bus/wmi/devices/6932965F-1671-4CEB-B988-D3AB0A901919/dell_privacy_supported_type
|
||||
Date: Apr 2021
|
||||
KernelVersion: 5.13
|
||||
Contact: "perry.yuan@dell.com>"
|
||||
Description:
|
||||
Display which dell hardware level privacy devices are supported
|
||||
“Dell Privacy” is a set of HW, FW, and SW features to enhance
|
||||
Dell’s commitment to platform privacy for MIC, Camera, and
|
||||
ePrivacy screens.
|
||||
The supported hardware privacy devices are:
|
||||
Attributes:
|
||||
Microphone Mute:
|
||||
Identifies the local microphone can be muted by hardware, no applications
|
||||
is available to capture system mic sound
|
||||
|
||||
Camera Shutter:
|
||||
Identifies camera shutter controlled by hardware, which is a micromechanical
|
||||
shutter assembly that is built onto the camera module to block capturing images
|
||||
from outside the laptop
|
||||
|
||||
supported:
|
||||
The privacy device is supported by this system
|
||||
|
||||
unsupported:
|
||||
The privacy device is not supported on this system
|
||||
|
||||
For example to check which privacy devices are supported:
|
||||
|
||||
# cat /sys/bus/wmi/drivers/dell-privacy/6932965F-1671-4CEB-B988-D3AB0A901919/dell_privacy_supported_type
|
||||
[Microphone Mute] [supported]
|
||||
[Camera Shutter] [supported]
|
||||
[ePrivacy Screen] [unsupported]
|
||||
|
||||
What: /sys/bus/wmi/devices/6932965F-1671-4CEB-B988-D3AB0A901919/dell_privacy_current_state
|
||||
Date: Apr 2021
|
||||
KernelVersion: 5.13
|
||||
Contact: "perry.yuan@dell.com>"
|
||||
Description:
|
||||
Allow user space to check current dell privacy device state.
|
||||
Describes the Device State class exposed by BIOS which can be
|
||||
consumed by various applications interested in knowing the Privacy
|
||||
feature capabilities
|
||||
Attributes:
|
||||
muted:
|
||||
Identifies the privacy device is turned off and cannot send stream to OS applications
|
||||
|
||||
unmuted:
|
||||
Identifies the privacy device is turned on ,audio or camera driver can get
|
||||
stream from mic and camera module to OS applications
|
||||
|
||||
For example to check all supported current privacy device states:
|
||||
|
||||
# cat /sys/bus/wmi/drivers/dell-privacy/6932965F-1671-4CEB-B988-D3AB0A901919/dell_privacy_current_state
|
||||
[Microphone] [unmuted]
|
||||
[Camera Shutter] [unmuted]
|
@ -33,6 +33,13 @@ Description:
|
||||
frequency adjustment value (a positive integer) in
|
||||
parts per billion.
|
||||
|
||||
What: /sys/class/ptp/ptpN/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
|
||||
Date: September 2010
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
@ -61,6 +68,19 @@ Description:
|
||||
This file contains the number of programmable pins
|
||||
offered by the PTP hardware clock.
|
||||
|
||||
What: /sys/class/ptp/ptpN/n_vclocks
|
||||
Date: May 2021
|
||||
Contact: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
Description:
|
||||
This file contains the number of virtual PTP clocks in
|
||||
use. By default, the value is 0 meaning that only the
|
||||
physical clock is in use. Setting the value creates
|
||||
the corresponding number of virtual clocks and causes
|
||||
the physical clock to become free running. Setting the
|
||||
value back to 0 deletes the virtual clocks and
|
||||
switches the physical clock back to normal, adjustable
|
||||
operation.
|
||||
|
||||
What: /sys/class/ptp/ptpN/pins
|
||||
Date: March 2014
|
||||
Contact: Richard Cochran <richardcochran@gmail.com>
|
||||
|
@ -76,7 +76,7 @@ quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
|
||||
$(PYTHON3) $(srctree)/scripts/jobserver-exec \
|
||||
$(SHELL) $(srctree)/Documentation/sphinx/parallel-wrapper.sh \
|
||||
$(CONFIG_SHELL) $(srctree)/Documentation/sphinx/parallel-wrapper.sh \
|
||||
$(SPHINXBUILD) \
|
||||
-b $2 \
|
||||
-c $(abspath $(srctree)/$(src)) \
|
||||
|
@ -22,9 +22,9 @@ or if the device has INTx interrupts connected by platform interrupt
|
||||
controllers and a _PRT is needed to describe those connections.
|
||||
|
||||
ACPI resource description is done via _CRS objects of devices in the ACPI
|
||||
namespace [2]. The _CRS is like a generalized PCI BAR: the OS can read
|
||||
namespace [2]. The _CRS is like a generalized PCI BAR: the OS can read
|
||||
_CRS and figure out what resource is being consumed even if it doesn't have
|
||||
a driver for the device [3]. That's important because it means an old OS
|
||||
a driver for the device [3]. That's important because it means an old OS
|
||||
can work correctly even on a system with new devices unknown to the OS.
|
||||
The new devices might not do anything, but the OS can at least make sure no
|
||||
resources conflict with them.
|
||||
@ -41,15 +41,15 @@ ACPI, that device will have a specific _HID/_CID that tells the OS what
|
||||
driver to bind to it, and the _CRS tells the OS and the driver where the
|
||||
device's registers are.
|
||||
|
||||
PCI host bridges are PNP0A03 or PNP0A08 devices. Their _CRS should
|
||||
describe all the address space they consume. This includes all the windows
|
||||
PCI host bridges are PNP0A03 or PNP0A08 devices. Their _CRS should
|
||||
describe all the address space they consume. This includes all the windows
|
||||
they forward down to the PCI bus, as well as registers of the host bridge
|
||||
itself that are not forwarded to PCI. The host bridge registers include
|
||||
itself that are not forwarded to PCI. The host bridge registers include
|
||||
things like secondary/subordinate bus registers that determine the bus
|
||||
range below the bridge, window registers that describe the apertures, etc.
|
||||
These are all device-specific, non-architected things, so the only way a
|
||||
PNP0A03/PNP0A08 driver can manage them is via _PRS/_CRS/_SRS, which contain
|
||||
the device-specific details. The host bridge registers also include ECAM
|
||||
the device-specific details. The host bridge registers also include ECAM
|
||||
space, since it is consumed by the host bridge.
|
||||
|
||||
ACPI defines a Consumer/Producer bit to distinguish the bridge registers
|
||||
@ -66,7 +66,7 @@ the PNP0A03/PNP0A08 device itself. The workaround was to describe the
|
||||
bridge registers (including ECAM space) in PNP0C02 catch-all devices [6].
|
||||
With the exception of ECAM, the bridge register space is device-specific
|
||||
anyway, so the generic PNP0A03/PNP0A08 driver (pci_root.c) has no need to
|
||||
know about it.
|
||||
know about it.
|
||||
|
||||
New architectures should be able to use "Consumer" Extended Address Space
|
||||
descriptors in the PNP0A03 device for bridge registers, including ECAM,
|
||||
@ -75,9 +75,9 @@ ia64 kernels assume all address space descriptors, including "Consumer"
|
||||
Extended Address Space ones, are windows, so it would not be safe to
|
||||
describe bridge registers this way on those architectures.
|
||||
|
||||
PNP0C02 "motherboard" devices are basically a catch-all. There's no
|
||||
PNP0C02 "motherboard" devices are basically a catch-all. There's no
|
||||
programming model for them other than "don't use these resources for
|
||||
anything else." So a PNP0C02 _CRS should claim any address space that is
|
||||
anything else." So a PNP0C02 _CRS should claim any address space that is
|
||||
(1) not claimed by _CRS under any other device object in the ACPI namespace
|
||||
and (2) should not be assigned by the OS to something else.
|
||||
|
||||
|
@ -125,4 +125,4 @@ all the EPF devices are created and linked with the EPC device.
|
||||
| interrupt_pin
|
||||
| function
|
||||
|
||||
[1] :doc:`pci-endpoint`
|
||||
[1] Documentation/PCI/endpoint/pci-endpoint.rst
|
||||
|
@ -295,7 +295,7 @@ and let the driver restart normal I/O processing.
|
||||
A driver can still return a critical failure for this function if
|
||||
it can't get the device operational after reset. If the platform
|
||||
previously tried a soft reset, it might now try a hard reset (power
|
||||
cycle) and then call slot_reset() again. It the device still can't
|
||||
cycle) and then call slot_reset() again. If the device still can't
|
||||
be recovered, there is nothing more that can be done; the platform
|
||||
will typically report a "permanent failure" in such a case. The
|
||||
device will be considered "dead" in this case.
|
||||
|
@ -265,7 +265,7 @@ Set the DMA mask size
|
||||
---------------------
|
||||
.. note::
|
||||
If anything below doesn't make sense, please refer to
|
||||
:doc:`/core-api/dma-api`. This section is just a reminder that
|
||||
Documentation/core-api/dma-api.rst. This section is just a reminder that
|
||||
drivers need to indicate DMA capabilities of the device and is not
|
||||
an authoritative source for DMA interfaces.
|
||||
|
||||
@ -291,7 +291,7 @@ Many 64-bit "PCI" devices (before PCI-X) and some PCI-X devices are
|
||||
Setup shared control data
|
||||
-------------------------
|
||||
Once the DMA masks are set, the driver can allocate "consistent" (a.k.a. shared)
|
||||
memory. See :doc:`/core-api/dma-api` for a full description of
|
||||
memory. See Documentation/core-api/dma-api.rst for a full description of
|
||||
the DMA APIs. This section is just a reminder that it needs to be done
|
||||
before enabling DMA on the device.
|
||||
|
||||
@ -421,7 +421,7 @@ owners if there is one.
|
||||
|
||||
Then clean up "consistent" buffers which contain the control data.
|
||||
|
||||
See :doc:`/core-api/dma-api` for details on unmapping interfaces.
|
||||
See Documentation/core-api/dma-api.rst for details on unmapping interfaces.
|
||||
|
||||
|
||||
Unregister from other subsystems
|
||||
|
@ -21,7 +21,7 @@ Any code that happens after the end of a given RCU grace period is guaranteed
|
||||
to see the effects of all accesses prior to the beginning of that grace
|
||||
period that are within RCU read-side critical sections.
|
||||
Similarly, any code that happens before the beginning of a given RCU grace
|
||||
period is guaranteed to see the effects of all accesses following the end
|
||||
period is guaranteed to not see the effects of all accesses following the end
|
||||
of that grace period that are within RCU read-side critical sections.
|
||||
|
||||
Note well that RCU-sched read-side critical sections include any region
|
||||
@ -339,14 +339,14 @@ The diagram below shows the path of ordering if the leftmost
|
||||
leftmost ``rcu_node`` structure offlines its last CPU and if the next
|
||||
``rcu_node`` structure has no online CPUs).
|
||||
|
||||
.. kernel-figure:: TreeRCU-gp-init-1.svg
|
||||
.. kernel-figure:: TreeRCU-gp-init-2.svg
|
||||
|
||||
The final ``rcu_gp_init()`` pass through the ``rcu_node`` tree traverses
|
||||
breadth-first, setting each ``rcu_node`` structure's ``->gp_seq`` field
|
||||
to the newly advanced value from the ``rcu_state`` structure, as shown
|
||||
in the following diagram.
|
||||
|
||||
.. kernel-figure:: TreeRCU-gp-init-1.svg
|
||||
.. kernel-figure:: TreeRCU-gp-init-3.svg
|
||||
|
||||
This change will also cause each CPU's next call to
|
||||
``__note_gp_changes()`` to notice that a new grace period has started,
|
||||
|
@ -211,27 +211,40 @@ over a rather long period of time, but improvements are always welcome!
|
||||
of the system, especially to real-time workloads running on
|
||||
the rest of the system.
|
||||
|
||||
7. As of v4.20, a given kernel implements only one RCU flavor,
|
||||
which is RCU-sched for PREEMPTION=n and RCU-preempt for PREEMPTION=y.
|
||||
If the updater uses call_rcu() or synchronize_rcu(),
|
||||
then the corresponding readers may use rcu_read_lock() and
|
||||
rcu_read_unlock(), rcu_read_lock_bh() and rcu_read_unlock_bh(),
|
||||
or any pair of primitives that disables and re-enables preemption,
|
||||
for example, rcu_read_lock_sched() and rcu_read_unlock_sched().
|
||||
If the updater uses synchronize_srcu() or call_srcu(),
|
||||
then the corresponding readers must use srcu_read_lock() and
|
||||
srcu_read_unlock(), and with the same srcu_struct. The rules for
|
||||
the expedited primitives are the same as for their non-expedited
|
||||
counterparts. Mixing things up will result in confusion and
|
||||
broken kernels, and has even resulted in an exploitable security
|
||||
issue.
|
||||
7. As of v4.20, a given kernel implements only one RCU flavor, which
|
||||
is RCU-sched for PREEMPTION=n and RCU-preempt for PREEMPTION=y.
|
||||
If the updater uses call_rcu() or synchronize_rcu(), then
|
||||
the corresponding readers may use: (1) rcu_read_lock() and
|
||||
rcu_read_unlock(), (2) any pair of primitives that disables
|
||||
and re-enables softirq, for example, rcu_read_lock_bh() and
|
||||
rcu_read_unlock_bh(), or (3) any pair of primitives that disables
|
||||
and re-enables preemption, for example, rcu_read_lock_sched() and
|
||||
rcu_read_unlock_sched(). If the updater uses synchronize_srcu()
|
||||
or call_srcu(), then the corresponding readers must use
|
||||
srcu_read_lock() and srcu_read_unlock(), and with the same
|
||||
srcu_struct. The rules for the expedited RCU grace-period-wait
|
||||
primitives are the same as for their non-expedited counterparts.
|
||||
|
||||
One exception to this rule: rcu_read_lock() and rcu_read_unlock()
|
||||
may be substituted for rcu_read_lock_bh() and rcu_read_unlock_bh()
|
||||
in cases where local bottom halves are already known to be
|
||||
disabled, for example, in irq or softirq context. Commenting
|
||||
such cases is a must, of course! And the jury is still out on
|
||||
whether the increased speed is worth it.
|
||||
If the updater uses call_rcu_tasks() or synchronize_rcu_tasks(),
|
||||
then the readers must refrain from executing voluntary
|
||||
context switches, that is, from blocking. If the updater uses
|
||||
call_rcu_tasks_trace() or synchronize_rcu_tasks_trace(), then
|
||||
the corresponding readers must use rcu_read_lock_trace() and
|
||||
rcu_read_unlock_trace(). If an updater uses call_rcu_tasks_rude()
|
||||
or synchronize_rcu_tasks_rude(), then the corresponding readers
|
||||
must use anything that disables interrupts.
|
||||
|
||||
Mixing things up will result in confusion and broken kernels, and
|
||||
has even resulted in an exploitable security issue. Therefore,
|
||||
when using non-obvious pairs of primitives, commenting is
|
||||
of course a must. One example of non-obvious pairing is
|
||||
the XDP feature in networking, which calls BPF programs from
|
||||
network-driver NAPI (softirq) context. BPF relies heavily on RCU
|
||||
protection for its data structures, but because the BPF program
|
||||
invocation happens entirely within a single local_bh_disable()
|
||||
section in a NAPI poll cycle, this usage is safe. The reason
|
||||
that this usage is safe is that readers can use anything that
|
||||
disables BH when updaters use call_rcu() or synchronize_rcu().
|
||||
|
||||
8. Although synchronize_rcu() is slower than is call_rcu(), it
|
||||
usually results in simpler code. So, unless update performance is
|
||||
|
@ -69,13 +69,15 @@ Compile the kernel with::
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASKSTATS=y
|
||||
|
||||
Delay accounting is enabled by default at boot up.
|
||||
To disable, add::
|
||||
Delay accounting is disabled by default at boot up.
|
||||
To enable, add::
|
||||
|
||||
nodelayacct
|
||||
delayacct
|
||||
|
||||
to the kernel boot options. The rest of the instructions
|
||||
below assume this has not been done.
|
||||
to the kernel boot options. The rest of the instructions below assume this has
|
||||
been done. Alternatively, use sysctl kernel.task_delayacct to switch the state
|
||||
at runtime. Note however that only tasks started after enabling it will have
|
||||
delayacct information.
|
||||
|
||||
After the system has booted up, use a utility
|
||||
similar to getdelays.c to access the delays
|
||||
|
@ -89,13 +89,35 @@ you can use ``+=`` operator. For example::
|
||||
|
||||
In this case, the key ``foo`` has ``bar``, ``baz`` and ``qux``.
|
||||
|
||||
However, a sub-key and a value can not co-exist under a parent key.
|
||||
For example, following config is NOT allowed.::
|
||||
Moreover, sub-keys and a value can coexist under a parent key.
|
||||
For example, following config is allowed.::
|
||||
|
||||
foo = value1
|
||||
foo.bar = value2 # !ERROR! subkey "bar" and value "value1" can NOT co-exist
|
||||
foo.bar := value2 # !ERROR! even with the override operator, this is NOT allowed.
|
||||
foo.bar = value2
|
||||
foo := value3 # This will update foo's value.
|
||||
|
||||
Note, since there is no syntax to put a raw value directly under a
|
||||
structured key, you have to define it outside of the brace. For example::
|
||||
|
||||
foo {
|
||||
bar = value1
|
||||
bar {
|
||||
baz = value2
|
||||
qux = value3
|
||||
}
|
||||
}
|
||||
|
||||
Also, the order of the value node under a key is fixed. If there
|
||||
are a value and subkeys, the value is always the first child node
|
||||
of the key. Thus if user specifies subkeys first, e.g.::
|
||||
|
||||
foo.bar = value1
|
||||
foo = value2
|
||||
|
||||
In the program (and /proc/bootconfig), it will be shown as below::
|
||||
|
||||
foo = value2
|
||||
foo.bar = value1
|
||||
|
||||
Comments
|
||||
--------
|
||||
|
@ -17,36 +17,37 @@ level logical devices like device mapper.
|
||||
|
||||
HOWTO
|
||||
=====
|
||||
|
||||
Throttling/Upper Limit policy
|
||||
-----------------------------
|
||||
- Enable Block IO controller::
|
||||
Enable Block IO controller::
|
||||
|
||||
CONFIG_BLK_CGROUP=y
|
||||
|
||||
- Enable throttling in block layer::
|
||||
Enable throttling in block layer::
|
||||
|
||||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
|
||||
- Mount blkio controller (see cgroups.txt, Why are cgroups needed?)::
|
||||
Mount blkio controller (see cgroups.txt, Why are cgroups needed?)::
|
||||
|
||||
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio
|
||||
|
||||
- Specify a bandwidth rate on particular device for root group. The format
|
||||
for policy is "<major>:<minor> <bytes_per_second>"::
|
||||
Specify a bandwidth rate on particular device for root group. The format
|
||||
for policy is "<major>:<minor> <bytes_per_second>"::
|
||||
|
||||
echo "8:16 1048576" > /sys/fs/cgroup/blkio/blkio.throttle.read_bps_device
|
||||
|
||||
Above will put a limit of 1MB/second on reads happening for root group
|
||||
on device having major/minor number 8:16.
|
||||
This will put a limit of 1MB/second on reads happening for root group
|
||||
on device having major/minor number 8:16.
|
||||
|
||||
- Run dd to read a file and see if rate is throttled to 1MB/s or not::
|
||||
Run dd to read a file and see if rate is throttled to 1MB/s or not::
|
||||
|
||||
# dd iflag=direct if=/mnt/common/zerofile of=/dev/null bs=4K count=1024
|
||||
1024+0 records in
|
||||
1024+0 records out
|
||||
4194304 bytes (4.2 MB) copied, 4.0001 s, 1.0 MB/s
|
||||
|
||||
Limits for writes can be put using blkio.throttle.write_bps_device file.
|
||||
Limits for writes can be put using blkio.throttle.write_bps_device file.
|
||||
|
||||
Hierarchical Cgroups
|
||||
====================
|
||||
@ -79,85 +80,89 @@ following::
|
||||
|
||||
Various user visible config options
|
||||
===================================
|
||||
CONFIG_BLK_CGROUP
|
||||
- Block IO controller.
|
||||
|
||||
CONFIG_BFQ_CGROUP_DEBUG
|
||||
- Debug help. Right now some additional stats file show up in cgroup
|
||||
CONFIG_BLK_CGROUP
|
||||
Block IO controller.
|
||||
|
||||
CONFIG_BFQ_CGROUP_DEBUG
|
||||
Debug help. Right now some additional stats file show up in cgroup
|
||||
if this option is enabled.
|
||||
|
||||
CONFIG_BLK_DEV_THROTTLING
|
||||
- Enable block device throttling support in block layer.
|
||||
CONFIG_BLK_DEV_THROTTLING
|
||||
Enable block device throttling support in block layer.
|
||||
|
||||
Details of cgroup files
|
||||
=======================
|
||||
|
||||
Proportional weight policy files
|
||||
--------------------------------
|
||||
- blkio.weight
|
||||
- Specifies per cgroup weight. This is default weight of the group
|
||||
on all the devices until and unless overridden by per device rule.
|
||||
(See blkio.weight_device).
|
||||
Currently allowed range of weights is from 10 to 1000.
|
||||
|
||||
- blkio.weight_device
|
||||
- One can specify per cgroup per device rules using this interface.
|
||||
These rules override the default value of group weight as specified
|
||||
by blkio.weight.
|
||||
blkio.bfq.weight
|
||||
Specifies per cgroup weight. This is default weight of the group
|
||||
on all the devices until and unless overridden by per device rule
|
||||
(see `blkio.bfq.weight_device` below).
|
||||
|
||||
Currently allowed range of weights is from 1 to 1000. For more details,
|
||||
see Documentation/block/bfq-iosched.rst.
|
||||
|
||||
blkio.bfq.weight_device
|
||||
Specifes per cgroup per device weights, overriding the default group
|
||||
weight. For more details, see Documentation/block/bfq-iosched.rst.
|
||||
|
||||
Following is the format::
|
||||
|
||||
# echo dev_maj:dev_minor weight > blkio.weight_device
|
||||
# echo dev_maj:dev_minor weight > blkio.bfq.weight_device
|
||||
|
||||
Configure weight=300 on /dev/sdb (8:16) in this cgroup::
|
||||
|
||||
# echo 8:16 300 > blkio.weight_device
|
||||
# cat blkio.weight_device
|
||||
# echo 8:16 300 > blkio.bfq.weight_device
|
||||
# cat blkio.bfq.weight_device
|
||||
dev weight
|
||||
8:16 300
|
||||
|
||||
Configure weight=500 on /dev/sda (8:0) in this cgroup::
|
||||
|
||||
# echo 8:0 500 > blkio.weight_device
|
||||
# cat blkio.weight_device
|
||||
# echo 8:0 500 > blkio.bfq.weight_device
|
||||
# cat blkio.bfq.weight_device
|
||||
dev weight
|
||||
8:0 500
|
||||
8:16 300
|
||||
|
||||
Remove specific weight for /dev/sda in this cgroup::
|
||||
|
||||
# echo 8:0 0 > blkio.weight_device
|
||||
# cat blkio.weight_device
|
||||
# echo 8:0 0 > blkio.bfq.weight_device
|
||||
# cat blkio.bfq.weight_device
|
||||
dev weight
|
||||
8:16 300
|
||||
|
||||
- blkio.time
|
||||
- disk time allocated to cgroup per device in milliseconds. First
|
||||
blkio.time
|
||||
Disk time allocated to cgroup per device in milliseconds. First
|
||||
two fields specify the major and minor number of the device and
|
||||
third field specifies the disk time allocated to group in
|
||||
milliseconds.
|
||||
|
||||
- blkio.sectors
|
||||
- number of sectors transferred to/from disk by the group. First
|
||||
blkio.sectors
|
||||
Number of sectors transferred to/from disk by the group. First
|
||||
two fields specify the major and minor number of the device and
|
||||
third field specifies the number of sectors transferred by the
|
||||
group to/from the device.
|
||||
|
||||
- blkio.io_service_bytes
|
||||
- Number of bytes transferred to/from the disk by the group. These
|
||||
blkio.io_service_bytes
|
||||
Number of bytes transferred to/from the disk by the group. These
|
||||
are further divided by the type of operation - read or write, sync
|
||||
or async. First two fields specify the major and minor number of the
|
||||
device, third field specifies the operation type and the fourth field
|
||||
specifies the number of bytes.
|
||||
|
||||
- blkio.io_serviced
|
||||
- Number of IOs (bio) issued to the disk by the group. These
|
||||
blkio.io_serviced
|
||||
Number of IOs (bio) issued to the disk by the group. These
|
||||
are further divided by the type of operation - read or write, sync
|
||||
or async. First two fields specify the major and minor number of the
|
||||
device, third field specifies the operation type and the fourth field
|
||||
specifies the number of IOs.
|
||||
|
||||
- blkio.io_service_time
|
||||
- Total amount of time between request dispatch and request completion
|
||||
blkio.io_service_time
|
||||
Total amount of time between request dispatch and request completion
|
||||
for the IOs done by this cgroup. This is in nanoseconds to make it
|
||||
meaningful for flash devices too. For devices with queue depth of 1,
|
||||
this time represents the actual service time. When queue_depth > 1,
|
||||
@ -170,8 +175,8 @@ Proportional weight policy files
|
||||
specifies the operation type and the fourth field specifies the
|
||||
io_service_time in ns.
|
||||
|
||||
- blkio.io_wait_time
|
||||
- Total amount of time the IOs for this cgroup spent waiting in the
|
||||
blkio.io_wait_time
|
||||
Total amount of time the IOs for this cgroup spent waiting in the
|
||||
scheduler queues for service. This can be greater than the total time
|
||||
elapsed since it is cumulative io_wait_time for all IOs. It is not a
|
||||
measure of total time the cgroup spent waiting but rather a measure of
|
||||
@ -185,24 +190,24 @@ Proportional weight policy files
|
||||
minor number of the device, third field specifies the operation type
|
||||
and the fourth field specifies the io_wait_time in ns.
|
||||
|
||||
- blkio.io_merged
|
||||
- Total number of bios/requests merged into requests belonging to this
|
||||
blkio.io_merged
|
||||
Total number of bios/requests merged into requests belonging to this
|
||||
cgroup. This is further divided by the type of operation - read or
|
||||
write, sync or async.
|
||||
|
||||
- blkio.io_queued
|
||||
- Total number of requests queued up at any given instant for this
|
||||
blkio.io_queued
|
||||
Total number of requests queued up at any given instant for this
|
||||
cgroup. This is further divided by the type of operation - read or
|
||||
write, sync or async.
|
||||
|
||||
- blkio.avg_queue_size
|
||||
- Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
blkio.avg_queue_size
|
||||
Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
The average queue size for this cgroup over the entire time of this
|
||||
cgroup's existence. Queue size samples are taken each time one of the
|
||||
queues of this cgroup gets a timeslice.
|
||||
|
||||
- blkio.group_wait_time
|
||||
- Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
blkio.group_wait_time
|
||||
Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
This is the amount of time the cgroup had to wait since it became busy
|
||||
(i.e., went from 0 to 1 request queued) to get a timeslice for one of
|
||||
its queues. This is different from the io_wait_time which is the
|
||||
@ -212,8 +217,8 @@ Proportional weight policy files
|
||||
will only report the group_wait_time accumulated till the last time it
|
||||
got a timeslice and will not include the current delta.
|
||||
|
||||
- blkio.empty_time
|
||||
- Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
blkio.empty_time
|
||||
Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
This is the amount of time a cgroup spends without any pending
|
||||
requests when not being served, i.e., it does not include any time
|
||||
spent idling for one of the queues of the cgroup. This is in
|
||||
@ -221,8 +226,8 @@ Proportional weight policy files
|
||||
the stat will only report the empty_time accumulated till the last
|
||||
time it had a pending request and will not include the current delta.
|
||||
|
||||
- blkio.idle_time
|
||||
- Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
blkio.idle_time
|
||||
Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y.
|
||||
This is the amount of time spent by the IO scheduler idling for a
|
||||
given cgroup in anticipation of a better request than the existing ones
|
||||
from other queues/cgroups. This is in nanoseconds. If this is read
|
||||
@ -230,60 +235,60 @@ Proportional weight policy files
|
||||
idle_time accumulated till the last idle period and will not include
|
||||
the current delta.
|
||||
|
||||
- blkio.dequeue
|
||||
- Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y. This
|
||||
blkio.dequeue
|
||||
Debugging aid only enabled if CONFIG_BFQ_CGROUP_DEBUG=y. This
|
||||
gives the statistics about how many a times a group was dequeued
|
||||
from service tree of the device. First two fields specify the major
|
||||
and minor number of the device and third field specifies the number
|
||||
of times a group was dequeued from a particular device.
|
||||
|
||||
- blkio.*_recursive
|
||||
- Recursive version of various stats. These files show the
|
||||
blkio.*_recursive
|
||||
Recursive version of various stats. These files show the
|
||||
same information as their non-recursive counterparts but
|
||||
include stats from all the descendant cgroups.
|
||||
|
||||
Throttling/Upper limit policy files
|
||||
-----------------------------------
|
||||
- blkio.throttle.read_bps_device
|
||||
- Specifies upper limit on READ rate from the device. IO rate is
|
||||
blkio.throttle.read_bps_device
|
||||
Specifies upper limit on READ rate from the device. IO rate is
|
||||
specified in bytes per second. Rules are per device. Following is
|
||||
the format::
|
||||
|
||||
echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.read_bps_device
|
||||
|
||||
- blkio.throttle.write_bps_device
|
||||
- Specifies upper limit on WRITE rate to the device. IO rate is
|
||||
blkio.throttle.write_bps_device
|
||||
Specifies upper limit on WRITE rate to the device. IO rate is
|
||||
specified in bytes per second. Rules are per device. Following is
|
||||
the format::
|
||||
|
||||
echo "<major>:<minor> <rate_bytes_per_second>" > /cgrp/blkio.throttle.write_bps_device
|
||||
|
||||
- blkio.throttle.read_iops_device
|
||||
- Specifies upper limit on READ rate from the device. IO rate is
|
||||
blkio.throttle.read_iops_device
|
||||
Specifies upper limit on READ rate from the device. IO rate is
|
||||
specified in IO per second. Rules are per device. Following is
|
||||
the format::
|
||||
|
||||
echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.read_iops_device
|
||||
|
||||
- blkio.throttle.write_iops_device
|
||||
- Specifies upper limit on WRITE rate to the device. IO rate is
|
||||
blkio.throttle.write_iops_device
|
||||
Specifies upper limit on WRITE rate to the device. IO rate is
|
||||
specified in io per second. Rules are per device. Following is
|
||||
the format::
|
||||
|
||||
echo "<major>:<minor> <rate_io_per_second>" > /cgrp/blkio.throttle.write_iops_device
|
||||
|
||||
Note: If both BW and IOPS rules are specified for a device, then IO is
|
||||
subjected to both the constraints.
|
||||
Note: If both BW and IOPS rules are specified for a device, then IO is
|
||||
subjected to both the constraints.
|
||||
|
||||
- blkio.throttle.io_serviced
|
||||
- Number of IOs (bio) issued to the disk by the group. These
|
||||
blkio.throttle.io_serviced
|
||||
Number of IOs (bio) issued to the disk by the group. These
|
||||
are further divided by the type of operation - read or write, sync
|
||||
or async. First two fields specify the major and minor number of the
|
||||
device, third field specifies the operation type and the fourth field
|
||||
specifies the number of IOs.
|
||||
|
||||
- blkio.throttle.io_service_bytes
|
||||
- Number of bytes transferred to/from the disk by the group. These
|
||||
blkio.throttle.io_service_bytes
|
||||
Number of bytes transferred to/from the disk by the group. These
|
||||
are further divided by the type of operation - read or write, sync
|
||||
or async. First two fields specify the major and minor number of the
|
||||
device, third field specifies the operation type and the fourth field
|
||||
@ -291,6 +296,6 @@ Note: If both BW and IOPS rules are specified for a device, then IO is
|
||||
|
||||
Common files among various policies
|
||||
-----------------------------------
|
||||
- blkio.reset_stats
|
||||
- Writing an int to this file will result in resetting all the stats
|
||||
blkio.reset_stats
|
||||
Writing an int to this file will result in resetting all the stats
|
||||
for that cgroup.
|
||||
|
@ -56,6 +56,7 @@ v1 is available under :ref:`Documentation/admin-guide/cgroup-v1/index.rst <cgrou
|
||||
5-3-3. IO Latency
|
||||
5-3-3-1. How IO Latency Throttling Works
|
||||
5-3-3-2. IO Latency Interface Files
|
||||
5-3-4. IO Priority
|
||||
5-4. PID
|
||||
5-4-1. PID Interface Files
|
||||
5-5. Cpuset
|
||||
@ -952,6 +953,21 @@ All cgroup core files are prefixed with "cgroup."
|
||||
it's possible to delete a frozen (and empty) cgroup, as well as
|
||||
create new sub-cgroups.
|
||||
|
||||
cgroup.kill
|
||||
A write-only single value file which exists in non-root cgroups.
|
||||
The only allowed value is "1".
|
||||
|
||||
Writing "1" to the file causes the cgroup and all descendant cgroups to
|
||||
be killed. This means that all processes located in the affected cgroup
|
||||
tree will be killed via SIGKILL.
|
||||
|
||||
Killing a cgroup tree will deal with concurrent forks appropriately and
|
||||
is protected against migrations.
|
||||
|
||||
In a threaded cgroup, writing this file fails with EOPNOTSUPP as
|
||||
killing cgroups is a process directed operation, i.e. it affects
|
||||
the whole thread-group.
|
||||
|
||||
Controllers
|
||||
===========
|
||||
|
||||
@ -1866,6 +1882,60 @@ IO Latency Interface Files
|
||||
duration of time between evaluation events. Windows only elapse
|
||||
with IO activity. Idle periods extend the most recent window.
|
||||
|
||||
IO Priority
|
||||
~~~~~~~~~~~
|
||||
|
||||
A single attribute controls the behavior of the I/O priority cgroup policy,
|
||||
namely the blkio.prio.class attribute. The following values are accepted for
|
||||
that attribute:
|
||||
|
||||
no-change
|
||||
Do not modify the I/O priority class.
|
||||
|
||||
none-to-rt
|
||||
For requests that do not have an I/O priority class (NONE),
|
||||
change the I/O priority class into RT. Do not modify
|
||||
the I/O priority class of other requests.
|
||||
|
||||
restrict-to-be
|
||||
For requests that do not have an I/O priority class or that have I/O
|
||||
priority class RT, change it into BE. Do not modify the I/O priority
|
||||
class of requests that have priority class IDLE.
|
||||
|
||||
idle
|
||||
Change the I/O priority class of all requests into IDLE, the lowest
|
||||
I/O priority class.
|
||||
|
||||
The following numerical values are associated with the I/O priority policies:
|
||||
|
||||
+-------------+---+
|
||||
| no-change | 0 |
|
||||
+-------------+---+
|
||||
| none-to-rt | 1 |
|
||||
+-------------+---+
|
||||
| rt-to-be | 2 |
|
||||
+-------------+---+
|
||||
| all-to-idle | 3 |
|
||||
+-------------+---+
|
||||
|
||||
The numerical value that corresponds to each I/O priority class is as follows:
|
||||
|
||||
+-------------------------------+---+
|
||||
| IOPRIO_CLASS_NONE | 0 |
|
||||
+-------------------------------+---+
|
||||
| IOPRIO_CLASS_RT (real-time) | 1 |
|
||||
+-------------------------------+---+
|
||||
| IOPRIO_CLASS_BE (best effort) | 2 |
|
||||
+-------------------------------+---+
|
||||
| IOPRIO_CLASS_IDLE | 3 |
|
||||
+-------------------------------+---+
|
||||
|
||||
The algorithm to set the I/O priority class for a request is as follows:
|
||||
|
||||
- Translate the I/O priority class policy into a number.
|
||||
- Change the request I/O priority class into the maximum of the I/O priority
|
||||
class policy number and the numerical I/O priority class.
|
||||
|
||||
PID
|
||||
---
|
||||
|
||||
|
@ -2,87 +2,10 @@
|
||||
How CPU topology info is exported via sysfs
|
||||
===========================================
|
||||
|
||||
Export CPU topology info via sysfs. Items (attributes) are similar
|
||||
to /proc/cpuinfo output of some architectures. They reside in
|
||||
/sys/devices/system/cpu/cpuX/topology/:
|
||||
|
||||
physical_package_id:
|
||||
|
||||
physical package id of cpuX. Typically corresponds to a physical
|
||||
socket number, but the actual value is architecture and platform
|
||||
dependent.
|
||||
|
||||
die_id:
|
||||
|
||||
the CPU die 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_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.
|
||||
|
||||
book_id:
|
||||
|
||||
the book ID of cpuX. Typically it is the hardware platform's
|
||||
identifier (rather than the kernel's). The actual value is
|
||||
architecture and platform dependent.
|
||||
|
||||
drawer_id:
|
||||
|
||||
the drawer 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_cpus:
|
||||
|
||||
internal kernel map of CPUs within the same core.
|
||||
(deprecated name: "thread_siblings")
|
||||
|
||||
core_cpus_list:
|
||||
|
||||
human-readable list of CPUs within the same core.
|
||||
(deprecated name: "thread_siblings_list");
|
||||
|
||||
package_cpus:
|
||||
|
||||
internal kernel map of the CPUs sharing the same physical_package_id.
|
||||
(deprecated name: "core_siblings")
|
||||
|
||||
package_cpus_list:
|
||||
|
||||
human-readable list of CPUs sharing the same physical_package_id.
|
||||
(deprecated name: "core_siblings_list")
|
||||
|
||||
die_cpus:
|
||||
|
||||
internal kernel map of CPUs within the same die.
|
||||
|
||||
die_cpus_list:
|
||||
|
||||
human-readable list of CPUs within the same die.
|
||||
|
||||
book_siblings:
|
||||
|
||||
internal kernel map of cpuX's hardware threads within the same
|
||||
book_id.
|
||||
|
||||
book_siblings_list:
|
||||
|
||||
human-readable list of cpuX's hardware threads within the same
|
||||
book_id.
|
||||
|
||||
drawer_siblings:
|
||||
|
||||
internal kernel map of cpuX's hardware threads within the same
|
||||
drawer_id.
|
||||
|
||||
drawer_siblings_list:
|
||||
|
||||
human-readable list of cpuX's hardware threads within the same
|
||||
drawer_id.
|
||||
CPU topology info is exported via sysfs. Items (attributes) are similar
|
||||
to /proc/cpuinfo output of some architectures. They reside in
|
||||
/sys/devices/system/cpu/cpuX/topology/. Please refer to the ABI file:
|
||||
Documentation/ABI/stable/sysfs-devices-system-cpu.
|
||||
|
||||
Architecture-neutral, drivers/base/topology.c, exports these attributes.
|
||||
However, the book and drawer related sysfs files will only be created if
|
||||
|
@ -12,7 +12,6 @@ first sector should contain valid superblock from previous invocation.
|
||||
Constructor parameters:
|
||||
|
||||
1. type of the cache device - "p" or "s"
|
||||
|
||||
- p - persistent memory
|
||||
- s - SSD
|
||||
2. the underlying device that will be cached
|
||||
@ -21,7 +20,6 @@ Constructor parameters:
|
||||
size)
|
||||
5. the number of optional parameters (the parameters with an argument
|
||||
count as two)
|
||||
|
||||
start_sector n (default: 0)
|
||||
offset from the start of cache device in 512-byte sectors
|
||||
high_watermark n (default: 50)
|
||||
@ -53,6 +51,27 @@ Constructor parameters:
|
||||
|
||||
- some underlying devices perform better with fua, some
|
||||
with nofua. The user should test it
|
||||
cleaner
|
||||
when this option is activated (either in the constructor
|
||||
arguments or by a message), the cache will not promote
|
||||
new writes (however, writes to already cached blocks are
|
||||
promoted, to avoid data corruption due to misordered
|
||||
writes) and it will gradually writeback any cached
|
||||
data. The userspace can then monitor the cleaning
|
||||
process with "dmsetup status". When the number of cached
|
||||
blocks drops to zero, userspace can unload the
|
||||
dm-writecache target and replace it with dm-linear or
|
||||
other targets.
|
||||
max_age n
|
||||
specifies the maximum age of a block in milliseconds. If
|
||||
a block is stored in the cache for too long, it will be
|
||||
written to the underlying device and cleaned up.
|
||||
metadata_only
|
||||
only metadata is promoted to the cache. This option
|
||||
improves performance for heavier REQ_META workloads.
|
||||
pause_writeback n (default: 3000)
|
||||
pause writeback if there was some write I/O redirected to
|
||||
the origin volume in the last n milliseconds
|
||||
|
||||
Status:
|
||||
1. error indicator - 0 if there was no error, otherwise error number
|
||||
@ -77,3 +96,5 @@ Messages:
|
||||
5. resume the device, so that it will use the linear
|
||||
target
|
||||
6. the cache device is now inactive and it can be deleted
|
||||
cleaner
|
||||
See above "cleaner" constructor documentation.
|
||||
|
@ -392,7 +392,7 @@ When mounting an ext4 filesystem, the following option are accepted:
|
||||
|
||||
dax
|
||||
Use direct access (no page cache). See
|
||||
Documentation/filesystems/dax.txt. Note that this option is
|
||||
Documentation/filesystems/dax.rst. Note that this option is
|
||||
incompatible with data=journal.
|
||||
|
||||
inlinecrypt
|
||||
|
223
Documentation/admin-guide/hw-vuln/core-scheduling.rst
Normal file
223
Documentation/admin-guide/hw-vuln/core-scheduling.rst
Normal file
@ -0,0 +1,223 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
===============
|
||||
Core Scheduling
|
||||
===============
|
||||
Core scheduling support allows userspace to define groups of tasks that can
|
||||
share a core. These groups can be specified either for security usecases (one
|
||||
group of tasks don't trust another), or for performance usecases (some
|
||||
workloads may benefit from running on the same core as they don't need the same
|
||||
hardware resources of the shared core, or may prefer different cores if they
|
||||
do share hardware resource needs). This document only describes the security
|
||||
usecase.
|
||||
|
||||
Security usecase
|
||||
----------------
|
||||
A cross-HT attack involves the attacker and victim running on different Hyper
|
||||
Threads of the same core. MDS and L1TF are examples of such attacks. The only
|
||||
full mitigation of cross-HT attacks is to disable Hyper Threading (HT). Core
|
||||
scheduling is a scheduler feature that can mitigate some (not all) cross-HT
|
||||
attacks. It allows HT to be turned on safely by ensuring that only tasks in a
|
||||
user-designated trusted group can share a core. This increase in core sharing
|
||||
can also improve performance, however it is not guaranteed that performance
|
||||
will always improve, though that is seen to be the case with a number of real
|
||||
world workloads. In theory, core scheduling aims to perform at least as good as
|
||||
when Hyper Threading is disabled. In practice, this is mostly the case though
|
||||
not always: as synchronizing scheduling decisions across 2 or more CPUs in a
|
||||
core involves additional overhead - especially when the system is lightly
|
||||
loaded. When ``total_threads <= N_CPUS/2``, the extra overhead may cause core
|
||||
scheduling to perform more poorly compared to SMT-disabled, where N_CPUS is the
|
||||
total number of CPUs. Please measure the performance of your workloads always.
|
||||
|
||||
Usage
|
||||
-----
|
||||
Core scheduling support is enabled via the ``CONFIG_SCHED_CORE`` config option.
|
||||
Using this feature, userspace defines groups of tasks that can be co-scheduled
|
||||
on the same core. The core scheduler uses this information to make sure that
|
||||
tasks that are not in the same group never run simultaneously on a core, while
|
||||
doing its best to satisfy the system's scheduling requirements.
|
||||
|
||||
Core scheduling can be enabled via the ``PR_SCHED_CORE`` prctl interface.
|
||||
This interface provides support for the creation of core scheduling groups, as
|
||||
well as admission and removal of tasks from created groups::
|
||||
|
||||
#include <sys/prctl.h>
|
||||
|
||||
int prctl(int option, unsigned long arg2, unsigned long arg3,
|
||||
unsigned long arg4, unsigned long arg5);
|
||||
|
||||
option:
|
||||
``PR_SCHED_CORE``
|
||||
|
||||
arg2:
|
||||
Command for operation, must be one off:
|
||||
|
||||
- ``PR_SCHED_CORE_GET`` -- get core_sched cookie of ``pid``.
|
||||
- ``PR_SCHED_CORE_CREATE`` -- create a new unique cookie for ``pid``.
|
||||
- ``PR_SCHED_CORE_SHARE_TO`` -- push core_sched cookie to ``pid``.
|
||||
- ``PR_SCHED_CORE_SHARE_FROM`` -- pull core_sched cookie from ``pid``.
|
||||
|
||||
arg3:
|
||||
``pid`` of the task for which the operation applies.
|
||||
|
||||
arg4:
|
||||
``pid_type`` for which the operation applies. It is of type ``enum pid_type``.
|
||||
For example, if arg4 is ``PIDTYPE_TGID``, then the operation of this command
|
||||
will be performed for all tasks in the task group of ``pid``.
|
||||
|
||||
arg5:
|
||||
userspace pointer to an unsigned long for storing the cookie returned by
|
||||
``PR_SCHED_CORE_GET`` command. Should be 0 for all other commands.
|
||||
|
||||
In order for a process to push a cookie to, or pull a cookie from a process, it
|
||||
is required to have the ptrace access mode: `PTRACE_MODE_READ_REALCREDS` to the
|
||||
process.
|
||||
|
||||
Building hierarchies of tasks
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The simplest way to build hierarchies of threads/processes which share a
|
||||
cookie and thus a core is to rely on the fact that the core-sched cookie is
|
||||
inherited across forks/clones and execs, thus setting a cookie for the
|
||||
'initial' script/executable/daemon will place every spawned child in the
|
||||
same core-sched group.
|
||||
|
||||
Cookie Transferral
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
Transferring a cookie between the current and other tasks is possible using
|
||||
PR_SCHED_CORE_SHARE_FROM and PR_SCHED_CORE_SHARE_TO to inherit a cookie from a
|
||||
specified task or a share a cookie with a task. In combination this allows a
|
||||
simple helper program to pull a cookie from a task in an existing core
|
||||
scheduling group and share it with already running tasks.
|
||||
|
||||
Design/Implementation
|
||||
---------------------
|
||||
Each task that is tagged is assigned a cookie internally in the kernel. As
|
||||
mentioned in `Usage`_, tasks with the same cookie value are assumed to trust
|
||||
each other and share a core.
|
||||
|
||||
The basic idea is that, every schedule event tries to select tasks for all the
|
||||
siblings of a core such that all the selected tasks running on a core are
|
||||
trusted (same cookie) at any point in time. Kernel threads are assumed trusted.
|
||||
The idle task is considered special, as it trusts everything and everything
|
||||
trusts it.
|
||||
|
||||
During a schedule() event on any sibling of a core, the highest priority task on
|
||||
the sibling's core is picked and assigned to the sibling calling schedule(), if
|
||||
the sibling has the task enqueued. For rest of the siblings in the core,
|
||||
highest priority task with the same cookie is selected if there is one runnable
|
||||
in their individual run queues. If a task with same cookie is not available,
|
||||
the idle task is selected. Idle task is globally trusted.
|
||||
|
||||
Once a task has been selected for all the siblings in the core, an IPI is sent to
|
||||
siblings for whom a new task was selected. Siblings on receiving the IPI will
|
||||
switch to the new task immediately. If an idle task is selected for a sibling,
|
||||
then the sibling is considered to be in a `forced idle` state. I.e., it may
|
||||
have tasks on its on runqueue to run, however it will still have to run idle.
|
||||
More on this in the next section.
|
||||
|
||||
Forced-idling of hyperthreads
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The scheduler tries its best to find tasks that trust each other such that all
|
||||
tasks selected to be scheduled are of the highest priority in a core. However,
|
||||
it is possible that some runqueues had tasks that were incompatible with the
|
||||
highest priority ones in the core. Favoring security over fairness, one or more
|
||||
siblings could be forced to select a lower priority task if the highest
|
||||
priority task is not trusted with respect to the core wide highest priority
|
||||
task. If a sibling does not have a trusted task to run, it will be forced idle
|
||||
by the scheduler (idle thread is scheduled to run).
|
||||
|
||||
When the highest priority task is selected to run, a reschedule-IPI is sent to
|
||||
the sibling to force it into idle. This results in 4 cases which need to be
|
||||
considered depending on whether a VM or a regular usermode process was running
|
||||
on either HT::
|
||||
|
||||
HT1 (attack) HT2 (victim)
|
||||
A idle -> user space user space -> idle
|
||||
B idle -> user space guest -> idle
|
||||
C idle -> guest user space -> idle
|
||||
D idle -> guest guest -> idle
|
||||
|
||||
Note that for better performance, we do not wait for the destination CPU
|
||||
(victim) to enter idle mode. This is because the sending of the IPI would bring
|
||||
the destination CPU immediately into kernel mode from user space, or VMEXIT
|
||||
in the case of guests. At best, this would only leak some scheduler metadata
|
||||
which may not be worth protecting. It is also possible that the IPI is received
|
||||
too late on some architectures, but this has not been observed in the case of
|
||||
x86.
|
||||
|
||||
Trust model
|
||||
~~~~~~~~~~~
|
||||
Core scheduling maintains trust relationships amongst groups of tasks by
|
||||
assigning them a tag that is the same cookie value.
|
||||
When a system with core scheduling boots, all tasks are considered to trust
|
||||
each other. This is because the core scheduler does not have information about
|
||||
trust relationships until userspace uses the above mentioned interfaces, to
|
||||
communicate them. In other words, all tasks have a default cookie value of 0.
|
||||
and are considered system-wide trusted. The forced-idling of siblings running
|
||||
cookie-0 tasks is also avoided.
|
||||
|
||||
Once userspace uses the above mentioned interfaces to group sets of tasks, tasks
|
||||
within such groups are considered to trust each other, but do not trust those
|
||||
outside. Tasks outside the group also don't trust tasks within.
|
||||
|
||||
Limitations of core-scheduling
|
||||
------------------------------
|
||||
Core scheduling tries to guarantee that only trusted tasks run concurrently on a
|
||||
core. But there could be small window of time during which untrusted tasks run
|
||||
concurrently or kernel could be running concurrently with a task not trusted by
|
||||
kernel.
|
||||
|
||||
IPI processing delays
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
Core scheduling selects only trusted tasks to run together. IPI is used to notify
|
||||
the siblings to switch to the new task. But there could be hardware delays in
|
||||
receiving of the IPI on some arch (on x86, this has not been observed). This may
|
||||
cause an attacker task to start running on a CPU before its siblings receive the
|
||||
IPI. Even though cache is flushed on entry to user mode, victim tasks on siblings
|
||||
may populate data in the cache and micro architectural buffers after the attacker
|
||||
starts to run and this is a possibility for data leak.
|
||||
|
||||
Open cross-HT issues that core scheduling does not solve
|
||||
--------------------------------------------------------
|
||||
1. For MDS
|
||||
~~~~~~~~~~
|
||||
Core scheduling cannot protect against MDS attacks between an HT running in
|
||||
user mode and another running in kernel mode. Even though both HTs run tasks
|
||||
which trust each other, kernel memory is still considered untrusted. Such
|
||||
attacks are possible for any combination of sibling CPU modes (host or guest mode).
|
||||
|
||||
2. For L1TF
|
||||
~~~~~~~~~~~
|
||||
Core scheduling cannot protect against an L1TF guest attacker exploiting a
|
||||
guest or host victim. This is because the guest attacker can craft invalid
|
||||
PTEs which are not inverted due to a vulnerable guest kernel. The only
|
||||
solution is to disable EPT (Extended Page Tables).
|
||||
|
||||
For both MDS and L1TF, if the guest vCPU is configured to not trust each
|
||||
other (by tagging separately), then the guest to guest attacks would go away.
|
||||
Or it could be a system admin policy which considers guest to guest attacks as
|
||||
a guest problem.
|
||||
|
||||
Another approach to resolve these would be to make every untrusted task on the
|
||||
system to not trust every other untrusted task. While this could reduce
|
||||
parallelism of the untrusted tasks, it would still solve the above issues while
|
||||
allowing system processes (trusted tasks) to share a core.
|
||||
|
||||
3. Protecting the kernel (IRQ, syscall, VMEXIT)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Unfortunately, core scheduling does not protect kernel contexts running on
|
||||
sibling hyperthreads from one another. Prototypes of mitigations have been posted
|
||||
to LKML to solve this, but it is debatable whether such windows are practically
|
||||
exploitable, and whether the performance overhead of the prototypes are worth
|
||||
it (not to mention, the added code complexity).
|
||||
|
||||
Other Use cases
|
||||
---------------
|
||||
The main use case for Core scheduling is mitigating the cross-HT vulnerabilities
|
||||
with SMT enabled. There are other use cases where this feature could be used:
|
||||
|
||||
- Isolating tasks that needs a whole core: Examples include realtime tasks, tasks
|
||||
that uses SIMD instructions etc.
|
||||
- Gang scheduling: Requirements for a group of tasks that needs to be scheduled
|
||||
together could also be realized using core scheduling. One example is vCPUs of
|
||||
a VM.
|
@ -15,3 +15,4 @@ are configurable at compile, boot or run time.
|
||||
tsx_async_abort
|
||||
multihit.rst
|
||||
special-register-buffer-data-sampling.rst
|
||||
core-scheduling.rst
|
||||
|
@ -3,7 +3,8 @@
|
||||
SRBDS - Special Register Buffer Data Sampling
|
||||
=============================================
|
||||
|
||||
SRBDS is a hardware vulnerability that allows MDS :doc:`mds` techniques to
|
||||
SRBDS is a hardware vulnerability that allows MDS
|
||||
Documentation/admin-guide/hw-vuln/mds.rst techniques to
|
||||
infer values returned from special register accesses. Special register
|
||||
accesses are accesses to off core registers. According to Intel's evaluation,
|
||||
the special register reads that have a security expectation of privacy are
|
||||
|
@ -2,7 +2,7 @@
|
||||
Documentation for Kdump - The kexec-based Crash Dumping Solution
|
||||
================================================================
|
||||
|
||||
This document includes overview, setup and installation, and analysis
|
||||
This document includes overview, setup, installation, and analysis
|
||||
information.
|
||||
|
||||
Overview
|
||||
@ -13,9 +13,9 @@ dump of the system kernel's memory needs to be taken (for example, when
|
||||
the system panics). The system kernel's memory image is preserved across
|
||||
the reboot and is accessible to the dump-capture kernel.
|
||||
|
||||
You can use common commands, such as cp and scp, to copy the
|
||||
memory image to a dump file on the local disk, or across the network to
|
||||
a remote system.
|
||||
You can use common commands, such as cp, scp or makedumpfile to copy
|
||||
the memory image to a dump file on the local disk, or across the network
|
||||
to a remote system.
|
||||
|
||||
Kdump and kexec are currently supported on the x86, x86_64, ppc64, ia64,
|
||||
s390x, arm and arm64 architectures.
|
||||
@ -26,13 +26,15 @@ the dump-capture kernel. This ensures that ongoing Direct Memory Access
|
||||
The kexec -p command loads the dump-capture kernel into this reserved
|
||||
memory.
|
||||
|
||||
On x86 machines, the first 640 KB of physical memory is needed to boot,
|
||||
regardless of where the kernel loads. Therefore, kexec backs up this
|
||||
region just before rebooting into the dump-capture kernel.
|
||||
On x86 machines, the first 640 KB of physical memory is needed for boot,
|
||||
regardless of where the kernel loads. For simpler handling, the whole
|
||||
low 1M is reserved to avoid any later kernel or device driver writing
|
||||
data into this area. Like this, the low 1M can be reused as system RAM
|
||||
by kdump kernel without extra handling.
|
||||
|
||||
Similarly on PPC64 machines first 32KB of physical memory is needed for
|
||||
booting regardless of where the kernel is loaded and to support 64K page
|
||||
size kexec backs up the first 64KB memory.
|
||||
On PPC64 machines first 32KB of physical memory is needed for booting
|
||||
regardless of where the kernel is loaded and to support 64K page size
|
||||
kexec backs up the first 64KB memory.
|
||||
|
||||
For s390x, when kdump is triggered, the crashkernel region is exchanged
|
||||
with the region [0, crashkernel region size] and then the kdump kernel
|
||||
@ -46,14 +48,14 @@ passed to the dump-capture kernel through the elfcorehdr= boot
|
||||
parameter. Optionally the size of the ELF header can also be passed
|
||||
when using the elfcorehdr=[size[KMG]@]offset[KMG] syntax.
|
||||
|
||||
|
||||
With the dump-capture kernel, you can access the memory image through
|
||||
/proc/vmcore. This exports the dump as an ELF-format file that you can
|
||||
write out using file copy commands such as cp or scp. Further, you can
|
||||
use analysis tools such as the GNU Debugger (GDB) and the Crash tool to
|
||||
debug the dump file. This method ensures that the dump pages are correctly
|
||||
ordered.
|
||||
|
||||
write out using file copy commands such as cp or scp. You can also use
|
||||
makedumpfile utility to analyze and write out filtered contents with
|
||||
options, e.g with '-d 31' it will only write out kernel data. Further,
|
||||
you can use analysis tools such as the GNU Debugger (GDB) and the Crash
|
||||
tool to debug the dump file. This method ensures that the dump pages are
|
||||
correctly ordered.
|
||||
|
||||
Setup and Installation
|
||||
======================
|
||||
@ -125,9 +127,18 @@ dump-capture kernels for enabling kdump support.
|
||||
System kernel config options
|
||||
----------------------------
|
||||
|
||||
1) Enable "kexec system call" in "Processor type and features."::
|
||||
1) Enable "kexec system call" or "kexec file based system call" in
|
||||
"Processor type and features."::
|
||||
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_KEXEC=y or CONFIG_KEXEC_FILE=y
|
||||
|
||||
And both of them will select KEXEC_CORE::
|
||||
|
||||
CONFIG_KEXEC_CORE=y
|
||||
|
||||
Subsequently, CRASH_CORE is selected by KEXEC_CORE::
|
||||
|
||||
CONFIG_CRASH_CORE=y
|
||||
|
||||
2) Enable "sysfs file system support" in "Filesystem" -> "Pseudo
|
||||
filesystems." This is usually enabled by default::
|
||||
@ -175,17 +186,19 @@ Dump-capture kernel config options (Arch Dependent, i386 and x86_64)
|
||||
|
||||
CONFIG_HIGHMEM4G
|
||||
|
||||
2) On i386 and x86_64, disable symmetric multi-processing support
|
||||
under "Processor type and features"::
|
||||
2) With CONFIG_SMP=y, usually nr_cpus=1 need specified on the kernel
|
||||
command line when loading the dump-capture kernel because one
|
||||
CPU is enough for kdump kernel to dump vmcore on most of systems.
|
||||
|
||||
CONFIG_SMP=n
|
||||
However, you can also specify nr_cpus=X to enable multiple processors
|
||||
in kdump kernel. In this case, "disable_cpu_apicid=" is needed to
|
||||
tell kdump kernel which cpu is 1st kernel's BSP. Please refer to
|
||||
admin-guide/kernel-parameters.txt for more details.
|
||||
|
||||
(If CONFIG_SMP=y, then specify maxcpus=1 on the kernel command line
|
||||
when loading the dump-capture kernel, see section "Load the Dump-capture
|
||||
Kernel".)
|
||||
With CONFIG_SMP=n, the above things are not related.
|
||||
|
||||
3) If one wants to build and use a relocatable kernel,
|
||||
Enable "Build a relocatable kernel" support under "Processor type and
|
||||
3) A relocatable kernel is suggested to be built by default. If not yet,
|
||||
enable "Build a relocatable kernel" support under "Processor type and
|
||||
features"::
|
||||
|
||||
CONFIG_RELOCATABLE=y
|
||||
@ -232,7 +245,7 @@ Dump-capture kernel config options (Arch Dependent, ia64)
|
||||
as a dump-capture kernel if desired.
|
||||
|
||||
The crashkernel region can be automatically placed by the system
|
||||
kernel at run time. This is done by specifying the base address as 0,
|
||||
kernel at runtime. This is done by specifying the base address as 0,
|
||||
or omitting it all together::
|
||||
|
||||
crashkernel=256M@0
|
||||
@ -241,10 +254,6 @@ Dump-capture kernel config options (Arch Dependent, ia64)
|
||||
|
||||
crashkernel=256M
|
||||
|
||||
If the start address is specified, note that the start address of the
|
||||
kernel will be aligned to 64Mb, so if the start address is not then
|
||||
any space below the alignment point will be wasted.
|
||||
|
||||
Dump-capture kernel config options (Arch Dependent, arm)
|
||||
----------------------------------------------------------
|
||||
|
||||
@ -260,46 +269,82 @@ Dump-capture kernel config options (Arch Dependent, arm64)
|
||||
on non-VHE systems even if it is configured. This is because the CPU
|
||||
will not be reset to EL2 on panic.
|
||||
|
||||
Extended crashkernel syntax
|
||||
crashkernel syntax
|
||||
===========================
|
||||
1) crashkernel=size@offset
|
||||
|
||||
While the "crashkernel=size[@offset]" syntax is sufficient for most
|
||||
configurations, sometimes it's handy to have the reserved memory dependent
|
||||
on the value of System RAM -- that's mostly for distributors that pre-setup
|
||||
the kernel command line to avoid a unbootable system after some memory has
|
||||
been removed from the machine.
|
||||
|
||||
The syntax is::
|
||||
|
||||
crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]
|
||||
range=start-[end]
|
||||
|
||||
For example::
|
||||
|
||||
crashkernel=512M-2G:64M,2G-:128M
|
||||
|
||||
This would mean:
|
||||
|
||||
1) if the RAM is smaller than 512M, then don't reserve anything
|
||||
(this is the "rescue" case)
|
||||
2) if the RAM size is between 512M and 2G (exclusive), then reserve 64M
|
||||
3) if the RAM size is larger than 2G, then reserve 128M
|
||||
|
||||
|
||||
|
||||
Boot into System Kernel
|
||||
=======================
|
||||
|
||||
1) Update the boot loader (such as grub, yaboot, or lilo) configuration
|
||||
files as necessary.
|
||||
|
||||
2) Boot the system kernel with the boot parameter "crashkernel=Y@X",
|
||||
where Y specifies how much memory to reserve for the dump-capture kernel
|
||||
and X specifies the beginning of this reserved memory. For example,
|
||||
Here 'size' specifies how much memory to reserve for the dump-capture kernel
|
||||
and 'offset' specifies the beginning of this reserved memory. For example,
|
||||
"crashkernel=64M@16M" tells the system kernel to reserve 64 MB of memory
|
||||
starting at physical address 0x01000000 (16MB) for the dump-capture kernel.
|
||||
|
||||
On x86 and x86_64, use "crashkernel=64M@16M".
|
||||
The crashkernel region can be automatically placed by the system
|
||||
kernel at run time. This is done by specifying the base address as 0,
|
||||
or omitting it all together::
|
||||
|
||||
crashkernel=256M@0
|
||||
|
||||
or::
|
||||
|
||||
crashkernel=256M
|
||||
|
||||
If the start address is specified, note that the start address of the
|
||||
kernel will be aligned to a value (which is Arch dependent), so if the
|
||||
start address is not then any space below the alignment point will be
|
||||
wasted.
|
||||
|
||||
2) range1:size1[,range2:size2,...][@offset]
|
||||
|
||||
While the "crashkernel=size[@offset]" syntax is sufficient for most
|
||||
configurations, sometimes it's handy to have the reserved memory dependent
|
||||
on the value of System RAM -- that's mostly for distributors that pre-setup
|
||||
the kernel command line to avoid a unbootable system after some memory has
|
||||
been removed from the machine.
|
||||
|
||||
The syntax is::
|
||||
|
||||
crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]
|
||||
range=start-[end]
|
||||
|
||||
For example::
|
||||
|
||||
crashkernel=512M-2G:64M,2G-:128M
|
||||
|
||||
This would mean:
|
||||
|
||||
1) if the RAM is smaller than 512M, then don't reserve anything
|
||||
(this is the "rescue" case)
|
||||
2) if the RAM size is between 512M and 2G (exclusive), then reserve 64M
|
||||
3) if the RAM size is larger than 2G, then reserve 128M
|
||||
|
||||
3) crashkernel=size,high and crashkernel=size,low
|
||||
|
||||
If memory above 4G is preferred, crashkernel=size,high can be used to
|
||||
fulfill that. With it, physical memory is allowed to be allocated from top,
|
||||
so could be above 4G if system has more than 4G RAM installed. Otherwise,
|
||||
memory region will be allocated below 4G if available.
|
||||
|
||||
When crashkernel=X,high is passed, kernel could allocate physical memory
|
||||
region above 4G, low memory under 4G is needed in this case. There are
|
||||
three ways to get low memory:
|
||||
|
||||
1) Kernel will allocate at least 256M memory below 4G automatically
|
||||
if crashkernel=Y,low is not specified.
|
||||
2) Let user specify low memory size instead.
|
||||
3) Specified value 0 will disable low memory allocation::
|
||||
|
||||
crashkernel=0,low
|
||||
|
||||
Boot into System Kernel
|
||||
-----------------------
|
||||
1) Update the boot loader (such as grub, yaboot, or lilo) configuration
|
||||
files as necessary.
|
||||
|
||||
2) Boot the system kernel with the boot parameter "crashkernel=Y@X".
|
||||
|
||||
On x86 and x86_64, use "crashkernel=Y[@X]". Most of the time, the
|
||||
start address 'X' is not necessary, kernel will search a suitable
|
||||
area. Unless an explicit start address is expected.
|
||||
|
||||
On ppc64, use "crashkernel=128M@32M".
|
||||
|
||||
@ -331,8 +376,8 @@ of dump-capture kernel. Following is the summary.
|
||||
|
||||
For i386 and x86_64:
|
||||
|
||||
- Use vmlinux if kernel is not relocatable.
|
||||
- Use bzImage/vmlinuz if kernel is relocatable.
|
||||
- Use vmlinux if kernel is not relocatable.
|
||||
|
||||
For ppc64:
|
||||
|
||||
@ -392,7 +437,7 @@ loading dump-capture kernel.
|
||||
|
||||
For i386, x86_64 and ia64:
|
||||
|
||||
"1 irqpoll maxcpus=1 reset_devices"
|
||||
"1 irqpoll nr_cpus=1 reset_devices"
|
||||
|
||||
For ppc64:
|
||||
|
||||
@ -400,7 +445,7 @@ For ppc64:
|
||||
|
||||
For s390x:
|
||||
|
||||
"1 maxcpus=1 cgroup_disable=memory"
|
||||
"1 nr_cpus=1 cgroup_disable=memory"
|
||||
|
||||
For arm:
|
||||
|
||||
@ -408,7 +453,7 @@ For arm:
|
||||
|
||||
For arm64:
|
||||
|
||||
"1 maxcpus=1 reset_devices"
|
||||
"1 nr_cpus=1 reset_devices"
|
||||
|
||||
Notes on loading the dump-capture kernel:
|
||||
|
||||
@ -488,6 +533,10 @@ the following command::
|
||||
|
||||
cp /proc/vmcore <dump-file>
|
||||
|
||||
You can also use makedumpfile utility to write out the dump file
|
||||
with specified options to filter out unwanted contents, e.g::
|
||||
|
||||
makedumpfile -l --message-level 1 -d 31 /proc/vmcore <dump-file>
|
||||
|
||||
Analysis
|
||||
========
|
||||
@ -535,8 +584,7 @@ This will cause a kdump to occur at the add_taint()->panic() call.
|
||||
Contact
|
||||
=======
|
||||
|
||||
- Vivek Goyal (vgoyal@redhat.com)
|
||||
- Maneesh Soni (maneesh@in.ibm.com)
|
||||
- kexec@lists.infradead.org
|
||||
|
||||
GDB macros
|
||||
==========
|
||||
|
@ -76,6 +76,11 @@ to change, such as less cores in the CPU list, then N and any ranges using N
|
||||
will also change. Use the same on a small 4 core system, and "16-N" becomes
|
||||
"16-3" and now the same boot input will be flagged as invalid (start > end).
|
||||
|
||||
The special case-tolerant group name "all" has a meaning of selecting all CPUs,
|
||||
so that "nohz_full=all" is the equivalent of "nohz_full=0-N".
|
||||
|
||||
The semantics of "N" and "all" is supported on a level of bitmaps and holds for
|
||||
all users of bitmap_parse().
|
||||
|
||||
This document may not be entirely up to date and comprehensive. The command
|
||||
"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
|
||||
|
@ -113,7 +113,7 @@
|
||||
the GPE dispatcher.
|
||||
This facility can be used to prevent such uncontrolled
|
||||
GPE floodings.
|
||||
Format: <byte>
|
||||
Format: <byte> or <bitmap-list>
|
||||
|
||||
acpi_no_auto_serialize [HW,ACPI]
|
||||
Disable auto-serialization of AML methods
|
||||
@ -301,6 +301,9 @@
|
||||
allowed anymore to lift isolation
|
||||
requirements as needed. This option
|
||||
does not override iommu=pt
|
||||
force_enable - Force enable the IOMMU on platforms known
|
||||
to be buggy with IOMMU enabled. Use this
|
||||
option with care.
|
||||
|
||||
amd_iommu_dump= [HW,X86-64]
|
||||
Enable AMD IOMMU driver option to dump the ACPI table
|
||||
@ -497,16 +500,21 @@
|
||||
ccw_timeout_log [S390]
|
||||
See Documentation/s390/common_io.rst for details.
|
||||
|
||||
cgroup_disable= [KNL] Disable a particular controller
|
||||
Format: {name of the controller(s) to disable}
|
||||
cgroup_disable= [KNL] Disable a particular controller or optional feature
|
||||
Format: {name of the controller(s) or feature(s) to disable}
|
||||
The effects of cgroup_disable=foo are:
|
||||
- foo isn't auto-mounted if you mount all cgroups in
|
||||
a single hierarchy
|
||||
- foo isn't visible as an individually mountable
|
||||
subsystem
|
||||
- if foo is an optional feature then the feature is
|
||||
disabled and corresponding cgroup files are not
|
||||
created
|
||||
{Currently only "memory" controller deal with this and
|
||||
cut the overhead, others just disable the usage. So
|
||||
only cgroup_disable=memory is actually worthy}
|
||||
Specifying "pressure" disables per-cgroup pressure
|
||||
stall information accounting feature
|
||||
|
||||
cgroup_no_v1= [KNL] Disable cgroup controllers and named hierarchies in v1
|
||||
Format: { { controller | "all" | "named" }
|
||||
@ -581,6 +589,28 @@
|
||||
loops can be debugged more effectively on production
|
||||
systems.
|
||||
|
||||
clocksource.max_cswd_read_retries= [KNL]
|
||||
Number of clocksource_watchdog() retries due to
|
||||
external delays before the clock will be marked
|
||||
unstable. Defaults to three retries, that is,
|
||||
four attempts to read the clock under test.
|
||||
|
||||
clocksource.verify_n_cpus= [KNL]
|
||||
Limit the number of CPUs checked for clocksources
|
||||
marked with CLOCK_SOURCE_VERIFY_PERCPU that
|
||||
are marked unstable due to excessive skew.
|
||||
A negative value says to check all CPUs, while
|
||||
zero says not to check any. Values larger than
|
||||
nr_cpu_ids are silently truncated to nr_cpu_ids.
|
||||
The actual CPUs are chosen randomly, with
|
||||
no replacement if the same CPU is chosen twice.
|
||||
|
||||
clocksource-wdtest.holdoff= [KNL]
|
||||
Set the time in seconds that the clocksource
|
||||
watchdog test waits before commencing its tests.
|
||||
Defaults to zero when built as a module and to
|
||||
10 seconds when built into the kernel.
|
||||
|
||||
clearcpuid=BITNUM[,BITNUM...] [X86]
|
||||
Disable CPUID feature X for the kernel. See
|
||||
arch/x86/include/asm/cpufeatures.h for the valid bit
|
||||
@ -1092,6 +1122,11 @@
|
||||
the driver will use only 32-bit accessors to read/write
|
||||
the device registers.
|
||||
|
||||
liteuart,<addr>
|
||||
Start an early console on a litex serial port at the
|
||||
specified address. The serial port must already be
|
||||
setup and configured. Options are not yet supported.
|
||||
|
||||
meson,<addr>
|
||||
Start an early, polled-mode console on a meson serial
|
||||
port at the specified address. The serial port must
|
||||
@ -1567,6 +1602,23 @@
|
||||
Documentation/admin-guide/mm/hugetlbpage.rst.
|
||||
Format: size[KMG]
|
||||
|
||||
hugetlb_free_vmemmap=
|
||||
[KNL] Reguires CONFIG_HUGETLB_PAGE_FREE_VMEMMAP
|
||||
enabled.
|
||||
Allows heavy hugetlb users to free up some more
|
||||
memory (6 * PAGE_SIZE for each 2MB hugetlb page).
|
||||
Format: { on | off (default) }
|
||||
|
||||
on: enable the feature
|
||||
off: disable the feature
|
||||
|
||||
Built with CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON=y,
|
||||
the default is on.
|
||||
|
||||
This is not compatible with memory_hotplug.memmap_on_memory.
|
||||
If both parameters are enabled, hugetlb_free_vmemmap takes
|
||||
precedence over memory_hotplug.memmap_on_memory.
|
||||
|
||||
hung_task_panic=
|
||||
[KNL] Should the hung task detector generate panics.
|
||||
Format: 0 | 1
|
||||
@ -1987,7 +2039,7 @@
|
||||
forcing Dual Address Cycle for PCI cards supporting
|
||||
greater than 32-bit addressing.
|
||||
|
||||
iommu.strict= [ARM64] Configure TLB invalidation behaviour
|
||||
iommu.strict= [ARM64, X86] Configure TLB invalidation behaviour
|
||||
Format: { "0" | "1" }
|
||||
0 - Lazy mode.
|
||||
Request that DMA unmap operations use deferred
|
||||
@ -1998,6 +2050,10 @@
|
||||
1 - Strict mode (default).
|
||||
DMA unmap operations invalidate IOMMU hardware TLBs
|
||||
synchronously.
|
||||
Note: on x86, the default behaviour depends on the
|
||||
equivalent driver-specific parameters, but a strict
|
||||
mode explicitly specified by either method takes
|
||||
precedence.
|
||||
|
||||
iommu.passthrough=
|
||||
[ARM64, X86] Configure DMA to bypass the IOMMU by default.
|
||||
@ -2833,6 +2889,10 @@
|
||||
Note that even when enabled, there are a few cases where
|
||||
the feature is not effective.
|
||||
|
||||
This is not compatible with hugetlb_free_vmemmap. If
|
||||
both parameters are enabled, hugetlb_free_vmemmap takes
|
||||
precedence over memory_hotplug.memmap_on_memory.
|
||||
|
||||
memtest= [KNL,X86,ARM,PPC,RISCV] Enable memtest
|
||||
Format: <integer>
|
||||
default : 0 <disable>
|
||||
@ -3244,7 +3304,7 @@
|
||||
|
||||
noclflush [BUGS=X86] Don't use the CLFLUSH instruction
|
||||
|
||||
nodelayacct [KNL] Disable per-task delay accounting
|
||||
delayacct [KNL] Enable per-task delay accounting
|
||||
|
||||
nodsp [SH] Disable hardware DSP at boot time.
|
||||
|
||||
@ -3513,6 +3573,9 @@
|
||||
|
||||
nr_uarts= [SERIAL] maximum number of UARTs to be registered.
|
||||
|
||||
numa=off [KNL, ARM64, PPC, RISCV, SPARC, X86] Disable NUMA, Only
|
||||
set up a single NUMA node spanning all memory.
|
||||
|
||||
numa_balancing= [KNL,ARM64,PPC,RISCV,S390,X86] Enable or disable automatic
|
||||
NUMA balancing.
|
||||
Allowed values are enable and disable
|
||||
@ -3566,6 +3629,12 @@
|
||||
off: turn off poisoning (default)
|
||||
on: turn on poisoning
|
||||
|
||||
page_reporting.page_reporting_order=
|
||||
[KNL] Minimal page reporting order
|
||||
Format: <integer>
|
||||
Adjust the minimal page reporting order. The page
|
||||
reporting is disabled when it exceeds (MAX_ORDER-1).
|
||||
|
||||
panic= [KNL] Kernel behaviour on panic: delay <timeout>
|
||||
timeout > 0: seconds before rebooting
|
||||
timeout = 0: wait forever
|
||||
@ -4290,6 +4359,11 @@
|
||||
whole algorithm to behave better in low memory
|
||||
condition.
|
||||
|
||||
rcutree.rcu_delay_page_cache_fill_msec= [KNL]
|
||||
Set the page-cache refill delay (in milliseconds)
|
||||
in response to low-memory conditions. The range
|
||||
of permitted values is in the range 0:100000.
|
||||
|
||||
rcutree.jiffies_till_first_fqs= [KNL]
|
||||
Set delay from grace-period initialization to
|
||||
first attempt to force quiescent states.
|
||||
@ -4775,11 +4849,6 @@
|
||||
Reserves a hole at the top of the kernel virtual
|
||||
address space.
|
||||
|
||||
reservelow= [X86]
|
||||
Format: nn[K]
|
||||
Set the amount of memory to reserve for BIOS at
|
||||
the bottom of the address space.
|
||||
|
||||
reset_devices [KNL] Force drivers to reset the underlying device
|
||||
during initialization.
|
||||
|
||||
@ -5283,6 +5352,14 @@
|
||||
exception. Default behavior is by #AC if
|
||||
both features are enabled in hardware.
|
||||
|
||||
ratelimit:N -
|
||||
Set system wide rate limit to N bus locks
|
||||
per second for bus lock detection.
|
||||
0 < N <= 1000.
|
||||
|
||||
N/A for split lock detection.
|
||||
|
||||
|
||||
If an #AC exception is hit in the kernel or in
|
||||
firmware (i.e. not while executing in user mode)
|
||||
the kernel will oops in either "warn" or "fatal"
|
||||
@ -5605,12 +5682,25 @@
|
||||
Note, echoing 1 into this file without the
|
||||
tracepoint_printk kernel cmdline option has no effect.
|
||||
|
||||
The tp_printk_stop_on_boot (see below) can also be used
|
||||
to stop the printing of events to console at
|
||||
late_initcall_sync.
|
||||
|
||||
** CAUTION **
|
||||
|
||||
Having tracepoints sent to printk() and activating high
|
||||
frequency tracepoints such as irq or sched, can cause
|
||||
the system to live lock.
|
||||
|
||||
tp_printk_stop_on_boot[FTRACE]
|
||||
When tp_printk (above) is set, it can cause a lot of noise
|
||||
on the console. It may be useful to only include the
|
||||
printing of events during boot up, as user space may
|
||||
make the system inoperable.
|
||||
|
||||
This command line option will stop the printing of events
|
||||
to console at the late_initcall_sync() time frame.
|
||||
|
||||
traceoff_on_warning
|
||||
[FTRACE] enable this option to disable tracing when a
|
||||
warning is hit. This turns off "tracing_on". Tracing can
|
||||
|
@ -101,17 +101,6 @@ this results in concentration of disk activity in a small time interval which
|
||||
occurs only once every 10 minutes, or whenever the disk is forced to spin up by
|
||||
a cache miss. The disk can then be spun down in the periods of inactivity.
|
||||
|
||||
If you want to find out which process caused the disk to spin up, you can
|
||||
gather information by setting the flag /proc/sys/vm/block_dump. When this flag
|
||||
is set, Linux reports all disk read and write operations that take place, and
|
||||
all block dirtyings done to files. This makes it possible to debug why a disk
|
||||
needs to spin up, and to increase battery life even more. The output of
|
||||
block_dump is written to the kernel output, and it can be retrieved using
|
||||
"dmesg". When you use block_dump and your kernel logging level also includes
|
||||
kernel debugging messages, you probably want to turn off klogd, otherwise
|
||||
the output of block_dump will be logged, causing disk activity that is not
|
||||
normally there.
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
@ -39,7 +39,7 @@ in principle, they should work in any architecture where these
|
||||
subsystems are present.
|
||||
|
||||
A periodic hrtimer runs to generate interrupts and kick the watchdog
|
||||
task. An NMI perf event is generated every "watchdog_thresh"
|
||||
job. An NMI perf event is generated every "watchdog_thresh"
|
||||
(compile-time initialized to 10 and configurable through sysctl of the
|
||||
same name) seconds to check for hardlockups. If any CPU in the system
|
||||
does not receive any hrtimer interrupt during that time the
|
||||
@ -47,7 +47,7 @@ does not receive any hrtimer interrupt during that time the
|
||||
generate a kernel warning or call panic, depending on the
|
||||
configuration.
|
||||
|
||||
The watchdog task is a high priority kernel thread that updates a
|
||||
The watchdog job runs in a stop scheduling thread that updates a
|
||||
timestamp every time it is scheduled. If that timestamp is not updated
|
||||
for 2*watchdog_thresh seconds (the softlockup threshold) the
|
||||
'softlockup detector' (coded inside the hrtimer callback function)
|
||||
|
@ -15,11 +15,12 @@ Authors:
|
||||
General information
|
||||
-------------------
|
||||
|
||||
This class of cards has a bt878a as the PCI interface, and require the bttv driver
|
||||
for accessing the i2c bus and the gpio pins of the bt8xx chipset.
|
||||
This class of cards has a bt878a as the PCI interface, and require the bttv
|
||||
driver for accessing the i2c bus and the gpio pins of the bt8xx chipset.
|
||||
|
||||
Please see :doc:`bttv-cardlist` for a complete list of Cards based on the
|
||||
Conexant Bt8xx PCI bridge supported by the Linux Kernel.
|
||||
Please see Documentation/admin-guide/media/bttv-cardlist.rst for a complete
|
||||
list of Cards based on the Conexant Bt8xx PCI bridge supported by the
|
||||
Linux Kernel.
|
||||
|
||||
In order to be able to compile the kernel, some config options should be
|
||||
enabled::
|
||||
@ -80,7 +81,7 @@ for dvb-bt8xx drivers by passing modprobe parameters may be necessary.
|
||||
Running TwinHan and Clones
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
As shown at :doc:`bttv-cardlist`, TwinHan and
|
||||
As shown at Documentation/admin-guide/media/bttv-cardlist.rst, TwinHan and
|
||||
clones use ``card=113`` modprobe parameter. So, in order to properly
|
||||
detect it for devices without EEPROM, you should use::
|
||||
|
||||
@ -105,12 +106,12 @@ The autodetected values are determined by the cards' "response string".
|
||||
In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI].
|
||||
|
||||
For bug reports please send in a complete log with verbose=4 activated.
|
||||
Please also see :doc:`ci`.
|
||||
Please also see Documentation/admin-guide/media/ci.rst.
|
||||
|
||||
Running multiple cards
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
See :doc:`bttv-cardlist` for a complete list of
|
||||
See Documentation/admin-guide/media/bttv-cardlist.rst for a complete list of
|
||||
Card ID. Some examples:
|
||||
|
||||
=========================== ===
|
||||
|
@ -24,7 +24,8 @@ If your board has digital TV, you'll also need::
|
||||
|
||||
./scripts/config -m DVB_BT8XX
|
||||
|
||||
In this case, please see :doc:`bt8xx` for additional notes.
|
||||
In this case, please see Documentation/admin-guide/media/bt8xx.rst
|
||||
for additional notes.
|
||||
|
||||
Make bttv work with your card
|
||||
-----------------------------
|
||||
@ -39,7 +40,7 @@ If it doesn't bttv likely could not autodetect your card and needs some
|
||||
insmod options. The most important insmod option for bttv is "card=n"
|
||||
to select the correct card type. If you get video but no sound you've
|
||||
very likely specified the wrong (or no) card type. A list of supported
|
||||
cards is in :doc:`bttv-cardlist`.
|
||||
cards is in Documentation/admin-guide/media/bttv-cardlist.rst.
|
||||
|
||||
If bttv takes very long to load (happens sometimes with the cheap
|
||||
cards which have no tuner), try adding this to your modules configuration
|
||||
@ -57,8 +58,8 @@ directory should be enough for it to be autoload during the driver's
|
||||
probing mode (e. g. when the Kernel boots or when the driver is
|
||||
manually loaded via ``modprobe`` command).
|
||||
|
||||
If your card isn't listed in :doc:`bttv-cardlist` or if you have
|
||||
trouble making audio work, please read :ref:`still_doesnt_work`.
|
||||
If your card isn't listed in Documentation/admin-guide/media/bttv-cardlist.rst
|
||||
or if you have trouble making audio work, please read :ref:`still_doesnt_work`.
|
||||
|
||||
|
||||
Autodetecting cards
|
||||
@ -77,8 +78,8 @@ the Subsystem ID in the second line, looks like this:
|
||||
only bt878-based cards can have a subsystem ID (which does not mean
|
||||
that every card really has one). bt848 cards can't have a Subsystem
|
||||
ID and therefore can't be autodetected. There is a list with the ID's
|
||||
at :doc:`bttv-cardlist` (in case you are interested or want to mail
|
||||
patches with updates).
|
||||
at Documentation/admin-guide/media/bttv-cardlist.rst
|
||||
(in case you are interested or want to mail patches with updates).
|
||||
|
||||
|
||||
.. _still_doesnt_work:
|
||||
@ -259,15 +260,15 @@ bug. It is very helpful if you can tell where exactly it broke
|
||||
With a hard freeze you probably doesn't find anything in the logfiles.
|
||||
The only way to capture any kernel messages is to hook up a serial
|
||||
console and let some terminal application log the messages. /me uses
|
||||
screen. See :doc:`/admin-guide/serial-console` for details on setting
|
||||
up a serial console.
|
||||
screen. See Documentation/admin-guide/serial-console.rst for details on
|
||||
setting up a serial console.
|
||||
|
||||
Read :doc:`/admin-guide/bug-hunting` to learn how to get any useful
|
||||
Read Documentation/admin-guide/bug-hunting.rst to learn how to get any useful
|
||||
information out of a register+stack dump printed by the kernel on
|
||||
protection faults (so-called "kernel oops").
|
||||
|
||||
If you run into some kind of deadlock, you can try to dump a call trace
|
||||
for each process using sysrq-t (see :doc:`/admin-guide/sysrq`).
|
||||
for each process using sysrq-t (see Documentation/admin-guide/sysrq.rst).
|
||||
This way it is possible to figure where *exactly* some process in "D"
|
||||
state is stuck.
|
||||
|
||||
|
@ -11,12 +11,14 @@ its supported drivers.
|
||||
|
||||
Please see:
|
||||
|
||||
- :doc:`/userspace-api/media/index`
|
||||
for the userspace APIs used on media devices.
|
||||
Documentation/userspace-api/media/index.rst
|
||||
|
||||
- :doc:`/driver-api/media/index`
|
||||
for driver development information and Kernel APIs used by
|
||||
media devices;
|
||||
- for the userspace APIs used on media devices.
|
||||
|
||||
Documentation/driver-api/media/index.rst
|
||||
|
||||
- for driver development information and Kernel APIs used by
|
||||
media devices;
|
||||
|
||||
The media subsystem
|
||||
===================
|
||||
|
@ -234,22 +234,23 @@ The IPU3 ImgU pipelines can be configured using the Media Controller, defined at
|
||||
Running mode and firmware binary selection
|
||||
------------------------------------------
|
||||
|
||||
ImgU works based on firmware, currently the ImgU firmware support run 2 pipes in
|
||||
time-sharing with single input frame data. Each pipe can run at certain mode -
|
||||
"VIDEO" or "STILL", "VIDEO" mode is commonly used for video frames capture, and
|
||||
"STILL" is used for still frame capture. However, you can also select "VIDEO" to
|
||||
capture still frames if you want to capture images with less system load and
|
||||
power. For "STILL" mode, ImgU will try to use smaller BDS factor and output
|
||||
larger bayer frame for further YUV processing than "VIDEO" mode to get high
|
||||
quality images. Besides, "STILL" mode need XNR3 to do noise reduction, hence
|
||||
"STILL" mode will need more power and memory bandwidth than "VIDEO" mode. TNR
|
||||
will be enabled in "VIDEO" mode and bypassed by "STILL" mode. ImgU is running at
|
||||
“VIDEO” mode by default, the user can use v4l2 control V4L2_CID_INTEL_IPU3_MODE
|
||||
(currently defined in drivers/staging/media/ipu3/include/intel-ipu3.h) to query
|
||||
and set the running mode. For user, there is no difference for buffer queueing
|
||||
between the "VIDEO" and "STILL" mode, mandatory input and main output node
|
||||
should be enabled and buffers need be queued, the statistics and the view-finder
|
||||
queues are optional.
|
||||
ImgU works based on firmware, currently the ImgU firmware support run 2 pipes
|
||||
in time-sharing with single input frame data. Each pipe can run at certain mode
|
||||
- "VIDEO" or "STILL", "VIDEO" mode is commonly used for video frames capture,
|
||||
and "STILL" is used for still frame capture. However, you can also select
|
||||
"VIDEO" to capture still frames if you want to capture images with less system
|
||||
load and power. For "STILL" mode, ImgU will try to use smaller BDS factor and
|
||||
output larger bayer frame for further YUV processing than "VIDEO" mode to get
|
||||
high quality images. Besides, "STILL" mode need XNR3 to do noise reduction,
|
||||
hence "STILL" mode will need more power and memory bandwidth than "VIDEO" mode.
|
||||
TNR will be enabled in "VIDEO" mode and bypassed by "STILL" mode. ImgU is
|
||||
running at "VIDEO" mode by default, the user can use v4l2 control
|
||||
V4L2_CID_INTEL_IPU3_MODE (currently defined in
|
||||
drivers/staging/media/ipu3/include/uapi/intel-ipu3.h) to query and set the
|
||||
running mode. For user, there is no difference for buffer queueing between the
|
||||
"VIDEO" and "STILL" mode, mandatory input and main output node should be
|
||||
enabled and buffers need be queued, the statistics and the view-finder queues
|
||||
are optional.
|
||||
|
||||
The firmware binary will be selected according to current running mode, such log
|
||||
"using binary if_to_osys_striped " or "using binary if_to_osys_primary_striped"
|
||||
@ -586,7 +587,7 @@ preserved.
|
||||
References
|
||||
==========
|
||||
|
||||
.. [#f5] drivers/staging/media/ipu3/include/intel-ipu3.h
|
||||
.. [#f5] drivers/staging/media/ipu3/include/uapi/intel-ipu3.h
|
||||
|
||||
.. [#f1] https://github.com/intel/nvt
|
||||
|
||||
|
@ -50,7 +50,8 @@ To build and install, you should run::
|
||||
Once the new Kernel is booted, saa7134 driver should be loaded automatically.
|
||||
|
||||
Depending on the card you might have to pass ``card=<nr>`` as insmod option.
|
||||
If so, please check :doc:`saa7134-cardlist` for valid choices.
|
||||
If so, please check Documentation/admin-guide/media/saa7134-cardlist.rst
|
||||
for valid choices.
|
||||
|
||||
Once you have your card type number, you can pass a modules configuration
|
||||
via a file (usually, it is either ``/etc/modules.conf`` or some file at
|
||||
|
@ -60,6 +60,10 @@ HugePages_Surp
|
||||
the pool above the value in ``/proc/sys/vm/nr_hugepages``. The
|
||||
maximum number of surplus huge pages is controlled by
|
||||
``/proc/sys/vm/nr_overcommit_hugepages``.
|
||||
Note: When the feature of freeing unused vmemmap pages associated
|
||||
with each hugetlb page is enabled, the number of surplus huge pages
|
||||
may be temporarily larger than the maximum number of surplus huge
|
||||
pages when the system is under memory pressure.
|
||||
Hugepagesize
|
||||
is the default hugepage size (in Kb).
|
||||
Hugetlb
|
||||
@ -80,6 +84,10 @@ returned to the huge page pool when freed by a task. A user with root
|
||||
privileges can dynamically allocate more or free some persistent huge pages
|
||||
by increasing or decreasing the value of ``nr_hugepages``.
|
||||
|
||||
Note: When the feature of freeing unused vmemmap pages associated with each
|
||||
hugetlb page is enabled, we can fail to free the huge pages triggered by
|
||||
the user when ths system is under memory pressure. Please try again later.
|
||||
|
||||
Pages that are used as huge pages are reserved inside the kernel and cannot
|
||||
be used for other purposes. Huge pages cannot be swapped out under
|
||||
memory pressure.
|
||||
@ -145,6 +153,9 @@ default_hugepagesz
|
||||
|
||||
will all result in 256 2M huge pages being allocated. Valid default
|
||||
huge page size is architecture dependent.
|
||||
hugetlb_free_vmemmap
|
||||
When CONFIG_HUGETLB_PAGE_FREE_VMEMMAP is set, this enables freeing
|
||||
unused vmemmap pages associated with each HugeTLB page.
|
||||
|
||||
When multiple huge page sizes are supported, ``/proc/sys/vm/nr_hugepages``
|
||||
indicates the current number of pre-allocated huge pages of the default size.
|
||||
|
@ -357,6 +357,19 @@ creates ZONE_MOVABLE as following.
|
||||
Unfortunately, there is no information to show which memory block belongs
|
||||
to ZONE_MOVABLE. This is TBD.
|
||||
|
||||
Memory offlining can fail when dissolving a free huge page on ZONE_MOVABLE
|
||||
and the feature of freeing unused vmemmap pages associated with each hugetlb
|
||||
page is enabled.
|
||||
|
||||
This can happen when we have plenty of ZONE_MOVABLE memory, but not enough
|
||||
kernel memory to allocate vmemmmap pages. We may even be able to migrate
|
||||
huge page contents, but will not be able to dissolve the source huge page.
|
||||
This will prevent an offline operation and is unfortunate as memory offlining
|
||||
is expected to succeed on movable zones. Users that depend on memory hotplug
|
||||
to succeed for movable zones should carefully consider whether the memory
|
||||
savings gained from this feature are worth the risk of possibly not being
|
||||
able to offline memory in certain situations.
|
||||
|
||||
.. note::
|
||||
Techniques that rely on long-term pinnings of memory (especially, RDMA and
|
||||
vfio) are fundamentally problematic with ZONE_MOVABLE and, therefore, memory
|
||||
|
@ -21,6 +21,8 @@ There are four components to pagemap:
|
||||
* Bit 55 pte is soft-dirty (see
|
||||
:ref:`Documentation/admin-guide/mm/soft-dirty.rst <soft_dirty>`)
|
||||
* Bit 56 page exclusively mapped (since 4.2)
|
||||
* Bit 57 pte is uffd-wp write-protected (since 5.13) (see
|
||||
:ref:`Documentation/admin-guide/mm/userfaultfd.rst <userfaultfd>`)
|
||||
* Bits 57-60 zero
|
||||
* Bit 61 page is file-page or shared-anon (since 3.5)
|
||||
* Bit 62 page swapped
|
||||
|
@ -77,7 +77,8 @@ events, except page fault notifications, may be generated:
|
||||
|
||||
- ``UFFD_FEATURE_MINOR_HUGETLBFS`` indicates that the kernel supports
|
||||
``UFFDIO_REGISTER_MODE_MINOR`` registration for hugetlbfs virtual memory
|
||||
areas.
|
||||
areas. ``UFFD_FEATURE_MINOR_SHMEM`` is the analogous feature indicating
|
||||
support for shmem virtual memory areas.
|
||||
|
||||
The userland application should set the feature flags it intends to use
|
||||
when invoking the ``UFFDIO_API`` ioctl, to request that those features be
|
||||
|
@ -347,81 +347,8 @@ for tickless systems. It follows the same basic strategy as the ``menu`` `one
|
||||
<menu-gov_>`_: it always tries to find the deepest idle state suitable for the
|
||||
given conditions. However, it applies a different approach to that problem.
|
||||
|
||||
First, it does not use sleep length correction factors, but instead it attempts
|
||||
to correlate the observed idle duration values with the available idle states
|
||||
and use that information to pick up the idle state that is most likely to
|
||||
"match" the upcoming CPU idle interval. Second, it does not take the tasks
|
||||
that were running on the given CPU in the past and are waiting on some I/O
|
||||
operations to complete now at all (there is no guarantee that they will run on
|
||||
the same CPU when they become runnable again) and the pattern detection code in
|
||||
it avoids taking timer wakeups into account. It also only uses idle duration
|
||||
values less than the current time till the closest timer (with the scheduler
|
||||
tick excluded) for that purpose.
|
||||
|
||||
Like in the ``menu`` governor `case <menu-gov_>`_, the first step is to obtain
|
||||
the *sleep length*, which is the time until the closest timer event with the
|
||||
assumption that the scheduler tick will be stopped (that also is the upper bound
|
||||
on the time until the next CPU wakeup). That value is then used to preselect an
|
||||
idle state on the basis of three metrics maintained for each idle state provided
|
||||
by the ``CPUIdle`` driver: ``hits``, ``misses`` and ``early_hits``.
|
||||
|
||||
The ``hits`` and ``misses`` metrics measure the likelihood that a given idle
|
||||
state will "match" the observed (post-wakeup) idle duration if it "matches" the
|
||||
sleep length. They both are subject to decay (after a CPU wakeup) every time
|
||||
the target residency of the idle state corresponding to them is less than or
|
||||
equal to the sleep length and the target residency of the next idle state is
|
||||
greater than the sleep length (that is, when the idle state corresponding to
|
||||
them "matches" the sleep length). The ``hits`` metric is increased if the
|
||||
former condition is satisfied and the target residency of the given idle state
|
||||
is less than or equal to the observed idle duration and the target residency of
|
||||
the next idle state is greater than the observed idle duration at the same time
|
||||
(that is, it is increased when the given idle state "matches" both the sleep
|
||||
length and the observed idle duration). In turn, the ``misses`` metric is
|
||||
increased when the given idle state "matches" the sleep length only and the
|
||||
observed idle duration is too short for its target residency.
|
||||
|
||||
The ``early_hits`` metric measures the likelihood that a given idle state will
|
||||
"match" the observed (post-wakeup) idle duration if it does not "match" the
|
||||
sleep length. It is subject to decay on every CPU wakeup and it is increased
|
||||
when the idle state corresponding to it "matches" the observed (post-wakeup)
|
||||
idle duration and the target residency of the next idle state is less than or
|
||||
equal to the sleep length (i.e. the idle state "matching" the sleep length is
|
||||
deeper than the given one).
|
||||
|
||||
The governor walks the list of idle states provided by the ``CPUIdle`` driver
|
||||
and finds the last (deepest) one with the target residency less than or equal
|
||||
to the sleep length. Then, the ``hits`` and ``misses`` metrics of that idle
|
||||
state are compared with each other and it is preselected if the ``hits`` one is
|
||||
greater (which means that that idle state is likely to "match" the observed idle
|
||||
duration after CPU wakeup). If the ``misses`` one is greater, the governor
|
||||
preselects the shallower idle state with the maximum ``early_hits`` metric
|
||||
(or if there are multiple shallower idle states with equal ``early_hits``
|
||||
metric which also is the maximum, the shallowest of them will be preselected).
|
||||
[If there is a wakeup latency constraint coming from the `PM QoS framework
|
||||
<cpu-pm-qos_>`_ which is hit before reaching the deepest idle state with the
|
||||
target residency within the sleep length, the deepest idle state with the exit
|
||||
latency within the constraint is preselected without consulting the ``hits``,
|
||||
``misses`` and ``early_hits`` metrics.]
|
||||
|
||||
Next, the governor takes several idle duration values observed most recently
|
||||
into consideration and if at least a half of them are greater than or equal to
|
||||
the target residency of the preselected idle state, that idle state becomes the
|
||||
final candidate to ask for. Otherwise, the average of the most recent idle
|
||||
duration values below the target residency of the preselected idle state is
|
||||
computed and the governor walks the idle states shallower than the preselected
|
||||
one and finds the deepest of them with the target residency within that average.
|
||||
That idle state is then taken as the final candidate to ask for.
|
||||
|
||||
Still, at this point the governor may need to refine the idle state selection if
|
||||
it has not decided to `stop the scheduler tick <idle-cpus-and-tick_>`_. That
|
||||
generally happens if the target residency of the idle state selected so far is
|
||||
less than the tick period and the tick has not been stopped already (in a
|
||||
previous iteration of the idle loop). Then, like in the ``menu`` governor
|
||||
`case <menu-gov_>`_, the sleep length used in the previous computations may not
|
||||
reflect the real time until the closest timer event and if it really is greater
|
||||
than that time, a shallower state with a suitable target residency may need to
|
||||
be selected.
|
||||
|
||||
.. kernel-doc:: drivers/cpuidle/governors/teo.c
|
||||
:doc: teo-description
|
||||
|
||||
.. _idle-states-representation:
|
||||
|
||||
|
@ -20,8 +20,8 @@ Nehalem and later generations of Intel processors, but the level of support for
|
||||
a particular processor model in it depends on whether or not it recognizes that
|
||||
processor model and may also depend on information coming from the platform
|
||||
firmware. [To understand ``intel_idle`` it is necessary to know how ``CPUIdle``
|
||||
works in general, so this is the time to get familiar with :doc:`cpuidle` if you
|
||||
have not done that yet.]
|
||||
works in general, so this is the time to get familiar with
|
||||
Documentation/admin-guide/pm/cpuidle.rst if you have not done that yet.]
|
||||
|
||||
``intel_idle`` uses the ``MWAIT`` instruction to inform the processor that the
|
||||
logical CPU executing it is idle and so it may be possible to put some of the
|
||||
@ -53,7 +53,8 @@ processor) corresponding to them depends on the processor model and it may also
|
||||
depend on the configuration of the platform.
|
||||
|
||||
In order to create a list of available idle states required by the ``CPUIdle``
|
||||
subsystem (see :ref:`idle-states-representation` in :doc:`cpuidle`),
|
||||
subsystem (see :ref:`idle-states-representation` in
|
||||
Documentation/admin-guide/pm/cpuidle.rst),
|
||||
``intel_idle`` can use two sources of information: static tables of idle states
|
||||
for different processor models included in the driver itself and the ACPI tables
|
||||
of the system. The former are always used if the processor model at hand is
|
||||
@ -98,7 +99,8 @@ states may not be enabled by default if there are no matching entries in the
|
||||
preliminary list of idle states coming from the ACPI tables. In that case user
|
||||
space still can enable them later (on a per-CPU basis) with the help of
|
||||
the ``disable`` idle state attribute in ``sysfs`` (see
|
||||
:ref:`idle-states-representation` in :doc:`cpuidle`). This basically means that
|
||||
:ref:`idle-states-representation` in
|
||||
Documentation/admin-guide/pm/cpuidle.rst). This basically means that
|
||||
the idle states "known" to the driver may not be enabled by default if they have
|
||||
not been exposed by the platform firmware (through the ACPI tables).
|
||||
|
||||
@ -186,7 +188,8 @@ be desirable. In practice, it is only really necessary to do that if the idle
|
||||
states in question cannot be enabled during system startup, because in the
|
||||
working state of the system the CPU power management quality of service (PM
|
||||
QoS) feature can be used to prevent ``CPUIdle`` from touching those idle states
|
||||
even if they have been enumerated (see :ref:`cpu-pm-qos` in :doc:`cpuidle`).
|
||||
even if they have been enumerated (see :ref:`cpu-pm-qos` in
|
||||
Documentation/admin-guide/pm/cpuidle.rst).
|
||||
Setting ``max_cstate`` to 0 causes the ``intel_idle`` initialization to fail.
|
||||
|
||||
The ``no_acpi`` and ``use_acpi`` module parameters (recognized by ``intel_idle``
|
||||
@ -202,7 +205,8 @@ Namely, the positions of the bits that are set in the ``states_off`` value are
|
||||
the indices of idle states to be disabled by default (as reflected by the names
|
||||
of the corresponding idle state directories in ``sysfs``, :file:`state0`,
|
||||
:file:`state1` ... :file:`state<i>` ..., where ``<i>`` is the index of the given
|
||||
idle state; see :ref:`idle-states-representation` in :doc:`cpuidle`).
|
||||
idle state; see :ref:`idle-states-representation` in
|
||||
Documentation/admin-guide/pm/cpuidle.rst).
|
||||
|
||||
For example, if ``states_off`` is equal to 3, the driver will disable idle
|
||||
states 0 and 1 by default, and if it is equal to 8, idle state 3 will be
|
||||
|
@ -18,8 +18,8 @@ General Information
|
||||
(``CPUFreq``). It is a scaling driver for the Sandy Bridge and later
|
||||
generations of Intel processors. Note, however, that some of those processors
|
||||
may not be supported. [To understand ``intel_pstate`` it is necessary to know
|
||||
how ``CPUFreq`` works in general, so this is the time to read :doc:`cpufreq` if
|
||||
you have not done that yet.]
|
||||
how ``CPUFreq`` works in general, so this is the time to read
|
||||
Documentation/admin-guide/pm/cpufreq.rst if you have not done that yet.]
|
||||
|
||||
For the processors supported by ``intel_pstate``, the P-state concept is broader
|
||||
than just an operating frequency or an operating performance point (see the
|
||||
@ -365,6 +365,9 @@ argument is passed to the kernel in the command line.
|
||||
inclusive) including both turbo and non-turbo P-states (see
|
||||
`Turbo P-states Support`_).
|
||||
|
||||
This attribute is present only if the value exposed by it is the same
|
||||
for all of the CPUs in the system.
|
||||
|
||||
The value of this attribute is not affected by the ``no_turbo``
|
||||
setting described `below <no_turbo_attr_>`_.
|
||||
|
||||
@ -374,6 +377,9 @@ argument is passed to the kernel in the command line.
|
||||
Ratio of the `turbo range <turbo_>`_ size to the size of the entire
|
||||
range of supported P-states, in percent.
|
||||
|
||||
This attribute is present only if the value exposed by it is the same
|
||||
for all of the CPUs in the system.
|
||||
|
||||
This attribute is read-only.
|
||||
|
||||
.. _no_turbo_attr:
|
||||
@ -445,8 +451,9 @@ Interpretation of Policy Attributes
|
||||
-----------------------------------
|
||||
|
||||
The interpretation of some ``CPUFreq`` policy attributes described in
|
||||
:doc:`cpufreq` is special with ``intel_pstate`` as the current scaling driver
|
||||
and it generally depends on the driver's `operation mode <Operation Modes_>`_.
|
||||
Documentation/admin-guide/pm/cpufreq.rst is special with ``intel_pstate``
|
||||
as the current scaling driver and it generally depends on the driver's
|
||||
`operation mode <Operation Modes_>`_.
|
||||
|
||||
First of all, the values of the ``cpuinfo_max_freq``, ``cpuinfo_min_freq`` and
|
||||
``scaling_cur_freq`` attributes are produced by applying a processor-specific
|
||||
|
@ -45,15 +45,18 @@ blkdev
|
||||
The block device to use. Most of the time, it is a partition of block device.
|
||||
It's required for pstore/blk. It is also used for MTD device.
|
||||
|
||||
It accepts the following variants for block device:
|
||||
When pstore/blk is built as a module, "blkdev" accepts the following variants:
|
||||
|
||||
1. <hex_major><hex_minor> device number in hexadecimal represents itself; no
|
||||
leading 0x, for example b302.
|
||||
#. /dev/<disk_name> represents the device number of disk
|
||||
1. /dev/<disk_name> represents the device number of disk
|
||||
#. /dev/<disk_name><decimal> represents the device number of partition - device
|
||||
number of disk plus the partition number
|
||||
#. /dev/<disk_name>p<decimal> - same as the above; this form is used when disk
|
||||
name of partitioned disk ends with a digit.
|
||||
|
||||
When pstore/blk is built into the kernel, "blkdev" accepts the following variants:
|
||||
|
||||
#. <hex_major><hex_minor> device number in hexadecimal representation,
|
||||
with no leading 0x, for example b302.
|
||||
#. PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF represents the unique id of
|
||||
a partition if the partition table provides it. The UUID may be either an
|
||||
EFI/GPT UUID, or refer to an MSDOS partition using the format SSSSSSSS-PP,
|
||||
@ -227,8 +230,5 @@ For developer reference, here are all the important structures and APIs:
|
||||
.. kernel-doc:: include/linux/pstore_zone.h
|
||||
:internal:
|
||||
|
||||
.. kernel-doc:: fs/pstore/blk.c
|
||||
:internal:
|
||||
|
||||
.. kernel-doc:: include/linux/pstore_blk.h
|
||||
:internal:
|
||||
|
@ -1248,7 +1248,7 @@ paragraph makes the severeness obvious.
|
||||
|
||||
In case you performed a successful bisection, use the title of the change that
|
||||
introduced the regression as the second part of your subject. Make the report
|
||||
also mention the commit id of the culprit. In case of an unsuccessful bisection,
|
||||
also mention the commit id of the culprit. In case of an unsuccessful bisection,
|
||||
make your report mention the latest tested version that's working fine (say 5.7)
|
||||
and the oldest where the issue occurs (say 5.8-rc1).
|
||||
|
||||
|
@ -11,7 +11,7 @@ Documentation for /proc/sys/abi/
|
||||
|
||||
Copyright (c) 2020, Stephen Kitt
|
||||
|
||||
For general info, see :doc:`index`.
|
||||
For general info, see Documentation/admin-guide/sysctl/index.rst.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
@ -9,7 +9,8 @@ Copyright (c) 1998, 1999, Rik van Riel <riel@nl.linux.org>
|
||||
|
||||
Copyright (c) 2009, Shen Feng<shen@cn.fujitsu.com>
|
||||
|
||||
For general info and legal blurb, please look in :doc:`index`.
|
||||
For general info and legal blurb, please look in
|
||||
Documentation/admin-guide/sysctl/index.rst.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
@ -54,7 +55,7 @@ free space valid for 30 seconds.
|
||||
acpi_video_flags
|
||||
================
|
||||
|
||||
See :doc:`/power/video`. This allows the video resume mode to be set,
|
||||
See Documentation/power/video.rst. This allows the video resume mode to be set,
|
||||
in a similar fashion to the ``acpi_sleep`` kernel parameter, by
|
||||
combining the following values:
|
||||
|
||||
@ -89,7 +90,7 @@ is 0x15 and the full version number is 0x234, this file will contain
|
||||
the value 340 = 0x154.
|
||||
|
||||
See the ``type_of_loader`` and ``ext_loader_type`` fields in
|
||||
:doc:`/x86/boot` for additional information.
|
||||
Documentation/x86/boot.rst for additional information.
|
||||
|
||||
|
||||
bootloader_version (x86 only)
|
||||
@ -99,7 +100,7 @@ The complete bootloader version number. In the example above, this
|
||||
file will contain the value 564 = 0x234.
|
||||
|
||||
See the ``type_of_loader`` and ``ext_loader_ver`` fields in
|
||||
:doc:`/x86/boot` for additional information.
|
||||
Documentation/x86/boot.rst for additional information.
|
||||
|
||||
|
||||
bpf_stats_enabled
|
||||
@ -269,7 +270,7 @@ see the ``hostname(1)`` man page.
|
||||
firmware_config
|
||||
===============
|
||||
|
||||
See :doc:`/driver-api/firmware/fallback-mechanisms`.
|
||||
See Documentation/driver-api/firmware/fallback-mechanisms.rst.
|
||||
|
||||
The entries in this directory allow the firmware loader helper
|
||||
fallback to be controlled:
|
||||
@ -297,7 +298,7 @@ crashes and outputting them to a serial console.
|
||||
ftrace_enabled, stack_tracer_enabled
|
||||
====================================
|
||||
|
||||
See :doc:`/trace/ftrace`.
|
||||
See Documentation/trace/ftrace.rst.
|
||||
|
||||
|
||||
hardlockup_all_cpu_backtrace
|
||||
@ -325,7 +326,7 @@ when a hard lockup is detected.
|
||||
1 Panic on hard lockup.
|
||||
= ===========================
|
||||
|
||||
See :doc:`/admin-guide/lockup-watchdogs` for more information.
|
||||
See Documentation/admin-guide/lockup-watchdogs.rst for more information.
|
||||
This can also be set using the nmi_watchdog kernel parameter.
|
||||
|
||||
|
||||
@ -333,7 +334,12 @@ hotplug
|
||||
=======
|
||||
|
||||
Path for the hotplug policy agent.
|
||||
Default value is "``/sbin/hotplug``".
|
||||
Default value is ``CONFIG_UEVENT_HELPER_PATH``, which in turn defaults
|
||||
to the empty string.
|
||||
|
||||
This file only exists when ``CONFIG_UEVENT_HELPER`` is enabled. Most
|
||||
modern systems rely exclusively on the netlink-based uevent source and
|
||||
don't need this.
|
||||
|
||||
|
||||
hung_task_all_cpu_backtrace
|
||||
@ -582,7 +588,8 @@ in a KVM virtual machine. This default can be overridden by adding::
|
||||
|
||||
nmi_watchdog=1
|
||||
|
||||
to the guest kernel command line (see :doc:`/admin-guide/kernel-parameters`).
|
||||
to the guest kernel command line (see
|
||||
Documentation/admin-guide/kernel-parameters.rst).
|
||||
|
||||
|
||||
numa_balancing
|
||||
@ -1067,7 +1074,7 @@ that support this feature.
|
||||
real-root-dev
|
||||
=============
|
||||
|
||||
See :doc:`/admin-guide/initrd`.
|
||||
See Documentation/admin-guide/initrd.rst.
|
||||
|
||||
|
||||
reboot-cmd (SPARC only)
|
||||
@ -1088,6 +1095,13 @@ Model available). If your platform happens to meet the
|
||||
requirements for EAS but you do not want to use it, change
|
||||
this value to 0.
|
||||
|
||||
task_delayacct
|
||||
===============
|
||||
|
||||
Enables/disables task delay accounting (see
|
||||
:doc:`accounting/delay-accounting.rst`). Enabling this feature incurs
|
||||
a small amount of overhead in the scheduler but is useful for debugging
|
||||
and performance tuning. It is required by some tools such as iotop.
|
||||
|
||||
sched_schedstats
|
||||
================
|
||||
@ -1154,7 +1168,7 @@ will take effect.
|
||||
seccomp
|
||||
=======
|
||||
|
||||
See :doc:`/userspace-api/seccomp_filter`.
|
||||
See Documentation/userspace-api/seccomp_filter.rst.
|
||||
|
||||
|
||||
sg-big-buff
|
||||
@ -1283,11 +1297,11 @@ This parameter can be used to control the soft lockup detector.
|
||||
= =================================
|
||||
|
||||
The soft lockup detector monitors CPUs for threads that are hogging the CPUs
|
||||
without rescheduling voluntarily, and thus prevent the 'watchdog/N' threads
|
||||
from running. The mechanism depends on the CPUs ability to respond to timer
|
||||
interrupts which are needed for the 'watchdog/N' threads to be woken up by
|
||||
the watchdog timer function, otherwise the NMI watchdog — if enabled — can
|
||||
detect a hard lockup condition.
|
||||
without rescheduling voluntarily, and thus prevent the 'migration/N' threads
|
||||
from running, causing the watchdog work fail to execute. The mechanism depends
|
||||
on the CPUs ability to respond to timer interrupts which are needed for the
|
||||
watchdog work to be queued by the watchdog timer function, otherwise the NMI
|
||||
watchdog — if enabled — can detect a hard lockup condition.
|
||||
|
||||
|
||||
stack_erasing
|
||||
@ -1325,7 +1339,7 @@ the boot PROM.
|
||||
sysrq
|
||||
=====
|
||||
|
||||
See :doc:`/admin-guide/sysrq`.
|
||||
See Documentation/admin-guide/sysrq.rst.
|
||||
|
||||
|
||||
tainted
|
||||
@ -1355,15 +1369,16 @@ ORed together. The letters are seen in "Tainted" line of Oops reports.
|
||||
131072 `(T)` The kernel was built with the struct randomization plugin
|
||||
====== ===== ==============================================================
|
||||
|
||||
See :doc:`/admin-guide/tainted-kernels` for more information.
|
||||
See Documentation/admin-guide/tainted-kernels.rst for more information.
|
||||
|
||||
Note:
|
||||
writes to this sysctl interface will fail with ``EINVAL`` if the kernel is
|
||||
booted with the command line option ``panic_on_taint=<bitmask>,nousertaint``
|
||||
and any of the ORed together values being written to ``tainted`` match with
|
||||
the bitmask declared on panic_on_taint.
|
||||
See :doc:`/admin-guide/kernel-parameters` for more details on that particular
|
||||
kernel command line option and its optional ``nousertaint`` switch.
|
||||
See Documentation/admin-guide/kernel-parameters.rst for more details on
|
||||
that particular kernel command line option and its optional
|
||||
``nousertaint`` switch.
|
||||
|
||||
threads-max
|
||||
===========
|
||||
@ -1387,7 +1402,7 @@ If a value outside of this range is written to ``threads-max`` an
|
||||
traceoff_on_warning
|
||||
===================
|
||||
|
||||
When set, disables tracing (see :doc:`/trace/ftrace`) when a
|
||||
When set, disables tracing (see Documentation/trace/ftrace.rst) when a
|
||||
``WARN()`` is hit.
|
||||
|
||||
|
||||
@ -1407,8 +1422,8 @@ will send them to printk() again.
|
||||
|
||||
This only works if the kernel was booted with ``tp_printk`` enabled.
|
||||
|
||||
See :doc:`/admin-guide/kernel-parameters` and
|
||||
:doc:`/trace/boottime-trace`.
|
||||
See Documentation/admin-guide/kernel-parameters.rst and
|
||||
Documentation/trace/boottime-trace.rst.
|
||||
|
||||
|
||||
.. _unaligned-dump-stack:
|
||||
@ -1458,11 +1473,22 @@ unprivileged_bpf_disabled
|
||||
=========================
|
||||
|
||||
Writing 1 to this entry will disable unprivileged calls to ``bpf()``;
|
||||
once disabled, calling ``bpf()`` without ``CAP_SYS_ADMIN`` will return
|
||||
``-EPERM``.
|
||||
once disabled, calling ``bpf()`` without ``CAP_SYS_ADMIN`` or ``CAP_BPF``
|
||||
will return ``-EPERM``. Once set to 1, this can't be cleared from the
|
||||
running kernel anymore.
|
||||
|
||||
Once set, this can't be cleared.
|
||||
Writing 2 to this entry will also disable unprivileged calls to ``bpf()``,
|
||||
however, an admin can still change this setting later on, if needed, by
|
||||
writing 0 or 1 to this entry.
|
||||
|
||||
If ``BPF_UNPRIV_DEFAULT_OFF`` is enabled in the kernel config, then this
|
||||
entry will default to 2 instead of 0.
|
||||
|
||||
= =============================================================
|
||||
0 Unprivileged calls to ``bpf()`` are enabled
|
||||
1 Unprivileged calls to ``bpf()`` are disabled without recovery
|
||||
2 Unprivileged calls to ``bpf()`` are disabled
|
||||
= =============================================================
|
||||
|
||||
watchdog
|
||||
========
|
||||
|
@ -25,7 +25,6 @@ files can be found in mm/swap.c.
|
||||
Currently, these files are in /proc/sys/vm:
|
||||
|
||||
- admin_reserve_kbytes
|
||||
- block_dump
|
||||
- compact_memory
|
||||
- compaction_proactiveness
|
||||
- compact_unevictable_allowed
|
||||
@ -64,7 +63,7 @@ Currently, these files are in /proc/sys/vm:
|
||||
- overcommit_ratio
|
||||
- page-cluster
|
||||
- panic_on_oom
|
||||
- percpu_pagelist_fraction
|
||||
- percpu_pagelist_high_fraction
|
||||
- stat_interval
|
||||
- stat_refresh
|
||||
- numa_stat
|
||||
@ -106,13 +105,6 @@ On x86_64 this is about 128MB.
|
||||
Changing this takes effect whenever an application requests memory.
|
||||
|
||||
|
||||
block_dump
|
||||
==========
|
||||
|
||||
block_dump enables block I/O debugging when set to a nonzero value. More
|
||||
information on block I/O debugging is in Documentation/admin-guide/laptops/laptop-mode.rst.
|
||||
|
||||
|
||||
compact_memory
|
||||
==============
|
||||
|
||||
@ -790,22 +782,24 @@ panic_on_oom=2+kdump gives you very strong tool to investigate
|
||||
why oom happens. You can get snapshot.
|
||||
|
||||
|
||||
percpu_pagelist_fraction
|
||||
========================
|
||||
percpu_pagelist_high_fraction
|
||||
=============================
|
||||
|
||||
This is the fraction of pages at most (high mark pcp->high) in each zone that
|
||||
are allocated for each per cpu page list. The min value for this is 8. It
|
||||
means that we don't allow more than 1/8th of pages in each zone to be
|
||||
allocated in any single per_cpu_pagelist. This entry only changes the value
|
||||
of hot per cpu pagelists. User can specify a number like 100 to allocate
|
||||
1/100th of each zone to each per cpu page list.
|
||||
This is the fraction of pages in each zone that are can be stored to
|
||||
per-cpu page lists. It is an upper boundary that is divided depending
|
||||
on the number of online CPUs. The min value for this is 8 which means
|
||||
that we do not allow more than 1/8th of pages in each zone to be stored
|
||||
on per-cpu page lists. This entry only changes the value of hot per-cpu
|
||||
page lists. A user can specify a number like 100 to allocate 1/100th of
|
||||
each zone between per-cpu lists.
|
||||
|
||||
The batch value of each per cpu pagelist is also updated as a result. It is
|
||||
set to pcp->high/4. The upper limit of batch is (PAGE_SHIFT * 8)
|
||||
The batch value of each per-cpu page list remains the same regardless of
|
||||
the value of the high fraction so allocation latencies are unaffected.
|
||||
|
||||
The initial value is zero. Kernel does not use this value at boot time to set
|
||||
the high water marks for each per cpu page list. If the user writes '0' to this
|
||||
sysctl, it will revert to this default behavior.
|
||||
The initial value is zero. Kernel uses this value to set the high pcp->high
|
||||
mark based on the low watermark for the zone and the number of local
|
||||
online CPUs. If the user writes '0' to this sysctl, it will revert to
|
||||
this default behavior.
|
||||
|
||||
|
||||
stat_interval
|
||||
@ -936,12 +930,12 @@ allocations, THP and hugetlbfs pages.
|
||||
|
||||
To make it sensible with respect to the watermark_scale_factor
|
||||
parameter, the unit is in fractions of 10,000. The default value of
|
||||
15,000 on !DISCONTIGMEM configurations means that up to 150% of the high
|
||||
watermark will be reclaimed in the event of a pageblock being mixed due
|
||||
to fragmentation. The level of reclaim is determined by the number of
|
||||
fragmentation events that occurred in the recent past. If this value is
|
||||
smaller than a pageblock then a pageblocks worth of pages will be reclaimed
|
||||
(e.g. 2MB on 64-bit x86). A boost factor of 0 will disable the feature.
|
||||
15,000 means that up to 150% of the high watermark will be reclaimed in the
|
||||
event of a pageblock being mixed due to fragmentation. The level of reclaim
|
||||
is determined by the number of fragmentation events that occurred in the
|
||||
recent past. If this value is smaller than a pageblock then a pageblocks
|
||||
worth of pages will be reclaimed (e.g. 2MB on 64-bit x86). A boost factor
|
||||
of 0 will disable the feature.
|
||||
|
||||
|
||||
watermark_scale_factor
|
||||
|
@ -256,6 +256,35 @@ Note names of the NVMem devices ``nvm_activeN`` and ``nvm_non_activeN``
|
||||
depend on the order they are registered in the NVMem subsystem. N in
|
||||
the name is the identifier added by the NVMem subsystem.
|
||||
|
||||
Upgrading on-board retimer NVM when there is no cable connected
|
||||
---------------------------------------------------------------
|
||||
If the platform supports, it may be possible to upgrade the retimer NVM
|
||||
firmware even when there is nothing connected to the USB4
|
||||
ports. When this is the case the ``usb4_portX`` devices have two special
|
||||
attributes: ``offline`` and ``rescan``. The way to upgrade the firmware
|
||||
is to first put the USB4 port into offline mode::
|
||||
|
||||
# echo 1 > /sys/bus/thunderbolt/devices/0-0/usb4_port1/offline
|
||||
|
||||
This step makes sure the port does not respond to any hotplug events,
|
||||
and also ensures the retimers are powered on. The next step is to scan
|
||||
for the retimers::
|
||||
|
||||
# echo 1 > /sys/bus/thunderbolt/devices/0-0/usb4_port1/rescan
|
||||
|
||||
This enumerates and adds the on-board retimers. Now retimer NVM can be
|
||||
upgraded in the same way than with cable connected (see previous
|
||||
section). However, the retimer is not disconnected as we are offline
|
||||
mode) so after writing ``1`` to ``nvm_authenticate`` one should wait for
|
||||
5 or more seconds before running rescan again::
|
||||
|
||||
# echo 1 > /sys/bus/thunderbolt/devices/0-0/usb4_port1/rescan
|
||||
|
||||
This point if everything went fine, the port can be put back to
|
||||
functional state again::
|
||||
|
||||
# echo 0 > /sys/bus/thunderbolt/devices/0-0/usb4_port1/offline
|
||||
|
||||
Upgrading NVM when host controller is in safe mode
|
||||
--------------------------------------------------
|
||||
If the existing NVM is not properly authenticated (or is missing) the
|
||||
|
@ -259,7 +259,7 @@ Storage family
|
||||
https://web.archive.org/web/20191129073953/http://www.marvell.com/storage/armada-sp/
|
||||
|
||||
Core:
|
||||
Sheeva ARMv7 comatible Quad-core PJ4C
|
||||
Sheeva ARMv7 compatible Quad-core PJ4C
|
||||
|
||||
(not supported in upstream Linux kernel)
|
||||
|
||||
|
@ -277,6 +277,12 @@ Before jumping into the kernel, the following conditions must be met:
|
||||
|
||||
- SCR_EL3.FGTEn (bit 27) must be initialised to 0b1.
|
||||
|
||||
For CPUs with support for HCRX_EL2 (FEAT_HCX) present:
|
||||
|
||||
- If EL3 is present and the kernel is entered at EL2:
|
||||
|
||||
- SCR_EL3.HXEn (bit 38) must be initialised to 0b1.
|
||||
|
||||
For CPUs with Advanced SIMD and floating point support:
|
||||
|
||||
- If EL3 is present:
|
||||
|
@ -45,14 +45,24 @@ how the user addresses are used by the kernel:
|
||||
|
||||
1. User addresses not accessed by the kernel but used for address space
|
||||
management (e.g. ``mprotect()``, ``madvise()``). The use of valid
|
||||
tagged pointers in this context is allowed with the exception of
|
||||
``brk()``, ``mmap()`` and the ``new_address`` argument to
|
||||
``mremap()`` as these have the potential to alias with existing
|
||||
user addresses.
|
||||
tagged pointers in this context is allowed with these exceptions:
|
||||
|
||||
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
||||
incorrectly accept valid tagged pointers for the ``brk()``,
|
||||
``mmap()`` and ``mremap()`` system calls.
|
||||
- ``brk()``, ``mmap()`` and the ``new_address`` argument to
|
||||
``mremap()`` as these have the potential to alias with existing
|
||||
user addresses.
|
||||
|
||||
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
||||
incorrectly accept valid tagged pointers for the ``brk()``,
|
||||
``mmap()`` and ``mremap()`` system calls.
|
||||
|
||||
- The ``range.start``, ``start`` and ``dst`` arguments to the
|
||||
``UFFDIO_*`` ``ioctl()``s used on a file descriptor obtained from
|
||||
``userfaultfd()``, as fault addresses subsequently obtained by reading
|
||||
the file descriptor will be untagged, which may otherwise confuse
|
||||
tag-unaware programs.
|
||||
|
||||
NOTE: This behaviour changed in v5.14 and so some earlier kernels may
|
||||
incorrectly accept valid tagged pointers for this system call.
|
||||
|
||||
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
||||
relaxation is disabled by default and the application thread needs to
|
||||
|
@ -553,20 +553,36 @@ throughput sustainable with bfq, because updating the blkio.bfq.*
|
||||
stats is rather costly, especially for some of the stats enabled by
|
||||
CONFIG_BFQ_CGROUP_DEBUG.
|
||||
|
||||
Parameters to set
|
||||
-----------------
|
||||
Parameters
|
||||
----------
|
||||
|
||||
For each group, there is only the following parameter to set.
|
||||
For each group, the following parameters can be set:
|
||||
|
||||
weight (namely blkio.bfq.weight or io.bfq-weight): the weight of the
|
||||
group inside its parent. Available values: 1..1000 (default 100). The
|
||||
linear mapping between ioprio and weights, described at the beginning
|
||||
of the tunable section, is still valid, but all weights higher than
|
||||
IOPRIO_BE_NR*10 are mapped to ioprio 0.
|
||||
weight
|
||||
This specifies the default weight for the cgroup inside its parent.
|
||||
Available values: 1..1000 (default: 100).
|
||||
|
||||
Recall that, if low-latency is set, then BFQ automatically raises the
|
||||
weight of the queues associated with interactive and soft real-time
|
||||
applications. Unset this tunable if you need/want to control weights.
|
||||
For cgroup v1, it is set by writing the value to `blkio.bfq.weight`.
|
||||
|
||||
For cgroup v2, it is set by writing the value to `io.bfq.weight`.
|
||||
(with an optional prefix of `default` and a space).
|
||||
|
||||
The linear mapping between ioprio and weights, described at the beginning
|
||||
of the tunable section, is still valid, but all weights higher than
|
||||
IOPRIO_BE_NR*10 are mapped to ioprio 0.
|
||||
|
||||
Recall that, if low-latency is set, then BFQ automatically raises the
|
||||
weight of the queues associated with interactive and soft real-time
|
||||
applications. Unset this tunable if you need/want to control weights.
|
||||
|
||||
weight_device
|
||||
This specifies a per-device weight for the cgroup. The syntax is
|
||||
`minor:major weight`. A weight of `0` may be used to reset to the default
|
||||
weight.
|
||||
|
||||
For cgroup v1, it is set by writing the value to `blkio.bfq.weight_device`.
|
||||
|
||||
For cgroup v2, the file name is `io.bfq.weight`.
|
||||
|
||||
|
||||
[1]
|
||||
|
@ -196,7 +196,7 @@ a virtual address mapping (unlike the earlier scheme of virtual address
|
||||
do not have a corresponding kernel virtual address space mapping) and
|
||||
low-memory pages.
|
||||
|
||||
Note: Please refer to :doc:`/core-api/dma-api-howto` for a discussion
|
||||
Note: Please refer to Documentation/core-api/dma-api-howto.rst for a discussion
|
||||
on PCI high mem DMA aspects and mapping of scatter gather lists, and support
|
||||
for 64 bit PCI.
|
||||
|
||||
|
@ -62,7 +62,7 @@ queue, to be sent in the future, when the hardware is able.
|
||||
Software staging queues
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The block IO subsystem adds requests in the software staging queues
|
||||
The block IO subsystem adds requests in the software staging queues
|
||||
(represented by struct blk_mq_ctx) in case that they weren't sent
|
||||
directly to the driver. A request is one or more BIOs. They arrived at the
|
||||
block layer through the data structure struct bio. The block layer
|
||||
@ -132,7 +132,7 @@ In order to indicate which request has been completed, every request is
|
||||
identified by an integer, ranging from 0 to the dispatch queue size. This tag
|
||||
is generated by the block layer and later reused by the device driver, removing
|
||||
the need to create a redundant identifier. When a request is completed in the
|
||||
drive, the tag is sent back to the block layer to notify it of the finalization.
|
||||
driver, the tag is sent back to the block layer to notify it of the finalization.
|
||||
This removes the need to do a linear search to find out which IO has been
|
||||
completed.
|
||||
|
||||
|
@ -18,7 +18,7 @@ A.
|
||||
each, it would be impossible to guarantee that a set of readings
|
||||
represent a single point in time.
|
||||
|
||||
The stat file consists of a single line of text containing 11 decimal
|
||||
The stat file consists of a single line of text containing 17 decimal
|
||||
values separated by whitespace. The fields are summarized in the
|
||||
following table, and described in more detail below.
|
||||
|
||||
|
@ -20,10 +20,10 @@ LSM hook:
|
||||
Other LSM hooks which can be instrumented can be found in
|
||||
``include/linux/lsm_hooks.h``.
|
||||
|
||||
eBPF programs that use :doc:`/bpf/btf` do not need to include kernel headers
|
||||
for accessing information from the attached eBPF program's context. They can
|
||||
simply declare the structures in the eBPF program and only specify the fields
|
||||
that need to be accessed.
|
||||
eBPF programs that use Documentation/bpf/btf.rst do not need to include kernel
|
||||
headers for accessing information from the attached eBPF program's context.
|
||||
They can simply declare the structures in the eBPF program and only specify
|
||||
the fields that need to be accessed.
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
@ -88,8 +88,9 @@ example:
|
||||
|
||||
The ``__attribute__((preserve_access_index))`` is a clang feature that allows
|
||||
the BPF verifier to update the offsets for the access at runtime using the
|
||||
:doc:`/bpf/btf` information. Since the BPF verifier is aware of the types, it
|
||||
also validates all the accesses made to the various types in the eBPF program.
|
||||
Documentation/bpf/btf.rst information. Since the BPF verifier is aware of the
|
||||
types, it also validates all the accesses made to the various types in the
|
||||
eBPF program.
|
||||
|
||||
Loading
|
||||
-------
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user