mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Merge remote-tracking branch 'drm/drm-next' into msm-next-robclark
Back-merge drm-next to get caught up. Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
This commit is contained in:
@@ -167,7 +167,7 @@ ForEachMacros:
|
||||
- 'drm_connector_for_each_possible_encoder'
|
||||
- 'drm_exec_for_each_locked_object'
|
||||
- 'drm_exec_for_each_locked_object_reverse'
|
||||
- 'drm_for_each_bridge_in_chain'
|
||||
- 'drm_for_each_bridge_in_chain_scoped'
|
||||
- 'drm_for_each_connector_iter'
|
||||
- 'drm_for_each_crtc'
|
||||
- 'drm_for_each_crtc_reverse'
|
||||
@@ -294,7 +294,6 @@ ForEachMacros:
|
||||
- 'for_each_fib6_node_rt_rcu'
|
||||
- 'for_each_fib6_walker_rt'
|
||||
- 'for_each_file_lock'
|
||||
- 'for_each_free_mem_pfn_range_in_zone_from'
|
||||
- 'for_each_free_mem_range'
|
||||
- 'for_each_free_mem_range_reverse'
|
||||
- 'for_each_func_rsrc'
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
Alan Cox <alan@lxorguk.ukuu.org.uk>
|
||||
Alan Cox <root@hraefn.swansea.linux.org.uk>
|
||||
Alyssa Rosenzweig <alyssa@rosenzweig.io>
|
||||
Christoph Hellwig <hch@lst.de>
|
||||
Jeff Kirsher <jeffrey.t.kirsher@intel.com>
|
||||
Marc Gonzalez <marc.w.gonzalez@free.fr>
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -114,6 +114,7 @@ modules.order
|
||||
!.gitignore
|
||||
!.kunitconfig
|
||||
!.mailmap
|
||||
!.pylintrc
|
||||
!.rustfmt.toml
|
||||
|
||||
#
|
||||
@@ -175,7 +176,7 @@ x509.genkey
|
||||
*.kdev4
|
||||
|
||||
# Clang's compilation database file
|
||||
/compile_commands.json
|
||||
compile_commands.json
|
||||
|
||||
# Documentation toolchain
|
||||
sphinx_*/
|
||||
|
||||
49
.mailmap
49
.mailmap
@@ -134,10 +134,12 @@ Ben M Cahill <ben.m.cahill@intel.com>
|
||||
Ben Widawsky <bwidawsk@kernel.org> <ben@bwidawsk.net>
|
||||
Ben Widawsky <bwidawsk@kernel.org> <ben.widawsky@intel.com>
|
||||
Ben Widawsky <bwidawsk@kernel.org> <benjamin.widawsky@intel.com>
|
||||
Bence Csókás <bence98@sch.bme.hu> <csokas.bence@prolan.hu>
|
||||
Benjamin Poirier <benjamin.poirier@gmail.com> <bpoirier@suse.de>
|
||||
Benjamin Tissoires <bentiss@kernel.org> <benjamin.tissoires@gmail.com>
|
||||
Benjamin Tissoires <bentiss@kernel.org> <benjamin.tissoires@redhat.com>
|
||||
Benno Lossin <lossin@kernel.org> <benno.lossin@proton.me>
|
||||
Bernard Metzler <bernard.metzler@linux.dev> <bmt@zurich.ibm.com>
|
||||
Bingwu Zhang <xtex@aosc.io> <xtexchooser@duck.com>
|
||||
Bingwu Zhang <xtex@aosc.io> <xtex@xtexx.eu.org>
|
||||
Bjorn Andersson <andersson@kernel.org> <bjorn@kryo.se>
|
||||
@@ -163,12 +165,15 @@ Casey Connolly <casey.connolly@linaro.org> <caleb@connolly.tech>
|
||||
Casey Connolly <casey.connolly@linaro.org> <caleb@postmarketos.org>
|
||||
Can Guo <quic_cang@quicinc.com> <cang@codeaurora.org>
|
||||
Carl Huang <quic_cjhuang@quicinc.com> <cjhuang@codeaurora.org>
|
||||
Carl Vanderlip <carl.vanderlip@oss.qualcomm.com> <carlv@codeaurora.org>
|
||||
Carl Vanderlip <carl.vanderlip@oss.qualcomm.com> <quic_carlv@quicinc.com>
|
||||
Carlos Bilbao <carlos.bilbao@kernel.org> <carlos.bilbao@amd.com>
|
||||
Carlos Bilbao <carlos.bilbao@kernel.org> <carlos.bilbao.osdev@gmail.com>
|
||||
Carlos Bilbao <carlos.bilbao@kernel.org> <bilbao@vt.edu>
|
||||
Changbin Du <changbin.du@intel.com> <changbin.du@gmail.com>
|
||||
Chao Yu <chao@kernel.org> <chao2.yu@samsung.com>
|
||||
Chao Yu <chao@kernel.org> <yuchao0@huawei.com>
|
||||
Chen-Yu Tsai <wens@kernel.org> <wens@csie.org>
|
||||
Chester Lin <chester62515@gmail.com> <clin@suse.com>
|
||||
Chris Chiu <chris.chiu@canonical.com> <chiu@endlessm.com>
|
||||
Chris Chiu <chris.chiu@canonical.com> <chiu@endlessos.org>
|
||||
@@ -197,6 +202,7 @@ Daniel Borkmann <daniel@iogearbox.net> <daniel.borkmann@tik.ee.ethz.ch>
|
||||
Daniel Borkmann <daniel@iogearbox.net> <dborkmann@redhat.com>
|
||||
Daniel Borkmann <daniel@iogearbox.net> <dborkman@redhat.com>
|
||||
Daniel Borkmann <daniel@iogearbox.net> <dxchgb@gmail.com>
|
||||
Danilo Krummrich <dakr@kernel.org> <dakr@redhat.com>
|
||||
David Brownell <david-b@pacbell.net>
|
||||
David Collins <quic_collinsd@quicinc.com> <collinsd@codeaurora.org>
|
||||
David Heidelberg <david@ixit.cz> <d.okias@gmail.com>
|
||||
@@ -211,7 +217,8 @@ Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@gmail.com>
|
||||
Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@imgtec.com>
|
||||
Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@mips.com>
|
||||
<dev.kurt@vandijck-laurijssen.be> <kurt.van.dijck@eia.be>
|
||||
Dikshita Agarwal <quic_dikshita@quicinc.com> <dikshita@codeaurora.org>
|
||||
Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com> <dikshita@codeaurora.org>
|
||||
Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com> <quic_dikshita@quicinc.com>
|
||||
Dmitry Baryshkov <lumag@kernel.org> <dbaryshkov@gmail.com>
|
||||
Dmitry Baryshkov <lumag@kernel.org> <[dbaryshkov@gmail.com]>
|
||||
Dmitry Baryshkov <lumag@kernel.org> <dmitry_baryshkov@mentor.com>
|
||||
@@ -221,7 +228,12 @@ Dmitry Safonov <0x7f454c46@gmail.com> <dima@arista.com>
|
||||
Dmitry Safonov <0x7f454c46@gmail.com> <d.safonov@partner.samsung.com>
|
||||
Dmitry Safonov <0x7f454c46@gmail.com> <dsafonov@virtuozzo.com>
|
||||
Domen Puncer <domen@coderock.org>
|
||||
Dong Aisheng <aisheng.dong@nxp.com> <b29396@freescale.com>
|
||||
Douglas Gilbert <dougg@torque.net>
|
||||
Drew Fustini <fustini@kernel.org> <drew@pdp7.com>
|
||||
<duje@dujemihanovic.xyz> <duje.mihanovic@skole.hr>
|
||||
Easwar Hariharan <easwar.hariharan@linux.microsoft.com> <easwar.hariharan@intel.com>
|
||||
Easwar Hariharan <easwar.hariharan@linux.microsoft.com> <eahariha@linux.microsoft.com>
|
||||
Ed L. Cashin <ecashin@coraid.com>
|
||||
Elliot Berman <quic_eberman@quicinc.com> <eberman@codeaurora.org>
|
||||
Enric Balletbo i Serra <eballetbo@kernel.org> <enric.balletbo@collabora.com>
|
||||
@@ -282,8 +294,10 @@ Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
||||
Gustavo Padovan <padovan@profusion.mobi>
|
||||
Hamza Mahfooz <hamzamahfooz@linux.microsoft.com> <hamza.mahfooz@amd.com>
|
||||
Hanjun Guo <guohanjun@huawei.com> <hanjun.guo@linaro.org>
|
||||
Hans Verkuil <hverkuil@xs4all.nl> <hansverk@cisco.com>
|
||||
Hans Verkuil <hverkuil@xs4all.nl> <hverkuil-cisco@xs4all.nl>
|
||||
Hans de Goede <hansg@kernel.org> <hdegoede@redhat.com>
|
||||
Hans Verkuil <hverkuil@kernel.org> <hverkuil@xs4all.nl>
|
||||
Hans Verkuil <hverkuil@kernel.org> <hverkuil-cisco@xs4all.nl>
|
||||
Hans Verkuil <hverkuil@kernel.org> <hansverk@cisco.com>
|
||||
Harry Yoo <harry.yoo@oracle.com> <42.hyeyoo@gmail.com>
|
||||
Heiko Carstens <hca@linux.ibm.com> <h.carstens@de.ibm.com>
|
||||
Heiko Carstens <hca@linux.ibm.com> <heiko.carstens@de.ibm.com>
|
||||
@@ -412,6 +426,7 @@ Kenneth W Chen <kenneth.w.chen@intel.com>
|
||||
Kenneth Westfield <quic_kwestfie@quicinc.com> <kwestfie@codeaurora.org>
|
||||
Kiran Gunda <quic_kgunda@quicinc.com> <kgunda@codeaurora.org>
|
||||
Kirill Tkhai <tkhai@ya.ru> <ktkhai@virtuozzo.com>
|
||||
Kirill A. Shutemov <kas@kernel.org> <kirill.shutemov@linux.intel.com>
|
||||
Kishon Vijay Abraham I <kishon@kernel.org> <kishon@ti.com>
|
||||
Konrad Dybcio <konradybcio@kernel.org> <konrad.dybcio@linaro.org>
|
||||
Konrad Dybcio <konradybcio@kernel.org> <konrad.dybcio@somainline.org>
|
||||
@@ -580,6 +595,7 @@ Nikolay Aleksandrov <razor@blackwall.org> <nikolay@redhat.com>
|
||||
Nikolay Aleksandrov <razor@blackwall.org> <nikolay@cumulusnetworks.com>
|
||||
Nikolay Aleksandrov <razor@blackwall.org> <nikolay@nvidia.com>
|
||||
Nikolay Aleksandrov <razor@blackwall.org> <nikolay@isovalent.com>
|
||||
Nobuhiro Iwamatsu <nobuhiro.iwamatsu.x90@mail.toshiba> <nobuhiro1.iwamatsu@toshiba.co.jp>
|
||||
Odelu Kukatla <quic_okukatla@quicinc.com> <okukatla@codeaurora.org>
|
||||
Oleksandr Natalenko <oleksandr@natalenko.name> <oleksandr@redhat.com>
|
||||
Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net>
|
||||
@@ -613,6 +629,7 @@ Paulo Alcantara <pc@manguebit.org> <palcantara@suse.com>
|
||||
Paulo Alcantara <pc@manguebit.org> <pc@manguebit.com>
|
||||
Pavankumar Kondeti <quic_pkondeti@quicinc.com> <pkondeti@codeaurora.org>
|
||||
Peter A Jonsson <pj@ludd.ltu.se>
|
||||
Peter Hilber <peter.hilber@oss.qualcomm.com> <quic_philber@quicinc.com>
|
||||
Peter Oruba <peter.oruba@amd.com>
|
||||
Peter Oruba <peter@oruba.de>
|
||||
Pierre-Louis Bossart <pierre-louis.bossart@linux.dev> <pierre-louis.bossart@linux.intel.com>
|
||||
@@ -666,6 +683,7 @@ Muchun Song <muchun.song@linux.dev> <smuchun@gmail.com>
|
||||
Ross Zwisler <zwisler@kernel.org> <ross.zwisler@linux.intel.com>
|
||||
Rudolf Marek <R.Marek@sh.cvut.cz>
|
||||
Rui Saraiva <rmps@joel.ist.utl.pt>
|
||||
Sachin Mokashi <sachin.mokashi@intel.com> <sachinx.mokashi@intel.com>
|
||||
Sachin P Sant <ssant@in.ibm.com>
|
||||
Sai Prakash Ranjan <quic_saipraka@quicinc.com> <saiprakash.ranjan@codeaurora.org>
|
||||
Sakari Ailus <sakari.ailus@linux.intel.com> <sakari.ailus@iki.fi>
|
||||
@@ -689,18 +707,25 @@ Sedat Dilek <sedat.dilek@gmail.com> <sedat.dilek@credativ.de>
|
||||
Senthilkumar N L <quic_snlakshm@quicinc.com> <snlakshm@codeaurora.org>
|
||||
Serge Hallyn <sergeh@kernel.org> <serge.hallyn@canonical.com>
|
||||
Serge Hallyn <sergeh@kernel.org> <serue@us.ibm.com>
|
||||
Sergey Senozhatsky <senozhatsky@chromium.org> <sergey.senozhatsky.work@gmail.com>
|
||||
Sergey Senozhatsky <senozhatsky@chromium.org> <sergey.senozhatsky@gmail.com>
|
||||
Sergey Senozhatsky <senozhatsky@chromium.org> <sergey.senozhatsky@mail.by>
|
||||
Sergey Senozhatsky <senozhatsky@chromium.org> <senozhatsky@google.com>
|
||||
Seth Forshee <sforshee@kernel.org> <seth.forshee@canonical.com>
|
||||
Shakeel Butt <shakeel.butt@linux.dev> <shakeelb@google.com>
|
||||
Shannon Nelson <shannon.nelson@amd.com> <snelson@pensando.io>
|
||||
Shannon Nelson <shannon.nelson@amd.com> <shannon.nelson@intel.com>
|
||||
Shannon Nelson <shannon.nelson@amd.com> <shannon.nelson@oracle.com>
|
||||
Shameer Kolothum <skolothumtho@nvidia.com> <shameerali.kolothum.thodi@huawei.com>
|
||||
Shannon Nelson <sln@onemain.com> <shannon.nelson@amd.com>
|
||||
Shannon Nelson <sln@onemain.com> <snelson@pensando.io>
|
||||
Shannon Nelson <sln@onemain.com> <shannon.nelson@intel.com>
|
||||
Shannon Nelson <sln@onemain.com> <shannon.nelson@oracle.com>
|
||||
Sharath Chandra Vurukala <quic_sharathv@quicinc.com> <sharathv@codeaurora.org>
|
||||
Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
|
||||
Shuah Khan <shuah@kernel.org> <shuahkhan@gmail.com>
|
||||
Shuah Khan <shuah@kernel.org> <shuah.khan@hp.com>
|
||||
Shuah Khan <shuah@kernel.org> <shuahkh@osg.samsung.com>
|
||||
Shuah Khan <shuah@kernel.org> <shuah.kh@samsung.com>
|
||||
Sibi Sankar <quic_sibis@quicinc.com> <sibis@codeaurora.org>
|
||||
Sibi Sankar <sibi.sankar@oss.qualcomm.com> <sibis@codeaurora.org>
|
||||
Sibi Sankar <sibi.sankar@oss.qualcomm.com> <quic_sibis@quicinc.com>
|
||||
Sid Manning <quic_sidneym@quicinc.com> <sidneym@codeaurora.org>
|
||||
Simon Arlott <simon@octiron.net> <simon@fire.lp0.eu>
|
||||
Simona Vetter <simona.vetter@ffwll.ch> <daniel.vetter@ffwll.ch>
|
||||
@@ -724,6 +749,8 @@ Sriram Yagnaraman <sriram.yagnaraman@ericsson.com> <sriram.yagnaraman@est.tech>
|
||||
Stanislav Fomichev <sdf@fomichev.me> <sdf@google.com>
|
||||
Stanislav Fomichev <sdf@fomichev.me> <stfomichev@gmail.com>
|
||||
Stefan Wahren <wahrenst@gmx.net> <stefan.wahren@i2se.com>
|
||||
Stéphane Grosjean <stephane.grosjean@hms-networks.com> <s.grosjean@peak-system.com>
|
||||
Stéphane Grosjean <stephane.grosjean@hms-networks.com> <stephane.grosjean@free.fr>
|
||||
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
||||
Stephen Hemminger <stephen@networkplumber.org> <shemminger@linux-foundation.org>
|
||||
Stephen Hemminger <stephen@networkplumber.org> <shemminger@osdl.org>
|
||||
@@ -778,6 +805,7 @@ Tvrtko Ursulin <tursulin@ursulin.net> <tvrtko.ursulin@onelan.co.uk>
|
||||
Tvrtko Ursulin <tursulin@ursulin.net> <tvrtko@ursulin.net>
|
||||
Tycho Andersen <tycho@tycho.pizza> <tycho@tycho.ws>
|
||||
Tzung-Bi Shih <tzungbi@kernel.org> <tzungbi@google.com>
|
||||
Umang Jain <uajain@igalia.com> <umang.jain@ideasonboard.com>
|
||||
Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
|
||||
Uwe Kleine-König <u.kleine-koenig@baylibre.com> <ukleinek@baylibre.com>
|
||||
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
|
||||
@@ -799,7 +827,9 @@ Valentin Schneider <vschneid@redhat.com> <valentin.schneider@arm.com>
|
||||
Veera Sundaram Sankaran <quic_veeras@quicinc.com> <veeras@codeaurora.org>
|
||||
Veerabhadrarao Badiganti <quic_vbadigan@quicinc.com> <vbadigan@codeaurora.org>
|
||||
Venkateswara Naralasetty <quic_vnaralas@quicinc.com> <vnaralas@codeaurora.org>
|
||||
Vikash Garodia <quic_vgarodia@quicinc.com> <vgarodia@codeaurora.org>
|
||||
Vikash Garodia <vikash.garodia@oss.qualcomm.com> <vgarodia@codeaurora.org>
|
||||
Vikash Garodia <vikash.garodia@oss.qualcomm.com> <quic_vgarodia@quicinc.com>
|
||||
Vincent Mailhol <mailhol@kernel.org> <mailhol.vincent@wanadoo.fr>
|
||||
Vinod Koul <vkoul@kernel.org> <vinod.koul@intel.com>
|
||||
Vinod Koul <vkoul@kernel.org> <vinod.koul@linux.intel.com>
|
||||
Vinod Koul <vkoul@kernel.org> <vkoul@infradead.org>
|
||||
@@ -827,3 +857,6 @@ Yosry Ahmed <yosry.ahmed@linux.dev> <yosryahmed@google.com>
|
||||
Yusuke Goda <goda.yusuke@renesas.com>
|
||||
Zack Rusin <zack.rusin@broadcom.com> <zackr@vmware.com>
|
||||
Zhu Yanjun <zyjzyj2000@gmail.com> <yanjunz@nvidia.com>
|
||||
Zijun Hu <zijun.hu@oss.qualcomm.com> <quic_zijuhu@quicinc.com>
|
||||
Zijun Hu <zijun.hu@oss.qualcomm.com> <zijuhu@codeaurora.org>
|
||||
Zijun Hu <zijun_hu@htc.com>
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
[MASTER]
|
||||
init-hook='import sys; sys.path += ["scripts/lib/kdoc", "scripts/lib/abi"]'
|
||||
init-hook='import sys; sys.path += ["scripts/lib/kdoc", "scripts/lib/abi", "tools/docs/lib"]'
|
||||
|
||||
33
CREDITS
33
CREDITS
@@ -1397,6 +1397,10 @@ N: Thomas Gleixner
|
||||
E: tglx@linutronix.de
|
||||
D: NAND flash hardware support, JFFS2 on NAND flash
|
||||
|
||||
N: Jérôme Glisse
|
||||
E: jglisse@redhat.com
|
||||
D: HMM - Heterogeneous Memory Management
|
||||
|
||||
N: Richard E. Gooch
|
||||
E: rgooch@atnf.csiro.au
|
||||
D: parent process death signal to children
|
||||
@@ -1886,6 +1890,11 @@ S: Reading
|
||||
S: RG6 2NU
|
||||
S: United Kingdom
|
||||
|
||||
N: Michael Jamet
|
||||
E: michael.jamet@intel.com
|
||||
D: Thunderbolt/USB4 driver maintainer
|
||||
D: Thunderbolt/USB4 networking driver maintainer
|
||||
|
||||
N: Dave Jeffery
|
||||
E: dhjeffery@gmail.com
|
||||
D: SCSI hacks and IBM ServeRAID RAID driver maintenance
|
||||
@@ -2981,6 +2990,11 @@ S: 521 Pleasant Valley Road
|
||||
S: Potsdam, New York 13676
|
||||
S: USA
|
||||
|
||||
N: Shannon Nelson
|
||||
E: sln@onemain.com
|
||||
D: Worked on several network drivers including
|
||||
D: ixgbe, i40e, ionic, pds_core, pds_vdpa, pds_fwctl
|
||||
|
||||
N: Dave Neuer
|
||||
E: dave.neuer@pobox.com
|
||||
D: Helped implement support for Compaq's H31xx series iPAQs
|
||||
@@ -3213,6 +3227,10 @@ D: AIC5800 IEEE 1394, RAW I/O on 1394
|
||||
D: Starter of Linux1394 effort
|
||||
S: ask per mail for current address
|
||||
|
||||
N: Boris Pismenny
|
||||
E: borisp@mellanox.com
|
||||
D: Kernel TLS implementation and offload support.
|
||||
|
||||
N: Nicolas Pitre
|
||||
E: nico@fluxnic.net
|
||||
D: StrongARM SA1100 support integrator & hacker
|
||||
@@ -3899,6 +3917,12 @@ S: C/ Federico Garcia Lorca 1 10-A
|
||||
S: Sevilla 41005
|
||||
S: Spain
|
||||
|
||||
N: Björn Töpel
|
||||
E: bjorn@kernel.org
|
||||
D: AF_XDP
|
||||
S: Gothenburg
|
||||
S: Sweden
|
||||
|
||||
N: Linus Torvalds
|
||||
E: torvalds@linux-foundation.org
|
||||
D: Original kernel hacker
|
||||
@@ -4159,6 +4183,9 @@ S: 1513 Brewster Dr.
|
||||
S: Carrollton, TX 75010
|
||||
S: USA
|
||||
|
||||
N: Dave Watson
|
||||
D: Kernel TLS implementation.
|
||||
|
||||
N: Tim Waugh
|
||||
E: tim@cyberelk.net
|
||||
D: Co-architect of the parallel-port sharing system
|
||||
@@ -4369,6 +4396,12 @@ S: 542 West 112th Street, 5N
|
||||
S: New York, New York 10025
|
||||
S: USA
|
||||
|
||||
N: Masahiro Yamada
|
||||
E: masahiroy@kernel.org
|
||||
D: Kbuild Maintainer 2017-2025
|
||||
D: Kconfig Maintainer 2018-2025
|
||||
S: Japan
|
||||
|
||||
N: Li Yang
|
||||
E: leoli@freescale.com
|
||||
D: Freescale Highspeed USB device driver
|
||||
|
||||
1191
Documentation/.renames.txt
Normal file
1191
Documentation/.renames.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -46,7 +46,9 @@ Every file in these directories will contain the following information:
|
||||
|
||||
What: Short description of the interface
|
||||
Date: Date created
|
||||
KernelVersion: Kernel version this feature first showed up in.
|
||||
KernelVersion: (Optional) Kernel version this feature first showed up in.
|
||||
Note: git history often provides more accurate version
|
||||
info, so this field may be omitted.
|
||||
Contact: Primary contact for this interface (may be a mailing list)
|
||||
Description: Long description of the interface and how to use it.
|
||||
Users: All users of this interface who wish to be notified when
|
||||
|
||||
20
Documentation/ABI/obsolete/automount-tracefs-debugfs
Normal file
20
Documentation/ABI/obsolete/automount-tracefs-debugfs
Normal file
@@ -0,0 +1,20 @@
|
||||
What: /sys/kernel/debug/tracing
|
||||
Date: May 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-trace-kernel@vger.kernel.org
|
||||
Description:
|
||||
|
||||
The ftrace was first added to the kernel, its interface was placed
|
||||
into the debugfs file system under the "tracing" directory. Access
|
||||
to the files were in /sys/kernel/debug/tracing. As systems wanted
|
||||
access to the tracing interface without having to enable debugfs, a
|
||||
new interface was created called "tracefs". This was a stand alone
|
||||
file system and was usually mounted in /sys/kernel/tracing.
|
||||
|
||||
To allow older tooling to continue to operate, when mounting
|
||||
debugfs, the tracefs file system would automatically get mounted in
|
||||
the "tracing" directory of debugfs. The tracefs interface was added
|
||||
in January 2015 in the v4.1 kernel.
|
||||
|
||||
All tooling should now be using tracefs directly and the "tracing"
|
||||
directory in debugfs should be removed by January 2030.
|
||||
@@ -48,10 +48,6 @@ 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
|
||||
@@ -73,10 +69,6 @@ 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
|
||||
@@ -110,10 +102,6 @@ Description:
|
||||
|
||||
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
|
||||
|
||||
10
Documentation/ABI/obsolete/sysfs-driver-samsung-laptop
Normal file
10
Documentation/ABI/obsolete/sysfs-driver-samsung-laptop
Normal file
@@ -0,0 +1,10 @@
|
||||
What: /sys/devices/platform/samsung/battery_life_extender
|
||||
Date: December 1, 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: Corentin Chary <corentin.chary@gmail.com>
|
||||
Description: Max battery charge level can be modified, battery cycle
|
||||
life can be extended by reducing the max battery charge
|
||||
level.
|
||||
|
||||
- 0 means normal battery mode (100% charge)
|
||||
- 1 means battery life extender mode (80% charge)
|
||||
@@ -19,14 +19,22 @@ Description:
|
||||
/export ... asks the kernel to export a GPIO to userspace
|
||||
/unexport ... to return a GPIO to the kernel
|
||||
/gpioN ... for each exported GPIO #N OR
|
||||
/<LINE-NAME> ... for a properly named GPIO line
|
||||
/value ... always readable, writes fail for input GPIOs
|
||||
/direction ... r/w as: in, out (default low); write: high, low
|
||||
/edge ... r/w as: none, falling, rising, both
|
||||
/active_low ... r/w as: 0, 1
|
||||
/gpiochipN ... for each gpiochip; #N is its first GPIO
|
||||
/base ... (r/o) same as N
|
||||
/label ... (r/o) descriptive, not necessarily unique
|
||||
/label ... (r/o) descriptive chip name
|
||||
/ngpio ... (r/o) number of GPIOs; numbered N to N + (ngpio - 1)
|
||||
/gpio<OFFSET>
|
||||
/value ... always readable, writes fail for input GPIOs
|
||||
/direction ... r/w as: in, out (default low); write: high, low
|
||||
/chipX ... for each gpiochip; #X is the gpio device ID
|
||||
/export ... asks the kernel to export a GPIO at HW offset X to userspace
|
||||
/unexport ... to return a GPIO at HW offset X to the kernel
|
||||
/label ... (r/o) descriptive chip name
|
||||
/ngpio ... (r/o) number of GPIOs exposed by the chip
|
||||
|
||||
This ABI is obsoleted by Documentation/ABI/testing/gpio-cdev and will be
|
||||
removed after 2020.
|
||||
|
||||
8
Documentation/ABI/obsolete/sysfs-platform-ideapad-laptop
Normal file
8
Documentation/ABI/obsolete/sysfs-platform-ideapad-laptop
Normal file
@@ -0,0 +1,8 @@
|
||||
What: /sys/bus/platform/devices/VPC2004:*/conservation_mode
|
||||
Date: Aug 2017
|
||||
KernelVersion: 4.14
|
||||
Contact: platform-driver-x86@vger.kernel.org
|
||||
Description:
|
||||
Controls whether the conservation mode is enabled or not.
|
||||
This feature limits the maximum battery charge percentage to
|
||||
around 50-60% in order to prolong the lifetime of the battery.
|
||||
@@ -603,16 +603,10 @@ Date: July 2003
|
||||
Contact: linux-block@vger.kernel.org
|
||||
Description:
|
||||
[RW] This controls how many requests may be allocated in the
|
||||
block layer for read or write requests. Note that the total
|
||||
allocated number may be twice this amount, since it applies only
|
||||
to reads or writes (not the accumulated sum).
|
||||
|
||||
To avoid priority inversion through request starvation, a
|
||||
request queue maintains a separate request pool per each cgroup
|
||||
when CONFIG_BLK_CGROUP is enabled, and this parameter applies to
|
||||
each such per-block-cgroup request pool. IOW, if there are N
|
||||
block cgroups, each request queue may have up to N request
|
||||
pools, each independently regulated by nr_requests.
|
||||
block layer. Noted this value only represents the quantity for a
|
||||
single blk_mq_tags instance. The actual number for the entire
|
||||
device depends on the hardware queue count, whether elevator is
|
||||
enabled, and whether tags are shared.
|
||||
|
||||
|
||||
What: /sys/block/<disk>/queue/nr_zones
|
||||
@@ -731,7 +725,7 @@ Contact: linux-block@vger.kernel.org
|
||||
Description:
|
||||
[RW] If the device is registered for writeback throttling, then
|
||||
this file shows the target minimum read latency. If this latency
|
||||
is exceeded in a given window of time (see wb_window_usec), then
|
||||
is exceeded in a given window of time (see curr_win_nsec), then
|
||||
the writeback throttling will start scaling back writes. Writing
|
||||
a value of '0' to this file disables the feature. Writing a
|
||||
value of '-1' to this file resets the value to the default
|
||||
@@ -778,6 +772,39 @@ Description:
|
||||
0, write zeroes is not supported by the device.
|
||||
|
||||
|
||||
What: /sys/block/<disk>/queue/write_zeroes_unmap_max_hw_bytes
|
||||
Date: January 2025
|
||||
Contact: Zhang Yi <yi.zhang@huawei.com>
|
||||
Description:
|
||||
[RO] This file indicates whether a device supports zeroing data
|
||||
in a specified block range without incurring the cost of
|
||||
physically writing zeroes to the media for each individual
|
||||
block. If this parameter is set to write_zeroes_max_bytes, the
|
||||
device implements a zeroing operation which opportunistically
|
||||
avoids writing zeroes to media while still guaranteeing that
|
||||
subsequent reads from the specified block range will return
|
||||
zeroed data. This operation is a best-effort optimization, a
|
||||
device may fall back to physically writing zeroes to the media
|
||||
due to other factors such as misalignment or being asked to
|
||||
clear a block range smaller than the device's internal
|
||||
allocation unit. If this parameter is set to 0, the device may
|
||||
have to write each logical block media during a zeroing
|
||||
operation.
|
||||
|
||||
|
||||
What: /sys/block/<disk>/queue/write_zeroes_unmap_max_bytes
|
||||
Date: January 2025
|
||||
Contact: Zhang Yi <yi.zhang@huawei.com>
|
||||
Description:
|
||||
[RW] While write_zeroes_unmap_max_hw_bytes is the hardware limit
|
||||
for the device, this setting is the software limit. Since the
|
||||
unmap write zeroes operation is a best-effort optimization, some
|
||||
devices may still physically writing zeroes to media. So the
|
||||
speed of this operation is not guaranteed. Writing a value of
|
||||
'0' to this file disables this operation. Otherwise, this
|
||||
parameter should be equal to write_zeroes_unmap_max_hw_bytes.
|
||||
|
||||
|
||||
What: /sys/block/<disk>/queue/zone_append_max_bytes
|
||||
Date: May 2020
|
||||
Contact: linux-block@vger.kernel.org
|
||||
|
||||
@@ -227,3 +227,12 @@ Contact: Jiaqi Yan <jiaqiyan@google.com>
|
||||
Description:
|
||||
Of the raw poisoned pages on a NUMA node, how many pages are
|
||||
recovered by memory error recovery attempt.
|
||||
|
||||
What: /sys/devices/system/node/nodeX/reclaim
|
||||
Date: June 2025
|
||||
Contact: Linux Memory Management list <linux-mm@kvack.org>
|
||||
Description:
|
||||
Perform user-triggered proactive reclaim on a NUMA node.
|
||||
This interface is equivalent to the memcg variant.
|
||||
|
||||
See Documentation/admin-guide/cgroup-v2.rst
|
||||
|
||||
5
Documentation/ABI/stable/sysfs-kernel-time-aux-clocks
Normal file
5
Documentation/ABI/stable/sysfs-kernel-time-aux-clocks
Normal file
@@ -0,0 +1,5 @@
|
||||
What: /sys/kernel/time/aux_clocks/<ID>/enable
|
||||
Date: May 2025
|
||||
Contact: Thomas Gleixner <tglx@linutronix.de>
|
||||
Description:
|
||||
Controls the enablement of auxiliary clock timekeepers.
|
||||
131
Documentation/ABI/testing/debugfs-amd-iommu
Normal file
131
Documentation/ABI/testing/debugfs-amd-iommu
Normal file
@@ -0,0 +1,131 @@
|
||||
What: /sys/kernel/debug/iommu/amd/iommu<x>/mmio
|
||||
Date: January 2025
|
||||
Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
|
||||
Description:
|
||||
This file provides read/write access for user input. Users specify the
|
||||
MMIO register offset for iommu<x>, and the file outputs the corresponding
|
||||
MMIO register value of iommu<x>
|
||||
|
||||
Example::
|
||||
|
||||
$ echo "0x18" > /sys/kernel/debug/iommu/amd/iommu00/mmio
|
||||
$ cat /sys/kernel/debug/iommu/amd/iommu00/mmio
|
||||
|
||||
Output::
|
||||
|
||||
Offset:0x18 Value:0x000c22000003f48d
|
||||
|
||||
What: /sys/kernel/debug/iommu/amd/iommu<x>/capability
|
||||
Date: January 2025
|
||||
Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
|
||||
Description:
|
||||
This file provides read/write access for user input. Users specify the
|
||||
capability register offset for iommu<x>, and the file outputs the
|
||||
corresponding capability register value of iommu<x>.
|
||||
|
||||
Example::
|
||||
|
||||
$ echo "0x10" > /sys/kernel/debug/iommu/amd/iommu00/capability
|
||||
$ cat /sys/kernel/debug/iommu/amd/iommu00/capability
|
||||
|
||||
Output::
|
||||
|
||||
Offset:0x10 Value:0x00203040
|
||||
|
||||
What: /sys/kernel/debug/iommu/amd/iommu<x>/cmdbuf
|
||||
Date: January 2025
|
||||
Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
|
||||
Description:
|
||||
This file is a read-only output file containing iommu<x> command
|
||||
buffer entries.
|
||||
|
||||
Examples::
|
||||
|
||||
$ cat /sys/kernel/debug/iommu/amd/iommu<x>/cmdbuf
|
||||
|
||||
Output::
|
||||
|
||||
CMD Buffer Head Offset:339 Tail Offset:339
|
||||
0: 00835001 10000001 00003c00 00000000
|
||||
1: 00000000 30000005 fffff003 7fffffff
|
||||
2: 00835001 10000001 00003c01 00000000
|
||||
3: 00000000 30000005 fffff003 7fffffff
|
||||
4: 00835001 10000001 00003c02 00000000
|
||||
5: 00000000 30000005 fffff003 7fffffff
|
||||
6: 00835001 10000001 00003c03 00000000
|
||||
7: 00000000 30000005 fffff003 7fffffff
|
||||
8: 00835001 10000001 00003c04 00000000
|
||||
9: 00000000 30000005 fffff003 7fffffff
|
||||
10: 00835001 10000001 00003c05 00000000
|
||||
11: 00000000 30000005 fffff003 7fffffff
|
||||
[...]
|
||||
|
||||
What: /sys/kernel/debug/iommu/amd/devid
|
||||
Date: January 2025
|
||||
Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
|
||||
Description:
|
||||
This file provides read/write access for user input. Users specify the
|
||||
device ID, which can be used to dump IOMMU data structures such as the
|
||||
interrupt remapping table and device table.
|
||||
|
||||
Example:
|
||||
|
||||
1.
|
||||
::
|
||||
|
||||
$ echo 0000:01:00.0 > /sys/kernel/debug/iommu/amd/devid
|
||||
$ cat /sys/kernel/debug/iommu/amd/devid
|
||||
|
||||
Output::
|
||||
|
||||
0000:01:00.0
|
||||
|
||||
2.
|
||||
::
|
||||
|
||||
$ echo 01:00.0 > /sys/kernel/debug/iommu/amd/devid
|
||||
$ cat /sys/kernel/debug/iommu/amd/devid
|
||||
|
||||
Output::
|
||||
|
||||
0000:01:00.0
|
||||
|
||||
What: /sys/kernel/debug/iommu/amd/devtbl
|
||||
Date: January 2025
|
||||
Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
|
||||
Description:
|
||||
This file is a read-only output file containing the device table entry
|
||||
for the device ID provided in /sys/kernel/debug/iommu/amd/devid.
|
||||
|
||||
Example::
|
||||
|
||||
$ cat /sys/kernel/debug/iommu/amd/devtbl
|
||||
|
||||
Output::
|
||||
|
||||
DeviceId QWORD[3] QWORD[2] QWORD[1] QWORD[0] iommu
|
||||
0000:01:00.0 0000000000000000 20000001373b8013 0000000000000038 6000000114d7b603 iommu3
|
||||
|
||||
What: /sys/kernel/debug/iommu/amd/irqtbl
|
||||
Date: January 2025
|
||||
Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
|
||||
Description:
|
||||
This file is a read-only output file containing valid IRT table entries
|
||||
for the device ID provided in /sys/kernel/debug/iommu/amd/devid.
|
||||
|
||||
Example::
|
||||
|
||||
$ cat /sys/kernel/debug/iommu/amd/irqtbl
|
||||
|
||||
Output::
|
||||
|
||||
DeviceId 0000:01:00.0
|
||||
IRT[0000] 0000000000000020 0000000000000241
|
||||
IRT[0001] 0000000000000020 0000000000000841
|
||||
IRT[0002] 0000000000000020 0000000000002041
|
||||
IRT[0003] 0000000000000020 0000000000008041
|
||||
IRT[0004] 0000000000000020 0000000000020041
|
||||
IRT[0005] 0000000000000020 0000000000080041
|
||||
IRT[0006] 0000000000000020 0000000000200041
|
||||
IRT[0007] 0000000000000020 0000000000800041
|
||||
[...]
|
||||
@@ -1,6 +1,6 @@
|
||||
What: /sys/kernel/debug/cec/*/error-inj
|
||||
Date: March 2018
|
||||
Contact: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
Contact: Hans Verkuil <hverkuil@kernel.org>
|
||||
Description:
|
||||
|
||||
The CEC Framework allows for CEC error injection commands through
|
||||
|
||||
@@ -19,8 +19,22 @@ Description:
|
||||
is returned to the user. The inject_poison attribute is only
|
||||
visible for devices supporting the capability.
|
||||
|
||||
TEST-ONLY INTERFACE: This interface is intended for testing
|
||||
and validation purposes only. It is not a data repair mechanism
|
||||
and should never be used on production systems or live data.
|
||||
|
||||
What: /sys/kernel/debug/memX/clear_poison
|
||||
DATA LOSS RISK: For CXL persistent memory (PMEM) devices,
|
||||
poison injection can result in permanent data loss. Injected
|
||||
poison may render data permanently inaccessible even after
|
||||
clearing, as the clear operation writes zeros and does not
|
||||
recover original data.
|
||||
|
||||
SYSTEM STABILITY RISK: For volatile memory, poison injection
|
||||
can cause kernel crashes, system instability, or unpredictable
|
||||
behavior if the poisoned addresses are accessed by running code
|
||||
or critical kernel structures.
|
||||
|
||||
What: /sys/kernel/debug/cxl/memX/clear_poison
|
||||
Date: April, 2023
|
||||
KernelVersion: v6.4
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
@@ -35,6 +49,79 @@ Description:
|
||||
The clear_poison attribute is only visible for devices
|
||||
supporting the capability.
|
||||
|
||||
TEST-ONLY INTERFACE: This interface is intended for testing
|
||||
and validation purposes only. It is not a data repair mechanism
|
||||
and should never be used on production systems or live data.
|
||||
|
||||
CLEAR IS NOT DATA RECOVERY: This operation writes zeros to the
|
||||
specified address range and removes the address from the poison
|
||||
list. It does NOT recover or restore original data that may have
|
||||
been present before poison injection. Any original data at the
|
||||
cleared address is permanently lost and replaced with zeros.
|
||||
|
||||
CLEAR IS NOT A REPAIR MECHANISM: This interface is for testing
|
||||
purposes only and should not be used as a data repair tool.
|
||||
Clearing poison is fundamentally different from data recovery
|
||||
or error correction.
|
||||
|
||||
What: /sys/kernel/debug/cxl/regionX/inject_poison
|
||||
Date: August, 2025
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
(WO) When a Host Physical Address (HPA) is written to this
|
||||
attribute, the region driver translates it to a Device
|
||||
Physical Address (DPA) and identifies the corresponding
|
||||
memdev. It then sends an inject poison command to that memdev
|
||||
at the translated DPA. Refer to the memdev ABI entry at:
|
||||
/sys/kernel/debug/cxl/memX/inject_poison for the detailed
|
||||
behavior. This attribute is only visible if all memdevs
|
||||
participating in the region support both inject and clear
|
||||
poison commands.
|
||||
|
||||
TEST-ONLY INTERFACE: This interface is intended for testing
|
||||
and validation purposes only. It is not a data repair mechanism
|
||||
and should never be used on production systems or live data.
|
||||
|
||||
DATA LOSS RISK: For CXL persistent memory (PMEM) devices,
|
||||
poison injection can result in permanent data loss. Injected
|
||||
poison may render data permanently inaccessible even after
|
||||
clearing, as the clear operation writes zeros and does not
|
||||
recover original data.
|
||||
|
||||
SYSTEM STABILITY RISK: For volatile memory, poison injection
|
||||
can cause kernel crashes, system instability, or unpredictable
|
||||
behavior if the poisoned addresses are accessed by running code
|
||||
or critical kernel structures.
|
||||
|
||||
What: /sys/kernel/debug/cxl/regionX/clear_poison
|
||||
Date: August, 2025
|
||||
Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
(WO) When a Host Physical Address (HPA) is written to this
|
||||
attribute, the region driver translates it to a Device
|
||||
Physical Address (DPA) and identifies the corresponding
|
||||
memdev. It then sends a clear poison command to that memdev
|
||||
at the translated DPA. Refer to the memdev ABI entry at:
|
||||
/sys/kernel/debug/cxl/memX/clear_poison for the detailed
|
||||
behavior. This attribute is only visible if all memdevs
|
||||
participating in the region support both inject and clear
|
||||
poison commands.
|
||||
|
||||
TEST-ONLY INTERFACE: This interface is intended for testing
|
||||
and validation purposes only. It is not a data repair mechanism
|
||||
and should never be used on production systems or live data.
|
||||
|
||||
CLEAR IS NOT DATA RECOVERY: This operation writes zeros to the
|
||||
specified address range and removes the address from the poison
|
||||
list. It does NOT recover or restore original data that may have
|
||||
been present before poison injection. Any original data at the
|
||||
cleared address is permanently lost and replaced with zeros.
|
||||
|
||||
CLEAR IS NOT A REPAIR MECHANISM: This interface is for testing
|
||||
purposes only and should not be used as a data repair tool.
|
||||
Clearing poison is fundamentally different from data recovery
|
||||
or error correction.
|
||||
|
||||
What: /sys/kernel/debug/cxl/einj_types
|
||||
Date: January, 2024
|
||||
KernelVersion: v6.9
|
||||
|
||||
@@ -67,7 +67,7 @@ Contact: qat-linux@intel.com
|
||||
Description: (RO) Read returns power management information specific to the
|
||||
QAT device.
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/cnv_errors
|
||||
Date: January 2024
|
||||
|
||||
@@ -32,7 +32,7 @@ Description: (RW) Enables/disables the reporting of telemetry metrics.
|
||||
|
||||
echo 0 > /sys/kernel/debug/qat_4xxx_0000:6b:00.0/telemetry/control
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/telemetry/device_data
|
||||
Date: March 2024
|
||||
@@ -57,6 +57,7 @@ Description: (RO) Reports device telemetry counters.
|
||||
gp_lat_acc_avg average get to put latency [ns]
|
||||
bw_in PCIe, write bandwidth [Mbps]
|
||||
bw_out PCIe, read bandwidth [Mbps]
|
||||
re_acc_avg average ring empty time [ns]
|
||||
at_page_req_lat_avg Address Translator(AT), average page
|
||||
request latency [ns]
|
||||
at_trans_lat_avg AT, average page translation latency [ns]
|
||||
@@ -67,6 +68,10 @@ Description: (RO) Reports device telemetry counters.
|
||||
exec_xlt<N> execution count of Translator slice N
|
||||
util_dcpr<N> utilization of Decompression slice N [%]
|
||||
exec_dcpr<N> execution count of Decompression slice N
|
||||
util_cnv<N> utilization of Compression and verify slice N [%]
|
||||
exec_cnv<N> execution count of Compression and verify slice N
|
||||
util_dcprz<N> utilization of Decompression slice N [%]
|
||||
exec_dcprz<N> execution count of Decompression slice N
|
||||
util_pke<N> utilization of PKE N [%]
|
||||
exec_pke<N> execution count of PKE N
|
||||
util_ucs<N> utilization of UCS slice N [%]
|
||||
@@ -81,6 +86,32 @@ Description: (RO) Reports device telemetry counters.
|
||||
exec_cph<N> execution count of Cipher slice N
|
||||
util_ath<N> utilization of Authentication slice N [%]
|
||||
exec_ath<N> execution count of Authentication slice N
|
||||
cmdq_wait_cnv<N> wait time for cmdq N to get Compression and verify
|
||||
slice ownership
|
||||
cmdq_exec_cnv<N> Compression and verify slice execution time while
|
||||
owned by cmdq N
|
||||
cmdq_drain_cnv<N> time taken for cmdq N to release Compression and
|
||||
verify slice ownership
|
||||
cmdq_wait_dcprz<N> wait time for cmdq N to get Decompression
|
||||
slice N ownership
|
||||
cmdq_exec_dcprz<N> Decompression slice execution time while
|
||||
owned by cmdq N
|
||||
cmdq_drain_dcprz<N> time taken for cmdq N to release Decompression
|
||||
slice ownership
|
||||
cmdq_wait_pke<N> wait time for cmdq N to get PKE slice ownership
|
||||
cmdq_exec_pke<N> PKE slice execution time while owned by cmdq N
|
||||
cmdq_drain_pke<N> time taken for cmdq N to release PKE slice
|
||||
ownership
|
||||
cmdq_wait_ucs<N> wait time for cmdq N to get UCS slice ownership
|
||||
cmdq_exec_ucs<N> UCS slice execution time while owned by cmdq N
|
||||
cmdq_drain_ucs<N> time taken for cmdq N to release UCS slice
|
||||
ownership
|
||||
cmdq_wait_ath<N> wait time for cmdq N to get Authentication slice
|
||||
ownership
|
||||
cmdq_exec_ath<N> Authentication slice execution time while owned
|
||||
by cmdq N
|
||||
cmdq_drain_ath<N> time taken for cmdq N to release Authentication
|
||||
slice ownership
|
||||
======================= ========================================
|
||||
|
||||
The telemetry report file can be read with the following command::
|
||||
@@ -100,7 +131,7 @@ Description: (RO) Reports device telemetry counters.
|
||||
If a device lacks of a specific accelerator, the corresponding
|
||||
attribute is not reported.
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/telemetry/rp_<A/B/C/D>_data
|
||||
Date: March 2024
|
||||
@@ -225,4 +256,4 @@ Description: (RW) Selects up to 4 Ring Pairs (RP) to monitor, one per file,
|
||||
``rp2srv`` from sysfs.
|
||||
See Documentation/ABI/testing/sysfs-driver-qat for details.
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
What: /sys/kernel/debug/pktcdvd/pktcdvd[0-7]
|
||||
Date: Oct. 2006
|
||||
KernelVersion: 2.6.20
|
||||
Contact: Thomas Maier <balagi@justmail.de>
|
||||
Description:
|
||||
|
||||
The pktcdvd module (packet writing driver) creates
|
||||
these files in debugfs:
|
||||
|
||||
/sys/kernel/debug/pktcdvd/pktcdvd[0-7]/
|
||||
|
||||
==== ====== ====================================
|
||||
info 0444 Lots of driver statistics and infos.
|
||||
==== ====== ====================================
|
||||
|
||||
Example::
|
||||
|
||||
cat /sys/kernel/debug/pktcdvd/pktcdvd0/info
|
||||
@@ -23,3 +23,9 @@ Contact: Longfang Liu <liulongfang@huawei.com>
|
||||
Description: Read the live migration status of the vfio device.
|
||||
The contents of the state file reflects the migration state
|
||||
relative to those defined in the vfio_device_mig_state enum
|
||||
|
||||
What: /sys/kernel/debug/vfio/<device>/migration/features
|
||||
Date: Oct 2025
|
||||
KernelVersion: 6.18
|
||||
Contact: Cédric Le Goater <clg@redhat.com>
|
||||
Description: Read the migration features of the vfio device.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
What: /sys/bus/acpi/devices/.../path
|
||||
Date: December 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
This attribute indicates the full path of ACPI namespace
|
||||
object associated with the device object. For example,
|
||||
@@ -12,7 +12,7 @@ Description:
|
||||
|
||||
What: /sys/bus/acpi/devices/.../modalias
|
||||
Date: July 2007
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
This attribute indicates the PNP IDs of the device object.
|
||||
That is acpi:HHHHHHHH:[CCCCCCC:]. Where each HHHHHHHH or
|
||||
@@ -20,7 +20,7 @@ Description:
|
||||
|
||||
What: /sys/bus/acpi/devices/.../hid
|
||||
Date: April 2005
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
This attribute indicates the hardware ID (_HID) of the
|
||||
device object. For example, PNP0103.
|
||||
@@ -29,14 +29,14 @@ Description:
|
||||
|
||||
What: /sys/bus/acpi/devices/.../description
|
||||
Date: October 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
This attribute contains the output of the device object's
|
||||
_STR control method, if present.
|
||||
|
||||
What: /sys/bus/acpi/devices/.../adr
|
||||
Date: October 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
This attribute contains the output of the device object's
|
||||
_ADR control method, which is present for ACPI device
|
||||
@@ -45,14 +45,14 @@ Description:
|
||||
|
||||
What: /sys/bus/acpi/devices/.../uid
|
||||
Date: October 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
This attribute contains the output of the device object's
|
||||
_UID control method, if present.
|
||||
|
||||
What: /sys/bus/acpi/devices/.../eject
|
||||
Date: December 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
Writing 1 to this attribute will trigger hot removal of
|
||||
this device object. This file exists for every device
|
||||
@@ -60,7 +60,7 @@ Description:
|
||||
|
||||
What: /sys/bus/acpi/devices/.../status
|
||||
Date: Jan, 2014
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
(RO) Returns the ACPI device status: enabled, disabled or
|
||||
functioning or present, if the method _STA is present.
|
||||
@@ -90,7 +90,7 @@ Description:
|
||||
|
||||
What: /sys/bus/acpi/devices/.../hrv
|
||||
Date: Apr, 2016
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
(RO) Allows users to read the hardware version of non-PCI
|
||||
hardware, if the _HRV control method is present. It is mostly
|
||||
|
||||
@@ -239,3 +239,9 @@ Date: March 2020
|
||||
KernelVersion: 5.7
|
||||
Contact: Mike Leach or Mathieu Poirier
|
||||
Description: (Write) Clear all channel / trigger programming.
|
||||
|
||||
What: /sys/bus/coresight/devices/<cti-name>/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
@@ -13,3 +13,9 @@ KernelVersion: 6.14
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (R) Show the trace ID that will appear in the trace stream
|
||||
coming from this trace entity.
|
||||
|
||||
What: /sys/bus/coresight/devices/dummy_source<N>/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
@@ -19,6 +19,12 @@ Description: (RW) Disables write access to the Trace RAM by stopping the
|
||||
into the Trace RAM following the trigger event is equal to the
|
||||
value stored in this register+1 (from ARM ETB-TRM).
|
||||
|
||||
What: /sys/bus/coresight/devices/<memory_map>.etb/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
What: /sys/bus/coresight/devices/<memory_map>.etb/mgmt/rdp
|
||||
Date: March 2016
|
||||
KernelVersion: 4.7
|
||||
|
||||
@@ -251,6 +251,12 @@ KernelVersion: 4.4
|
||||
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
|
||||
Description: (RO) Holds the cpu number this tracer is affined to.
|
||||
|
||||
What: /sys/bus/coresight/devices/<memory_map>.[etm|ptm]/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
What: /sys/bus/coresight/devices/<memory_map>.[etm|ptm]/mgmt/etmccr
|
||||
Date: September 2015
|
||||
KernelVersion: 4.4
|
||||
|
||||
@@ -329,6 +329,12 @@ Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
|
||||
Description: (RW) Access the selected single show PE comparator control
|
||||
register.
|
||||
|
||||
What: /sys/bus/coresight/devices/etm<N>/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
What: /sys/bus/coresight/devices/etm<N>/mgmt/trcoslsr
|
||||
Date: April 2015
|
||||
KernelVersion: 4.01
|
||||
|
||||
@@ -10,3 +10,9 @@ Date: November 2014
|
||||
KernelVersion: 3.19
|
||||
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
|
||||
Description: (RW) Defines input port priority order.
|
||||
|
||||
What: /sys/bus/coresight/devices/<memory_map>.funnel/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
@@ -51,3 +51,9 @@ KernelVersion: 4.7
|
||||
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
|
||||
Description: (RW) Holds the trace ID that will appear in the trace stream
|
||||
coming from this trace entity.
|
||||
|
||||
What: /sys/bus/coresight/devices/<memory_map>.stm/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
@@ -107,3 +107,9 @@ Contact: Anshuman Khandual <anshuman.khandual@arm.com>
|
||||
Description: (RW) Current Coresight TMC-ETR buffer mode selected. But user could
|
||||
only provide a mode which is supported for a given ETR device. This
|
||||
file is available only for TMC ETR devices.
|
||||
|
||||
What: /sys/bus/coresight/devices/<memory_map>.tmc/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
@@ -272,3 +272,9 @@ KernelVersion 6.15
|
||||
Contact: Jinlong Mao (QUIC) <quic_jinlmao@quicinc.com>, Tao Zhang (QUIC) <quic_taozha@quicinc.com>
|
||||
Description:
|
||||
(RW) Set/Get the enablement of the individual lane.
|
||||
|
||||
What: /sys/bus/coresight/devices/<tpdm-name>/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
@@ -12,3 +12,9 @@ Contact: Anshuman Khandual <anshuman.khandual@arm.com>
|
||||
Description: (Read) Shows if TRBE updates in the memory are with access
|
||||
and dirty flag updates as well. This value is fetched from
|
||||
the TRBIDR register.
|
||||
|
||||
What: /sys/bus/coresight/devices/trbe<cpu>/label
|
||||
Date: Aug 2025
|
||||
KernelVersion 6.18
|
||||
Contact: Mao Jinlong <quic_jinlmao@quicinc.com>
|
||||
Description: (Read) Show hardware context information of device.
|
||||
|
||||
@@ -309,26 +309,26 @@ Description:
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/cascade_counts_enable_component_id
|
||||
What: /sys/bus/counter/devices/counterX/external_input_phase_clock_select_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/compare_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/capture_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/ceiling_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/floor_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/compare_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/count_mode_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/direction_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/enable_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/error_noise_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/floor_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/num_overflows_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/prescaler_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/preset_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/preset_enable_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/signalZ_action_component_id
|
||||
What: /sys/bus/counter/devices/counterX/countY/num_overflows_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/cable_fault_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/cable_fault_enable_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/filter_clock_prescaler_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/frequency_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/index_polarity_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/polarity_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/synchronous_mode_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/frequency_component_id
|
||||
KernelVersion: 5.16
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
What: /sys/bus/event_source/devices/vpa_dtl/format
|
||||
Date: February 2025
|
||||
Contact: Linux on PowerPC Developer List <linuxppc-dev at lists.ozlabs.org>
|
||||
Description: Read-only. Attribute group to describe the magic bits
|
||||
that go into perf_event_attr.config for a particular pmu.
|
||||
(See ABI/testing/sysfs-bus-event_source-devices-format).
|
||||
|
||||
Each attribute under this group defines a bit range of the
|
||||
perf_event_attr.config. Supported attribute are listed
|
||||
below::
|
||||
|
||||
event = "config:0-7" - event ID
|
||||
|
||||
For example::
|
||||
|
||||
dtl_cede = "event=0x1"
|
||||
|
||||
What: /sys/bus/event_source/devices/vpa_dtl/events
|
||||
Date: February 2025
|
||||
Contact: Linux on PowerPC Developer List <linuxppc-dev at lists.ozlabs.org>
|
||||
Description: (RO) Attribute group to describe performance monitoring events
|
||||
for the Virtual Processor Dispatch Trace Log. Each attribute in
|
||||
this group describes a single performance monitoring event
|
||||
supported by vpa_dtl pmu. The name of the file is the name of
|
||||
the event (See ABI/testing/sysfs-bus-event_source-devices-events).
|
||||
100
Documentation/ABI/testing/sysfs-bus-i2c-devices-m24lr
Normal file
100
Documentation/ABI/testing/sysfs-bus-i2c-devices-m24lr
Normal file
@@ -0,0 +1,100 @@
|
||||
What: /sys/bus/i2c/devices/<busnum>-<primary-addr>/unlock
|
||||
Date: 2025-07-04
|
||||
KernelVersion: 6.17
|
||||
Contact: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
|
||||
Description:
|
||||
Write-only attribute used to present a password and unlock
|
||||
access to protected areas of the M24LR chip, including
|
||||
configuration registers such as the Sector Security Status
|
||||
(SSS) bytes. A valid password must be written to enable write
|
||||
access to these regions via the I2C interface.
|
||||
|
||||
Format:
|
||||
- Hexadecimal string representing a 32-bit (4-byte) password
|
||||
- Accepts 1 to 8 hex digits (e.g., "c", "1F", "a1b2c3d4")
|
||||
- No "0x" prefix, whitespace, or trailing newline
|
||||
- Case-insensitive
|
||||
|
||||
Behavior:
|
||||
- If the password matches the internal stored value,
|
||||
access to protected memory/configuration is granted
|
||||
- If the password does not match the internally stored value,
|
||||
it will fail silently
|
||||
|
||||
What: /sys/bus/i2c/devices/<busnum>-<primary-addr>/new_pass
|
||||
Date: 2025-07-04
|
||||
KernelVersion: 6.17
|
||||
Contact: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
|
||||
Description:
|
||||
Write-only attribute used to update the password required to
|
||||
unlock the M24LR chip.
|
||||
|
||||
Format:
|
||||
- Hexadecimal string representing a new 32-bit password
|
||||
- Accepts 1 to 8 hex digits (e.g., "1A", "ffff", "c0ffee00")
|
||||
- No "0x" prefix, whitespace, or trailing newline
|
||||
- Case-insensitive
|
||||
|
||||
Behavior:
|
||||
- Overwrites the current password stored in the I2C password
|
||||
register
|
||||
- Requires the device to be unlocked before changing the
|
||||
password
|
||||
- If the device is locked, the write silently fails
|
||||
|
||||
What: /sys/bus/i2c/devices/<busnum>-<primary-addr>/uid
|
||||
Date: 2025-07-04
|
||||
KernelVersion: 6.17
|
||||
Contact: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
|
||||
Description:
|
||||
Read-only attribute that exposes the 8-byte unique identifier
|
||||
programmed into the M24LR chip at the factory.
|
||||
|
||||
Format:
|
||||
- Lowercase hexadecimal string representing a 64-bit value
|
||||
- 1 to 16 hex digits (e.g., "e00204f12345678")
|
||||
- No "0x" prefix
|
||||
- Includes a trailing newline
|
||||
|
||||
What: /sys/bus/i2c/devices/<busnum>-<primary-addr>/total_sectors
|
||||
Date: 2025-07-04
|
||||
KernelVersion: 6.17
|
||||
Contact: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
|
||||
Description:
|
||||
Read-only attribute that exposes the total number of EEPROM
|
||||
sectors available in the M24LR chip.
|
||||
|
||||
Format:
|
||||
- 1 to 2 hex digits (e.g. "F")
|
||||
- No "0x" prefix
|
||||
- Includes a trailing newline
|
||||
|
||||
Notes:
|
||||
- Value is encoded by the chip and corresponds to the EEPROM
|
||||
size (e.g., 3 = 4 kbit for M24LR04E-R)
|
||||
|
||||
What: /sys/bus/i2c/devices/<busnum>-<primary-addr>/sss
|
||||
Date: 2025-07-04
|
||||
KernelVersion: 6.17
|
||||
Contact: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
|
||||
Description:
|
||||
Read/write binary attribute representing the Sector Security
|
||||
Status (SSS) bytes for all EEPROM sectors in STMicroelectronics
|
||||
M24LR chips.
|
||||
|
||||
Each EEPROM sector has one SSS byte, which controls I2C and
|
||||
RF access through protection bits and optional password
|
||||
authentication.
|
||||
|
||||
Format:
|
||||
- The file contains one byte per EEPROM sector
|
||||
- Byte at offset N corresponds to sector N
|
||||
- Binary access only; use tools like dd, Python, or C that
|
||||
support byte-level I/O and offset control.
|
||||
|
||||
Notes:
|
||||
- The number of valid bytes in this file is equal to the
|
||||
value exposed by 'total_sectors' file
|
||||
- Write access requires prior password authentication in
|
||||
I2C mode
|
||||
- Refer to the M24LR datasheet for full SSS bit layout
|
||||
@@ -141,8 +141,6 @@ Description:
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_raw
|
||||
KernelVersion: 2.6.35
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
@@ -169,7 +167,18 @@ Description:
|
||||
is required is a consistent labeling. Units after application
|
||||
of scale and offset are millivolts.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltageY_rms_raw
|
||||
KernelVersion: 6.18
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Raw (unscaled) Root Mean Square (RMS) voltage measurement from
|
||||
channel Y. Units after application of scale and offset are
|
||||
millivolts.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_powerY_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_powerY_active_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_powerY_reactive_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_powerY_apparent_raw
|
||||
KernelVersion: 4.5
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
@@ -178,6 +187,13 @@ Description:
|
||||
unique to allow association with event codes. Units after
|
||||
application of scale and offset are milliwatts.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_powerY_powerfactor
|
||||
KernelVersion: 6.18
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Power factor measurement from channel Y. Power factor is the
|
||||
ratio of active power to apparent power. The value is unitless.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw
|
||||
KernelVersion: 3.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@@ -417,18 +433,14 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage_q_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage_i_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_current_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_current_q_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_current_i_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset
|
||||
@@ -456,21 +468,15 @@ Description:
|
||||
to the _raw output.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_current_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_current_i_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_current_q_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale
|
||||
@@ -559,6 +565,30 @@ Description:
|
||||
- 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_convdelay
|
||||
KernelVersion: 6.17
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Delay of start of conversion from common reference point shared
|
||||
by all channels. Can be writable when used to compensate for
|
||||
delay variation introduced by external filters feeding a
|
||||
simultaneous sampling ADC.
|
||||
|
||||
E.g., for the ad7606 ADC series, this value is intended as a
|
||||
configurable time delay in seconds, to correct delay introduced
|
||||
by an optional external filtering circuit.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_convdelay_available
|
||||
KernelVersion: 6.16
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Available values of convdelay. Maybe expressed as:
|
||||
|
||||
- a range specified as "[min step max]"
|
||||
|
||||
If shared across all channels, <type>_convdelay_available
|
||||
is used.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibscale
|
||||
@@ -579,11 +609,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_pressure_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_currentY_calibscale
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_calibscale
|
||||
@@ -805,7 +831,11 @@ Description:
|
||||
all the other channels, since it involves changing the VCO
|
||||
fundamental output frequency.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltageY_i_phase
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltageY_q_phase
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_phase
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_i_phase
|
||||
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_q_phase
|
||||
KernelVersion: 3.4.0
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
@@ -1434,10 +1464,6 @@ What: /sys/.../iio:deviceX/bufferY/in_timestamp_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_supply_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY-voltageZ_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_i_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_q_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltage_i_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltage_q_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_incli_x_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_incli_y_en
|
||||
What: /sys/.../iio:deviceX/bufferY/in_pressureY_en
|
||||
@@ -1458,10 +1484,6 @@ What: /sys/.../iio:deviceX/bufferY/in_incli_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltage_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_supply_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_i_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_q_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltage_i_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltage_q_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_timestamp_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_pressureY_type
|
||||
What: /sys/.../iio:deviceX/bufferY/in_pressure_type
|
||||
@@ -1499,10 +1521,6 @@ Description:
|
||||
|
||||
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
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltageY_q_index
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltage_i_index
|
||||
What: /sys/.../iio:deviceX/bufferY/in_voltage_q_index
|
||||
What: /sys/.../iio:deviceX/bufferY/in_accel_x_index
|
||||
What: /sys/.../iio:deviceX/bufferY/in_accel_y_index
|
||||
What: /sys/.../iio:deviceX/bufferY/in_accel_z_index
|
||||
@@ -1569,6 +1587,9 @@ Description:
|
||||
|
||||
What: /sys/.../iio:deviceX/in_energy_input
|
||||
What: /sys/.../iio:deviceX/in_energy_raw
|
||||
What: /sys/.../iio:deviceX/in_energyY_active_raw
|
||||
What: /sys/.../iio:deviceX/in_energyY_reactive_raw
|
||||
What: /sys/.../iio:deviceX/in_energyY_apparent_raw
|
||||
KernelVersion: 4.0
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
@@ -1692,8 +1713,6 @@ Description:
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_raw
|
||||
KernelVersion: 3.17
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
@@ -1709,6 +1728,14 @@ Description:
|
||||
component of the signal while the 'q' channel contains the quadrature
|
||||
component.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altcurrentY_rms_raw
|
||||
KernelVersion: 6.18
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Raw (unscaled no bias removal etc.) Root Mean Square (RMS) current
|
||||
measurement from channel Y. Units after application of scale and
|
||||
offset are milliamps.
|
||||
|
||||
What: /sys/.../iio:deviceX/in_energy_en
|
||||
What: /sys/.../iio:deviceX/in_distance_en
|
||||
What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en
|
||||
@@ -2278,21 +2305,33 @@ Description:
|
||||
Reading returns a list with the possible filter modes. Options
|
||||
for the attribute:
|
||||
|
||||
* "none" - Filter is disabled/bypassed.
|
||||
* "sinc1" - The digital sinc1 filter. Fast 1st
|
||||
conversion time. Poor noise performance.
|
||||
* "sinc3" - The digital sinc3 filter. Moderate 1st
|
||||
conversion time. Good noise performance.
|
||||
* "sinc4" - Sinc 4. Excellent noise performance. Long
|
||||
1st conversion time.
|
||||
* "sinc5" - The digital sinc5 filter. Excellent noise
|
||||
performance
|
||||
* "sinc4+sinc1" - Sinc4 + averaging by 8. Low 1st conversion
|
||||
time.
|
||||
* "sinc3+rej60" - Sinc3 + 60Hz rejection.
|
||||
* "sinc3+sinc1" - Sinc3 + averaging by 8. Low 1st conversion
|
||||
time.
|
||||
* "sinc3+pf1" - Sinc3 + device specific Post Filter 1.
|
||||
* "sinc3+pf2" - Sinc3 + device specific Post Filter 2.
|
||||
* "sinc3+pf3" - Sinc3 + device specific Post Filter 3.
|
||||
* "sinc3+pf4" - Sinc3 + device specific Post Filter 4.
|
||||
* "sinc3+rej60" - Sinc3 + 60Hz rejection.
|
||||
* "sinc3+sinc1" - Sinc3 + averaging by 8. Low 1st conversion
|
||||
time.
|
||||
* "sinc4" - Sinc 4. Excellent noise performance. Long
|
||||
1st conversion time.
|
||||
* "sinc4+lp" - Sinc4 + Low Pass Filter.
|
||||
* "sinc4+sinc1" - Sinc4 + averaging by 8. Low 1st conversion
|
||||
time.
|
||||
* "sinc4+rej60" - Sinc4 + 60Hz rejection.
|
||||
* "sinc5" - The digital sinc5 filter. Excellent noise
|
||||
performance
|
||||
* "sinc5+avg" - Sinc5 + averaging by 4.
|
||||
* "sinc5+pf1" - Sinc5 + device specific Post Filter 1.
|
||||
* "sinc5+sinc1" - Sinc5 + Sinc1.
|
||||
* "sinc5+sinc1+pf1" - Sinc5 + Sinc1 + device specific Post Filter 1.
|
||||
* "sinc5+sinc1+pf2" - Sinc5 + Sinc1 + device specific Post Filter 2.
|
||||
* "sinc5+sinc1+pf3" - Sinc5 + Sinc1 + device specific Post Filter 3.
|
||||
* "sinc5+sinc1+pf4" - Sinc5 + Sinc1 + device specific Post Filter 4.
|
||||
* "wideband" - filter with wideband low ripple passband
|
||||
and sharp transition band.
|
||||
|
||||
|
||||
@@ -7,16 +7,6 @@ Description:
|
||||
corresponding calibration offsets can be read from `*_calibbias`
|
||||
entries.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/location
|
||||
Date: July 2015
|
||||
KernelVersion: 4.7
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
This attribute returns a string with the physical location where
|
||||
the motion sensor is placed. For example, in a laptop a motion
|
||||
sensor can be located on the base or on the lid. Current valid
|
||||
values are 'base' and 'lid'.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/id
|
||||
Date: September 2017
|
||||
KernelVersion: 4.14
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0-1_i_calibphase
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0-altvoltage1_i_calibphase
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Read/write unscaled value for the Local Oscillatior path quadrature I phase shift.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0-1_q_calibphase
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltage0-altvoltage1_q_calibphase
|
||||
KernelVersion:
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
||||
@@ -612,3 +612,12 @@ Description:
|
||||
|
||||
# ls doe_features
|
||||
0001:01 0001:02 doe_discovery
|
||||
|
||||
What: /sys/bus/pci/devices/.../serial_number
|
||||
Date: December 2025
|
||||
Contact: Matthew Wood <thepacketgeek@gmail.com>
|
||||
Description:
|
||||
This is visible only for PCI devices that support the serial
|
||||
number extended capability. The file is read only and due to
|
||||
the possible sensitivity of accessible serial numbers, admin
|
||||
only.
|
||||
|
||||
@@ -132,3 +132,12 @@ Description:
|
||||
|
||||
A list of governors that support the node:
|
||||
- simple_ondemand
|
||||
|
||||
What: /sys/class/devfreq/.../related_cpus
|
||||
Date: June 2025
|
||||
Contact: Linux power management list <linux-pm@vger.kernel.org>
|
||||
Description: The list of CPUs whose performance is closely related to the
|
||||
frequency of this devfreq domain.
|
||||
|
||||
This file is only present if a specific devfreq device is
|
||||
closely associated with a subset of CPUs.
|
||||
|
||||
8
Documentation/ABI/testing/sysfs-class-drm
Normal file
8
Documentation/ABI/testing/sysfs-class-drm
Normal file
@@ -0,0 +1,8 @@
|
||||
What: /sys/class/drm/.../boot_display
|
||||
Date: January 2026
|
||||
Contact: Linux DRI developers <dri-devel@vger.kernel.org>
|
||||
Description:
|
||||
This file indicates that displays connected to the device were
|
||||
used to display the boot sequence. If a display connected to
|
||||
the device was used to display the boot sequence the file will
|
||||
be present and contain "1".
|
||||
134
Documentation/ABI/testing/sysfs-class-intel_pmt-features
Normal file
134
Documentation/ABI/testing/sysfs-class-intel_pmt-features
Normal file
@@ -0,0 +1,134 @@
|
||||
What: /sys/class/intel_pmt/features-<PCI BDF>/
|
||||
Date: 2025-04-24
|
||||
KernelVersion: 6.16
|
||||
Contact: david.e.box@linux.intel.com
|
||||
Description:
|
||||
The `features-<PCI BDF>/` directory represents the "features"
|
||||
capability exposed by Intel PMT (Platform Monitoring Technology)
|
||||
for the given PCI device.
|
||||
|
||||
Each directory corresponds to a PMT feature and contains
|
||||
attributes describing the available telemetry, monitoring, or
|
||||
control functionalities.
|
||||
|
||||
Directory Structure:
|
||||
|
||||
/sys/class/intel_pmt/features-<PCI BDF>/
|
||||
├── accelerator_telemetry/ # Per-accelerator telemetry data
|
||||
├── crash_log/ # Contains system crash telemetry logs
|
||||
├── per_core_environment_telemetry/ # Environmental telemetry per core
|
||||
├── per_core_performance_telemetry/ # Performance telemetry per core
|
||||
├── per_rmid_energy_telemetry/ # Energy telemetry for RMIDs
|
||||
├── per_rmid_perf_telemetry/ # Performance telemetry for RMIDs
|
||||
├── tpmi_control/ # TPMI-related controls and telemetry
|
||||
├── tracing/ # PMT tracing features
|
||||
└── uncore_telemetry/ # Uncore telemetry data
|
||||
|
||||
Common Files (Present in all feature directories):
|
||||
|
||||
caps
|
||||
- Read-only
|
||||
- Lists available capabilities for this feature.
|
||||
|
||||
guids
|
||||
- Read-only
|
||||
- Lists GUIDs associated with this feature.
|
||||
|
||||
Additional Attributes (Conditional Presence):
|
||||
|
||||
max_command_size
|
||||
- Read-only
|
||||
- Present if the feature supports out-of-band MCTP access.
|
||||
- Maximum supported MCTP command size for out-of-band PMT access (bytes).
|
||||
|
||||
max_stream_size
|
||||
- Read-only
|
||||
- Present if the feature supports out-of-band MCTP access.
|
||||
- Maximum supported MCTP stream size (bytes).
|
||||
|
||||
min_watcher_period_ms
|
||||
- Read-only
|
||||
- Present if the feature supports the watcher API.
|
||||
The watcher API provides a writable control interface that allows user
|
||||
configuration of monitoring behavior, such as setting the sampling or
|
||||
reporting interval.
|
||||
- Minimum supported time period for the watcher interface (milliseconds).
|
||||
|
||||
num_rmids
|
||||
- Read-only
|
||||
- Present if the feature supports RMID (Resource Monitoring ID) telemetry.
|
||||
RMIDs are identifiers used by hardware to track and report resource usage,
|
||||
such as memory bandwidth or energy consumption, on a per-logical-entity
|
||||
basis (e.g., per core, thread, or process group).
|
||||
- Maximum number of RMIDs tracked simultaneously.
|
||||
|
||||
Example:
|
||||
For a device with PCI BDF `0000:00:03.1`, the directory tree could look like:
|
||||
|
||||
/sys/class/intel_pmt/features-0000:00:03.1/
|
||||
├── accelerator_telemetry/
|
||||
│ ├── caps
|
||||
│ ├── guids
|
||||
│ ├── max_command_size
|
||||
│ ├── max_stream_size
|
||||
│ ├── min_watcher_period_ms
|
||||
├── crash_log/
|
||||
│ ├── caps
|
||||
│ ├── guids
|
||||
│ ├── max_command_size
|
||||
│ ├── max_stream_size
|
||||
├── per_core_environment_telemetry/
|
||||
│ ├── caps
|
||||
│ ├── guids
|
||||
│ ├── max_command_size
|
||||
│ ├── max_stream_size
|
||||
│ ├── min_watcher_period_ms
|
||||
├── per_rmid_energy_telemetry/
|
||||
│ ├── caps
|
||||
│ ├── guids
|
||||
│ ├── max_command_size
|
||||
│ ├── max_stream_size
|
||||
│ ├── min_watcher_period_ms
|
||||
│ ├── num_rmids
|
||||
├── tpmi_control/
|
||||
│ ├── caps
|
||||
│ ├── guids
|
||||
├── tracing/
|
||||
│ ├── caps
|
||||
│ ├── guids
|
||||
├── uncore_telemetry/
|
||||
│ ├── caps
|
||||
│ ├── guids
|
||||
│ ├── max_command_size
|
||||
│ ├── max_stream_size
|
||||
│ ├── min_watcher_period_ms
|
||||
|
||||
Notes:
|
||||
- Some attributes are only present if the corresponding feature supports
|
||||
the capability (e.g., `max_command_size` for MCTP-capable features).
|
||||
- Features supporting RMIDs include `num_rmids`.
|
||||
- Features supporting the watcher API include `min_watcher_period_ms`.
|
||||
- The `caps` file provides additional information about the functionality
|
||||
of the feature.
|
||||
|
||||
Example 'caps' content for the 'tracing' feature:
|
||||
|
||||
/sys/class/intel_pmt/features-0000:00:03.1/
|
||||
├── tracing/
|
||||
│ ├── caps
|
||||
|
||||
telemetry Available: No
|
||||
watcher Available: Yes
|
||||
crashlog Available: No
|
||||
streaming Available: No
|
||||
threashold Available: No
|
||||
window Available: No
|
||||
config Available: Yes
|
||||
tracing Available: No
|
||||
inband Available: Yes
|
||||
oob Available: Yes
|
||||
secure_chan Available: No
|
||||
pmt_sp Available: Yes
|
||||
pmt_sp_policy Available: Yes
|
||||
mailbox Available: Yes
|
||||
bios_lock Available: Yes
|
||||
@@ -26,6 +26,16 @@ Description:
|
||||
This ID is used to match the device with the appropriate
|
||||
driver.
|
||||
|
||||
What: /sys/class/mdio_bus/<bus>/<device>/c45_phy_ids/mmd<n>_device_id
|
||||
Date: June 2025
|
||||
KernelVersion: 6.17
|
||||
Contact: netdev@vger.kernel.org
|
||||
Description:
|
||||
This attribute contains the 32-bit PHY Identifier as reported
|
||||
by the device during bus enumeration, encoded in hexadecimal.
|
||||
These C45 IDs are used to match the device with the appropriate
|
||||
driver. These files are invisible to the C22 device.
|
||||
|
||||
What: /sys/class/mdio_bus/<bus>/<device>/phy_interface
|
||||
Date: February 2014
|
||||
KernelVersion: 3.15
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
sysfs interface
|
||||
---------------
|
||||
The pktcdvd module (packet writing driver) creates the following files in the
|
||||
sysfs: (<devid> is in the format major:minor)
|
||||
|
||||
What: /sys/class/pktcdvd/add
|
||||
What: /sys/class/pktcdvd/remove
|
||||
What: /sys/class/pktcdvd/device_map
|
||||
Date: Oct. 2006
|
||||
KernelVersion: 2.6.20
|
||||
Contact: Thomas Maier <balagi@justmail.de>
|
||||
Description:
|
||||
|
||||
========== ==============================================
|
||||
add (WO) Write a block device id (major:minor) to
|
||||
create a new pktcdvd device and map it to the
|
||||
block device.
|
||||
|
||||
remove (WO) Write the pktcdvd device id (major:minor)
|
||||
to remove the pktcdvd device.
|
||||
|
||||
device_map (RO) Shows the device mapping in format:
|
||||
pktcdvd[0-7] <pktdevid> <blkdevid>
|
||||
========== ==============================================
|
||||
|
||||
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/dev
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/uevent
|
||||
Date: Oct. 2006
|
||||
KernelVersion: 2.6.20
|
||||
Contact: Thomas Maier <balagi@justmail.de>
|
||||
Description:
|
||||
dev: (RO) Device id
|
||||
|
||||
uevent: (WO) To send a uevent
|
||||
|
||||
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/packets_started
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/packets_finished
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_written
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_read
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_read_gather
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/reset
|
||||
Date: Oct. 2006
|
||||
KernelVersion: 2.6.20
|
||||
Contact: Thomas Maier <balagi@justmail.de>
|
||||
Description:
|
||||
packets_started: (RO) Number of started packets.
|
||||
|
||||
packets_finished: (RO) Number of finished packets.
|
||||
|
||||
kb_written: (RO) kBytes written.
|
||||
|
||||
kb_read: (RO) kBytes read.
|
||||
|
||||
kb_read_gather: (RO) kBytes read to fill write packets.
|
||||
|
||||
reset: (WO) Write any value to it to reset
|
||||
pktcdvd device statistic values, like
|
||||
bytes read/written.
|
||||
|
||||
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/write_queue/size
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/write_queue/congestion_off
|
||||
What: /sys/class/pktcdvd/pktcdvd[0-7]/write_queue/congestion_on
|
||||
Date: Oct. 2006
|
||||
KernelVersion: 2.6.20
|
||||
Contact: Thomas Maier <balagi@justmail.de>
|
||||
Description:
|
||||
============== ================================================
|
||||
size (RO) Contains the size of the bio write queue.
|
||||
|
||||
congestion_off (RW) If bio write queue size is below this mark,
|
||||
accept new bio requests from the block layer.
|
||||
|
||||
congestion_on (RW) If bio write queue size is higher as this
|
||||
mark, do no longer accept bio write requests
|
||||
from the block layer and wait till the pktcdvd
|
||||
device has processed enough bio's so that bio
|
||||
write queue size is below congestion off mark.
|
||||
A value of <= 0 disables congestion control.
|
||||
============== ================================================
|
||||
|
||||
|
||||
Example:
|
||||
--------
|
||||
To use the pktcdvd sysfs interface directly, you can do::
|
||||
|
||||
# create a new pktcdvd device mapped to /dev/hdc
|
||||
echo "22:0" >/sys/class/pktcdvd/add
|
||||
cat /sys/class/pktcdvd/device_map
|
||||
# assuming device pktcdvd0 was created, look at stat's
|
||||
cat /sys/class/pktcdvd/pktcdvd0/stat/kb_written
|
||||
# print the device id of the mapped block device
|
||||
fgrep pktcdvd0 /sys/class/pktcdvd/device_map
|
||||
# remove device, using pktcdvd0 device id 253:0
|
||||
echo "253:0" >/sys/class/pktcdvd/remove
|
||||
@@ -553,6 +553,43 @@ Description:
|
||||
Integer > 0: representing full cycles
|
||||
Integer = 0: cycle_count info is not available
|
||||
|
||||
What: /sys/class/power_supply/<supply_name>/internal_resistance
|
||||
Date: August 2025
|
||||
Contact: linux-arm-msm@vger.kernel.org
|
||||
Description:
|
||||
Represent the battery's internal resistance, often referred
|
||||
to as Equivalent Series Resistance (ESR). It is a dynamic
|
||||
parameter that reflects the opposition to current flow within
|
||||
the cell. It is not a fixed value but varies significantly
|
||||
based on several operational conditions, including battery
|
||||
state of charge (SoC), temperature, and whether the battery
|
||||
is in a charging or discharging state.
|
||||
|
||||
Access: Read
|
||||
|
||||
Valid values: Represented in microohms
|
||||
|
||||
What: /sys/class/power_supply/<supply_name>/state_of_health
|
||||
Date: August 2025
|
||||
Contact: linux-arm-msm@vger.kernel.org
|
||||
Description:
|
||||
The state_of_health parameter quantifies the overall condition
|
||||
of a battery as a percentage, reflecting its ability to deliver
|
||||
rated performance relative to its original specifications. It is
|
||||
dynamically computed using a combination of learned capacity
|
||||
and impedance-based degradation indicators, both of which evolve
|
||||
over the battery's lifecycle.
|
||||
Note that the exact algorithms are kept secret by most battery
|
||||
vendors and the value from different battery vendors cannot be
|
||||
compared with each other as there is no vendor-agnostic definition
|
||||
of "performance". Also this usually cannot be used for any
|
||||
calculations (i.e. this is not the factor between charge_full and
|
||||
charge_full_design).
|
||||
|
||||
Access: Read
|
||||
|
||||
Valid values: 0 - 100 (percent)
|
||||
|
||||
**USB Properties**
|
||||
|
||||
What: /sys/class/power_supply/<supply_name>/input_current_limit
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
What: /sys/devices/.../power/
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power directory contains attributes
|
||||
allowing the user space to check and modify some power
|
||||
@@ -8,7 +8,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/wakeup attribute allows the user
|
||||
space to check if the device is enabled to wake up the system
|
||||
@@ -34,7 +34,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/control
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/control attribute allows the user
|
||||
space to control the run-time power management of the device.
|
||||
@@ -53,10 +53,10 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/async
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../async attribute allows the user space to
|
||||
enable or diasble the device's suspend and resume callbacks to
|
||||
enable or disable the device's suspend and resume callbacks to
|
||||
be executed asynchronously (ie. in separate threads, in parallel
|
||||
with the main suspend/resume thread) during system-wide power
|
||||
transitions (eg. suspend to RAM, hibernation).
|
||||
@@ -79,7 +79,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_count
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_count attribute contains the number
|
||||
of signaled wakeup events associated with the device. This
|
||||
@@ -90,7 +90,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_active_count
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_active_count attribute contains the
|
||||
number of times the processing of wakeup events associated with
|
||||
@@ -102,7 +102,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_abort_count
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_abort_count attribute contains the
|
||||
number of times the processing of a wakeup event associated with
|
||||
@@ -114,7 +114,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_expire_count
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_expire_count attribute contains the
|
||||
number of times a wakeup event associated with the device has
|
||||
@@ -126,7 +126,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_active
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_active attribute contains either 1,
|
||||
or 0, depending on whether or not a wakeup event associated with
|
||||
@@ -138,7 +138,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_total_time_ms
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_total_time_ms attribute contains
|
||||
the total time of processing wakeup events associated with the
|
||||
@@ -149,7 +149,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_max_time_ms
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_max_time_ms attribute contains
|
||||
the maximum time of processing a single wakeup event associated
|
||||
@@ -161,7 +161,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_last_time_ms
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_last_time_ms attribute contains
|
||||
the value of the monotonic clock corresponding to the time of
|
||||
@@ -173,7 +173,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute
|
||||
contains the total time the device has been preventing
|
||||
@@ -203,7 +203,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/pm_qos_resume_latency_us
|
||||
Date: March 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/pm_qos_resume_latency_us attribute
|
||||
contains the PM QoS resume latency limit for the given device,
|
||||
@@ -223,7 +223,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/pm_qos_latency_tolerance_us
|
||||
Date: January 2014
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/pm_qos_latency_tolerance_us attribute
|
||||
contains the PM QoS active state latency tolerance limit for the
|
||||
@@ -248,7 +248,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/pm_qos_no_power_off
|
||||
Date: September 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/pm_qos_no_power_off attribute
|
||||
is used for manipulating the PM QoS "no power off" flag. If
|
||||
@@ -263,7 +263,7 @@ Description:
|
||||
|
||||
What: /sys/devices/.../power/runtime_status
|
||||
Date: April 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/runtime_status attribute contains
|
||||
the current runtime PM status of the device, which may be
|
||||
@@ -274,15 +274,15 @@ What: /sys/devices/.../power/runtime_active_time
|
||||
Date: Jul 2010
|
||||
Contact: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Description:
|
||||
Reports the total time that the device has been active.
|
||||
Used for runtime PM statistics.
|
||||
Reports the total time that the device has been active, in
|
||||
milliseconds. Used for runtime PM statistics.
|
||||
|
||||
What: /sys/devices/.../power/runtime_suspended_time
|
||||
Date: Jul 2010
|
||||
Contact: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Description:
|
||||
Reports total time that the device has been suspended.
|
||||
Used for runtime PM statistics.
|
||||
Reports total time that the device has been suspended, in
|
||||
milliseconds. Used for runtime PM statistics.
|
||||
|
||||
What: /sys/devices/.../power/runtime_usage
|
||||
Date: Apr 2010
|
||||
|
||||
@@ -584,7 +584,9 @@ What: /sys/devices/system/cpu/vulnerabilities
|
||||
/sys/devices/system/cpu/vulnerabilities/spectre_v1
|
||||
/sys/devices/system/cpu/vulnerabilities/spectre_v2
|
||||
/sys/devices/system/cpu/vulnerabilities/srbds
|
||||
/sys/devices/system/cpu/vulnerabilities/tsa
|
||||
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
|
||||
/sys/devices/system/cpu/vulnerabilities/vmscape
|
||||
Date: January 2018
|
||||
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||
Description: Information about CPU vulnerabilities
|
||||
|
||||
8
Documentation/ABI/testing/sysfs-driver-framer-pef2256
Normal file
8
Documentation/ABI/testing/sysfs-driver-framer-pef2256
Normal file
@@ -0,0 +1,8 @@
|
||||
What: /sys/bus/platform/devices/xxx/version
|
||||
Date: Sep 2025
|
||||
Contact: netdev@vger.kernel.org
|
||||
Description: Reports the version of the PEF2256 framer
|
||||
|
||||
Access: Read
|
||||
|
||||
Valid values: Represented as string
|
||||
@@ -14,7 +14,7 @@ Description: (RW) Reports the current state of the QAT device. Write to
|
||||
It is possible to transition the device from up to down only
|
||||
if the device is up and vice versa.
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat/cfg_services
|
||||
Date: June 2022
|
||||
@@ -23,24 +23,28 @@ Contact: qat-linux@intel.com
|
||||
Description: (RW) Reports the current configuration of the QAT device.
|
||||
Write to the file to change the configured services.
|
||||
|
||||
The values are:
|
||||
One or more services can be enabled per device.
|
||||
Certain configurations are restricted to specific device types;
|
||||
where applicable this is explicitly indicated, for example
|
||||
(qat_6xxx) denotes applicability exclusively to that device series.
|
||||
|
||||
* sym;asym: the device is configured for running crypto
|
||||
services
|
||||
* asym;sym: identical to sym;asym
|
||||
* dc: the device is configured for running compression services
|
||||
* dcc: identical to dc but enables the dc chaining feature,
|
||||
hash then compression. If this is not required chose dc
|
||||
* sym: the device is configured for running symmetric crypto
|
||||
services
|
||||
* asym: the device is configured for running asymmetric crypto
|
||||
services
|
||||
* asym;dc: the device is configured for running asymmetric
|
||||
crypto services and compression services
|
||||
* dc;asym: identical to asym;dc
|
||||
* sym;dc: the device is configured for running symmetric crypto
|
||||
services and compression services
|
||||
* dc;sym: identical to sym;dc
|
||||
The available services include:
|
||||
|
||||
* sym: Configures the device for symmetric cryptographic operations.
|
||||
* asym: Configures the device for asymmetric cryptographic operations.
|
||||
* dc: Configures the device for compression and decompression
|
||||
operations.
|
||||
* dcc: Similar to dc, but with the additional dc chaining feature
|
||||
enabled, cipher then compress (qat_6xxx), hash then compression.
|
||||
If this is not required choose dc.
|
||||
* decomp: Configures the device for decompression operations (qat_6xxx).
|
||||
|
||||
Service combinations are permitted for all services except dcc.
|
||||
On QAT GEN4 devices (qat_4xxx driver) a maximum of two services can be
|
||||
combined and on QAT GEN6 devices (qat_6xxx driver ) a maximum of three
|
||||
services can be combined.
|
||||
The order of services is not significant. For instance, sym;asym is
|
||||
functionally equivalent to asym;sym.
|
||||
|
||||
It is possible to set the configuration only if the device
|
||||
is in the `down` state (see /sys/bus/pci/devices/<BDF>/qat/state)
|
||||
@@ -59,7 +63,7 @@ Description: (RW) Reports the current configuration of the QAT device.
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat/cfg_services
|
||||
dc
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat/pm_idle_enabled
|
||||
Date: June 2023
|
||||
@@ -94,7 +98,7 @@ Description: (RW) This configuration option provides a way to force the device i
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat/pm_idle_enabled
|
||||
0
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat/rp2srv
|
||||
Date: January 2024
|
||||
@@ -126,7 +130,7 @@ Description:
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat/rp2srv
|
||||
sym
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat/num_rps
|
||||
Date: January 2024
|
||||
@@ -140,7 +144,7 @@ Description:
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat/num_rps
|
||||
64
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat/auto_reset
|
||||
Date: May 2024
|
||||
@@ -160,4 +164,4 @@ Description: (RW) Reports the current state of the autoreset feature
|
||||
* 0/Nn/off: auto reset disabled. If the device encounters an
|
||||
unrecoverable error, it will not be reset.
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
@@ -31,7 +31,7 @@ Description:
|
||||
* rm_all: Removes all the configured SLAs.
|
||||
* Inputs: None
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat_rl/rp
|
||||
Date: January 2024
|
||||
@@ -68,7 +68,7 @@ Description:
|
||||
## Write
|
||||
# echo 0x5 > /sys/bus/pci/devices/<BDF>/qat_rl/rp
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat_rl/id
|
||||
Date: January 2024
|
||||
@@ -101,7 +101,7 @@ Description:
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat_rl/rp
|
||||
0x5 ## ring pair ID 0 and ring pair ID 2
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat_rl/cir
|
||||
Date: January 2024
|
||||
@@ -135,7 +135,7 @@ Description:
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat_rl/cir
|
||||
500
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat_rl/pir
|
||||
Date: January 2024
|
||||
@@ -169,7 +169,7 @@ Description:
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat_rl/pir
|
||||
750
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat_rl/srv
|
||||
Date: January 2024
|
||||
@@ -202,7 +202,7 @@ Description:
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat_rl/srv
|
||||
dc
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/qat_rl/cap_rem
|
||||
Date: January 2024
|
||||
@@ -223,4 +223,4 @@ Description:
|
||||
# cat /sys/bus/pci/devices/<BDF>/qat_rl/cap_rem
|
||||
0
|
||||
|
||||
This attribute is only available for qat_4xxx devices.
|
||||
This attribute is only available for qat_4xxx and qat_6xxx devices.
|
||||
|
||||
@@ -20,17 +20,6 @@ Description: Some Samsung laptops have different "performance levels"
|
||||
and it's still unknown if this value even changes
|
||||
anything, other than making the user feel a bit better.
|
||||
|
||||
What: /sys/devices/platform/samsung/battery_life_extender
|
||||
Date: December 1, 2011
|
||||
KernelVersion: 3.3
|
||||
Contact: Corentin Chary <corentin.chary@gmail.com>
|
||||
Description: Max battery charge level can be modified, battery cycle
|
||||
life can be extended by reducing the max battery charge
|
||||
level.
|
||||
|
||||
- 0 means normal battery mode (100% charge)
|
||||
- 1 means battery life extender mode (80% charge)
|
||||
|
||||
What: /sys/devices/platform/samsung/usb_charge
|
||||
Date: December 1, 2011
|
||||
KernelVersion: 3.3
|
||||
|
||||
@@ -62,3 +62,13 @@ Description:
|
||||
by VESA DisplayPort Alt Mode on USB Type-C Standard.
|
||||
- 0 when HPD’s logical state is low (HPD_Low) as defined by
|
||||
VESA DisplayPort Alt Mode on USB Type-C Standard.
|
||||
|
||||
What: /sys/bus/typec/devices/.../displayport/irq_hpd
|
||||
Date: June 2025
|
||||
Contact: RD Babiera <rdbabiera@google.com>
|
||||
Description:
|
||||
IRQ_HPD events are sent over the USB PD protocol in Status Update and
|
||||
Attention messages. IRQ_HPD can only be asserted when HPD is high,
|
||||
and is asserted when an IRQ_HPD has been issued since the last Status
|
||||
Update. This is a read only node that returns the number of IRQ events
|
||||
raised in the driver's lifetime.
|
||||
|
||||
@@ -711,7 +711,7 @@ Description: This file shows the thin provisioning type. This is one of
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/class/scsi_device/*/device/unit_descriptor/physical_memory_resourse_count
|
||||
What: /sys/class/scsi_device/*/device/unit_descriptor/physical_memory_resource_count
|
||||
Date: February 2018
|
||||
Contact: Stanislav Nijnikov <stanislav.nijnikov@wdc.com>
|
||||
Description: This file shows the total physical memory resources. This is
|
||||
@@ -1685,3 +1685,86 @@ Description:
|
||||
================ ========================================
|
||||
|
||||
The file is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/hid/analysis_trigger
|
||||
What: /sys/bus/platform/devices/*.ufs/hid/analysis_trigger
|
||||
Date: May 2025
|
||||
Contact: Huan Tang <tanghuan@vivo.com>
|
||||
Description:
|
||||
The host can enable or disable HID analysis operation.
|
||||
|
||||
======= =========================================
|
||||
disable disable HID analysis operation
|
||||
enable enable HID analysis operation
|
||||
======= =========================================
|
||||
|
||||
The file is write only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/hid/defrag_trigger
|
||||
What: /sys/bus/platform/devices/*.ufs/hid/defrag_trigger
|
||||
Date: May 2025
|
||||
Contact: Huan Tang <tanghuan@vivo.com>
|
||||
Description:
|
||||
The host can enable or disable HID defragmentation operation.
|
||||
|
||||
======= =========================================
|
||||
disable disable HID defragmentation operation
|
||||
enable enable HID defragmentation operation
|
||||
======= =========================================
|
||||
|
||||
The attribute is write only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/hid/fragmented_size
|
||||
What: /sys/bus/platform/devices/*.ufs/hid/fragmented_size
|
||||
Date: May 2025
|
||||
Contact: Huan Tang <tanghuan@vivo.com>
|
||||
Description:
|
||||
The total fragmented size in the device is reported through
|
||||
this attribute.
|
||||
|
||||
The attribute is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/hid/defrag_size
|
||||
What: /sys/bus/platform/devices/*.ufs/hid/defrag_size
|
||||
Date: May 2025
|
||||
Contact: Huan Tang <tanghuan@vivo.com>
|
||||
Description:
|
||||
The host sets the size to be defragmented by an HID
|
||||
defragmentation operation.
|
||||
|
||||
The attribute is read/write.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/hid/progress_ratio
|
||||
What: /sys/bus/platform/devices/*.ufs/hid/progress_ratio
|
||||
Date: May 2025
|
||||
Contact: Huan Tang <tanghuan@vivo.com>
|
||||
Description:
|
||||
Defragmentation progress is reported by this attribute,
|
||||
indicates the ratio of the completed defragmentation size
|
||||
over the requested defragmentation size.
|
||||
|
||||
==== ============================================
|
||||
1 1%
|
||||
...
|
||||
100 100%
|
||||
==== ============================================
|
||||
|
||||
The attribute is read only.
|
||||
|
||||
What: /sys/bus/platform/drivers/ufshcd/*/hid/state
|
||||
What: /sys/bus/platform/devices/*.ufs/hid/state
|
||||
Date: May 2025
|
||||
Contact: Huan Tang <tanghuan@vivo.com>
|
||||
Description:
|
||||
The HID state is reported by this attribute.
|
||||
|
||||
==================== ===========================
|
||||
idle Idle (analysis required)
|
||||
analysis_in_progress Analysis in progress
|
||||
defrag_required Defrag required
|
||||
defrag_in_progress Defrag in progress
|
||||
defrag_completed Defrag completed
|
||||
defrag_not_required Defrag is not required
|
||||
==================== ===========================
|
||||
|
||||
The attribute is read only.
|
||||
|
||||
@@ -49,6 +49,12 @@ Description:
|
||||
(RO) Supported minimum scrub cycle duration in seconds
|
||||
by the memory scrubber.
|
||||
|
||||
Device-based scrub: returns the minimum scrub cycle
|
||||
supported by the memory device.
|
||||
|
||||
Region-based scrub: returns the max of minimum scrub cycles
|
||||
supported by individual memory devices that back the region.
|
||||
|
||||
What: /sys/bus/edac/devices/<dev-name>/scrubX/max_cycle_duration
|
||||
Date: March 2025
|
||||
KernelVersion: 6.15
|
||||
@@ -57,6 +63,16 @@ Description:
|
||||
(RO) Supported maximum scrub cycle duration in seconds
|
||||
by the memory scrubber.
|
||||
|
||||
Device-based scrub: returns the maximum scrub cycle supported
|
||||
by the memory device.
|
||||
|
||||
Region-based scrub: returns the min of maximum scrub cycles
|
||||
supported by individual memory devices that back the region.
|
||||
|
||||
If the memory device does not provide maximum scrub cycle
|
||||
information, return the maximum supported value of the scrub
|
||||
cycle field.
|
||||
|
||||
What: /sys/bus/edac/devices/<dev-name>/scrubX/current_cycle_duration
|
||||
Date: March 2025
|
||||
KernelVersion: 6.15
|
||||
|
||||
@@ -108,15 +108,15 @@ Description:
|
||||
number of a "General Purpose Events" (GPE).
|
||||
|
||||
A GPE vectors to a specified handler in AML, which
|
||||
can do a anything the BIOS writer wants from
|
||||
can do anything the BIOS writer wants from
|
||||
OS context. GPE 0x12, for example, would vector
|
||||
to a level or edge handler called _L12 or _E12.
|
||||
The handler may do its business and return.
|
||||
Or the handler may send send a Notify event
|
||||
Or the handler may send a Notify event
|
||||
to a Linux device driver registered on an ACPI device,
|
||||
such as a battery, or a processor.
|
||||
|
||||
To figure out where all the SCI's are coming from,
|
||||
To figure out where all the SCIs are coming from,
|
||||
/sys/firmware/acpi/interrupts contains a file listing
|
||||
every possible source, and the count of how many
|
||||
times it has triggered::
|
||||
|
||||
@@ -36,3 +36,10 @@ Description: Displays the content of the Runtime Configuration Interface
|
||||
Table version 2 on Dell EMC PowerEdge systems in binary format
|
||||
Users: It is used by Dell EMC OpenManage Server Administrator tool to
|
||||
populate BIOS setup page.
|
||||
|
||||
What: /sys/firmware/efi/ovmf_debug_log
|
||||
Date: July 2025
|
||||
Contact: Gerd Hoffmann <kraxel@redhat.com>, linux-efi@vger.kernel.org
|
||||
Description: Displays the content of the OVMF debug log buffer. The file is
|
||||
only present in case the firmware supports logging to a memory
|
||||
buffer.
|
||||
|
||||
@@ -5,7 +5,7 @@ Description: Shows all enabled kernel features.
|
||||
Supported features:
|
||||
zero_padding, compr_cfgs, big_pcluster, chunked_file,
|
||||
device_table, compr_head2, sb_chksum, ztailpacking,
|
||||
dedupe, fragments.
|
||||
dedupe, fragments, 48bit, metabox.
|
||||
|
||||
What: /sys/fs/erofs/<disk>/sync_decompress
|
||||
Date: November 2021
|
||||
@@ -35,3 +35,11 @@ Description: Used to set or show hardware accelerators in effect
|
||||
and multiple accelerators are separated by '\n'.
|
||||
Supported accelerator(s): qat_deflate.
|
||||
Disable all accelerators with an empty string (echo > accel).
|
||||
|
||||
What: /sys/fs/erofs/<disk>/dir_ra_bytes
|
||||
Date: July 2025
|
||||
Contact: "Chao Yu" <chao@kernel.org>
|
||||
Description: Used to set or show readahead bytes during readdir(), by
|
||||
default the value is 16384.
|
||||
|
||||
- 0: disable readahead.
|
||||
|
||||
@@ -822,8 +822,8 @@ What: /sys/fs/f2fs/<disk>/gc_valid_thresh_ratio
|
||||
Date: September 2024
|
||||
Contact: "Daeho Jeong" <daehojeong@google.com>
|
||||
Description: It controls the valid block ratio threshold not to trigger excessive GC
|
||||
for zoned deivces. The initial value of it is 95(%). F2FS will stop the
|
||||
background GC thread from intiating GC for sections having valid blocks
|
||||
for zoned devices. The initial value of it is 95(%). F2FS will stop the
|
||||
background GC thread from initiating GC for sections having valid blocks
|
||||
exceeding the ratio.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/max_read_extent_count
|
||||
@@ -847,7 +847,7 @@ Description: For several zoned storage devices, vendors will provide extra space
|
||||
filesystem level GC. To do that, we can reserve the space using
|
||||
reserved_blocks. However, it is not enough, since this extra space should
|
||||
not be shown to users. So, with this new sysfs node, we can hide the space
|
||||
by substracting reserved_blocks from total bytes.
|
||||
by subtracting reserved_blocks from total bytes.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/encoding_flags
|
||||
Date: April 2025
|
||||
@@ -861,3 +861,75 @@ Description: This is a read-only entry to show the value of sb.s_encoding_flags,
|
||||
SB_ENC_STRICT_MODE_FL 0x00000001
|
||||
SB_ENC_NO_COMPAT_FALLBACK_FL 0x00000002
|
||||
============================ ==========
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/reserved_pin_section
|
||||
Date: June 2025
|
||||
Contact: "Chao Yu" <chao@kernel.org>
|
||||
Description: This threshold is used to control triggering garbage collection while
|
||||
fallocating on pinned file, so, it can guarantee there is enough free
|
||||
reserved section before preallocating on pinned file.
|
||||
By default, the value is ovp_sections, especially, for zoned ufs, the
|
||||
value is 1.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_boost_gc_multiple
|
||||
Date: June 2025
|
||||
Contact: "Daeho Jeong" <daehojeong@google.com>
|
||||
Description: Set a multiplier for the background GC migration window when F2FS GC is
|
||||
boosted. The range should be from 1 to the segment count in a section.
|
||||
Default: 5
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_boost_gc_greedy
|
||||
Date: June 2025
|
||||
Contact: "Daeho Jeong" <daehojeong@google.com>
|
||||
Description: Control GC algorithm for boost GC. 0: cost benefit, 1: greedy
|
||||
Default: 1
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/effective_lookup_mode
|
||||
Date: August 2025
|
||||
Contact: "Daniel Lee" <chullee@google.com>
|
||||
Description:
|
||||
This is a read-only entry to show the effective directory lookup mode
|
||||
F2FS is currently using for casefolded directories.
|
||||
This considers both the "lookup_mode" mount option and the on-disk
|
||||
encoding flag, SB_ENC_NO_COMPAT_FALLBACK_FL.
|
||||
|
||||
Possible values are:
|
||||
- "perf": Hash-only lookup.
|
||||
- "compat": Hash-based lookup with a linear search fallback enabled
|
||||
- "auto:perf": lookup_mode is auto and fallback is disabled on-disk
|
||||
- "auto:compat": lookup_mode is auto and fallback is enabled on-disk
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/bggc_io_aware
|
||||
Date: August 2025
|
||||
Contact: "Liao Yuanhong" <liaoyuanhong@vivo.com>
|
||||
Description: Used to adjust the BG_GC priority when pending IO, with a default value
|
||||
of 0. Specifically, for ZUFS, the default value is 1.
|
||||
|
||||
================== ======================================================
|
||||
value description
|
||||
bggc_io_aware = 0 skip background GC if there is any kind of pending IO
|
||||
bggc_io_aware = 1 skip background GC if there is pending read IO
|
||||
bggc_io_aware = 2 don't aware IO for background GC
|
||||
================== ======================================================
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/allocate_section_hint
|
||||
Date: August 2025
|
||||
Contact: "Liao Yuanhong" <liaoyuanhong@vivo.com>
|
||||
Description: Indicates the hint section between the first device and others in multi-devices
|
||||
setup. It defaults to the end of the first device in sections. For a single storage
|
||||
device, it defaults to the total number of sections. It can be manually set to match
|
||||
scenarios where multi-devices are mapped to the same dm device.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/allocate_section_policy
|
||||
Date: August 2025
|
||||
Contact: "Liao Yuanhong" <liaoyuanhong@vivo.com>
|
||||
Description: Controls write priority in multi-devices setups. A value of 0 means normal writing.
|
||||
A value of 1 prioritizes writing to devices before the allocate_section_hint. A value of 2
|
||||
prioritizes writing to devices after the allocate_section_hint. The default is 0.
|
||||
|
||||
=========================== ==========================================================
|
||||
value description
|
||||
allocate_section_policy = 0 Normal writing
|
||||
allocate_section_policy = 1 Prioritize writing to section before allocate_section_hint
|
||||
allocate_section_policy = 2 Prioritize writing to section after allocate_section_hint
|
||||
=========================== ==========================================================
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
What: /sys/kernel/address_bit
|
||||
What: /sys/kernel/address_bits
|
||||
Date: May 2023
|
||||
KernelVersion: 6.3
|
||||
Contact: Thomas Weißschuh <linux@weissschuh.net>
|
||||
|
||||
@@ -44,6 +44,13 @@ Contact: SeongJae Park <sj@kernel.org>
|
||||
Description: Reading this file returns the pid of the kdamond if it is
|
||||
running.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/refresh_ms
|
||||
Date: Jul 2025
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
Description: Writing a value to this file sets the time interval for
|
||||
automatic DAMON status file contents update. Writing '0'
|
||||
disables the update. Reading this file returns the value.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/nr_contexts
|
||||
Date: Mar 2022
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
@@ -70,6 +77,13 @@ Description: Writing a keyword for a monitoring operations set ('vaddr' for
|
||||
Note that only the operations sets that listed in
|
||||
'avail_operations' file are valid inputs.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/addr_unit
|
||||
Date: Aug 2025
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
Description: Writing an integer to this file sets the 'address unit'
|
||||
parameter of the given operations set of the context. Reading
|
||||
the file returns the last-written 'address unit' value.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/sample_us
|
||||
Date: Mar 2022
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
@@ -431,6 +445,28 @@ Description: Directory for DAMON operations set layer-handled DAMOS filters.
|
||||
/sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/filters
|
||||
directory.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/dests/nr_dests
|
||||
Date: Jul 2025
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
Description: Writing a number 'N' to this file creates the number of
|
||||
directories for setting action destinations of the scheme named
|
||||
'0' to 'N-1' under the dests/ directory.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/dests/<D>/id
|
||||
Date: Jul 2025
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
Description: Writing to and reading from this file sets and gets the id of
|
||||
the DAMOS action destination. For DAMOS_MIGRATE_{HOT,COLD}
|
||||
actions, the destination node's node id can be written and
|
||||
read.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/dests/<D>/weight
|
||||
Date: Jul 2025
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
Description: Writing to and reading from this file sets and gets the weight
|
||||
of the DAMOS action destination to select as the destination of
|
||||
each action among the destinations.
|
||||
|
||||
What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/schemes/<S>/stats/nr_tried
|
||||
Date: Mar 2022
|
||||
Contact: SeongJae Park <sj@kernel.org>
|
||||
|
||||
@@ -37,7 +37,8 @@ Description:
|
||||
The alloc_calls file is read-only and lists the kernel code
|
||||
locations from which allocations for this cache were performed.
|
||||
The alloc_calls file only contains information if debugging is
|
||||
enabled for that cache (see Documentation/mm/slub.rst).
|
||||
enabled for that cache (see
|
||||
Documentation/admin-guide/mm/slab.rst).
|
||||
|
||||
What: /sys/kernel/slab/<cache>/alloc_fastpath
|
||||
Date: February 2008
|
||||
@@ -219,7 +220,7 @@ Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
Description:
|
||||
The free_calls file is read-only and lists the locations of
|
||||
object frees if slab debugging is enabled (see
|
||||
Documentation/mm/slub.rst).
|
||||
Documentation/admin-guide/mm/slab.rst).
|
||||
|
||||
What: /sys/kernel/slab/<cache>/free_fastpath
|
||||
Date: February 2008
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
What: /sys/bus/wmi/devices/6932965F-1671-4CEB-B988-D3AB0A901919/dell_privacy_supported_type
|
||||
What: /sys/bus/wmi/devices/6932965F-1671-4CEB-B988-D3AB0A901919[-X]/dell_privacy_supported_type
|
||||
Date: Apr 2021
|
||||
KernelVersion: 5.13
|
||||
Contact: "<perry.yuan@dell.com>"
|
||||
@@ -29,12 +29,12 @@ Description:
|
||||
|
||||
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
|
||||
# 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
|
||||
What: /sys/bus/wmi/devices/6932965F-1671-4CEB-B988-D3AB0A901919[-X]/dell_privacy_current_state
|
||||
Date: Apr 2021
|
||||
KernelVersion: 5.13
|
||||
Contact: "<perry.yuan@dell.com>"
|
||||
@@ -66,6 +66,6 @@ Description:
|
||||
|
||||
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
|
||||
# cat /sys/bus/wmi/drivers/dell-privacy/6932965F-1671-4CEB-B988-D3AB0A901919*/dell_privacy_current_state
|
||||
[Microphone] [unmuted]
|
||||
[Camera Shutter] [unmuted]
|
||||
|
||||
@@ -27,15 +27,6 @@ Description:
|
||||
* 1 -> Switched On
|
||||
* 0 -> Switched Off
|
||||
|
||||
What: /sys/bus/platform/devices/VPC2004:*/conservation_mode
|
||||
Date: Aug 2017
|
||||
KernelVersion: 4.14
|
||||
Contact: platform-driver-x86@vger.kernel.org
|
||||
Description:
|
||||
Controls whether the conservation mode is enabled or not.
|
||||
This feature limits the maximum battery charge percentage to
|
||||
around 50-60% in order to prolong the lifetime of the battery.
|
||||
|
||||
What: /sys/bus/platform/devices/VPC2004:*/fn_lock
|
||||
Date: May 2018
|
||||
KernelVersion: 4.18
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
What: /sys/bus/wmi/devices/44FADEB1-B204-40F2-8581-394BBDC1B651/firmware_update_request
|
||||
What: /sys/bus/wmi/devices/44FADEB1-B204-40F2-8581-394BBDC1B651[-X]/firmware_update_request
|
||||
Date: April 2020
|
||||
KernelVersion: 5.7
|
||||
Contact: "Jithu Joseph" <jithu.joseph@intel.com>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
What: /sys/devices/platform/<platform>/force_power
|
||||
What: /sys/bus/wmi/devices/86CCFD48-205E-4A77-9C48-2021CBEDE341[-X]/force_power
|
||||
Date: September 2017
|
||||
KernelVersion: 4.15
|
||||
Contact: "Mario Limonciello" <mario.limonciello@outlook.com>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
What: /sys/power/
|
||||
Date: August 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power directory will contain files that will
|
||||
provide a unified interface to the power management
|
||||
@@ -8,7 +8,7 @@ Description:
|
||||
|
||||
What: /sys/power/state
|
||||
Date: November 2016
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/state file controls system sleep states.
|
||||
Reading from this file returns the available sleep state
|
||||
@@ -23,7 +23,7 @@ Description:
|
||||
|
||||
What: /sys/power/mem_sleep
|
||||
Date: November 2016
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/mem_sleep file controls the operating mode of
|
||||
system suspend. Reading from it returns the available modes
|
||||
@@ -41,7 +41,7 @@ Description:
|
||||
|
||||
What: /sys/power/disk
|
||||
Date: September 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/disk file controls the operating mode of the
|
||||
suspend-to-disk mechanism. Reading from this file returns
|
||||
@@ -90,7 +90,7 @@ Description:
|
||||
|
||||
What: /sys/power/image_size
|
||||
Date: August 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/image_size file controls the size of the image
|
||||
created by the suspend-to-disk mechanism. It can be written a
|
||||
@@ -107,7 +107,7 @@ Description:
|
||||
|
||||
What: /sys/power/pm_trace
|
||||
Date: August 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/pm_trace file controls the code which saves the
|
||||
last PM event point in the RTC across reboots, so that you can
|
||||
@@ -156,7 +156,7 @@ Description:
|
||||
|
||||
What: /sys/power/pm_async
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/pm_async file controls the switch allowing the
|
||||
user space to enable or disable asynchronous suspend and resume
|
||||
@@ -169,7 +169,7 @@ Description:
|
||||
|
||||
What: /sys/power/wakeup_count
|
||||
Date: July 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/wakeup_count file allows user space to put the
|
||||
system into a sleep state while taking into account the
|
||||
@@ -184,7 +184,7 @@ Description:
|
||||
|
||||
What: /sys/power/reserved_size
|
||||
Date: May 2011
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/reserved_size file allows user space to control
|
||||
the amount of memory reserved for allocations made by device
|
||||
@@ -198,7 +198,7 @@ Description:
|
||||
|
||||
What: /sys/power/autosleep
|
||||
Date: April 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/autosleep file can be written one of the strings
|
||||
returned by reads from /sys/power/state. If that happens, a
|
||||
@@ -215,7 +215,7 @@ Description:
|
||||
|
||||
What: /sys/power/wake_lock
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/wake_lock file allows user space to create
|
||||
wakeup source objects and activate them on demand (if one of
|
||||
@@ -242,7 +242,7 @@ Description:
|
||||
|
||||
What: /sys/power/wake_unlock
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/wake_unlock file allows user space to deactivate
|
||||
wakeup sources created with the help of /sys/power/wake_lock.
|
||||
@@ -283,7 +283,7 @@ Description:
|
||||
|
||||
What: /sys/power/pm_debug_messages
|
||||
Date: July 2017
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/pm_debug_messages file controls the printing
|
||||
of debug messages from the system suspend/hiberbation
|
||||
|
||||
@@ -22,9 +22,13 @@ Description: A string indicating which backend is in use by the firmware.
|
||||
and is expected to be "ibm,edk2-compat-v1".
|
||||
|
||||
On pseries/PLPKS, this is generated by the kernel based on the
|
||||
version number in the SB_VERSION variable in the keystore, and
|
||||
has the form "ibm,plpks-sb-v<version>", or
|
||||
"ibm,plpks-sb-unknown" if there is no SB_VERSION variable.
|
||||
version number in the SB_VERSION variable in the keystore. The
|
||||
version numbering in the SB_VERSION variable starts from 1. The
|
||||
format string takes the form "ibm,plpks-sb-v<version>" in the
|
||||
case of dynamic key management mode. If the SB_VERSION variable
|
||||
does not exist (or there is an error while reading it), it takes
|
||||
the form "ibm,plpks-sb-v0", indicating that the key management
|
||||
mode is static.
|
||||
|
||||
What: /sys/firmware/secvar/vars/<variable name>
|
||||
Date: August 2019
|
||||
@@ -34,6 +38,13 @@ Description: Each secure variable is represented as a directory named as
|
||||
representation. The data and size can be determined by reading
|
||||
their respective attribute files.
|
||||
|
||||
Only secvars relevant to the key management mode are exposed.
|
||||
Only in the dynamic key management mode should the user have
|
||||
access (read and write) to the secure boot secvars db, dbx,
|
||||
grubdb, grubdbx, and sbat. These secvars are not consumed in the
|
||||
static key management mode. PK, trustedcadb and moduledb are the
|
||||
secvars common to both static and dynamic key management modes.
|
||||
|
||||
What: /sys/firmware/secvar/vars/<variable_name>/size
|
||||
Date: August 2019
|
||||
Contact: Nayna Jain <nayna@linux.ibm.com>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
# for cleaning
|
||||
subdir- := devicetree/bindings
|
||||
|
||||
ifneq ($(MAKECMDGOALS),cleandocs)
|
||||
# Check for broken documentation file references
|
||||
ifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y)
|
||||
$(shell $(srctree)/scripts/documentation-file-ref-check --warn)
|
||||
@@ -14,6 +15,7 @@ endif
|
||||
ifeq ($(CONFIG_WARN_ABI_ERRORS),y)
|
||||
$(shell $(srctree)/scripts/get_abi.py --dir $(srctree)/Documentation/ABI validate)
|
||||
endif
|
||||
endif
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXBUILD = sphinx-build
|
||||
@@ -58,8 +60,8 @@ ifeq ($(HAVE_LATEXMK),1)
|
||||
endif #HAVE_LATEXMK
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
PAPEROPT_a4 = -D latex_elements.papersize=a4paper
|
||||
PAPEROPT_letter = -D latex_elements.papersize=letterpaper
|
||||
ALLSPHINXOPTS = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
|
||||
ALLSPHINXOPTS += $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
|
||||
ifneq ($(wildcard $(srctree)/.config),)
|
||||
@@ -85,7 +87,7 @@ loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
|
||||
PYTHONPYCACHEPREFIX ?= $(abspath $(BUILDDIR)/__pycache__)
|
||||
|
||||
quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
|
||||
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \
|
||||
cmd_sphinx = \
|
||||
PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \
|
||||
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(src)/$5/$(SPHINX_CONF)) \
|
||||
$(PYTHON3) $(srctree)/scripts/jobserver-exec \
|
||||
@@ -102,26 +104,13 @@ quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
|
||||
cp $(if $(patsubst /%,,$(DOCS_CSS)),$(abspath $(srctree)/$(DOCS_CSS)),$(DOCS_CSS)) $(BUILDDIR)/$3/_static/; \
|
||||
fi
|
||||
|
||||
YNL_INDEX:=$(srctree)/Documentation/networking/netlink_spec/index.rst
|
||||
YNL_RST_DIR:=$(srctree)/Documentation/networking/netlink_spec
|
||||
YNL_YAML_DIR:=$(srctree)/Documentation/netlink/specs
|
||||
YNL_TOOL:=$(srctree)/tools/net/ynl/pyynl/ynl_gen_rst.py
|
||||
|
||||
YNL_RST_FILES_TMP := $(patsubst %.yaml,%.rst,$(wildcard $(YNL_YAML_DIR)/*.yaml))
|
||||
YNL_RST_FILES := $(patsubst $(YNL_YAML_DIR)%,$(YNL_RST_DIR)%, $(YNL_RST_FILES_TMP))
|
||||
|
||||
$(YNL_INDEX): $(YNL_RST_FILES)
|
||||
$(Q)$(YNL_TOOL) -o $@ -x
|
||||
|
||||
$(YNL_RST_DIR)/%.rst: $(YNL_YAML_DIR)/%.yaml $(YNL_TOOL)
|
||||
$(Q)$(YNL_TOOL) -i $< -o $@
|
||||
|
||||
htmldocs texinfodocs latexdocs epubdocs xmldocs: $(YNL_INDEX)
|
||||
|
||||
htmldocs:
|
||||
@$(srctree)/scripts/sphinx-pre-install --version-check
|
||||
@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
|
||||
|
||||
htmldocs-redirects: $(srctree)/Documentation/.renames.txt
|
||||
@tools/docs/gen-redirects.py --output $(BUILDDIR) < $<
|
||||
|
||||
# If Rust support is available and .config exists, add rustdoc generated contents.
|
||||
# If there are any, the errors from this make rustdoc will be displayed but
|
||||
# won't stop the execution of htmldocs
|
||||
@@ -184,13 +173,12 @@ refcheckdocs:
|
||||
$(Q)cd $(srctree);scripts/documentation-file-ref-check
|
||||
|
||||
cleandocs:
|
||||
$(Q)rm -f $(YNL_INDEX) $(YNL_RST_FILES)
|
||||
$(Q)rm -rf $(BUILDDIR)
|
||||
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean
|
||||
|
||||
dochelp:
|
||||
@echo ' Linux kernel internal documentation in different formats from ReST:'
|
||||
@echo ' htmldocs - HTML'
|
||||
@echo ' htmldocs-redirects - generate HTML redirects for moved pages'
|
||||
@echo ' texinfodocs - Texinfo'
|
||||
@echo ' infodocs - Info'
|
||||
@echo ' latexdocs - LaTeX'
|
||||
|
||||
@@ -86,7 +86,7 @@ The <EPF Device> directory can have a list of symbolic links
|
||||
be created by the user to represent the virtual functions that are bound to
|
||||
the physical function. In the above directory structure <EPF Device 11> is a
|
||||
physical function and <EPF Device 31> is a virtual function. An EPF device once
|
||||
it's linked to another EPF device, cannot be linked to a EPC device.
|
||||
it's linked to another EPF device, cannot be linked to an EPC device.
|
||||
|
||||
EPC Device
|
||||
==========
|
||||
@@ -108,7 +108,7 @@ entries corresponding to EPC device will be created by the EPC core.
|
||||
The <EPC Device> directory will have a list of symbolic links to
|
||||
<EPF Device>. These symbolic links should be created by the user to
|
||||
represent the functions present in the endpoint device. Only <EPF Device>
|
||||
that represents a physical function can be linked to a EPC device.
|
||||
that represents a physical function can be linked to an EPC device.
|
||||
|
||||
The <EPC Device> directory will also have a *start* field. Once
|
||||
"1" is written to this field, the endpoint device will be ready to
|
||||
|
||||
@@ -197,8 +197,8 @@ by the PCI endpoint function driver.
|
||||
* pci_epf_register_driver()
|
||||
|
||||
The PCI Endpoint Function driver should implement the following ops:
|
||||
* bind: ops to perform when a EPC device has been bound to EPF device
|
||||
* unbind: ops to perform when a binding has been lost between a EPC
|
||||
* bind: ops to perform when an EPC device has been bound to EPF device
|
||||
* unbind: ops to perform when a binding has been lost between an EPC
|
||||
device and EPF device
|
||||
* add_cfs: optional ops to create function specific configfs
|
||||
attributes
|
||||
@@ -251,7 +251,7 @@ pci-ep-cfs.c can be used as reference for using these APIs.
|
||||
* pci_epf_bind()
|
||||
|
||||
pci_epf_bind() should be invoked when the EPF device has been bound to
|
||||
a EPC device.
|
||||
an EPC device.
|
||||
|
||||
* pci_epf_unbind()
|
||||
|
||||
|
||||
@@ -203,3 +203,18 @@ controllers, it is advisable to skip this testcase using this
|
||||
command::
|
||||
|
||||
# pci_endpoint_test -f pci_ep_bar -f pci_ep_basic -v memcpy -T COPY_TEST -v dma
|
||||
|
||||
Kselftest EP Doorbell
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If the Endpoint MSI controller is used for the doorbell usecase, run below
|
||||
command for testing it:
|
||||
|
||||
# pci_endpoint_test -f pcie_ep_doorbell
|
||||
|
||||
# Starting 1 tests from 1 test cases.
|
||||
# RUN pcie_ep_doorbell.DOORBELL_TEST ...
|
||||
# OK pcie_ep_doorbell.DOORBELL_TEST
|
||||
ok 1 pcie_ep_doorbell.DOORBELL_TEST
|
||||
# PASSED: 1 / 1 tests passed.
|
||||
# Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
|
||||
|
||||
@@ -90,8 +90,9 @@ of the function device and is populated with the following NTB specific
|
||||
attributes that can be configured by the user::
|
||||
|
||||
# ls functions/pci_epf_vntb/func1/pci_epf_vntb.0/
|
||||
db_count mw1 mw2 mw3 mw4 num_mws
|
||||
spad_count
|
||||
ctrl_bar db_count mw1_bar mw2_bar mw3_bar mw4_bar spad_count
|
||||
db_bar mw1 mw2 mw3 mw4 num_mws vbus_number
|
||||
vntb_vid vntb_pid
|
||||
|
||||
A sample configuration for NTB function is given below::
|
||||
|
||||
@@ -100,6 +101,10 @@ A sample configuration for NTB function is given below::
|
||||
# echo 1 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/num_mws
|
||||
# echo 0x100000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw1
|
||||
|
||||
By default, each construct is assigned a BAR, as needed and in order.
|
||||
Should a specific BAR setup be required by the platform, BAR may be assigned
|
||||
to each construct using the related ``XYZ_bar`` entry.
|
||||
|
||||
A sample configuration for virtual NTB driver for virtual PCI bus::
|
||||
|
||||
# echo 0x1957 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/vntb_vid
|
||||
|
||||
@@ -13,7 +13,7 @@ PCI Error Recovery
|
||||
Many PCI bus controllers are able to detect a variety of hardware
|
||||
PCI errors on the bus, such as parity errors on the data and address
|
||||
buses, as well as SERR and PERR errors. Some of the more advanced
|
||||
chipsets are able to deal with these errors; these include PCI-E chipsets,
|
||||
chipsets are able to deal with these errors; these include PCIe chipsets,
|
||||
and the PCI-host bridges found on IBM Power4, Power5 and Power6-based
|
||||
pSeries boxes. A typical action taken is to disconnect the affected device,
|
||||
halting all I/O to it. The goal of a disconnection is to avoid system
|
||||
@@ -108,8 +108,8 @@ A driver does not have to implement all of these callbacks; however,
|
||||
if it implements any, it must implement error_detected(). If a callback
|
||||
is not implemented, the corresponding feature is considered unsupported.
|
||||
For example, if mmio_enabled() and resume() aren't there, then it
|
||||
is assumed that the driver is not doing any direct recovery and requires
|
||||
a slot reset. Typically a driver will want to know about
|
||||
is assumed that the driver does not need these callbacks
|
||||
for recovery. Typically a driver will want to know about
|
||||
a slot_reset().
|
||||
|
||||
The actual steps taken by a platform to recover from a PCI error
|
||||
@@ -122,6 +122,10 @@ A PCI bus error is detected by the PCI hardware. On powerpc, the slot
|
||||
is isolated, in that all I/O is blocked: all reads return 0xffffffff,
|
||||
all writes are ignored.
|
||||
|
||||
Similarly, on platforms supporting Downstream Port Containment
|
||||
(PCIe r7.0 sec 6.2.11), the link to the sub-hierarchy with the
|
||||
faulting device is disabled. Any device in the sub-hierarchy
|
||||
becomes inaccessible.
|
||||
|
||||
STEP 1: Notification
|
||||
--------------------
|
||||
@@ -141,6 +145,9 @@ shouldn't do any new IOs. Called in task context. This is sort of a
|
||||
All drivers participating in this system must implement this call.
|
||||
The driver must return one of the following result codes:
|
||||
|
||||
- PCI_ERS_RESULT_RECOVERED
|
||||
Driver returns this if it thinks the device is usable despite
|
||||
the error and does not need further intervention.
|
||||
- PCI_ERS_RESULT_CAN_RECOVER
|
||||
Driver returns this if it thinks it might be able to recover
|
||||
the HW by just banging IOs or if it wants to be given
|
||||
@@ -199,7 +206,25 @@ reset or some such, but not restart operations. This callback is made if
|
||||
all drivers on a segment agree that they can try to recover and if no automatic
|
||||
link reset was performed by the HW. If the platform can't just re-enable IOs
|
||||
without a slot reset or a link reset, it will not call this callback, and
|
||||
instead will have gone directly to STEP 3 (Link Reset) or STEP 4 (Slot Reset)
|
||||
instead will have gone directly to STEP 3 (Link Reset) or STEP 4 (Slot Reset).
|
||||
|
||||
.. note::
|
||||
|
||||
On platforms supporting Advanced Error Reporting (PCIe r7.0 sec 6.2),
|
||||
the faulting device may already be accessible in STEP 1 (Notification).
|
||||
Drivers should nevertheless defer accesses to STEP 2 (MMIO Enabled)
|
||||
to be compatible with EEH on powerpc and with s390 (where devices are
|
||||
inaccessible until STEP 2).
|
||||
|
||||
On platforms supporting Downstream Port Containment, the link to the
|
||||
sub-hierarchy with the faulting device is re-enabled in STEP 3 (Link
|
||||
Reset). Hence devices in the sub-hierarchy are inaccessible until
|
||||
STEP 4 (Slot Reset).
|
||||
|
||||
For errors such as Surprise Down (PCIe r7.0 sec 6.2.7), the device
|
||||
may not even be accessible in STEP 4 (Slot Reset). Drivers can detect
|
||||
accessibility by checking whether reads from the device return all 1's
|
||||
(PCI_POSSIBLE_ERROR()).
|
||||
|
||||
.. note::
|
||||
|
||||
@@ -234,14 +259,14 @@ The driver should return one of the following result codes:
|
||||
|
||||
The next step taken depends on the results returned by the drivers.
|
||||
If all drivers returned PCI_ERS_RESULT_RECOVERED, then the platform
|
||||
proceeds to either STEP3 (Link Reset) or to STEP 5 (Resume Operations).
|
||||
proceeds to either STEP 3 (Link Reset) or to STEP 5 (Resume Operations).
|
||||
|
||||
If any driver returned PCI_ERS_RESULT_NEED_RESET, then the platform
|
||||
proceeds to STEP 4 (Slot Reset)
|
||||
|
||||
STEP 3: Link Reset
|
||||
------------------
|
||||
The platform resets the link. This is a PCI-Express specific step
|
||||
The platform resets the link. This is a PCIe specific step
|
||||
and is done whenever a fatal error has been detected that can be
|
||||
"solved" by resetting the link.
|
||||
|
||||
@@ -263,13 +288,13 @@ that is equivalent to what it would be after a fresh system
|
||||
power-on followed by power-on BIOS/system firmware initialization.
|
||||
Soft reset is also known as hot-reset.
|
||||
|
||||
Powerpc fundamental reset is supported by PCI Express cards only
|
||||
Powerpc fundamental reset is supported by PCIe cards only
|
||||
and results in device's state machines, hardware logic, port states and
|
||||
configuration registers to initialize to their default conditions.
|
||||
|
||||
For most PCI devices, a soft reset will be sufficient for recovery.
|
||||
Optional fundamental reset is provided to support a limited number
|
||||
of PCI Express devices for which a soft reset is not sufficient
|
||||
of PCIe devices for which a soft reset is not sufficient
|
||||
for recovery.
|
||||
|
||||
If the platform supports PCI hotplug, then the reset might be
|
||||
@@ -313,7 +338,7 @@ Result codes:
|
||||
- PCI_ERS_RESULT_DISCONNECT
|
||||
Same as above.
|
||||
|
||||
Drivers for PCI Express cards that require a fundamental reset must
|
||||
Drivers for PCIe cards that require a fundamental reset must
|
||||
set the needs_freset bit in the pci_dev structure in their probe function.
|
||||
For example, the QLogic qla2xxx driver sets the needs_freset bit for certain
|
||||
PCI card types::
|
||||
|
||||
@@ -70,16 +70,16 @@ AER error output
|
||||
----------------
|
||||
|
||||
When a PCIe AER error is captured, an error message will be output to
|
||||
console. If it's a correctable error, it is output as an info message.
|
||||
console. If it's a correctable error, it is output as a warning message.
|
||||
Otherwise, it is printed as an error. So users could choose different
|
||||
log level to filter out correctable error messages.
|
||||
|
||||
Below shows an example::
|
||||
|
||||
0000:50:00.0: PCIe Bus Error: severity=Uncorrected (Fatal), type=Transaction Layer, id=0500(Requester ID)
|
||||
0000:50:00.0: PCIe Bus Error: severity=Uncorrectable (Fatal), type=Transaction Layer, (Requester ID)
|
||||
0000:50:00.0: device [8086:0329] error status/mask=00100000/00000000
|
||||
0000:50:00.0: [20] Unsupported Request (First)
|
||||
0000:50:00.0: TLP Header: 04000001 00200a03 05010000 00050100
|
||||
0000:50:00.0: [20] UnsupReq (First)
|
||||
0000:50:00.0: TLP Header: 0x04000001 0x00200a03 0x05010000 0x00050100
|
||||
|
||||
In the example, 'Requester ID' means the ID of the device that sent
|
||||
the error message to the Root Port. Please refer to PCIe specs for other
|
||||
@@ -138,7 +138,7 @@ error message to the Root Port above it when it captures
|
||||
an error. The Root Port, upon receiving an error reporting message,
|
||||
internally processes and logs the error message in its AER
|
||||
Capability structure. Error information being logged includes storing
|
||||
the error reporting agent's requestor ID into the Error Source
|
||||
the error reporting agent's Requester ID into the Error Source
|
||||
Identification Registers and setting the error bits of the Root Error
|
||||
Status Register accordingly. If AER error reporting is enabled in the Root
|
||||
Error Command Register, the Root Port generates an interrupt when an
|
||||
@@ -152,18 +152,6 @@ the device driver.
|
||||
Provide callbacks
|
||||
-----------------
|
||||
|
||||
callback reset_link to reset PCIe link
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This callback is used to reset the PCIe physical link when a
|
||||
fatal error happens. The Root Port AER service driver provides a
|
||||
default reset_link function, but different Upstream Ports might
|
||||
have different specifications to reset the PCIe link, so
|
||||
Upstream Port drivers may provide their own reset_link functions.
|
||||
|
||||
Section 3.2.2.2 provides more detailed info on when to call
|
||||
reset_link.
|
||||
|
||||
PCI error-recovery callbacks
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -174,8 +162,8 @@ when performing error recovery actions.
|
||||
Data struct pci_driver has a pointer, err_handler, to point to
|
||||
pci_error_handlers who consists of a couple of callback function
|
||||
pointers. The AER driver follows the rules defined in
|
||||
pci-error-recovery.rst except PCIe-specific parts (e.g.
|
||||
reset_link). Please refer to pci-error-recovery.rst for detailed
|
||||
pci-error-recovery.rst except PCIe-specific parts (see
|
||||
below). Please refer to pci-error-recovery.rst for detailed
|
||||
definitions of the callbacks.
|
||||
|
||||
The sections below specify when to call the error callback functions.
|
||||
@@ -189,10 +177,21 @@ software intervention or any loss of data. These errors do not
|
||||
require any recovery actions. The AER driver clears the device's
|
||||
correctable error status register accordingly and logs these errors.
|
||||
|
||||
Non-correctable (non-fatal and fatal) errors
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Uncorrectable (non-fatal and fatal) errors
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If an error message indicates a non-fatal error, performing link reset
|
||||
The AER driver performs a Secondary Bus Reset to recover from
|
||||
uncorrectable errors. The reset is applied at the port above
|
||||
the originating device: If the originating device is an Endpoint,
|
||||
only the Endpoint is reset. If on the other hand the originating
|
||||
device has subordinate devices, those are all affected by the
|
||||
reset as well.
|
||||
|
||||
If the originating device is a Root Complex Integrated Endpoint,
|
||||
there's no port above where a Secondary Bus Reset could be applied.
|
||||
In this case, the AER driver instead applies a Function Level Reset.
|
||||
|
||||
If an error message indicates a non-fatal error, performing a reset
|
||||
at upstream is not required. The AER driver calls error_detected(dev,
|
||||
pci_channel_io_normal) to all drivers associated within a hierarchy in
|
||||
question. For example::
|
||||
@@ -204,38 +203,34 @@ Downstream Port B and Endpoint.
|
||||
|
||||
A driver may return PCI_ERS_RESULT_CAN_RECOVER,
|
||||
PCI_ERS_RESULT_DISCONNECT, or PCI_ERS_RESULT_NEED_RESET, depending on
|
||||
whether it can recover or the AER driver calls mmio_enabled as next.
|
||||
whether it can recover without a reset, considers the device unrecoverable
|
||||
or needs a reset for recovery. If all affected drivers agree that they can
|
||||
recover without a reset, it is skipped. Should one driver request a reset,
|
||||
it overrides all other drivers.
|
||||
|
||||
If an error message indicates a fatal error, kernel will broadcast
|
||||
error_detected(dev, pci_channel_io_frozen) to all drivers within
|
||||
a hierarchy in question. Then, performing link reset at upstream is
|
||||
necessary. As different kinds of devices might use different approaches
|
||||
to reset link, AER port service driver is required to provide the
|
||||
function to reset link via callback parameter of pcie_do_recovery()
|
||||
function. If reset_link is not NULL, recovery function will use it
|
||||
to reset the link. If error_detected returns PCI_ERS_RESULT_CAN_RECOVER
|
||||
and reset_link returns PCI_ERS_RESULT_RECOVERED, the error handling goes
|
||||
to mmio_enabled.
|
||||
a hierarchy in question. Then, performing a reset at upstream is
|
||||
necessary. If error_detected returns PCI_ERS_RESULT_CAN_RECOVER
|
||||
to indicate that recovery without a reset is possible, the error
|
||||
handling goes to mmio_enabled, but afterwards a reset is still
|
||||
performed.
|
||||
|
||||
Frequent Asked Questions
|
||||
------------------------
|
||||
In other words, for non-fatal errors, drivers may opt in to a reset.
|
||||
But for fatal errors, they cannot opt out of a reset, based on the
|
||||
assumption that the link is unreliable.
|
||||
|
||||
Frequently Asked Questions
|
||||
--------------------------
|
||||
|
||||
Q:
|
||||
What happens if a PCIe device driver does not provide an
|
||||
error recovery handler (pci_driver->err_handler is equal to NULL)?
|
||||
|
||||
A:
|
||||
The devices attached with the driver won't be recovered. If the
|
||||
error is fatal, kernel will print out warning messages. Please refer
|
||||
to section 3 for more information.
|
||||
|
||||
Q:
|
||||
What happens if an upstream port service driver does not provide
|
||||
callback reset_link?
|
||||
|
||||
A:
|
||||
Fatal error recovery will fail if the errors are reported by the
|
||||
upstream ports who are attached by the service driver.
|
||||
The devices attached with the driver won't be recovered.
|
||||
The kernel will print out informational messages to identify
|
||||
unrecoverable devices.
|
||||
|
||||
|
||||
Software error injection
|
||||
|
||||
@@ -286,6 +286,39 @@ in order to detect the beginnings and ends of grace periods in a
|
||||
distributed fashion. The values flow from ``rcu_state`` to ``rcu_node``
|
||||
(down the tree from the root to the leaves) to ``rcu_data``.
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| **Quick Quiz**: |
|
||||
+-----------------------------------------------------------------------+
|
||||
| Given that the root rcu_node structure has a gp_seq field, |
|
||||
| why does RCU maintain a separate gp_seq in the rcu_state structure? |
|
||||
| Why not just use the root rcu_node's gp_seq as the official record |
|
||||
| and update it directly when starting a new grace period? |
|
||||
+-----------------------------------------------------------------------+
|
||||
| **Answer**: |
|
||||
+-----------------------------------------------------------------------+
|
||||
| On single-node RCU trees (where the root node is also a leaf), |
|
||||
| updating the root node's gp_seq immediately would create unnecessary |
|
||||
| lock contention. Here's why: |
|
||||
| |
|
||||
| If we did rcu_seq_start() directly on the root node's gp_seq: |
|
||||
| |
|
||||
| 1. All CPUs would immediately see their node's gp_seq from their rdp's|
|
||||
| gp_seq, in rcu_pending(). They would all then invoke the RCU-core. |
|
||||
| 2. Which calls note_gp_changes() and try to acquire the node lock. |
|
||||
| 3. But rnp->qsmask isn't initialized yet (happens later in |
|
||||
| rcu_gp_init()) |
|
||||
| 4. So each CPU would acquire the lock, find it can't determine if it |
|
||||
| needs to report quiescent state (no qsmask), update rdp->gp_seq, |
|
||||
| and release the lock. |
|
||||
| 5. Result: Lots of lock acquisitions with no grace period progress |
|
||||
| |
|
||||
| By having a separate rcu_state.gp_seq, we can increment the official |
|
||||
| grace period counter without immediately affecting what CPUs see in |
|
||||
| their nodes. The hierarchical propagation in rcu_gp_init() then |
|
||||
| updates the root node's gp_seq and qsmask together under the same lock|
|
||||
| acquisition, avoiding this useless contention. |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
Miscellaneous
|
||||
'''''''''''''
|
||||
|
||||
|
||||
@@ -1970,6 +1970,130 @@ corresponding CPU's leaf node lock is held. This avoids race conditions
|
||||
between RCU's hotplug notifier hooks, the grace period initialization
|
||||
code, and the FQS loop, all of which refer to or modify this bookkeeping.
|
||||
|
||||
Note that grace period initialization (rcu_gp_init()) must carefully sequence
|
||||
CPU hotplug scanning with grace period state changes. For example, the
|
||||
following race could occur in rcu_gp_init() if rcu_seq_start() were to happen
|
||||
after the CPU hotplug scanning::
|
||||
|
||||
CPU0 (rcu_gp_init) CPU1 CPU2
|
||||
--------------------- ---- ----
|
||||
// Hotplug scan first (WRONG ORDER)
|
||||
rcu_for_each_leaf_node(rnp) {
|
||||
rnp->qsmaskinit = rnp->qsmaskinitnext;
|
||||
}
|
||||
rcutree_report_cpu_starting()
|
||||
rnp->qsmaskinitnext |= mask;
|
||||
rcu_read_lock()
|
||||
r0 = *X;
|
||||
r1 = *X;
|
||||
X = NULL;
|
||||
cookie = get_state_synchronize_rcu();
|
||||
// cookie = 8 (future GP)
|
||||
rcu_seq_start(&rcu_state.gp_seq);
|
||||
// gp_seq = 5
|
||||
|
||||
// CPU1 now invisible to this GP!
|
||||
rcu_for_each_node_breadth_first() {
|
||||
rnp->qsmask = rnp->qsmaskinit;
|
||||
// CPU1 not included!
|
||||
}
|
||||
|
||||
// GP completes without CPU1
|
||||
rcu_seq_end(&rcu_state.gp_seq);
|
||||
// gp_seq = 8
|
||||
poll_state_synchronize_rcu(cookie);
|
||||
// Returns true!
|
||||
kfree(r1);
|
||||
r2 = *r0; // USE-AFTER-FREE!
|
||||
|
||||
By incrementing ``gp_seq`` first, CPU1's RCU read-side critical section
|
||||
is guaranteed to not be missed by CPU2.
|
||||
|
||||
Concurrent Quiescent State Reporting for Offline CPUs
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
RCU must ensure that CPUs going offline report quiescent states to avoid
|
||||
blocking grace periods. This requires careful synchronization to handle
|
||||
race conditions
|
||||
|
||||
Race condition causing Offline CPU to hang GP
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
A race between CPU offlining and new GP initialization (gp_init()) may occur
|
||||
because rcu_report_qs_rnp() in rcutree_report_cpu_dead() must temporarily
|
||||
release the ``rcu_node`` lock to wake the RCU grace-period kthread::
|
||||
|
||||
CPU1 (going offline) CPU0 (GP kthread)
|
||||
-------------------- -----------------
|
||||
rcutree_report_cpu_dead()
|
||||
rcu_report_qs_rnp()
|
||||
// Must release rnp->lock to wake GP kthread
|
||||
raw_spin_unlock_irqrestore_rcu_node()
|
||||
// Wakes up and starts new GP
|
||||
rcu_gp_init()
|
||||
// First loop:
|
||||
copies qsmaskinitnext->qsmaskinit
|
||||
// CPU1 still in qsmaskinitnext!
|
||||
|
||||
// Second loop:
|
||||
rnp->qsmask = rnp->qsmaskinit
|
||||
mask = rnp->qsmask & ~rnp->qsmaskinitnext
|
||||
// mask is 0! CPU1 still in both masks
|
||||
// Reacquire lock (but too late)
|
||||
rnp->qsmaskinitnext &= ~mask // Finally clears bit
|
||||
|
||||
Without ``ofl_lock``, the new grace period includes the offline CPU and waits
|
||||
forever for its quiescent state causing a GP hang.
|
||||
|
||||
A solution with ofl_lock
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The ``ofl_lock`` (offline lock) prevents rcu_gp_init() from running during
|
||||
the vulnerable window when rcu_report_qs_rnp() has released ``rnp->lock``::
|
||||
|
||||
CPU0 (rcu_gp_init) CPU1 (rcutree_report_cpu_dead)
|
||||
------------------ ------------------------------
|
||||
rcu_for_each_leaf_node(rnp) {
|
||||
arch_spin_lock(&ofl_lock) -----> arch_spin_lock(&ofl_lock) [BLOCKED]
|
||||
|
||||
// Safe: CPU1 can't interfere
|
||||
rnp->qsmaskinit = rnp->qsmaskinitnext
|
||||
|
||||
arch_spin_unlock(&ofl_lock) ---> // Now CPU1 can proceed
|
||||
} // But snapshot already taken
|
||||
|
||||
Another race causing GP hangs in rcu_gpu_init(): Reporting QS for Now-offline CPUs
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
After the first loop takes an atomic snapshot of online CPUs, as shown above,
|
||||
the second loop in rcu_gp_init() detects CPUs that went offline between
|
||||
releasing ``ofl_lock`` and acquiring the per-node ``rnp->lock``.
|
||||
This detection is crucial because:
|
||||
|
||||
1. The CPU might have gone offline after the snapshot but before the second loop
|
||||
2. The offline CPU cannot report its own QS if it's already dead
|
||||
3. Without this detection, the grace period would wait forever for CPUs that
|
||||
are now offline.
|
||||
|
||||
The second loop performs this detection safely::
|
||||
|
||||
rcu_for_each_node_breadth_first(rnp) {
|
||||
raw_spin_lock_irqsave_rcu_node(rnp, flags);
|
||||
rnp->qsmask = rnp->qsmaskinit; // Apply the snapshot
|
||||
|
||||
// Detect CPUs offline after snapshot
|
||||
mask = rnp->qsmask & ~rnp->qsmaskinitnext;
|
||||
|
||||
if (mask && rcu_is_leaf_node(rnp))
|
||||
rcu_report_qs_rnp(mask, ...) // Report QS for offline CPUs
|
||||
}
|
||||
|
||||
This approach ensures atomicity: quiescent state reporting for offline CPUs
|
||||
happens either in rcu_gp_init() (second loop) or in rcutree_report_cpu_dead(),
|
||||
never both and never neither. The ``rnp->lock`` held throughout the sequence
|
||||
prevents races - rcutree_report_cpu_dead() also acquires this lock when
|
||||
clearing ``qsmaskinitnext``, ensuring mutual exclusion.
|
||||
|
||||
Scheduler and RCU
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
@@ -641,7 +641,7 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
|
||||
,Month="July"
|
||||
,Year="2001"
|
||||
,note="Available:
|
||||
\url{http://www.linuxsymposium.org/2001/abstracts/readcopy.php}
|
||||
\url{https://kernel.org/doc/ols/2001/read-copy.pdf}
|
||||
\url{http://www.rdrop.com/users/paulmck/RCU/rclock_OLS.2001.05.01c.pdf}
|
||||
[Viewed June 23, 2004]"
|
||||
,annotation={
|
||||
@@ -1480,7 +1480,7 @@ Suparna Bhattacharya"
|
||||
,Year="2006"
|
||||
,pages="v2 123-138"
|
||||
,note="Available:
|
||||
\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
|
||||
\url{https://kernel.org/doc/ols/2006/ols2006v2-pages-131-146.pdf}
|
||||
\url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf}
|
||||
[Viewed January 1, 2007]"
|
||||
,annotation={
|
||||
@@ -1511,7 +1511,7 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen"
|
||||
,Year="2006"
|
||||
,pages="v2 249-254"
|
||||
,note="Available:
|
||||
\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
|
||||
\url{https://kernel.org/doc/ols/2006/ols2006v2-pages-249-262.pdf}
|
||||
[Viewed January 11, 2009]"
|
||||
,annotation={
|
||||
Uses RCU-protected radix tree for a lockless page cache.
|
||||
|
||||
@@ -69,7 +69,13 @@ over a rather long period of time, but improvements are always welcome!
|
||||
Explicit disabling of preemption (preempt_disable(), for example)
|
||||
can serve as rcu_read_lock_sched(), but is less readable and
|
||||
prevents lockdep from detecting locking issues. Acquiring a
|
||||
spinlock also enters an RCU read-side critical section.
|
||||
raw spinlock also enters an RCU read-side critical section.
|
||||
|
||||
The guard(rcu)() and scoped_guard(rcu) primitives designate
|
||||
the remainder of the current scope or the next statement,
|
||||
respectively, as the RCU read-side critical section. Use of
|
||||
these guards can be less error-prone than rcu_read_lock(),
|
||||
rcu_read_unlock(), and friends.
|
||||
|
||||
Please note that you *cannot* rely on code known to be built
|
||||
only in non-preemptible kernels. Such code can and will break,
|
||||
@@ -405,9 +411,11 @@ over a rather long period of time, but improvements are always welcome!
|
||||
13. Unlike most flavors of RCU, it *is* permissible to block in an
|
||||
SRCU read-side critical section (demarked by srcu_read_lock()
|
||||
and srcu_read_unlock()), hence the "SRCU": "sleepable RCU".
|
||||
Please note that if you don't need to sleep in read-side critical
|
||||
sections, you should be using RCU rather than SRCU, because RCU
|
||||
is almost always faster and easier to use than is SRCU.
|
||||
As with RCU, guard(srcu)() and scoped_guard(srcu) forms are
|
||||
available, and often provide greater ease of use. Please note
|
||||
that if you don't need to sleep in read-side critical sections,
|
||||
you should be using RCU rather than SRCU, because RCU is almost
|
||||
always faster and easier to use than is SRCU.
|
||||
|
||||
Also unlike other forms of RCU, explicit initialization and
|
||||
cleanup is required either at build time via DEFINE_SRCU()
|
||||
@@ -443,10 +451,13 @@ over a rather long period of time, but improvements are always welcome!
|
||||
real-time workloads than is synchronize_rcu_expedited().
|
||||
|
||||
It is also permissible to sleep in RCU Tasks Trace read-side
|
||||
critical section, which are delimited by rcu_read_lock_trace() and
|
||||
rcu_read_unlock_trace(). However, this is a specialized flavor
|
||||
of RCU, and you should not use it without first checking with
|
||||
its current users. In most cases, you should instead use SRCU.
|
||||
critical section, which are delimited by rcu_read_lock_trace()
|
||||
and rcu_read_unlock_trace(). However, this is a specialized
|
||||
flavor of RCU, and you should not use it without first checking
|
||||
with its current users. In most cases, you should instead
|
||||
use SRCU. As with RCU and SRCU, guard(rcu_tasks_trace)() and
|
||||
scoped_guard(rcu_tasks_trace) are available, and often provide
|
||||
greater ease of use.
|
||||
|
||||
Note that rcu_assign_pointer() relates to SRCU just as it does to
|
||||
other forms of RCU, but instead of rcu_dereference() you should
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
.. _rcu_concepts:
|
||||
.. _rcu_handbook:
|
||||
|
||||
============
|
||||
RCU concepts
|
||||
RCU Handbook
|
||||
============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:maxdepth: 2
|
||||
|
||||
checklist
|
||||
lockdep
|
||||
|
||||
@@ -106,7 +106,7 @@ or the RCU-protected data that it points to can change concurrently.
|
||||
Like rcu_dereference(), when lockdep is enabled, RCU list and hlist
|
||||
traversal primitives check for being called from within an RCU read-side
|
||||
critical section. However, a lockdep expression can be passed to them
|
||||
as a additional optional argument. With this lockdep expression, these
|
||||
as an additional optional argument. With this lockdep expression, these
|
||||
traversal primitives will complain only if the lockdep expression is
|
||||
false and they are called from outside any RCU read-side critical section.
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ warnings:
|
||||
uncommon in large datacenter. In one memorable case some decades
|
||||
back, a CPU failed in a running system, becoming unresponsive,
|
||||
but not causing an immediate crash. This resulted in a series
|
||||
of RCU CPU stall warnings, eventually leading the realization
|
||||
of RCU CPU stall warnings, eventually leading to the realization
|
||||
that the CPU had failed.
|
||||
|
||||
The RCU, RCU-sched, RCU-tasks, and RCU-tasks-trace implementations have
|
||||
|
||||
@@ -344,7 +344,7 @@ painstaking and error-prone.
|
||||
|
||||
And this is why the kvm-remote.sh script exists.
|
||||
|
||||
If you the following command works::
|
||||
If the following command works::
|
||||
|
||||
ssh system0 date
|
||||
|
||||
@@ -364,7 +364,7 @@ systems must come first.
|
||||
The kvm.sh ``--dryrun scenarios`` argument is useful for working out
|
||||
how many scenarios may be run in one batch across a group of systems.
|
||||
|
||||
You can also re-run a previous remote run in a manner similar to kvm.sh:
|
||||
You can also re-run a previous remote run in a manner similar to kvm.sh::
|
||||
|
||||
kvm-remote.sh "system0 system1 system2 system3 system4 system5" \
|
||||
tools/testing/selftests/rcutorture/res/2022.11.03-11.26.28-remote \
|
||||
|
||||
@@ -1021,32 +1021,41 @@ RCU list traversal::
|
||||
list_entry_rcu
|
||||
list_entry_lockless
|
||||
list_first_entry_rcu
|
||||
list_first_or_null_rcu
|
||||
list_tail_rcu
|
||||
list_next_rcu
|
||||
list_next_or_null_rcu
|
||||
list_for_each_entry_rcu
|
||||
list_for_each_entry_continue_rcu
|
||||
list_for_each_entry_from_rcu
|
||||
list_first_or_null_rcu
|
||||
list_next_or_null_rcu
|
||||
list_for_each_entry_lockless
|
||||
hlist_first_rcu
|
||||
hlist_next_rcu
|
||||
hlist_pprev_rcu
|
||||
hlist_for_each_entry_rcu
|
||||
hlist_for_each_entry_rcu_notrace
|
||||
hlist_for_each_entry_rcu_bh
|
||||
hlist_for_each_entry_from_rcu
|
||||
hlist_for_each_entry_continue_rcu
|
||||
hlist_for_each_entry_continue_rcu_bh
|
||||
hlist_nulls_first_rcu
|
||||
hlist_nulls_next_rcu
|
||||
hlist_nulls_for_each_entry_rcu
|
||||
hlist_nulls_for_each_entry_safe
|
||||
hlist_bl_first_rcu
|
||||
hlist_bl_for_each_entry_rcu
|
||||
|
||||
RCU pointer/list update::
|
||||
|
||||
rcu_assign_pointer
|
||||
rcu_replace_pointer
|
||||
INIT_LIST_HEAD_RCU
|
||||
list_add_rcu
|
||||
list_add_tail_rcu
|
||||
list_del_rcu
|
||||
list_replace_rcu
|
||||
list_splice_init_rcu
|
||||
list_splice_tail_init_rcu
|
||||
hlist_add_behind_rcu
|
||||
hlist_add_before_rcu
|
||||
hlist_add_head_rcu
|
||||
@@ -1054,34 +1063,53 @@ RCU pointer/list update::
|
||||
hlist_del_rcu
|
||||
hlist_del_init_rcu
|
||||
hlist_replace_rcu
|
||||
list_splice_init_rcu
|
||||
list_splice_tail_init_rcu
|
||||
hlist_nulls_del_init_rcu
|
||||
hlist_nulls_del_rcu
|
||||
hlist_nulls_add_head_rcu
|
||||
hlist_nulls_add_tail_rcu
|
||||
hlist_nulls_add_fake
|
||||
hlists_swap_heads_rcu
|
||||
hlist_bl_add_head_rcu
|
||||
hlist_bl_del_init_rcu
|
||||
hlist_bl_del_rcu
|
||||
hlist_bl_set_first_rcu
|
||||
|
||||
RCU::
|
||||
|
||||
Critical sections Grace period Barrier
|
||||
Critical sections Grace period Barrier
|
||||
|
||||
rcu_read_lock synchronize_net rcu_barrier
|
||||
rcu_read_unlock synchronize_rcu
|
||||
rcu_dereference synchronize_rcu_expedited
|
||||
rcu_read_lock_held call_rcu
|
||||
rcu_dereference_check kfree_rcu
|
||||
rcu_dereference_protected
|
||||
rcu_read_lock synchronize_net rcu_barrier
|
||||
rcu_read_unlock synchronize_rcu
|
||||
guard(rcu)() synchronize_rcu_expedited
|
||||
scoped_guard(rcu) synchronize_rcu_mult
|
||||
rcu_dereference call_rcu
|
||||
rcu_dereference_check call_rcu_hurry
|
||||
rcu_dereference_protected kfree_rcu
|
||||
rcu_read_lock_held kvfree_rcu
|
||||
rcu_read_lock_any_held kfree_rcu_mightsleep
|
||||
rcu_pointer_handoff cond_synchronize_rcu
|
||||
unrcu_pointer cond_synchronize_rcu_full
|
||||
cond_synchronize_rcu_expedited
|
||||
cond_synchronize_rcu_expedited_full
|
||||
get_completed_synchronize_rcu
|
||||
get_completed_synchronize_rcu_full
|
||||
get_state_synchronize_rcu
|
||||
get_state_synchronize_rcu_full
|
||||
poll_state_synchronize_rcu
|
||||
poll_state_synchronize_rcu_full
|
||||
same_state_synchronize_rcu
|
||||
same_state_synchronize_rcu_full
|
||||
start_poll_synchronize_rcu
|
||||
start_poll_synchronize_rcu_full
|
||||
start_poll_synchronize_rcu_expedited
|
||||
start_poll_synchronize_rcu_expedited_full
|
||||
|
||||
bh::
|
||||
|
||||
Critical sections Grace period Barrier
|
||||
|
||||
rcu_read_lock_bh call_rcu rcu_barrier
|
||||
rcu_read_unlock_bh synchronize_rcu
|
||||
[local_bh_disable] synchronize_rcu_expedited
|
||||
rcu_read_lock_bh [Same as RCU] [Same as RCU]
|
||||
rcu_read_unlock_bh
|
||||
[local_bh_disable]
|
||||
[and friends]
|
||||
rcu_dereference_bh
|
||||
rcu_dereference_bh_check
|
||||
@@ -1092,9 +1120,9 @@ sched::
|
||||
|
||||
Critical sections Grace period Barrier
|
||||
|
||||
rcu_read_lock_sched call_rcu rcu_barrier
|
||||
rcu_read_unlock_sched synchronize_rcu
|
||||
[preempt_disable] synchronize_rcu_expedited
|
||||
rcu_read_lock_sched [Same as RCU] [Same as RCU]
|
||||
rcu_read_unlock_sched
|
||||
[preempt_disable]
|
||||
[and friends]
|
||||
rcu_read_lock_sched_notrace
|
||||
rcu_read_unlock_sched_notrace
|
||||
@@ -1104,46 +1132,104 @@ sched::
|
||||
rcu_read_lock_sched_held
|
||||
|
||||
|
||||
RCU: Initialization/cleanup/ordering::
|
||||
|
||||
RCU_INIT_POINTER
|
||||
RCU_INITIALIZER
|
||||
RCU_POINTER_INITIALIZER
|
||||
init_rcu_head
|
||||
destroy_rcu_head
|
||||
init_rcu_head_on_stack
|
||||
destroy_rcu_head_on_stack
|
||||
SLAB_TYPESAFE_BY_RCU
|
||||
|
||||
|
||||
RCU: Quiescents states and control::
|
||||
|
||||
cond_resched_tasks_rcu_qs
|
||||
rcu_all_qs
|
||||
rcu_softirq_qs_periodic
|
||||
rcu_end_inkernel_boot
|
||||
rcu_expedite_gp
|
||||
rcu_gp_is_expedited
|
||||
rcu_unexpedite_gp
|
||||
rcu_cpu_stall_reset
|
||||
rcu_head_after_call_rcu
|
||||
rcu_is_watching
|
||||
|
||||
|
||||
RCU-sync primitive::
|
||||
|
||||
rcu_sync_is_idle
|
||||
rcu_sync_init
|
||||
rcu_sync_enter
|
||||
rcu_sync_exit
|
||||
rcu_sync_dtor
|
||||
|
||||
|
||||
RCU-Tasks::
|
||||
|
||||
Critical sections Grace period Barrier
|
||||
Critical sections Grace period Barrier
|
||||
|
||||
N/A call_rcu_tasks rcu_barrier_tasks
|
||||
N/A call_rcu_tasks rcu_barrier_tasks
|
||||
synchronize_rcu_tasks
|
||||
|
||||
|
||||
RCU-Tasks-Rude::
|
||||
|
||||
Critical sections Grace period Barrier
|
||||
Critical sections Grace period Barrier
|
||||
|
||||
N/A N/A
|
||||
synchronize_rcu_tasks_rude
|
||||
N/A synchronize_rcu_tasks_rude rcu_barrier_tasks_rude
|
||||
call_rcu_tasks_rude
|
||||
|
||||
|
||||
RCU-Tasks-Trace::
|
||||
|
||||
Critical sections Grace period Barrier
|
||||
Critical sections Grace period Barrier
|
||||
|
||||
rcu_read_lock_trace call_rcu_tasks_trace rcu_barrier_tasks_trace
|
||||
rcu_read_lock_trace call_rcu_tasks_trace rcu_barrier_tasks_trace
|
||||
rcu_read_unlock_trace synchronize_rcu_tasks_trace
|
||||
guard(rcu_tasks_trace)()
|
||||
scoped_guard(rcu_tasks_trace)
|
||||
|
||||
|
||||
SRCU list traversal::
|
||||
list_for_each_entry_srcu
|
||||
hlist_for_each_entry_srcu
|
||||
|
||||
|
||||
SRCU::
|
||||
|
||||
Critical sections Grace period Barrier
|
||||
Critical sections Grace period Barrier
|
||||
|
||||
srcu_read_lock call_srcu srcu_barrier
|
||||
srcu_read_unlock synchronize_srcu
|
||||
srcu_dereference synchronize_srcu_expedited
|
||||
srcu_read_lock call_srcu srcu_barrier
|
||||
srcu_read_unlock synchronize_srcu
|
||||
srcu_read_lock_fast synchronize_srcu_expedited
|
||||
srcu_read_unlock_fast get_state_synchronize_srcu
|
||||
srcu_read_lock_nmisafe start_poll_synchronize_srcu
|
||||
srcu_read_unlock_nmisafe start_poll_synchronize_srcu_expedited
|
||||
srcu_read_lock_notrace poll_state_synchronize_srcu
|
||||
srcu_read_unlock_notrace
|
||||
srcu_down_read
|
||||
srcu_up_read
|
||||
srcu_down_read_fast
|
||||
srcu_up_read_fast
|
||||
guard(srcu)()
|
||||
scoped_guard(srcu)
|
||||
srcu_read_lock_held
|
||||
srcu_dereference
|
||||
srcu_dereference_check
|
||||
srcu_dereference_notrace
|
||||
srcu_read_lock_held
|
||||
|
||||
SRCU: Initialization/cleanup::
|
||||
|
||||
SRCU: Initialization/cleanup/ordering::
|
||||
|
||||
DEFINE_SRCU
|
||||
DEFINE_STATIC_SRCU
|
||||
init_srcu_struct
|
||||
cleanup_srcu_struct
|
||||
smp_mb__after_srcu_read_unlock
|
||||
|
||||
All: lockdep-checked RCU utility APIs::
|
||||
|
||||
|
||||
@@ -223,13 +223,13 @@ Userspace components
|
||||
Compiler
|
||||
--------
|
||||
|
||||
Peano is an LLVM based open-source compiler for AMD XDNA Array compute tile
|
||||
available at:
|
||||
Peano is an LLVM based open-source single core compiler for AMD XDNA Array
|
||||
compute tile. Peano is available at:
|
||||
https://github.com/Xilinx/llvm-aie
|
||||
|
||||
The open-source IREE compiler supports graph compilation of ML models for AMD
|
||||
NPU and uses Peano underneath. It is available at:
|
||||
https://github.com/nod-ai/iree-amd-aie
|
||||
IRON is an open-source array compiler for AMD XDNA Array based NPU which uses
|
||||
Peano underneath. IRON is available at:
|
||||
https://github.com/Xilinx/mlir-aie
|
||||
|
||||
Usermode Driver (UMD)
|
||||
---------------------
|
||||
|
||||
@@ -10,6 +10,7 @@ Compute Accelerators
|
||||
introduction
|
||||
amdxdna/index
|
||||
qaic/index
|
||||
rocket/index
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
|
||||
19
Documentation/accel/rocket/index.rst
Normal file
19
Documentation/accel/rocket/index.rst
Normal file
@@ -0,0 +1,19 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
=====================================
|
||||
accel/rocket Rockchip NPU driver
|
||||
=====================================
|
||||
|
||||
The accel/rocket driver supports the Neural Processing Units (NPUs) inside some
|
||||
Rockchip SoCs such as the RK3588. Rockchip calls it RKNN and sometimes RKNPU.
|
||||
|
||||
The hardware is described in chapter 36 in the RK3588 TRM.
|
||||
|
||||
This driver just powers the hardware on and off, allocates and maps buffers to
|
||||
the device and submits jobs to the frontend unit. Everything else is done in
|
||||
userspace, as a Gallium driver (also called rocket) that is part of the Mesa3D
|
||||
project.
|
||||
|
||||
Hardware currently supported:
|
||||
|
||||
* RK3588
|
||||
@@ -131,3 +131,84 @@ Get IO accounting for pid 1, it works only with -p::
|
||||
linuxrc: read=65536, write=0, cancelled_write=0
|
||||
|
||||
The above command can be used with -v to get more debug information.
|
||||
|
||||
After the system starts, use `delaytop` to get the system-wide delay information,
|
||||
which includes system-wide PSI information and Top-N high-latency tasks.
|
||||
Note: PSI support requires `CONFIG_PSI=y` and `psi=1` for full functionality.
|
||||
|
||||
`delaytop` is an interactive tool for monitoring system pressure and task delays.
|
||||
It supports multiple sorting options, display modes, and real-time keyboard controls.
|
||||
|
||||
Basic usage with default settings (sorts by CPU delay, shows top 20 tasks, refreshes every 2 seconds)::
|
||||
|
||||
bash# ./delaytop
|
||||
System Pressure Information: (avg10/avg60vg300/total)
|
||||
CPU some: 0.0%/ 0.0%/ 0.0%/ 106137(ms)
|
||||
CPU full: 0.0%/ 0.0%/ 0.0%/ 0(ms)
|
||||
Memory full: 0.0%/ 0.0%/ 0.0%/ 0(ms)
|
||||
Memory some: 0.0%/ 0.0%/ 0.0%/ 0(ms)
|
||||
IO full: 0.0%/ 0.0%/ 0.0%/ 2240(ms)
|
||||
IO some: 0.0%/ 0.0%/ 0.0%/ 2783(ms)
|
||||
IRQ full: 0.0%/ 0.0%/ 0.0%/ 0(ms)
|
||||
[o]sort [M]memverbose [q]quit
|
||||
Top 20 processes (sorted by cpu delay):
|
||||
PID TGID COMMAND CPU(ms) IO(ms) IRQ(ms) MEM(ms)
|
||||
------------------------------------------------------------------------
|
||||
110 110 kworker/15:0H-s 27.91 0.00 0.00 0.00
|
||||
57 57 cpuhp/7 3.18 0.00 0.00 0.00
|
||||
99 99 cpuhp/14 2.97 0.00 0.00 0.00
|
||||
51 51 cpuhp/6 0.90 0.00 0.00 0.00
|
||||
44 44 kworker/4:0H-sy 0.80 0.00 0.00 0.00
|
||||
60 60 ksoftirqd/7 0.74 0.00 0.00 0.00
|
||||
76 76 idle_inject/10 0.31 0.00 0.00 0.00
|
||||
100 100 idle_inject/14 0.30 0.00 0.00 0.00
|
||||
1309 1309 systemsettings 0.29 0.00 0.00 0.00
|
||||
45 45 cpuhp/5 0.22 0.00 0.00 0.00
|
||||
63 63 cpuhp/8 0.20 0.00 0.00 0.00
|
||||
87 87 cpuhp/12 0.18 0.00 0.00 0.00
|
||||
93 93 cpuhp/13 0.17 0.00 0.00 0.00
|
||||
1265 1265 acpid 0.17 0.00 0.00 0.00
|
||||
1552 1552 sshd 0.17 0.00 0.00 0.00
|
||||
2584 2584 sddm-helper 0.16 0.00 0.00 0.00
|
||||
1284 1284 rtkit-daemon 0.15 0.00 0.00 0.00
|
||||
1326 1326 nde-netfilter 0.14 0.00 0.00 0.00
|
||||
27 27 cpuhp/2 0.13 0.00 0.00 0.00
|
||||
631 631 kworker/11:2-rc 0.11 0.00 0.00 0.00
|
||||
|
||||
Interactive keyboard controls during runtime::
|
||||
|
||||
o - Select sort field (CPU, IO, IRQ, Memory, etc.)
|
||||
M - Toggle display mode (Default/Memory Verbose)
|
||||
q - Quit
|
||||
|
||||
Available sort fields(use -s/--sort or interactive command)::
|
||||
|
||||
cpu(c) - CPU delay
|
||||
blkio(i) - I/O delay
|
||||
irq(q) - IRQ delay
|
||||
mem(m) - Total memory delay
|
||||
swapin(s) - Swapin delay (memory verbose mode only)
|
||||
freepages(r) - Freepages reclaim delay (memory verbose mode only)
|
||||
thrashing(t) - Thrashing delay (memory verbose mode only)
|
||||
compact(p) - Compaction delay (memory verbose mode only)
|
||||
wpcopy(w) - Write page copy delay (memory verbose mode only)
|
||||
|
||||
Advanced usage examples::
|
||||
|
||||
# ./delaytop -s blkio
|
||||
Sorted by IO delay
|
||||
|
||||
# ./delaytop -s mem -M
|
||||
Sorted by memory delay in memory verbose mode
|
||||
|
||||
# ./delaytop -p pid
|
||||
Print delayacct stats
|
||||
|
||||
# ./delaytop -P num
|
||||
Display the top N tasks
|
||||
|
||||
# ./delaytop -n num
|
||||
Set delaytop refresh frequency (num times)
|
||||
|
||||
# ./delaytop -d secs
|
||||
Specify refresh interval as secs
|
||||
|
||||
@@ -2,6 +2,17 @@
|
||||
SELinux
|
||||
=======
|
||||
|
||||
Information about the SELinux kernel subsystem can be found at the
|
||||
following links:
|
||||
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux.git/tree/README.md
|
||||
|
||||
https://github.com/selinuxproject/selinux-kernel/wiki
|
||||
|
||||
Information about the SELinux userspace can be found at:
|
||||
|
||||
https://github.com/SELinuxProject/selinux/wiki
|
||||
|
||||
If you want to use SELinux, chances are you will want
|
||||
to use the distro-provided policies, or install the
|
||||
latest reference policy release from
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace). The higher level goal is to allow for uid-based sandboxing of system
|
||||
services without having to give out CAP_SETUID all over the place just so that
|
||||
non-root programs can drop to even-lesser-privileged uids. This is especially
|
||||
relevant when one non-root daemon on the system should be allowed to spawn other
|
||||
processes as different uids, but its undesirable to give the daemon a
|
||||
processes as different uids, but it's undesirable to give the daemon a
|
||||
basically-root-equivalent CAP_SETUID.
|
||||
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@ interface.
|
||||
Some architectures have ECC detectors for L1, L2 and L3 caches,
|
||||
along with DMA engines, fabric switches, main data path switches,
|
||||
interconnections, and various other hardware data paths. If the hardware
|
||||
reports it, then a edac_device device probably can be constructed to
|
||||
reports it, then an edac_device device probably can be constructed to
|
||||
harvest and present that to userspace.
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# They may be installed along the following lines. Check the section
|
||||
# 8 udev manpage to see whether your udev supports SUBSYSTEM, and
|
||||
# whether it uses one or two equal signs for SUBSYSTEM and KERNEL.
|
||||
#
|
||||
#
|
||||
# ecashin@makki ~$ su
|
||||
# Password:
|
||||
# bash# find /etc -type f -name udev.conf
|
||||
@@ -13,7 +13,7 @@
|
||||
# 10-wacom.rules 50-udev.rules
|
||||
# bash# cp /path/to/linux/Documentation/admin-guide/aoe/udev.txt \
|
||||
# /etc/udev/rules.d/60-aoe.rules
|
||||
#
|
||||
#
|
||||
|
||||
# aoe char devices
|
||||
SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k", GROUP="disk", MODE="0220"
|
||||
@@ -22,5 +22,5 @@ SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="02
|
||||
SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="0220"
|
||||
SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220"
|
||||
|
||||
# aoe block devices
|
||||
# aoe block devices
|
||||
KERNEL=="etherd*", GROUP="disk"
|
||||
|
||||
@@ -118,7 +118,7 @@ and high-level drivers that you would use:
|
||||
================ ============ ========
|
||||
|
||||
All parports and all protocol drivers are probed automatically unless probe=0
|
||||
parameter is used. So just "modprobe epat" is enough for a Imation SuperDisk
|
||||
parameter is used. So just "modprobe epat" is enough for an Imation SuperDisk
|
||||
drive to work.
|
||||
|
||||
Manual device creation::
|
||||
|
||||
@@ -79,7 +79,7 @@ zone_capacity_mb Device zone capacity (must always be equal to or lower than
|
||||
the zone size. Default: zone size.
|
||||
conv_zones Total number of conventioanl zones starting from sector 0.
|
||||
Default: 8.
|
||||
base_dir Path to the base directoy where to create the directory
|
||||
base_dir Path to the base directory where to create the directory
|
||||
containing the zone files of the device.
|
||||
Default=/var/local/zloop.
|
||||
The device directory containing the zone files is always
|
||||
|
||||
@@ -265,7 +265,7 @@ The final kernel cmdline will be the following::
|
||||
Config File Limitation
|
||||
======================
|
||||
|
||||
Currently the maximum config size size is 32KB and the total key-words (not
|
||||
Currently the maximum config size is 32KB and the total key-words (not
|
||||
key-value entries) must be under 1024 nodes.
|
||||
Note: this is not the number of entries but nodes, an entry must consume
|
||||
more than 2 nodes (a key-word and a value). So theoretically, it will be
|
||||
|
||||
@@ -252,7 +252,7 @@ For example, if you find a bug at the gspca's sonixj.c file, you can get
|
||||
its maintainers with::
|
||||
|
||||
$ ./scripts/get_maintainer.pl --bug -f drivers/media/usb/gspca/sonixj.c
|
||||
Hans Verkuil <hverkuil@xs4all.nl> (odd fixer:GSPCA USB WEBCAM DRIVER,commit_signer:1/1=100%)
|
||||
Hans Verkuil <hverkuil@kernel.org> (odd fixer:GSPCA USB WEBCAM DRIVER,commit_signer:1/1=100%)
|
||||
Mauro Carvalho Chehab <mchehab@kernel.org> (maintainer:MEDIA INPUT INFRASTRUCTURE (V4L/DVB),commit_signer:1/1=100%)
|
||||
Tejun Heo <tj@kernel.org> (commit_signer:1/1=100%)
|
||||
Bhaktipriya Shridhar <bhaktipriya96@gmail.com> (commit_signer:1/1=100%,authored:1/1=100%,added_lines:4/4=100%,removed_lines:9/9=100%)
|
||||
|
||||
@@ -15,6 +15,9 @@ v1 is available under :ref:`Documentation/admin-guide/cgroup-v1/index.rst <cgrou
|
||||
|
||||
.. CONTENTS
|
||||
|
||||
[Whenever any new section is added to this document, please also add
|
||||
an entry here.]
|
||||
|
||||
1. Introduction
|
||||
1-1. Terminology
|
||||
1-2. What is cgroup?
|
||||
@@ -25,9 +28,10 @@ v1 is available under :ref:`Documentation/admin-guide/cgroup-v1/index.rst <cgrou
|
||||
2-2-2. Threads
|
||||
2-3. [Un]populated Notification
|
||||
2-4. Controlling Controllers
|
||||
2-4-1. Enabling and Disabling
|
||||
2-4-2. Top-down Constraint
|
||||
2-4-3. No Internal Process Constraint
|
||||
2-4-1. Availability
|
||||
2-4-2. Enabling and Disabling
|
||||
2-4-3. Top-down Constraint
|
||||
2-4-4. No Internal Process Constraint
|
||||
2-5. Delegation
|
||||
2-5-1. Model of Delegation
|
||||
2-5-2. Delegation Containment
|
||||
@@ -61,14 +65,15 @@ v1 is available under :ref:`Documentation/admin-guide/cgroup-v1/index.rst <cgrou
|
||||
5-4-1. PID Interface Files
|
||||
5-5. Cpuset
|
||||
5.5-1. Cpuset Interface Files
|
||||
5-6. Device
|
||||
5-6. Device controller
|
||||
5-7. RDMA
|
||||
5-7-1. RDMA Interface Files
|
||||
5-8. DMEM
|
||||
5-8-1. DMEM Interface Files
|
||||
5-9. HugeTLB
|
||||
5.9-1. HugeTLB Interface Files
|
||||
5-10. Misc
|
||||
5.10-1 Miscellaneous cgroup Interface Files
|
||||
5.10-1 Misc Interface Files
|
||||
5.10-2 Migration and Ownership
|
||||
5-11. Others
|
||||
5-11-1. perf_event
|
||||
@@ -435,6 +440,15 @@ both cgroups.
|
||||
Controlling Controllers
|
||||
-----------------------
|
||||
|
||||
Availability
|
||||
~~~~~~~~~~~~
|
||||
|
||||
A controller is available in a cgroup when it is supported by the kernel (i.e.,
|
||||
compiled in, not disabled and not attached to a v1 hierarchy) and listed in the
|
||||
"cgroup.controllers" file. Availability means the controller's interface files
|
||||
are exposed in the cgroup’s directory, allowing the distribution of the target
|
||||
resource to be observed or controlled within that cgroup.
|
||||
|
||||
Enabling and Disabling
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -992,6 +1006,24 @@ All cgroup core files are prefixed with "cgroup."
|
||||
Total number of dying cgroup subsystems (e.g. memory
|
||||
cgroup) at and beneath the current cgroup.
|
||||
|
||||
cgroup.stat.local
|
||||
A read-only flat-keyed file which exists in non-root cgroups.
|
||||
The following entry is defined:
|
||||
|
||||
frozen_usec
|
||||
Cumulative time that this cgroup has spent between freezing and
|
||||
thawing, regardless of whether by self or ancestor groups.
|
||||
NB: (not) reaching "frozen" state is not accounted here.
|
||||
|
||||
Using the following ASCII representation of a cgroup's freezer
|
||||
state, ::
|
||||
|
||||
1 _____
|
||||
frozen 0 __/ \__
|
||||
ab cd
|
||||
|
||||
the duration being measured is the span between a and c.
|
||||
|
||||
cgroup.freeze
|
||||
A read-write single value file which exists on non-root cgroups.
|
||||
Allowed values are "0" and "1". The default is "0".
|
||||
@@ -1732,12 +1764,6 @@ The following nested keys are defined.
|
||||
numa_hint_faults (npn)
|
||||
Number of NUMA hinting faults.
|
||||
|
||||
numa_task_migrated (npn)
|
||||
Number of task migration by NUMA balancing.
|
||||
|
||||
numa_task_swapped (npn)
|
||||
Number of task swap by NUMA balancing.
|
||||
|
||||
pgdemote_kswapd
|
||||
Number of pages demoted by kswapd.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ dm-delay
|
||||
========
|
||||
|
||||
Device-Mapper's "delay" target delays reads and/or writes
|
||||
and/or flushs and optionally maps them to different devices.
|
||||
and/or flushes and optionally maps them to different devices.
|
||||
|
||||
Arguments::
|
||||
|
||||
@@ -18,7 +18,7 @@ Table line has to either have 3, 6 or 9 arguments:
|
||||
to write and flush operations on optionally different write_device with
|
||||
optionally different sector offset
|
||||
|
||||
9: same as 6 arguments plus define flush_offset and flush_delay explicitely
|
||||
9: same as 6 arguments plus define flush_offset and flush_delay explicitly
|
||||
on/with optionally different flush_device/flush_offset.
|
||||
|
||||
Offsets are specified in sectors.
|
||||
@@ -40,7 +40,7 @@ Example scripts
|
||||
#!/bin/sh
|
||||
#
|
||||
# Create mapped device delaying write and flush operations for 400ms and
|
||||
# splitting reads to device $1 but writes and flushs to different device $2
|
||||
# splitting reads to device $1 but writes and flushes to different device $2
|
||||
# to different offsets of 2048 and 4096 sectors respectively.
|
||||
#
|
||||
dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 2048 0 $2 4096 400"
|
||||
@@ -48,7 +48,7 @@ Example scripts
|
||||
::
|
||||
#!/bin/sh
|
||||
#
|
||||
# Create mapped device delaying reads for 50ms, writes for 100ms and flushs for 333ms
|
||||
# Create mapped device delaying reads for 50ms, writes for 100ms and flushes for 333ms
|
||||
# onto the same backing device at offset 0 sectors.
|
||||
#
|
||||
dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 0 50 $2 0 100 $1 0 333"
|
||||
|
||||
202
Documentation/admin-guide/device-mapper/dm-pcache.rst
Normal file
202
Documentation/admin-guide/device-mapper/dm-pcache.rst
Normal file
@@ -0,0 +1,202 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
=================================
|
||||
dm-pcache — Persistent Cache
|
||||
=================================
|
||||
|
||||
*Author: Dongsheng Yang <dongsheng.yang@linux.dev>*
|
||||
|
||||
This document describes *dm-pcache*, a Device-Mapper target that lets a
|
||||
byte-addressable *DAX* (persistent-memory, “pmem”) region act as a
|
||||
high-performance, crash-persistent cache in front of a slower block
|
||||
device. The code lives in `drivers/md/dm-pcache/`.
|
||||
|
||||
Quick feature summary
|
||||
=====================
|
||||
|
||||
* *Write-back* caching (only mode currently supported).
|
||||
* *16 MiB segments* allocated on the pmem device.
|
||||
* *Data CRC32* verification (optional, per cache).
|
||||
* Crash-safe: every metadata structure is duplicated (`PCACHE_META_INDEX_MAX
|
||||
== 2`) and protected with CRC+sequence numbers.
|
||||
* *Multi-tree indexing* (indexing trees sharded by logical address) for high PMem parallelism
|
||||
* Pure *DAX path* I/O – no extra BIO round-trips
|
||||
* *Log-structured write-back* that preserves backend crash-consistency
|
||||
|
||||
|
||||
Constructor
|
||||
===========
|
||||
|
||||
::
|
||||
|
||||
pcache <cache_dev> <backing_dev> [<number_of_optional_arguments> <cache_mode writeback> <data_crc true|false>]
|
||||
|
||||
========================= ====================================================
|
||||
``cache_dev`` Any DAX-capable block device (``/dev/pmem0``…).
|
||||
All metadata *and* cached blocks are stored here.
|
||||
|
||||
``backing_dev`` The slow block device to be cached.
|
||||
|
||||
``cache_mode`` Optional, Only ``writeback`` is accepted at the
|
||||
moment.
|
||||
|
||||
``data_crc`` Optional, default to ``false``
|
||||
|
||||
* ``true`` – store CRC32 for every cached entry
|
||||
and verify on reads
|
||||
* ``false`` – skip CRC (faster)
|
||||
========================= ====================================================
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
dmsetup create pcache_sdb --table \
|
||||
"0 $(blockdev --getsz /dev/sdb) pcache /dev/pmem0 /dev/sdb 4 cache_mode writeback data_crc true"
|
||||
|
||||
The first time a pmem device is used, dm-pcache formats it automatically
|
||||
(super-block, cache_info, etc.).
|
||||
|
||||
|
||||
Status line
|
||||
===========
|
||||
|
||||
``dmsetup status <device>`` (``STATUSTYPE_INFO``) prints:
|
||||
|
||||
::
|
||||
|
||||
<sb_flags> <seg_total> <cache_segs> <segs_used> \
|
||||
<gc_percent> <cache_flags> \
|
||||
<key_head_seg>:<key_head_off> \
|
||||
<dirty_tail_seg>:<dirty_tail_off> \
|
||||
<key_tail_seg>:<key_tail_off>
|
||||
|
||||
Field meanings
|
||||
--------------
|
||||
|
||||
=============================== =============================================
|
||||
``sb_flags`` Super-block flags (e.g. endian marker).
|
||||
|
||||
``seg_total`` Number of physical *pmem* segments.
|
||||
|
||||
``cache_segs`` Number of segments used for cache.
|
||||
|
||||
``segs_used`` Segments currently allocated (bitmap weight).
|
||||
|
||||
``gc_percent`` Current GC high-water mark (0-90).
|
||||
|
||||
``cache_flags`` Bit 0 – DATA_CRC enabled
|
||||
Bit 1 – INIT_DONE (cache initialised)
|
||||
Bits 2-5 – cache mode (0 == WB).
|
||||
|
||||
``key_head`` Where new key-sets are being written.
|
||||
|
||||
``dirty_tail`` First dirty key-set that still needs
|
||||
write-back to the backing device.
|
||||
|
||||
``key_tail`` First key-set that may be reclaimed by GC.
|
||||
=============================== =============================================
|
||||
|
||||
|
||||
Messages
|
||||
========
|
||||
|
||||
*Change GC trigger*
|
||||
|
||||
::
|
||||
|
||||
dmsetup message <dev> 0 gc_percent <0-90>
|
||||
|
||||
|
||||
Theory of operation
|
||||
===================
|
||||
|
||||
Sub-devices
|
||||
-----------
|
||||
|
||||
==================== =========================================================
|
||||
backing_dev Any block device (SSD/HDD/loop/LVM, etc.).
|
||||
cache_dev DAX device; must expose direct-access memory.
|
||||
==================== =========================================================
|
||||
|
||||
Segments and key-sets
|
||||
---------------------
|
||||
|
||||
* The pmem space is divided into *16 MiB segments*.
|
||||
* Each write allocates space from a per-CPU *data_head* inside a segment.
|
||||
* A *cache-key* records a logical range on the origin and where it lives
|
||||
inside pmem (segment + offset + generation).
|
||||
* 128 keys form a *key-set* (kset); ksets are written sequentially in pmem
|
||||
and are themselves crash-safe (CRC).
|
||||
* The pair *(key_tail, dirty_tail)* delimit clean/dirty and live/dead ksets.
|
||||
|
||||
Write-back
|
||||
----------
|
||||
|
||||
Dirty keys are queued into a tree; a background worker copies data
|
||||
back to the backing_dev and advances *dirty_tail*. A FLUSH/FUA bio from the
|
||||
upper layers forces an immediate metadata commit.
|
||||
|
||||
Garbage collection
|
||||
------------------
|
||||
|
||||
GC starts when ``segs_used >= seg_total * gc_percent / 100``. It walks
|
||||
from *key_tail*, frees segments whose every key has been invalidated, and
|
||||
advances *key_tail*.
|
||||
|
||||
CRC verification
|
||||
----------------
|
||||
|
||||
If ``data_crc is enabled`` dm-pcache computes a CRC32 over every cached data
|
||||
range when it is inserted and stores it in the on-media key. Reads
|
||||
validate the CRC before copying to the caller.
|
||||
|
||||
|
||||
Failure handling
|
||||
================
|
||||
|
||||
* *pmem media errors* – all metadata copies are read with
|
||||
``copy_mc_to_kernel``; an uncorrectable error logs and aborts initialisation.
|
||||
* *Cache full* – if no free segment can be found, writes return ``-EBUSY``;
|
||||
dm-pcache retries internally (request deferral).
|
||||
* *System crash* – on attach, the driver replays ksets from *key_tail* to
|
||||
rebuild the in-core trees; every segment’s generation guards against
|
||||
use-after-free keys.
|
||||
|
||||
|
||||
Limitations & TODO
|
||||
==================
|
||||
|
||||
* Only *write-back* mode; other modes planned.
|
||||
* Only FIFO cache invalidate; other (LRU, ARC...) planned.
|
||||
* Table reload is not supported currently.
|
||||
* Discard planned.
|
||||
|
||||
|
||||
Example workflow
|
||||
================
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
# 1. Create devices
|
||||
dmsetup create pcache_sdb --table \
|
||||
"0 $(blockdev --getsz /dev/sdb) pcache /dev/pmem0 /dev/sdb 4 cache_mode writeback data_crc true"
|
||||
|
||||
# 2. Put a filesystem on top
|
||||
mkfs.ext4 /dev/mapper/pcache_sdb
|
||||
mount /dev/mapper/pcache_sdb /mnt
|
||||
|
||||
# 3. Tune GC threshold to 80 %
|
||||
dmsetup message pcache_sdb 0 gc_percent 80
|
||||
|
||||
# 4. Observe status
|
||||
watch -n1 'dmsetup status pcache_sdb'
|
||||
|
||||
# 5. Shutdown
|
||||
umount /mnt
|
||||
dmsetup remove pcache_sdb
|
||||
|
||||
|
||||
``dm-pcache`` is under active development; feedback, bug reports and patches
|
||||
are very welcome!
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user