Linux 5.9-rc1

-----BEGIN PGP SIGNATURE-----
 
 iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAl85kWkeHHRvcnZhbGRz
 QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiGGPwIAJpEmEBkMoQ+KARK
 PaaVDQW9fwAlC1nThMpGv/m8Ym7KbfLkTgEJQiQyNv3pDDhyLP8jvcZcscIkfs4s
 56IMjFndRHWNeCVu9YPXWmAEp/WycZNC7YVPu0j1bI9VgvaHvbHOqUWzxB716RbY
 K4TFprJEA3sotNm0vdda2NgSlSup/0NVKiP2LwQPjkwH+Kf6/Ol1j2uxbWywEo75
 BdW5LreDtUoJ7W5BeX8GJ0IVgWdyxBV61eVbaINNY3EOPc7+uMGOgR9oHeGWRceH
 V4ELYww5yjizUDtKFvVTc/k0tj+Rq73mtOADdaF0YWItqxtDBvAcdKIpC0KYzVaa
 2fB+rts=
 =9Pnj
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCXzvIXwAKCRDj7w1vZxhR
 xYXLAQC80uF6JkpBeNyuewyY7CDadDG1qDchDmYquwGVDnO+HwEAmvL84csLcxBy
 ah3UMOKUyWz5Sahlg48ZIaaUhRaulwE=
 =Lu/B
 -----END PGP SIGNATURE-----

Merge v5.9-rc1 into drm-misc-next

Sam needs 5.9-rc1 to have dev_err_probe in to merge some patches.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
This commit is contained in:
Maxime Ripard 2020-08-18 14:14:25 +02:00
commit d85ddd1318
11673 changed files with 405555 additions and 192654 deletions

1
.gitignore vendored
View file

@ -44,6 +44,7 @@
*.tab.[ch] *.tab.[ch]
*.tar *.tar
*.xz *.xz
*.zst
Module.symvers Module.symvers
modules.builtin modules.builtin
modules.order modules.order

View file

@ -2,11 +2,16 @@
# This list is used by git-shortlog to fix a few botched name translations # This list is used by git-shortlog to fix a few botched name translations
# in the git archive, either because the author's full name was messed up # in the git archive, either because the author's full name was messed up
# and/or not always written the same way, making contributions from the # and/or not always written the same way, making contributions from the
# same person appearing not to be so or badly displayed. # same person appearing not to be so or badly displayed. Also allows for
# old email addresses to map to new email addresses.
# #
# For format details, see "MAPPING AUTHORS" in "man git-shortlog".
#
# Please keep this list dictionary sorted.
#
# This comment is parsed by git-shortlog:
# repo-abbrev: /pub/scm/linux/kernel/git/ # repo-abbrev: /pub/scm/linux/kernel/git/
# #
Aaron Durbin <adurbin@google.com> Aaron Durbin <adurbin@google.com>
Adam Oldham <oldhamca@gmail.com> Adam Oldham <oldhamca@gmail.com>
Adam Radford <aradford@gmail.com> Adam Radford <aradford@gmail.com>
@ -18,6 +23,9 @@ Aleksey Gorelov <aleksey_gorelov@phoenix.com>
Aleksandar Markovic <aleksandar.markovic@mips.com> <aleksandar.markovic@imgtec.com> Aleksandar Markovic <aleksandar.markovic@mips.com> <aleksandar.markovic@imgtec.com>
Alex Shi <alex.shi@linux.alibaba.com> <alex.shi@intel.com> Alex Shi <alex.shi@linux.alibaba.com> <alex.shi@intel.com>
Alex Shi <alex.shi@linux.alibaba.com> <alex.shi@linaro.org> Alex Shi <alex.shi@linux.alibaba.com> <alex.shi@linaro.org>
Alexander Lobakin <alobakin@pm.me> <alobakin@dlink.ru>
Alexander Lobakin <alobakin@pm.me> <alobakin@marvell.com>
Alexander Lobakin <alobakin@pm.me> <bloodyreaper@yandex.ru>
Alexandre Belloni <alexandre.belloni@bootlin.com> <alexandre.belloni@free-electrons.com> Alexandre Belloni <alexandre.belloni@bootlin.com> <alexandre.belloni@free-electrons.com>
Alexei Starovoitov <ast@kernel.org> <ast@plumgrid.com> Alexei Starovoitov <ast@kernel.org> <ast@plumgrid.com>
Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com> Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com>
@ -96,6 +104,7 @@ Gerald Schaefer <gerald.schaefer@linux.ibm.com> <geraldsc@linux.vnet.ibm.com>
Greg Kroah-Hartman <greg@echidna.(none)> Greg Kroah-Hartman <greg@echidna.(none)>
Greg Kroah-Hartman <gregkh@suse.de> Greg Kroah-Hartman <gregkh@suse.de>
Greg Kroah-Hartman <greg@kroah.com> Greg Kroah-Hartman <greg@kroah.com>
Greg Kurz <groug@kaod.org> <gkurz@linux.vnet.ibm.com>
Gregory CLEMENT <gregory.clement@bootlin.com> <gregory.clement@free-electrons.com> Gregory CLEMENT <gregory.clement@bootlin.com> <gregory.clement@free-electrons.com>
Hanjun Guo <guohanjun@huawei.com> <hanjun.guo@linaro.org> Hanjun Guo <guohanjun@huawei.com> <hanjun.guo@linaro.org>
Heiko Carstens <hca@linux.ibm.com> <h.carstens@de.ibm.com> Heiko Carstens <hca@linux.ibm.com> <h.carstens@de.ibm.com>
@ -134,6 +143,11 @@ Jeff Layton <jlayton@kernel.org> <jlayton@poochiereds.net>
Jeff Layton <jlayton@kernel.org> <jlayton@primarydata.com> Jeff Layton <jlayton@kernel.org> <jlayton@primarydata.com>
Jens Axboe <axboe@suse.de> Jens Axboe <axboe@suse.de>
Jens Osterkamp <Jens.Osterkamp@de.ibm.com> Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
Jiri Slaby <jirislaby@kernel.org> <jirislaby@gmail.com>
Jiri Slaby <jirislaby@kernel.org> <jslaby@novell.com>
Jiri Slaby <jirislaby@kernel.org> <jslaby@suse.com>
Jiri Slaby <jirislaby@kernel.org> <jslaby@suse.cz>
Jiri Slaby <jirislaby@kernel.org> <xslaby@fi.muni.cz>
Johan Hovold <johan@kernel.org> <jhovold@gmail.com> Johan Hovold <johan@kernel.org> <jhovold@gmail.com>
Johan Hovold <johan@kernel.org> <johan@hovoldconsulting.com> Johan Hovold <johan@kernel.org> <johan@hovoldconsulting.com>
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
@ -151,6 +165,7 @@ Kamil Konieczny <k.konieczny@samsung.com> <k.konieczny@partner.samsung.com>
Kay Sievers <kay.sievers@vrfy.org> Kay Sievers <kay.sievers@vrfy.org>
Kenneth W Chen <kenneth.w.chen@intel.com> Kenneth W Chen <kenneth.w.chen@intel.com>
Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com> Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com>
Konstantin Khlebnikov <koct9i@gmail.com> <khlebnikov@yandex-team.ru>
Koushik <raghavendra.koushik@neterion.com> Koushik <raghavendra.koushik@neterion.com>
Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski@samsung.com> Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski@samsung.com>
Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski.k@gmail.com> Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski.k@gmail.com>

72
CREDITS
View file

@ -34,7 +34,7 @@ S: Romania
N: Mark Adler N: Mark Adler
E: madler@alumni.caltech.edu E: madler@alumni.caltech.edu
W: http://alumnus.caltech.edu/~madler/ W: https://alumnus.caltech.edu/~madler/
D: zlib decompression D: zlib decompression
N: Monalisa Agrawal N: Monalisa Agrawal
@ -62,7 +62,7 @@ S: United Kingdom
N: Werner Almesberger N: Werner Almesberger
E: werner@almesberger.net E: werner@almesberger.net
W: http://www.almesberger.net/ W: https://www.almesberger.net/
D: dosfs, LILO, some fd features, ATM, various other hacks here and there D: dosfs, LILO, some fd features, ATM, various other hacks here and there
S: Buenos Aires S: Buenos Aires
S: Argentina S: Argentina
@ -96,7 +96,7 @@ S: USA
N: Erik Andersen N: Erik Andersen
E: andersen@codepoet.org E: andersen@codepoet.org
W: http://www.codepoet.org/ W: https://www.codepoet.org/
P: 1024D/30D39057 1BC4 2742 E885 E4DE 9301 0C82 5F9B 643E 30D3 9057 P: 1024D/30D39057 1BC4 2742 E885 E4DE 9301 0C82 5F9B 643E 30D3 9057
D: Maintainer of ide-cd and Uniform CD-ROM driver, D: Maintainer of ide-cd and Uniform CD-ROM driver,
D: ATAPI CD-Changer support, Major 2.1.x CD-ROM update. D: ATAPI CD-Changer support, Major 2.1.x CD-ROM update.
@ -114,7 +114,7 @@ S: Canada K2P 0X3
N: H. Peter Anvin N: H. Peter Anvin
E: hpa@zytor.com E: hpa@zytor.com
W: http://www.zytor.com/~hpa/ W: https://www.zytor.com/~hpa/
P: 2047/2A960705 BA 03 D3 2C 14 A8 A8 BD 1E DF FE 69 EE 35 BD 74 P: 2047/2A960705 BA 03 D3 2C 14 A8 A8 BD 1E DF FE 69 EE 35 BD 74
D: Author of the SYSLINUX boot loader, maintainer of the linux.* news D: Author of the SYSLINUX boot loader, maintainer of the linux.* news
D: hierarchy and the Linux Device List; various kernel hacks D: hierarchy and the Linux Device List; various kernel hacks
@ -124,7 +124,7 @@ S: USA
N: Andrea Arcangeli N: Andrea Arcangeli
E: andrea@suse.de E: andrea@suse.de
W: http://www.kernel.org/pub/linux/kernel/people/andrea/ W: https://www.kernel.org/pub/linux/kernel/people/andrea/
P: 1024D/68B9CB43 13D9 8355 295F 4823 7C49 C012 DFA1 686E 68B9 CB43 P: 1024D/68B9CB43 13D9 8355 295F 4823 7C49 C012 DFA1 686E 68B9 CB43
P: 1024R/CB4660B9 CC A0 71 81 F4 A0 63 AC C0 4B 81 1D 8C 15 C8 E5 P: 1024R/CB4660B9 CC A0 71 81 F4 A0 63 AC C0 4B 81 1D 8C 15 C8 E5
D: Parport hacker D: Parport hacker
@ -339,7 +339,7 @@ S: Haifa, Israel
N: Johannes Berg N: Johannes Berg
E: johannes@sipsolutions.net E: johannes@sipsolutions.net
W: http://johannes.sipsolutions.net/ W: https://johannes.sipsolutions.net/
P: 4096R/7BF9099A C0EB C440 F6DA 091C 884D 8532 E0F3 73F3 7BF9 099A P: 4096R/7BF9099A C0EB C440 F6DA 091C 884D 8532 E0F3 73F3 7BF9 099A
D: powerpc & 802.11 hacker D: powerpc & 802.11 hacker
@ -376,7 +376,7 @@ D: Original author of the Linux networking code
N: Anton Blanchard N: Anton Blanchard
E: anton@samba.org E: anton@samba.org
W: http://samba.org/~anton/ W: https://samba.org/~anton/
P: 1024/8462A731 4C 55 86 34 44 59 A7 99 2B 97 88 4A 88 9A 0D 97 P: 1024/8462A731 4C 55 86 34 44 59 A7 99 2B 97 88 4A 88 9A 0D 97
D: sun4 port, Sparc hacker D: sun4 port, Sparc hacker
@ -509,7 +509,7 @@ S: Sweden
N: Paul Bristow N: Paul Bristow
E: paul@paulbristow.net E: paul@paulbristow.net
W: http://paulbristow.net/linux/idefloppy.html W: https://paulbristow.net/linux/idefloppy.html
D: Maintainer of IDE/ATAPI floppy driver D: Maintainer of IDE/ATAPI floppy driver
N: Stefano Brivio N: Stefano Brivio
@ -518,7 +518,7 @@ D: Broadcom B43 driver
N: Dominik Brodowski N: Dominik Brodowski
E: linux@brodo.de E: linux@brodo.de
W: http://www.brodo.de/ W: https://www.brodo.de/
P: 1024D/725B37C6 190F 3E77 9C89 3B6D BECD 46EE 67C3 0308 725B 37C6 P: 1024D/725B37C6 190F 3E77 9C89 3B6D BECD 46EE 67C3 0308 725B 37C6
D: parts of CPUFreq code, ACPI bugfixes, PCMCIA rewrite, cpufrequtils D: parts of CPUFreq code, ACPI bugfixes, PCMCIA rewrite, cpufrequtils
S: Tuebingen, Germany S: Tuebingen, Germany
@ -865,7 +865,7 @@ D: Promise DC4030VL caching HD controller drivers
N: Todd J. Derr N: Todd J. Derr
E: tjd@fore.com E: tjd@fore.com
W: http://www.wordsmith.org/~tjd W: https://www.wordsmith.org/~tjd
D: Random console hacks and other miscellaneous stuff D: Random console hacks and other miscellaneous stuff
S: 3000 FORE Drive S: 3000 FORE Drive
S: Warrendale, Pennsylvania 15086 S: Warrendale, Pennsylvania 15086
@ -894,8 +894,8 @@ S: USA
N: Matt Domsch N: Matt Domsch
E: Matt_Domsch@dell.com E: Matt_Domsch@dell.com
W: http://www.dell.com/linux W: https://www.dell.com/linux
W: http://domsch.com/linux W: https://domsch.com/linux
D: Linux/IA-64 D: Linux/IA-64
D: Dell PowerEdge server, SCSI layer, misc drivers, and other patches D: Dell PowerEdge server, SCSI layer, misc drivers, and other patches
S: Dell Inc. S: Dell Inc.
@ -992,7 +992,7 @@ S: USA
N: Randy Dunlap N: Randy Dunlap
E: rdunlap@infradead.org E: rdunlap@infradead.org
W: http://www.infradead.org/~rdunlap/ W: https://www.infradead.org/~rdunlap/
D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers
D: x86 SMP, ACPI, bootflag hacking D: x86 SMP, ACPI, bootflag hacking
D: documentation, builds D: documentation, builds
@ -1157,7 +1157,7 @@ S: Germany
N: Jeremy Fitzhardinge N: Jeremy Fitzhardinge
E: jeremy@goop.org E: jeremy@goop.org
W: http://www.goop.org/~jeremy W: https://www.goop.org/~jeremy
D: author of userfs filesystem D: author of userfs filesystem
D: Improved mmap and munmap handling D: Improved mmap and munmap handling
D: General mm minor tidyups D: General mm minor tidyups
@ -1460,7 +1460,7 @@ S: The Netherlands
N: Oliver Hartkopp N: Oliver Hartkopp
E: oliver.hartkopp@volkswagen.de E: oliver.hartkopp@volkswagen.de
W: http://www.volkswagen.de W: https://www.volkswagen.de
D: Controller Area Network (network layer core) D: Controller Area Network (network layer core)
S: Brieffach 1776 S: Brieffach 1776
S: 38436 Wolfsburg S: 38436 Wolfsburg
@ -1599,13 +1599,13 @@ S: Germany
N: Kenji Hollis N: Kenji Hollis
E: kenji@bitgate.com E: kenji@bitgate.com
W: http://www.bitgate.com/ W: https://www.bitgate.com/
D: Berkshire PC Watchdog Driver D: Berkshire PC Watchdog Driver
D: Small/Industrial Driver Project D: Small/Industrial Driver Project
N: Nick Holloway N: Nick Holloway
E: Nick.Holloway@pyrites.org.uk E: Nick.Holloway@pyrites.org.uk
W: http://www.pyrites.org.uk/ W: https://www.pyrites.org.uk/
P: 1024/36115A04 F4E1 3384 FCFD C055 15D6 BA4C AB03 FBF8 3611 5A04 P: 1024/36115A04 F4E1 3384 FCFD C055 15D6 BA4C AB03 FBF8 3611 5A04
D: Occasional Linux hacker... D: Occasional Linux hacker...
S: (ask for current address) S: (ask for current address)
@ -1655,7 +1655,7 @@ S: USA
N: Harald Hoyer N: Harald Hoyer
E: harald@redhat.com E: harald@redhat.com
W: http://www.harald-hoyer.de W: https://www.harald-hoyer.de
D: ip_masq_quake D: ip_masq_quake
D: md boot support D: md boot support
S: Am Strand 5 S: Am Strand 5
@ -1856,7 +1856,7 @@ E: kas@fi.muni.cz
D: Author of the COSA/SRP sync serial board driver. D: Author of the COSA/SRP sync serial board driver.
D: Port of the syncppp.c from the 2.0 to the 2.1 kernel. D: Port of the syncppp.c from the 2.0 to the 2.1 kernel.
P: 1024/D3498839 0D 99 A7 FB 20 66 05 D7 8B 35 FC DE 05 B1 8A 5E P: 1024/D3498839 0D 99 A7 FB 20 66 05 D7 8B 35 FC DE 05 B1 8A 5E
W: http://www.fi.muni.cz/~kas/ W: https://www.fi.muni.cz/~kas/
S: c/o Faculty of Informatics, Masaryk University S: c/o Faculty of Informatics, Masaryk University
S: Botanicka' 68a S: Botanicka' 68a
S: 602 00 Brno S: 602 00 Brno
@ -2017,7 +2017,7 @@ S: Prague, Czech Republic
N: Gene Kozin N: Gene Kozin
E: 74604.152@compuserve.com E: 74604.152@compuserve.com
W: http://www.sangoma.com W: https://www.sangoma.com
D: WAN Router & Sangoma WAN drivers D: WAN Router & Sangoma WAN drivers
S: Sangoma Technologies Inc. S: Sangoma Technologies Inc.
S: 7170 Warden Avenue, Unit 2 S: 7170 Warden Avenue, Unit 2
@ -2112,7 +2112,7 @@ D: Original author of software suspend
N: Jaroslav Kysela N: Jaroslav Kysela
E: perex@perex.cz E: perex@perex.cz
W: http://www.perex.cz W: https://www.perex.cz
D: Original Author and Maintainer for HP 10/100 Mbit Network Adapters D: Original Author and Maintainer for HP 10/100 Mbit Network Adapters
D: ISA PnP D: ISA PnP
S: Sindlovy Dvory 117 S: Sindlovy Dvory 117
@ -2316,7 +2316,7 @@ S: Finland
N: Daniel J. Maas N: Daniel J. Maas
E: dmaas@dcine.com E: dmaas@dcine.com
W: http://www.maasdigital.com W: https://www.maasdigital.com
D: dv1394 D: dv1394
N: Hamish Macdonald N: Hamish Macdonald
@ -2647,7 +2647,7 @@ D: bug fixes, documentation, minor hackery
N: Paul Moore N: Paul Moore
E: paul@paul-moore.com E: paul@paul-moore.com
W: http://www.paul-moore.com W: https://www.paul-moore.com
D: NetLabel, SELinux, audit D: NetLabel, SELinux, audit
N: James Morris N: James Morris
@ -2786,7 +2786,7 @@ N: David C. Niemi
E: niemi@tux.org E: niemi@tux.org
W: http://www.tux.org/~niemi/ W: http://www.tux.org/~niemi/
D: Assistant maintainer of Mtools, fdutils, and floppy driver D: Assistant maintainer of Mtools, fdutils, and floppy driver
D: Administrator of Tux.Org Linux Server, http://www.tux.org D: Administrator of Tux.Org Linux Server, https://www.tux.org
S: 2364 Old Trail Drive S: 2364 Old Trail Drive
S: Reston, Virginia 20191 S: Reston, Virginia 20191
S: USA S: USA
@ -2850,7 +2850,7 @@ S: USA
N: Mikulas Patocka N: Mikulas Patocka
E: mikulas@artax.karlin.mff.cuni.cz E: mikulas@artax.karlin.mff.cuni.cz
W: http://artax.karlin.mff.cuni.cz/~mikulas/ W: https://artax.karlin.mff.cuni.cz/~mikulas/
P: 1024/BB11D2D5 A0 F1 28 4A C4 14 1E CF 92 58 7A 8F 69 BC A4 D3 P: 1024/BB11D2D5 A0 F1 28 4A C4 14 1E CF 92 58 7A 8F 69 BC A4 D3
D: Read/write HPFS filesystem D: Read/write HPFS filesystem
S: Weissova 8 S: Weissova 8
@ -2872,7 +2872,7 @@ D: RFC2385 Support for TCP
N: Barak A. Pearlmutter N: Barak A. Pearlmutter
E: bap@cs.unm.edu E: bap@cs.unm.edu
W: http://www.cs.unm.edu/~bap/ W: https://www.cs.unm.edu/~bap/
P: 512/602D785D 9B A1 83 CD EE CB AD 93 20 C6 4C B7 F5 E9 60 D4 P: 512/602D785D 9B A1 83 CD EE CB AD 93 20 C6 4C B7 F5 E9 60 D4
D: Author of mark-and-sweep GC integrated by Alan Cox D: Author of mark-and-sweep GC integrated by Alan Cox
S: Computer Science Department S: Computer Science Department
@ -3035,7 +3035,7 @@ S: United Kingdom
N: Daniel Quinlan N: Daniel Quinlan
E: quinlan@pathname.com E: quinlan@pathname.com
W: http://www.pathname.com/~quinlan/ W: https://www.pathname.com/~quinlan/
D: FSSTND coordinator; FHS editor D: FSSTND coordinator; FHS editor
D: random Linux documentation, patches, and hacks D: random Linux documentation, patches, and hacks
S: 4390 Albany Drive #41A S: 4390 Albany Drive #41A
@ -3130,7 +3130,7 @@ S: France
N: Rik van Riel N: Rik van Riel
E: riel@redhat.com E: riel@redhat.com
W: http://www.surriel.com/ W: https://www.surriel.com/
D: Linux-MM site, Documentation/admin-guide/sysctl/*, swap/mm readaround D: Linux-MM site, Documentation/admin-guide/sysctl/*, swap/mm readaround
D: kswapd fixes, random kernel hacker, rmap VM, D: kswapd fixes, random kernel hacker, rmap VM,
D: nl.linux.org administrator, minor scheduler additions D: nl.linux.org administrator, minor scheduler additions
@ -3246,7 +3246,7 @@ S: Germany
N: Paul `Rusty' Russell N: Paul `Rusty' Russell
E: rusty@rustcorp.com.au E: rusty@rustcorp.com.au
W: http://ozlabs.org/~rusty W: https://ozlabs.org/~rusty
D: Ruggedly handsome. D: Ruggedly handsome.
D: netfilter, ipchains with Michael Neuling. D: netfilter, ipchains with Michael Neuling.
S: 52 Moore St S: 52 Moore St
@ -3369,7 +3369,7 @@ S: Germany
N: Robert Schwebel N: Robert Schwebel
E: robert@schwebel.de E: robert@schwebel.de
W: http://www.schwebel.de W: https://www.schwebel.de
D: Embedded hacker and book author, D: Embedded hacker and book author,
D: AMD Elan support for Linux D: AMD Elan support for Linux
S: Pengutronix S: Pengutronix
@ -3545,7 +3545,7 @@ S: Australia
N: Henrik Storner N: Henrik Storner
E: storner@image.dk E: storner@image.dk
W: http://www.image.dk/~storner/ W: http://www.image.dk/~storner/
W: http://www.sslug.dk/ W: https://www.sslug.dk/
D: Configure script: Invented tristate for module-configuration D: Configure script: Invented tristate for module-configuration
D: vfat/msdos integration, kerneld docs, Linux promotion D: vfat/msdos integration, kerneld docs, Linux promotion
D: Miscellaneous bug-fixes D: Miscellaneous bug-fixes
@ -3579,7 +3579,7 @@ S: USA
N: Eugene Surovegin N: Eugene Surovegin
E: ebs@ebshome.net E: ebs@ebshome.net
W: http://kernel.ebshome.net/ W: https://kernel.ebshome.net/
P: 1024D/AE5467F1 FF22 39F1 6728 89F6 6E6C 2365 7602 F33D AE54 67F1 P: 1024D/AE5467F1 FF22 39F1 6728 89F6 6E6C 2365 7602 F33D AE54 67F1
D: Embedded PowerPC 4xx: EMAC, I2C, PIC and random hacks/fixes D: Embedded PowerPC 4xx: EMAC, I2C, PIC and random hacks/fixes
S: Sunnyvale, California 94085 S: Sunnyvale, California 94085
@ -3609,7 +3609,7 @@ S: France
N: Urs Thuermann N: Urs Thuermann
E: urs.thuermann@volkswagen.de E: urs.thuermann@volkswagen.de
W: http://www.volkswagen.de W: https://www.volkswagen.de
D: Controller Area Network (network layer core) D: Controller Area Network (network layer core)
S: Brieffach 1776 S: Brieffach 1776
S: 38436 Wolfsburg S: 38436 Wolfsburg
@ -3656,7 +3656,7 @@ S: Canada K2L 1S2
N: Andrew Tridgell N: Andrew Tridgell
E: tridge@samba.org E: tridge@samba.org
W: http://samba.org/tridge/ W: https://samba.org/tridge/
D: dosemu, networking, samba D: dosemu, networking, samba
S: 3 Ballow Crescent S: 3 Ballow Crescent
S: MacGregor A.C.T 2615 S: MacGregor A.C.T 2615
@ -3894,7 +3894,7 @@ D: The Linux Support Team Erlangen
N: David Weinehall N: David Weinehall
E: tao@acc.umu.se E: tao@acc.umu.se
P: 1024D/DC47CA16 7ACE 0FB0 7A74 F994 9B36 E1D1 D14E 8526 DC47 CA16 P: 1024D/DC47CA16 7ACE 0FB0 7A74 F994 9B36 E1D1 D14E 8526 DC47 CA16
W: http://www.acc.umu.se/~tao/ W: https://www.acc.umu.se/~tao/
D: v2.0 kernel maintainer D: v2.0 kernel maintainer
D: Fixes for the NE/2-driver D: Fixes for the NE/2-driver
D: Miscellaneous MCA-support D: Miscellaneous MCA-support
@ -3919,7 +3919,7 @@ S: USA
N: Harald Welte N: Harald Welte
E: laforge@netfilter.org E: laforge@netfilter.org
P: 1024D/30F48BFF DBDE 6912 8831 9A53 879B 9190 5DA5 C655 30F4 8BFF P: 1024D/30F48BFF DBDE 6912 8831 9A53 879B 9190 5DA5 C655 30F4 8BFF
W: http://gnumonks.org/users/laforge W: https://gnumonks.org/users/laforge
D: netfilter: new nat helper infrastructure D: netfilter: new nat helper infrastructure
D: netfilter: ULOG, ECN, DSCP target D: netfilter: ULOG, ECN, DSCP target
D: netfilter: TTL match D: netfilter: TTL match

View file

@ -1,47 +1,47 @@
What: sys/bus/dsa/devices/dsa<m>/version What: /sys/bus/dsa/devices/dsa<m>/version
Date: Apr 15, 2020 Date: Apr 15, 2020
KernelVersion: 5.8.0 KernelVersion: 5.8.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The hardware version number. Description: The hardware version number.
What: sys/bus/dsa/devices/dsa<m>/cdev_major What: /sys/bus/dsa/devices/dsa<m>/cdev_major
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The major number that the character device driver assigned to Description: The major number that the character device driver assigned to
this device. this device.
What: sys/bus/dsa/devices/dsa<m>/errors What: /sys/bus/dsa/devices/dsa<m>/errors
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The error information for this device. Description: The error information for this device.
What: sys/bus/dsa/devices/dsa<m>/max_batch_size What: /sys/bus/dsa/devices/dsa<m>/max_batch_size
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The largest number of work descriptors in a batch. Description: The largest number of work descriptors in a batch.
What: sys/bus/dsa/devices/dsa<m>/max_work_queues_size What: /sys/bus/dsa/devices/dsa<m>/max_work_queues_size
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The maximum work queue size supported by this device. Description: The maximum work queue size supported by this device.
What: sys/bus/dsa/devices/dsa<m>/max_engines What: /sys/bus/dsa/devices/dsa<m>/max_engines
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The maximum number of engines supported by this device. Description: The maximum number of engines supported by this device.
What: sys/bus/dsa/devices/dsa<m>/max_groups What: /sys/bus/dsa/devices/dsa<m>/max_groups
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The maximum number of groups can be created under this device. Description: The maximum number of groups can be created under this device.
What: sys/bus/dsa/devices/dsa<m>/max_tokens What: /sys/bus/dsa/devices/dsa<m>/max_tokens
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
@ -50,7 +50,7 @@ Description: The total number of bandwidth tokens supported by this device.
implementation, and these resources are allocated by engines to implementation, and these resources are allocated by engines to
support operations. support operations.
What: sys/bus/dsa/devices/dsa<m>/max_transfer_size What: /sys/bus/dsa/devices/dsa<m>/max_transfer_size
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
@ -58,57 +58,57 @@ Description: The number of bytes to be read from the source address to
perform the operation. The maximum transfer size is dependent on perform the operation. The maximum transfer size is dependent on
the workqueue the descriptor was submitted to. the workqueue the descriptor was submitted to.
What: sys/bus/dsa/devices/dsa<m>/max_work_queues What: /sys/bus/dsa/devices/dsa<m>/max_work_queues
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The maximum work queue number that this device supports. Description: The maximum work queue number that this device supports.
What: sys/bus/dsa/devices/dsa<m>/numa_node What: /sys/bus/dsa/devices/dsa<m>/numa_node
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The numa node number for this device. Description: The numa node number for this device.
What: sys/bus/dsa/devices/dsa<m>/op_cap What: /sys/bus/dsa/devices/dsa<m>/op_cap
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The operation capability bit mask specify the operation types Description: The operation capability bit mask specify the operation types
supported by the this device. supported by the this device.
What: sys/bus/dsa/devices/dsa<m>/state What: /sys/bus/dsa/devices/dsa<m>/state
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The state information of this device. It can be either enabled Description: The state information of this device. It can be either enabled
or disabled. or disabled.
What: sys/bus/dsa/devices/dsa<m>/group<m>.<n> What: /sys/bus/dsa/devices/dsa<m>/group<m>.<n>
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The assigned group under this device. Description: The assigned group under this device.
What: sys/bus/dsa/devices/dsa<m>/engine<m>.<n> What: /sys/bus/dsa/devices/dsa<m>/engine<m>.<n>
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The assigned engine under this device. Description: The assigned engine under this device.
What: sys/bus/dsa/devices/dsa<m>/wq<m>.<n> What: /sys/bus/dsa/devices/dsa<m>/wq<m>.<n>
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The assigned work queue under this device. Description: The assigned work queue under this device.
What: sys/bus/dsa/devices/dsa<m>/configurable What: /sys/bus/dsa/devices/dsa<m>/configurable
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: To indicate if this device is configurable or not. Description: To indicate if this device is configurable or not.
What: sys/bus/dsa/devices/dsa<m>/token_limit What: /sys/bus/dsa/devices/dsa<m>/token_limit
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
@ -116,19 +116,19 @@ Description: The maximum number of bandwidth tokens that may be in use at
one time by operations that access low bandwidth memory in the one time by operations that access low bandwidth memory in the
device. device.
What: sys/bus/dsa/devices/wq<m>.<n>/group_id What: /sys/bus/dsa/devices/wq<m>.<n>/group_id
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The group id that this work queue belongs to. Description: The group id that this work queue belongs to.
What: sys/bus/dsa/devices/wq<m>.<n>/size What: /sys/bus/dsa/devices/wq<m>.<n>/size
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The work queue size for this work queue. Description: The work queue size for this work queue.
What: sys/bus/dsa/devices/wq<m>.<n>/type What: /sys/bus/dsa/devices/wq<m>.<n>/type
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
@ -136,20 +136,20 @@ Description: The type of this work queue, it can be "kernel" type for work
queue usages in the kernel space or "user" type for work queue queue usages in the kernel space or "user" type for work queue
usages by applications in user space. usages by applications in user space.
What: sys/bus/dsa/devices/wq<m>.<n>/cdev_minor What: /sys/bus/dsa/devices/wq<m>.<n>/cdev_minor
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The minor number assigned to this work queue by the character Description: The minor number assigned to this work queue by the character
device driver. device driver.
What: sys/bus/dsa/devices/wq<m>.<n>/mode What: /sys/bus/dsa/devices/wq<m>.<n>/mode
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The work queue mode type for this work queue. Description: The work queue mode type for this work queue.
What: sys/bus/dsa/devices/wq<m>.<n>/priority What: /sys/bus/dsa/devices/wq<m>.<n>/priority
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
@ -157,20 +157,20 @@ Description: The priority value of this work queue, it is a vlue relative to
other work queue in the same group to control quality of service other work queue in the same group to control quality of service
for dispatching work from multiple workqueues in the same group. for dispatching work from multiple workqueues in the same group.
What: sys/bus/dsa/devices/wq<m>.<n>/state What: /sys/bus/dsa/devices/wq<m>.<n>/state
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The current state of the work queue. Description: The current state of the work queue.
What: sys/bus/dsa/devices/wq<m>.<n>/threshold What: /sys/bus/dsa/devices/wq<m>.<n>/threshold
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org
Description: The number of entries in this work queue that may be filled Description: The number of entries in this work queue that may be filled
via a limited portal. via a limited portal.
What: sys/bus/dsa/devices/engine<m>.<n>/group_id What: /sys/bus/dsa/devices/engine<m>.<n>/group_id
Date: Oct 25, 2019 Date: Oct 25, 2019
KernelVersion: 5.6.0 KernelVersion: 5.6.0
Contact: dmaengine@vger.kernel.org Contact: dmaengine@vger.kernel.org

View file

@ -206,3 +206,20 @@ Description: This file exposes the firmware version of burnable voltage
regulator devices. regulator devices.
The file is read only. The file is read only.
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld1_pn
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld2_pn
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld3_pn
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld4_pn
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld1_version_min
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld2_version_min
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld3_version_min
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld4_version_min
Date: July 2020
KernelVersion: 5.9
Contact: Vadim Pasternak <vadimpmellanox.com>
Description: These files show with which CPLD part numbers and minor
versions have been burned CPLD devices equipped on a
system.
The files are read only.

View file

@ -0,0 +1,9 @@
What: /sys/kernel/debug/turris-mox-rwtm/do_sign
Date: Jun 2020
KernelVersion: 5.8
Contact: Marek Behún <marek.behun@nic.cz>
Description: (W) Message to sign with the ECDSA private key stored in
device's OTP. The message must be exactly 64 bytes (since
this is intended for SHA-512 hashes).
(R) The resulting signature, 136 bytes. This contains the R and
S values of the ECDSA signature, both in big-endian format.

View file

@ -56,6 +56,17 @@ Description: The /dev/kmsg character device node provides userspace access
seek after the last record available at the time seek after the last record available at the time
the last SYSLOG_ACTION_CLEAR was issued. the last SYSLOG_ACTION_CLEAR was issued.
Other seek operations or offsets are not supported because of
the special behavior this device has. The device allows to read
or write only whole variable length messages (records) that are
stored in a ring buffer.
Because of the non-standard behavior also the error values are
non-standard. -ESPIPE is returned for non-zero offset. -EINVAL
is returned for other operations, e.g. SEEK_CUR. This behavior
and values are historical and could not be modified without the
risk of breaking userspace.
The output format consists of a prefix carrying the syslog The output format consists of a prefix carrying the syslog
prefix including priority and facility, the 64 bit message prefix including priority and facility, the 64 bit message
sequence number and the monotonic timestamp in microseconds, sequence number and the monotonic timestamp in microseconds,

View file

@ -273,6 +273,24 @@ Description:
device ("host-aware" or "host-managed" zone model). For regular device ("host-aware" or "host-managed" zone model). For regular
block devices, the value is always 0. block devices, the value is always 0.
What: /sys/block/<disk>/queue/max_active_zones
Date: July 2020
Contact: Niklas Cassel <niklas.cassel@wdc.com>
Description:
For zoned block devices (zoned attribute indicating
"host-managed" or "host-aware"), the sum of zones belonging to
any of the zone states: EXPLICIT OPEN, IMPLICIT OPEN or CLOSED,
is limited by this value. If this value is 0, there is no limit.
What: /sys/block/<disk>/queue/max_open_zones
Date: July 2020
Contact: Niklas Cassel <niklas.cassel@wdc.com>
Description:
For zoned block devices (zoned attribute indicating
"host-managed" or "host-aware"), the sum of zones belonging to
any of the zone states: EXPLICIT OPEN or IMPLICIT OPEN,
is limited by this value. If this value is 0, there is no limit.
What: /sys/block/<disk>/queue/chunk_sectors What: /sys/block/<disk>/queue/chunk_sectors
Date: September 2016 Date: September 2016
Contact: Hannes Reinecke <hare@suse.com> Contact: Hannes Reinecke <hare@suse.com>

View file

@ -43,6 +43,13 @@ Description: read only
This sysfs interface exposes the number of cores per chip This sysfs interface exposes the number of cores per chip
present in the system. present in the system.
What: /sys/devices/hv_24x7/interface/cpumask
Date: July 2020
Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
Description: read only
This sysfs file exposes the cpumask which is designated to make
HCALLs to retrieve hv-24x7 pmu event counter data.
What: /sys/bus/event_source/devices/hv_24x7/event_descs/<event-name> What: /sys/bus/event_source/devices/hv_24x7/event_descs/<event-name>
Date: February 2014 Date: February 2014
Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>

View file

@ -1569,7 +1569,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_voc_raw
KernelVersion: 4.3 KernelVersion: 4.3
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
Raw (unscaled no offset etc.) percentage reading of a substance. Raw (unscaled no offset etc.) reading of a substance. Units
after application of scale and offset are percents.
What: /sys/bus/iio/devices/iio:deviceX/in_resistance_raw What: /sys/bus/iio/devices/iio:deviceX/in_resistance_raw
What: /sys/bus/iio/devices/iio:deviceX/in_resistanceX_raw What: /sys/bus/iio/devices/iio:deviceX/in_resistanceX_raw

View file

@ -0,0 +1,20 @@
What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibbias
What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibbias
What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibbias
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibbias
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibbias
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibbias
KernelVersion: 5.8
Contact: linux-iio@vger.kernel.org
Description:
Hardware applied calibration offset (assumed to fix production
inaccuracies). Values represent a real physical offset expressed
in SI units (m/s^2 for accelerometer and rad/s for gyroscope).
What: /sys/bus/iio/devices/iio:deviceX/in_accel_calibbias_available
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_calibbias_available
KernelVersion: 5.8
Contact: linux-iio@vger.kernel.org
Description:
Range of available values for hardware offset. Values in SI
units (m/s^2 for accelerometer and rad/s for gyroscope).

View file

@ -0,0 +1,34 @@
What: /sys/bus/iio/devices/iio:deviceX/calibration_auto_enable
Date: June 2020
KernelVersion: 5.8
Contact: linux-iio@vger.kernel.org
Description:
Contaminants build-up in the measurement chamber or optical
elements deterioration leads to sensor drift.
One can compensate for sensor drift by using automatic self
calibration procedure (asc).
Writing 1 or 0 to this attribute will respectively activate or
deactivate asc.
Upon reading current asc status is returned.
What: /sys/bus/iio/devices/iio:deviceX/calibration_forced_value
Date: June 2020
KernelVersion: 5.8
Contact: linux-iio@vger.kernel.org
Description:
Contaminants build-up in the measurement chamber or optical
elements deterioration leads to sensor drift.
One can compensate for sensor drift by using forced
recalibration (frc). This is useful in case there's known
co2 reference available nearby the sensor.
Picking value from the range [400 1 2000] and writing it to the
sensor will set frc.
Upon reading current frc value is returned. Note that after
power cycling default value (i.e 400) is returned even though
internally sensor had recalibrated itself.

View file

@ -202,6 +202,25 @@ Description:
functions. See the section named 'NVDIMM Root Device _DSMs' in functions. See the section named 'NVDIMM Root Device _DSMs' in
the ACPI specification. the ACPI specification.
What: /sys/bus/nd/devices/ndbusX/nfit/firmware_activate_noidle
Date: Apr, 2020
KernelVersion: v5.8
Contact: linux-nvdimm@lists.01.org
Description:
(RW) The Intel platform implementation of firmware activate
support exposes an option let the platform force idle devices in
the system over the activation event, or trust that the OS will
do it. The safe default is to let the platform force idle
devices since the kernel is already in a suspend state, and on
the chance that a driver does not properly quiesce bus-mastering
after a suspend callback the platform will handle it. However,
the activation might abort if, for example, platform firmware
determines that the activation time exceeds the max PCI-E
completion timeout. Since the platform does not know whether the
OS is running the activation from a suspend context it aborts,
but if the system owner trusts driver suspend callback to be
sufficient then 'firmware_activation_noidle' can be
enabled to bypass the activation abort.
What: /sys/bus/nd/devices/regionX/nfit/range_index What: /sys/bus/nd/devices/regionX/nfit/range_index
Date: Jun, 2015 Date: Jun, 2015

View file

@ -0,0 +1,2 @@
The libnvdimm sub-system implements a common sysfs interface for
platform nvdimm resources. See Documentation/driver-api/nvdimm/.

View file

@ -0,0 +1,8 @@
What: /sys/bus/tee/devices/optee-ta-<uuid>/
Date: May 2020
KernelVersion 5.8
Contact: op-tee@lists.trustedfirmware.org
Description:
OP-TEE bus provides reference to registered drivers under this directory. The <uuid>
matches Trusted Application (TA) driver and corresponding TA in secure OS. Drivers
are free to create needed API under optee-ta-<uuid> directory.

View file

@ -25,3 +25,30 @@ Description:
NVDIMM have been scrubbed. NVDIMM have been scrubbed.
* "locked" : Indicating that NVDIMM contents cant * "locked" : Indicating that NVDIMM contents cant
be modified until next power cycle. be modified until next power cycle.
What: /sys/bus/nd/devices/nmemX/papr/perf_stats
Date: May, 2020
KernelVersion: v5.9
Contact: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>, linux-nvdimm@lists.01.org,
Description:
(RO) Report various performance stats related to papr-scm NVDIMM
device. Each stat is reported on a new line with each line
composed of a stat-identifier followed by it value. Below are
currently known dimm performance stats which are reported:
* "CtlResCt" : Controller Reset Count
* "CtlResTm" : Controller Reset Elapsed Time
* "PonSecs " : Power-on Seconds
* "MemLife " : Life Remaining
* "CritRscU" : Critical Resource Utilization
* "HostLCnt" : Host Load Count
* "HostSCnt" : Host Store Count
* "HostSDur" : Host Store Duration
* "HostLDur" : Host Load Duration
* "MedRCnt " : Media Read Count
* "MedWCnt " : Media Write Count
* "MedRDur " : Media Read Duration
* "MedWDur " : Media Write Duration
* "CchRHCnt" : Cache Read Hit Count
* "CchWHCnt" : Cache Write Hit Count
* "FastWCnt" : Fast Write Count

View file

@ -18,3 +18,13 @@ Description:
devices to opt-out of driver binding using a driver_override devices to opt-out of driver binding using a driver_override
name such as "none". Only a single driver may be specified in name such as "none". Only a single driver may be specified in
the override, there is no support for parsing delimiters. the override, there is no support for parsing delimiters.
What: /sys/bus/platform/devices/.../numa_node
Date: June 2020
Contact: Barry Song <song.bao.hua@hisilicon.com>
Description:
This file contains the NUMA node to which the platform device
is attached. It won't be visible if the node is unknown. The
value comes from an ACPI _PXM method or a similar firmware
source. Initial users for this file would be devices like
arm smmu which are populated by arm64 acpi_iort.

View file

@ -178,11 +178,18 @@ KernelVersion: 4.13
Contact: thunderbolt-software@lists.01.org Contact: thunderbolt-software@lists.01.org
Description: When new NVM image is written to the non-active NVM Description: When new NVM image is written to the non-active NVM
area (through non_activeX NVMem device), the area (through non_activeX NVMem device), the
authentication procedure is started by writing 1 to authentication procedure is started by writing to
this file. If everything goes well, the device is this file.
If everything goes well, the device is
restarted with the new NVM firmware. If the image restarted with the new NVM firmware. If the image
verification fails an error code is returned instead. verification fails an error code is returned instead.
This file will accept writing values "1" or "2"
- Writing "1" will flush the image to the storage
area and authenticate the image in one action.
- Writing "2" will run some basic validation on the image
and flush it to the storage area.
When read holds status of the last authentication When read holds status of the last authentication
operation if an error occurred during the process. This operation if an error occurred during the process. This
is directly the status value from the DMA configuration is directly the status value from the DMA configuration
@ -236,3 +243,49 @@ KernelVersion: 4.15
Contact: thunderbolt-software@lists.01.org Contact: thunderbolt-software@lists.01.org
Description: This contains XDomain service specific settings as Description: This contains XDomain service specific settings as
bitmask. Format: %x bitmask. Format: %x
What: /sys/bus/thunderbolt/devices/<device>:<port>.<index>/device
Date: Oct 2020
KernelVersion: v5.9
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
Description: Retimer device identifier read from the hardware.
What: /sys/bus/thunderbolt/devices/<device>:<port>.<index>/nvm_authenticate
Date: Oct 2020
KernelVersion: v5.9
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
Description: When new NVM image is written to the non-active NVM
area (through non_activeX NVMem device), the
authentication procedure is started by writing 1 to
this file. If everything goes well, the device is
restarted with the new NVM firmware. If the image
verification fails an error code is returned instead.
When read holds status of the last authentication
operation if an error occurred during the process.
Format: %x.
What: /sys/bus/thunderbolt/devices/<device>:<port>.<index>/nvm_version
Date: Oct 2020
KernelVersion: v5.9
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
Description: Holds retimer NVM version number. Format: %x.%x, major.minor.
What: /sys/bus/thunderbolt/devices/<device>:<port>.<index>/vendor
Date: Oct 2020
KernelVersion: v5.9
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
Description: Retimer vendor identifier read from the hardware.
What: /sys/bus/thunderbolt/devices/.../nvm_authenticate_on_disconnect
Date: Oct 2020
KernelVersion: v5.9
Contact: Mario Limonciello <mario.limonciello@dell.com>
Description: For supported devices, automatically authenticate the new Thunderbolt
image when the device is disconnected from the host system.
This file will accept writing values "1" or "2"
- Writing "1" will flush the image to the storage
area and prepare the device for authentication on disconnect.
- Writing "2" will run some basic validation on the image
and flush it to the storage area.

View file

@ -108,3 +108,15 @@ Description:
frequency requested by governors and min_freq. frequency requested by governors and min_freq.
The max_freq overrides min_freq because max_freq may be The max_freq overrides min_freq because max_freq may be
used to throttle devices to avoid overheating. used to throttle devices to avoid overheating.
What: /sys/class/devfreq/.../timer
Date: July 2020
Contact: Chanwoo Choi <cw00.choi@samsung.com>
Description:
This ABI shows and stores the kind of work timer by users.
This work timer is used by devfreq workqueue in order to
monitor the device status such as utilization. The user
can change the work timer on runtime according to their demand
as following:
echo deferrable > /sys/class/devfreq/.../timer
echo delayed > /sys/class/devfreq/.../timer

View file

@ -0,0 +1,126 @@
What: /sys/class/devlink/.../
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
Provide a place in sysfs for the device link objects in the
kernel at any given time. The name of a device link directory,
denoted as ... above, is of the form <supplier>--<consumer>
where <supplier> is the supplier device name and <consumer> is
the consumer device name.
What: /sys/class/devlink/.../auto_remove_on
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
This file indicates if the device link will ever be
automatically removed by the driver core when the consumer and
supplier devices themselves are still present.
This will be one of the following strings:
'consumer unbind'
'supplier unbind'
'never'
'consumer unbind' means the device link will be removed when
the consumer's driver is unbound from the consumer device.
'supplier unbind' means the device link will be removed when
the supplier's driver is unbound from the supplier device.
'never' means the device link will not be automatically removed
when as long as the supplier and consumer devices themselves
are still present.
What: /sys/class/devlink/.../consumer
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
This file is a symlink to the consumer device's sysfs directory.
What: /sys/class/devlink/.../runtime_pm
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
This file indicates if the device link has any impact on the
runtime power management behavior of the consumer and supplier
devices. For example: Making sure the supplier doesn't enter
runtime suspend while the consumer is active.
This will be one of the following strings:
'0' - Does not affect runtime power management
'1' - Affects runtime power management
What: /sys/class/devlink/.../status
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
This file indicates the status of the device link. The status
of a device link is affected by whether the supplier and
consumer devices have been bound to their corresponding
drivers. The status of a device link also affects the binding
and unbinding of the supplier and consumer devices with their
drivers and also affects whether the software state of the
supplier device is synced with the hardware state of the
supplier device after boot up.
See also: sysfs-devices-state_synced.
This will be one of the following strings:
'not tracked'
'dormant'
'available'
'consumer probing'
'active'
'supplier unbinding'
'unknown'
'not tracked' means this device link does not track the status
and has no impact on the binding, unbinding and syncing the
hardware and software device state.
'dormant' means the supplier and the consumer devices have not
bound to their driver.
'available' means the supplier has bound to its driver and is
available to supply resources to the consumer device.
'consumer probing' means the consumer device is currently
trying to bind to its driver.
'active' means the supplier and consumer devices have both
bound successfully to their drivers.
'supplier unbinding' means the supplier devices is currently in
the process of unbinding from its driver.
'unknown' means the state of the device link is not any of the
above. If this is ever the value, there's a bug in the kernel.
What: /sys/class/devlink/.../supplier
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
This file is a symlink to the supplier device's sysfs directory.
What: /sys/class/devlink/.../sync_state_only
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
This file indicates if the device link is limited to only
affecting the syncing of the hardware and software state of the
supplier device.
This will be one of the following strings:
'0'
'1' - Affects runtime power management
'0' means the device link can affect other device behaviors
like binding/unbinding, suspend/resume, runtime power
management, etc.
'1' means the device link will only affect the syncing of
hardware and software state of the supplier device after boot
up and doesn't not affect other behaviors of the devices.

View file

@ -0,0 +1,14 @@
What: /sys/class/leds/<led>/device/brightness
Date: July 2020
KernelVersion: 5.9
Contact: Marek Behún <marek.behun@nic.cz>
Description: (RW) On the front panel of the Turris Omnia router there is also
a button which can be used to control the intensity of all the
LEDs at once, so that if they are too bright, user can dim them.
The microcontroller cycles between 8 levels of this global
brightness (from 100% to 0%), but this setting can have any
integer value between 0 and 100. It is therefore convenient to be
able to change this setting from software.
Format: %i

View file

@ -0,0 +1,35 @@
What: /sys/class/leds/<led>/brightness
Date: March 2020
KernelVersion: 5.9
Contact: Dan Murphy <dmurphy@ti.com>
Description: read/write
Writing to this file will update all LEDs within the group to a
calculated percentage of what each color LED intensity is set
to. The percentage is calculated for each grouped LED via the
equation below:
led_brightness = brightness * multi_intensity/max_brightness
For additional details please refer to
Documentation/leds/leds-class-multicolor.rst.
The value of the LED is from 0 to
/sys/class/leds/<led>/max_brightness.
What: /sys/class/leds/<led>/multi_index
Date: March 2020
KernelVersion: 5.9
Contact: Dan Murphy <dmurphy@ti.com>
Description: read
The multi_index array, when read, will output the LED colors
as an array of strings as they are indexed in the
multi_intensity file.
What: /sys/class/leds/<led>/multi_intensity
Date: March 2020
KernelVersion: 5.9
Contact: Dan Murphy <dmurphy@ti.com>
Description: read/write
This file contains array of integers. Order of components is
described by the multi_index array. The maximum intensity should
not exceed /sys/class/leds/<led>/max_brightness.

View file

@ -90,3 +90,16 @@ Description: Display trc status register content
The ME FW writes Glitch Detection HW (TRC) The ME FW writes Glitch Detection HW (TRC)
status information into trc status register status information into trc status register
for BIOS and OS to monitor fw health. for BIOS and OS to monitor fw health.
What: /sys/class/mei/meiN/kind
Date: Jul 2020
KernelVersion: 5.8
Contact: Tomas Winkler <tomas.winkler@intel.com>
Description: Display kind of the device
Generic devices are marked as "mei"
while special purpose have their own
names.
Available options:
- mei: generic mei device.
- itouch: itouch (ipts) mei device.

View file

@ -33,3 +33,14 @@ Date: January 2018
Contact: linuxppc-dev@lists.ozlabs.org Contact: linuxppc-dev@lists.ozlabs.org
Description: read/write Description: read/write
Give access the global mmio area for the AFU Give access the global mmio area for the AFU
What: /sys/class/ocxl/<afu name>/reload_on_reset
Date: February 2020
Contact: linuxppc-dev@lists.ozlabs.org
Description: read/write
Control whether the FPGA is reloaded on a link reset. Enabled
through a vendor-specific logic block on the FPGA.
0 Do not reload FPGA image from flash
1 Reload FPGA image from flash
unavailable
The device does not support this capability

View file

@ -205,7 +205,8 @@ Description:
Valid values: "Unknown", "Good", "Overheat", "Dead", Valid values: "Unknown", "Good", "Overheat", "Dead",
"Over voltage", "Unspecified failure", "Cold", "Over voltage", "Unspecified failure", "Cold",
"Watchdog timer expire", "Safety timer expire", "Watchdog timer expire", "Safety timer expire",
"Over current", "Calibration required" "Over current", "Calibration required", "Warm",
"Cool", "Hot"
What: /sys/class/power_supply/<supply_name>/precharge_current What: /sys/class/power_supply/<supply_name>/precharge_current
Date: June 2017 Date: June 2017

View file

@ -14,6 +14,10 @@ Description:
Charging begins when level drops below Charging begins when level drops below
charge_control_start_threshold, and ceases when charge_control_start_threshold, and ceases when
level is above charge_control_end_threshold. level is above charge_control_end_threshold.
Long Life: Customized charge rate for last longer battery life.
On Wilco device this mode is pre-configured in the factory
through EC's private PID. Swiching to a different mode will
be denied by Wilco EC when Long Life mode is enabled.
What: /sys/class/power_supply/wilco-charger/charge_control_start_threshold What: /sys/class/power_supply/wilco-charger/charge_control_start_threshold
Date: April 2019 Date: April 2019

View file

@ -0,0 +1,8 @@
What: /sys/devices/.../consumer:<consumer>
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
The /sys/devices/.../consumer:<consumer> are symlinks to device
links where this device is the supplier. <consumer> denotes the
name of the consumer in that device link. There can be zero or
more of these symlinks for a given device.

View file

@ -0,0 +1,33 @@
What: /sys/devices/uncore_iio_x/dieX
Date: February 2020
Contact: Roman Sudarikov <roman.sudarikov@linux.intel.com>
Description:
Each IIO stack (PCIe root port) has its own IIO PMON block, so
each dieX file (where X is die number) holds "Segment:Root Bus"
for PCIe root port, which can be monitored by that IIO PMON
block.
For example, on 4-die Xeon platform with up to 6 IIO stacks per
die and, therefore, 6 IIO PMON blocks per die, the mapping of
IIO PMON block 0 exposes as the following:
$ ls /sys/devices/uncore_iio_0/die*
-r--r--r-- /sys/devices/uncore_iio_0/die0
-r--r--r-- /sys/devices/uncore_iio_0/die1
-r--r--r-- /sys/devices/uncore_iio_0/die2
-r--r--r-- /sys/devices/uncore_iio_0/die3
$ tail /sys/devices/uncore_iio_0/die*
==> /sys/devices/uncore_iio_0/die0 <==
0000:00
==> /sys/devices/uncore_iio_0/die1 <==
0000:40
==> /sys/devices/uncore_iio_0/die2 <==
0000:80
==> /sys/devices/uncore_iio_0/die3 <==
0000:c0
Which means:
IIO PMU 0 on die 0 belongs to PCI RP on bus 0x00, domain 0x0000
IIO PMU 0 on die 1 belongs to PCI RP on bus 0x40, domain 0x0000
IIO PMU 0 on die 2 belongs to PCI RP on bus 0x80, domain 0x0000
IIO PMU 0 on die 3 belongs to PCI RP on bus 0xc0, domain 0x0000

View file

@ -126,3 +126,39 @@ Description:
1 no action 1 no action
0 firmware record the notify code defined 0 firmware record the notify code defined
in b[15:0]. in b[15:0].
What: /sys/devices/platform/stratix10-rsu.0/dcmf0
Date: June 2020
KernelVersion: 5.8
Contact: Richard Gong <richard.gong@linux.intel.com>
Description:
(RO) Decision firmware copy 0 version information.
What: /sys/devices/platform/stratix10-rsu.0/dcmf1
Date: June 2020
KernelVersion: 5.8
Contact: Richard Gong <richard.gong@linux.intel.com>
Description:
(RO) Decision firmware copy 1 version information.
What: /sys/devices/platform/stratix10-rsu.0/dcmf2
Date: June 2020
KernelVersion: 5.8
Contact: Richard Gong <richard.gong@linux.intel.com>
Description:
(RO) Decision firmware copy 2 version information.
What: /sys/devices/platform/stratix10-rsu.0/dcmf3
Date: June 2020
KernelVersion: 5.8
Contact: Richard Gong <richard.gong@linux.intel.com>
Description:
(RO) Decision firmware copy 3 version information.
What: /sys/devices/platform/stratix10-rsu.0/max_retry
Date: June 2020
KernelVersion: 5.8
Contact: Richard Gong <richard.gong@linux.intel.com>
Description:
(RO) max retry parameter is stored in the firmware
decision IO section, as a byte located at offset 0x18c.

View file

@ -26,6 +26,30 @@ Description:
Read-only attribute common to all SoCs. Contains SoC family name Read-only attribute common to all SoCs. Contains SoC family name
(e.g. DB8500). (e.g. DB8500).
On many of ARM based silicon with SMCCC v1.2+ compliant firmware
this will contain the JEDEC JEP106 manufacturers identification
code. The format is "jep106:XXYY" where XX is identity code and
YY is continuation code.
This manufacturers identification code is defined by one
or more eight (8) bit fields, each consisting of seven (7)
data bits plus one (1) odd parity bit. It is a single field,
limiting the possible number of vendors to 126. To expand
the maximum number of identification codes, a continuation
scheme has been defined.
The specified mechanism is that an identity code of 0x7F
represents the "continuation code" and implies the presence
of an additional identity code field, and this mechanism
may be extended to multiple continuation codes followed
by the manufacturer's identity code.
For example, ARM has identity code 0x7F 0x7F 0x7F 0x7F 0x3B,
which is code 0x3B on the fifth 'page'. This is shortened
as JEP106 identity code of 0x3B and a continuation code of
0x4 to represent the four continuation codes preceding the
identity code.
What: /sys/devices/socX/serial_number What: /sys/devices/socX/serial_number
Date: January 2019 Date: January 2019
contact: Bjorn Andersson <bjorn.andersson@linaro.org> contact: Bjorn Andersson <bjorn.andersson@linaro.org>
@ -40,6 +64,12 @@ Description:
Read-only attribute supported by most SoCs. In the case of Read-only attribute supported by most SoCs. In the case of
ST-Ericsson's chips this contains the SoC serial number. ST-Ericsson's chips this contains the SoC serial number.
On many of ARM based silicon with SMCCC v1.2+ compliant firmware
this will contain the SOC ID appended to the family attribute
to ensure there is no conflict in this namespace across various
vendors. The format is "jep106:XXYY:ZZZZ" where XX is identity
code, YY is continuation code and ZZZZ is the SOC ID.
What: /sys/devices/socX/revision What: /sys/devices/socX/revision
Date: January 2012 Date: January 2012
contact: Lee Jones <lee.jones@linaro.org> contact: Lee Jones <lee.jones@linaro.org>

View file

@ -0,0 +1,24 @@
What: /sys/devices/.../state_synced
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
The /sys/devices/.../state_synced attribute is only present for
devices whose bus types or driver provides the .sync_state()
callback. The number read from it (0 or 1) reflects the value
of the device's 'state_synced' field. A value of 0 means the
.sync_state() callback hasn't been called yet. A value of 1
means the .sync_state() callback has been called.
Generally, if a device has sync_state() support and has some of
the resources it provides enabled at the time the kernel starts
(Eg: enabled by hardware reset or bootloader or anything that
run before the kernel starts), then it'll keep those resources
enabled and in a state that's compatible with the state they
were in at the start of the kernel. The device will stop doing
this only when the sync_state() callback has been called --
which happens only when all its consumer devices are registered
and have probed successfully. Resources that were left disabled
at the time the kernel starts are not affected or limited in
any way by sync_state() callbacks.

View file

@ -0,0 +1,8 @@
What: /sys/devices/.../supplier:<supplier>
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
The /sys/devices/.../supplier:<supplier> are symlinks to device
links where this device is the consumer. <supplier> denotes the
name of the supplier in that device link. There can be zero or
more of these symlinks for a given device.

View file

@ -0,0 +1,17 @@
What: /sys/devices/.../waiting_for_supplier
Date: May 2020
Contact: Saravana Kannan <saravanak@google.com>
Description:
The /sys/devices/.../waiting_for_supplier attribute is only
present when fw_devlink kernel command line option is enabled
and is set to something stricter than "permissive". It is
removed once a device probes successfully (because the
information is no longer relevant). The number read from it (0
or 1) reflects whether the device is waiting for one or more
suppliers to be added and then linked to using device links
before the device can probe.
A value of 0 means the device is not waiting for any suppliers
to be added before it can probe. A value of 1 means the device
is waiting for one or more suppliers to be added before it can
probe.

View file

@ -0,0 +1,15 @@
What: /sys/bus/i2c/devices/xxx/fw_version
Date: Aug 2020
Contact: linux-input@vger.kernel.org
Description: Reports the firmware version provided by the touchscreen, for example "00_T6" on a EXC80H60
Access: Read
Valid values: Represented as string
What: /sys/bus/i2c/devices/xxx/model
Date: Aug 2020
Contact: linux-input@vger.kernel.org
Description: Reports the model identification provided by the touchscreen, for example "Orion_1320" on a EXC80H60
Access: Read
Valid values: Represented as string

View file

@ -883,3 +883,139 @@ Contact: Subhash Jadavani <subhashj@codeaurora.org>
Description: This entry shows the target state of an UFS UIC link Description: This entry shows the target state of an UFS UIC link
for the chosen system power management level. for the chosen system power management level.
The file is read only. The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_presv_us_en
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows if preserve user-space was configured
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_shared_alloc_units
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the shared allocated units of WB buffer
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/device_descriptor/wb_type
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the configured WB type.
0x1 for shared buffer mode. 0x0 for dedicated buffer mode.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_buff_cap_adj
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the total user-space decrease in shared
buffer mode.
The value of this parameter is 3 for TLC NAND when SLC mode
is used as WriteBooster Buffer. 2 for MLC NAND.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_max_alloc_units
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the Maximum total WriteBooster Buffer size
which is supported by the entire device.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_max_wb_luns
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the maximum number of luns that can support
WriteBooster.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_sup_red_type
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: The supportability of user space reduction mode
and preserve user space mode.
00h: WriteBooster Buffer can be configured only in
user space reduction type.
01h: WriteBooster Buffer can be configured only in
preserve user space type.
02h: Device can be configured in either user space
reduction type or preserve user space type.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/geometry_descriptor/wb_sup_wb_type
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: The supportability of WriteBooster Buffer type.
00h: LU based WriteBooster Buffer configuration
01h: Single shared WriteBooster Buffer
configuration
02h: Supporting both LU based WriteBooster
Buffer and Single shared WriteBooster Buffer
configuration
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/flags/wb_enable
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the status of WriteBooster.
0: WriteBooster is not enabled.
1: WriteBooster is enabled
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/flags/wb_flush_en
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows if flush is enabled.
0: Flush operation is not performed.
1: Flush operation is performed.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/flags/wb_flush_during_h8
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: Flush WriteBooster Buffer during hibernate state.
0: Device is not allowed to flush the
WriteBooster Buffer during link hibernate
state.
1: Device is allowed to flush the
WriteBooster Buffer during link hibernate
state
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_avail_buf
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the amount of unused WriteBooster buffer
available.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_cur_buf
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the amount of unused current buffer.
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_flush_status
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the flush operation status.
00h: idle
01h: Flush operation in progress
02h: Flush operation stopped prematurely.
03h: Flush operation completed successfully
04h: Flush operation general failure
The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/attributes/wb_life_time_est
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows an indication of the WriteBooster Buffer
lifetime based on the amount of performed program/erase cycles
01h: 0% - 10% WriteBooster Buffer life time used
...
0Ah: 90% - 100% WriteBooster Buffer life time used
The file is read only.
What: /sys/class/scsi_device/*/device/unit_descriptor/wb_buf_alloc_units
Date: June 2020
Contact: Asutosh Das <asutoshd@codeaurora.org>
Description: This entry shows the configured size of WriteBooster buffer.
0400h corresponds to 4GB.
The file is read only.

View file

@ -8,7 +8,7 @@ Description:
to device min/max capabilities. Values are integer as they are to device min/max capabilities. Values are integer as they are
stored in a 8bit register in the device. Lowest value is stored in a 8bit register in the device. Lowest value is
automatically put to TL. Once set, alarms could be search at automatically put to TL. Once set, alarms could be search at
master level, refer to Documentation/w1/w1_generic.rst for master level, refer to Documentation/w1/w1-generic.rst for
detailed information detailed information
Users: any user space application which wants to communicate with Users: any user space application which wants to communicate with
w1_term device w1_term device

View file

@ -229,7 +229,9 @@ Date: August 2017
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org> Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
Description: Do background GC agressively when set. When gc_urgent = 1, Description: Do background GC agressively when set. When gc_urgent = 1,
background thread starts to do GC by given gc_urgent_sleep_time background thread starts to do GC by given gc_urgent_sleep_time
interval. It is set to 0 by default. interval. When gc_urgent = 2, F2FS will lower the bar of
checking idle in order to process outstanding discard commands
and GC a little bit aggressively. It is set to 0 by default.
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
Date: August 2017 Date: August 2017

View file

@ -0,0 +1,26 @@
.. SPDX-License-Identifier: GPL-2.0
==========================
PCI Test Endpoint Function
==========================
name: Should be "pci_epf_test" to bind to the pci_epf_test driver.
Configurable Fields:
================ ===========================================================
vendorid should be 0x104c
deviceid should be 0xb500 for DRA74x and 0xb501 for DRA72x
revid don't care
progif_code don't care
subclass_code don't care
baseclass_code should be 0xff
cache_line_size don't care
subsys_vendor_id don't care
subsys_id don't care
interrupt_pin Should be 1 - INTA, 2 - INTB, 3 - INTC, 4 -INTD
msi_interrupts Should be 1 to 32 depending on the number of MSI interrupts
to test
msix_interrupts Should be 1 to 2048 depending on the number of MSI-X
interrupts to test
================ ===========================================================

View file

@ -1,19 +0,0 @@
PCI TEST ENDPOINT FUNCTION
name: Should be "pci_epf_test" to bind to the pci_epf_test driver.
Configurable Fields:
vendorid : should be 0x104c
deviceid : should be 0xb500 for DRA74x and 0xb501 for DRA72x
revid : don't care
progif_code : don't care
subclass_code : don't care
baseclass_code : should be 0xff
cache_line_size : don't care
subsys_vendor_id : don't care
subsys_id : don't care
interrupt_pin : Should be 1 - INTA, 2 - INTB, 3 - INTC, 4 -INTD
msi_interrupts : Should be 1 to 32 depending on the number of MSI interrupts
to test
msix_interrupts : Should be 1 to 2048 depending on the number of MSI-X
interrupts to test

View file

@ -11,3 +11,5 @@ PCI Endpoint Framework
pci-endpoint-cfs pci-endpoint-cfs
pci-test-function pci-test-function
pci-test-howto pci-test-howto
function/binding/pci-test

View file

@ -24,7 +24,7 @@ Directory Structure
The pci_ep configfs has two directories at its root: controllers and The pci_ep configfs has two directories at its root: controllers and
functions. Every EPC device present in the system will have an entry in functions. Every EPC device present in the system will have an entry in
the *controllers* directory and and every EPF driver present in the system the *controllers* directory and every EPF driver present in the system
will have an entry in the *functions* directory. will have an entry in the *functions* directory.
:: ::

View file

@ -214,7 +214,7 @@ pci-ep-cfs.c can be used as reference for using these APIs.
* pci_epf_create() * pci_epf_create()
Create a new PCI EPF device by passing the name of the PCI EPF device. Create a new PCI EPF device by passing the name of the PCI EPF device.
This name will be used to bind the the EPF device to a EPF driver. This name will be used to bind the EPF device to a EPF driver.
* pci_epf_destroy() * pci_epf_destroy()

View file

@ -79,7 +79,7 @@ This structure has the form::
struct pci_error_handlers struct pci_error_handlers
{ {
int (*error_detected)(struct pci_dev *dev, enum pci_channel_state); int (*error_detected)(struct pci_dev *dev, pci_channel_state_t);
int (*mmio_enabled)(struct pci_dev *dev); int (*mmio_enabled)(struct pci_dev *dev);
int (*slot_reset)(struct pci_dev *dev); int (*slot_reset)(struct pci_dev *dev);
void (*resume)(struct pci_dev *dev); void (*resume)(struct pci_dev *dev);
@ -87,11 +87,11 @@ This structure has the form::
The possible channel states are:: The possible channel states are::
enum pci_channel_state { typedef enum {
pci_channel_io_normal, /* I/O channel is in normal state */ pci_channel_io_normal, /* I/O channel is in normal state */
pci_channel_io_frozen, /* I/O to channel is blocked */ pci_channel_io_frozen, /* I/O to channel is blocked */
pci_channel_io_perm_failure, /* PCI card is dead */ pci_channel_io_perm_failure, /* PCI card is dead */
}; } pci_channel_state_t;
Possible return values are:: Possible return values are::
@ -248,7 +248,7 @@ STEP 4: Slot Reset
------------------ ------------------
In response to a return value of PCI_ERS_RESULT_NEED_RESET, the In response to a return value of PCI_ERS_RESULT_NEED_RESET, the
the platform will perform a slot reset on the requesting PCI device(s). platform will perform a slot reset on the requesting PCI device(s).
The actual steps taken by a platform to perform a slot reset The actual steps taken by a platform to perform a slot reset
will be platform-dependent. Upon completion of slot reset, the will be platform-dependent. Upon completion of slot reset, the
platform will call the device slot_reset() callback. platform will call the device slot_reset() callback.
@ -348,7 +348,7 @@ STEP 6: Permanent Failure
------------------------- -------------------------
A "permanent failure" has occurred, and the platform cannot recover A "permanent failure" has occurred, and the platform cannot recover
the device. The platform will call error_detected() with a the device. The platform will call error_detected() with a
pci_channel_state value of pci_channel_io_perm_failure. pci_channel_state_t value of pci_channel_io_perm_failure.
The device driver should, at this point, assume the worst. It should The device driver should, at this point, assume the worst. It should
cancel all pending I/O, refuse all new I/O, returning -EIO to cancel all pending I/O, refuse all new I/O, returning -EIO to

View file

@ -17,7 +17,7 @@ PCI device drivers.
A more complete resource is the third edition of "Linux Device Drivers" A more complete resource is the third edition of "Linux Device Drivers"
by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman.
LDD3 is available for free (under Creative Commons License) from: LDD3 is available for free (under Creative Commons License) from:
http://lwn.net/Kernel/LDD3/. https://lwn.net/Kernel/LDD3/.
However, keep in mind that all documents are subject to "bit rot". However, keep in mind that all documents are subject to "bit rot".
Refer to the source code if things are not working as described here. Refer to the source code if things are not working as described here.
@ -209,12 +209,12 @@ the PCI device by calling pci_enable_device(). This will:
OS BUG: we don't check resource allocations before enabling those OS BUG: we don't check resource allocations before enabling those
resources. The sequence would make more sense if we called resources. The sequence would make more sense if we called
pci_request_resources() before calling pci_enable_device(). pci_request_resources() before calling pci_enable_device().
Currently, the device drivers can't detect the bug when when two Currently, the device drivers can't detect the bug when two
devices have been allocated the same range. This is not a common devices have been allocated the same range. This is not a common
problem and unlikely to get fixed soon. problem and unlikely to get fixed soon.
This has been discussed before but not changed as of 2.6.19: This has been discussed before but not changed as of 2.6.19:
http://lkml.org/lkml/2006/3/2/194 https://lore.kernel.org/r/20060302180025.GC28895@flint.arm.linux.org.uk/
pci_set_master() will enable DMA by setting the bus master bit pci_set_master() will enable DMA by setting the bus master bit
@ -265,7 +265,7 @@ Set the DMA mask size
--------------------- ---------------------
.. note:: .. note::
If anything below doesn't make sense, please refer to If anything below doesn't make sense, please refer to
Documentation/DMA-API.txt. This section is just a reminder that :doc:`/core-api/dma-api`. This section is just a reminder that
drivers need to indicate DMA capabilities of the device and is not drivers need to indicate DMA capabilities of the device and is not
an authoritative source for DMA interfaces. an authoritative source for DMA interfaces.
@ -291,7 +291,7 @@ Many 64-bit "PCI" devices (before PCI-X) and some PCI-X devices are
Setup shared control data Setup shared control data
------------------------- -------------------------
Once the DMA masks are set, the driver can allocate "consistent" (a.k.a. shared) Once the DMA masks are set, the driver can allocate "consistent" (a.k.a. shared)
memory. See Documentation/DMA-API.txt for a full description of memory. See :doc:`/core-api/dma-api` for a full description of
the DMA APIs. This section is just a reminder that it needs to be done the DMA APIs. This section is just a reminder that it needs to be done
before enabling DMA on the device. before enabling DMA on the device.
@ -421,7 +421,7 @@ owners if there is one.
Then clean up "consistent" buffers which contain the control data. Then clean up "consistent" buffers which contain the control data.
See Documentation/DMA-API.txt for details on unmapping interfaces. See :doc:`/core-api/dma-api` for details on unmapping interfaces.
Unregister from other subsystems Unregister from other subsystems
@ -514,9 +514,8 @@ your driver if they're helpful, or just use plain hex constants.
The device IDs are arbitrary hex numbers (vendor controlled) and normally used The device IDs are arbitrary hex numbers (vendor controlled) and normally used
only in a single location, the pci_device_id table. only in a single location, the pci_device_id table.
Please DO submit new vendor/device IDs to http://pci-ids.ucw.cz/. Please DO submit new vendor/device IDs to https://pci-ids.ucw.cz/.
There are mirrors of the pci.ids file at http://pciids.sourceforge.net/ There's a mirror of the pci.ids file at https://github.com/pciutils/pciids.
and https://github.com/pciutils/pciids.
Obsolete functions Obsolete functions

View file

@ -463,7 +463,7 @@ again without disrupting RCU readers.
This guarantee was only partially premeditated. DYNIX/ptx used an This guarantee was only partially premeditated. DYNIX/ptx used an
explicit memory barrier for publication, but had nothing resembling explicit memory barrier for publication, but had nothing resembling
``rcu_dereference()`` for subscription, nor did it have anything ``rcu_dereference()`` for subscription, nor did it have anything
resembling the ``smp_read_barrier_depends()`` that was later subsumed resembling the dependency-ordering barrier that was later subsumed
into ``rcu_dereference()`` and later still into ``READ_ONCE()``. The into ``rcu_dereference()`` and later still into ``READ_ONCE()``. The
need for these operations made itself known quite suddenly at a need for these operations made itself known quite suddenly at a
late-1990s meeting with the DEC Alpha architects, back in the days when late-1990s meeting with the DEC Alpha architects, back in the days when
@ -2583,7 +2583,12 @@ not work to have these markers in the trampoline itself, because there
would need to be instructions following ``rcu_read_unlock()``. Although would need to be instructions following ``rcu_read_unlock()``. Although
``synchronize_rcu()`` would guarantee that execution reached the ``synchronize_rcu()`` would guarantee that execution reached the
``rcu_read_unlock()``, it would not be able to guarantee that execution ``rcu_read_unlock()``, it would not be able to guarantee that execution
had completely left the trampoline. had completely left the trampoline. Worse yet, in some situations
the trampoline's protection must extend a few instructions *prior* to
execution reaching the trampoline. For example, these few instructions
might calculate the address of the trampoline, so that entering the
trampoline would be pre-ordained a surprisingly long time before execution
actually reached the trampoline itself.
The solution, in the form of `Tasks The solution, in the form of `Tasks
RCU <https://lwn.net/Articles/607117/>`__, is to have implicit read-side RCU <https://lwn.net/Articles/607117/>`__, is to have implicit read-side

View file

@ -1,4 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
================================
Review Checklist for RCU Patches Review Checklist for RCU Patches
================================
This document contains a checklist for producing and reviewing patches This document contains a checklist for producing and reviewing patches
@ -411,18 +415,21 @@ over a rather long period of time, but improvements are always welcome!
__rcu sparse checks to validate your RCU code. These can help __rcu sparse checks to validate your RCU code. These can help
find problems as follows: find problems as follows:
CONFIG_PROVE_LOCKING: check that accesses to RCU-protected data CONFIG_PROVE_LOCKING:
check that accesses to RCU-protected data
structures are carried out under the proper RCU structures are carried out under the proper RCU
read-side critical section, while holding the right read-side critical section, while holding the right
combination of locks, or whatever other conditions combination of locks, or whatever other conditions
are appropriate. are appropriate.
CONFIG_DEBUG_OBJECTS_RCU_HEAD: check that you don't pass the CONFIG_DEBUG_OBJECTS_RCU_HEAD:
check that you don't pass the
same object to call_rcu() (or friends) before an RCU same object to call_rcu() (or friends) before an RCU
grace period has elapsed since the last time that you grace period has elapsed since the last time that you
passed that same object to call_rcu() (or friends). passed that same object to call_rcu() (or friends).
__rcu sparse checks: tag the pointer to the RCU-protected data __rcu sparse checks:
tag the pointer to the RCU-protected data
structure with __rcu, and sparse will warn you if you structure with __rcu, and sparse will warn you if you
access that pointer without the services of one of the access that pointer without the services of one of the
variants of rcu_dereference(). variants of rcu_dereference().
@ -442,8 +449,8 @@ over a rather long period of time, but improvements are always welcome!
You instead need to use one of the barrier functions: You instead need to use one of the barrier functions:
o call_rcu() -> rcu_barrier() - call_rcu() -> rcu_barrier()
o call_srcu() -> srcu_barrier() - call_srcu() -> srcu_barrier()
However, these barrier functions are absolutely -not- guaranteed However, these barrier functions are absolutely -not- guaranteed
to wait for a grace period. In fact, if there are no call_rcu() to wait for a grace period. In fact, if there are no call_rcu()

View file

@ -1,3 +1,5 @@
.. SPDX-License-Identifier: GPL-2.0
.. _rcu_concepts: .. _rcu_concepts:
============ ============
@ -8,10 +10,17 @@ RCU concepts
:maxdepth: 3 :maxdepth: 3
arrayRCU arrayRCU
checklist
lockdep
lockdep-splat
rcubarrier rcubarrier
rcu_dereference rcu_dereference
whatisRCU whatisRCU
rcu rcu
rculist_nulls
rcuref
torture
stallwarn
listRCU listRCU
NMI-RCU NMI-RCU
UP UP

View file

@ -1,3 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0
=================
Lockdep-RCU Splat
=================
Lockdep-RCU was added to the Linux kernel in early 2010 Lockdep-RCU was added to the Linux kernel in early 2010
(http://lwn.net/Articles/371986/). This facility checks for some common (http://lwn.net/Articles/371986/). This facility checks for some common
misuses of the RCU API, most notably using one of the rcu_dereference() misuses of the RCU API, most notably using one of the rcu_dereference()
@ -12,55 +18,54 @@ overwriting or worse. There can of course be false positives, this
being the real world and all that. being the real world and all that.
So let's look at an example RCU lockdep splat from 3.0-rc5, one that So let's look at an example RCU lockdep splat from 3.0-rc5, one that
has long since been fixed: has long since been fixed::
============================= =============================
WARNING: suspicious RCU usage WARNING: suspicious RCU usage
----------------------------- -----------------------------
block/cfq-iosched.c:2776 suspicious rcu_dereference_protected() usage! block/cfq-iosched.c:2776 suspicious rcu_dereference_protected() usage!
other info that might help us debug this: other info that might help us debug this::
rcu_scheduler_active = 1, debug_locks = 0
3 locks held by scsi_scan_6/1552:
#0: (&shost->scan_mutex){+.+.}, at: [<ffffffff8145efca>]
scsi_scan_host_selected+0x5a/0x150
#1: (&eq->sysfs_lock){+.+.}, at: [<ffffffff812a5032>]
elevator_exit+0x22/0x60
#2: (&(&q->__queue_lock)->rlock){-.-.}, at: [<ffffffff812b6233>]
cfq_exit_queue+0x43/0x190
rcu_scheduler_active = 1, debug_locks = 0 stack backtrace:
3 locks held by scsi_scan_6/1552: Pid: 1552, comm: scsi_scan_6 Not tainted 3.0.0-rc5 #17
#0: (&shost->scan_mutex){+.+.}, at: [<ffffffff8145efca>] Call Trace:
scsi_scan_host_selected+0x5a/0x150 [<ffffffff810abb9b>] lockdep_rcu_dereference+0xbb/0xc0
#1: (&eq->sysfs_lock){+.+.}, at: [<ffffffff812a5032>] [<ffffffff812b6139>] __cfq_exit_single_io_context+0xe9/0x120
elevator_exit+0x22/0x60 [<ffffffff812b626c>] cfq_exit_queue+0x7c/0x190
#2: (&(&q->__queue_lock)->rlock){-.-.}, at: [<ffffffff812b6233>] [<ffffffff812a5046>] elevator_exit+0x36/0x60
cfq_exit_queue+0x43/0x190 [<ffffffff812a802a>] blk_cleanup_queue+0x4a/0x60
[<ffffffff8145cc09>] scsi_free_queue+0x9/0x10
[<ffffffff81460944>] __scsi_remove_device+0x84/0xd0
[<ffffffff8145dca3>] scsi_probe_and_add_lun+0x353/0xb10
[<ffffffff817da069>] ? error_exit+0x29/0xb0
[<ffffffff817d98ed>] ? _raw_spin_unlock_irqrestore+0x3d/0x80
[<ffffffff8145e722>] __scsi_scan_target+0x112/0x680
[<ffffffff812c690d>] ? trace_hardirqs_off_thunk+0x3a/0x3c
[<ffffffff817da069>] ? error_exit+0x29/0xb0
[<ffffffff812bcc60>] ? kobject_del+0x40/0x40
[<ffffffff8145ed16>] scsi_scan_channel+0x86/0xb0
[<ffffffff8145f0b0>] scsi_scan_host_selected+0x140/0x150
[<ffffffff8145f149>] do_scsi_scan_host+0x89/0x90
[<ffffffff8145f170>] do_scan_async+0x20/0x160
[<ffffffff8145f150>] ? do_scsi_scan_host+0x90/0x90
[<ffffffff810975b6>] kthread+0xa6/0xb0
[<ffffffff817db154>] kernel_thread_helper+0x4/0x10
[<ffffffff81066430>] ? finish_task_switch+0x80/0x110
[<ffffffff817d9c04>] ? retint_restore_args+0xe/0xe
[<ffffffff81097510>] ? __kthread_init_worker+0x70/0x70
[<ffffffff817db150>] ? gs_change+0xb/0xb
stack backtrace: Line 2776 of block/cfq-iosched.c in v3.0-rc5 is as follows::
Pid: 1552, comm: scsi_scan_6 Not tainted 3.0.0-rc5 #17
Call Trace:
[<ffffffff810abb9b>] lockdep_rcu_dereference+0xbb/0xc0
[<ffffffff812b6139>] __cfq_exit_single_io_context+0xe9/0x120
[<ffffffff812b626c>] cfq_exit_queue+0x7c/0x190
[<ffffffff812a5046>] elevator_exit+0x36/0x60
[<ffffffff812a802a>] blk_cleanup_queue+0x4a/0x60
[<ffffffff8145cc09>] scsi_free_queue+0x9/0x10
[<ffffffff81460944>] __scsi_remove_device+0x84/0xd0
[<ffffffff8145dca3>] scsi_probe_and_add_lun+0x353/0xb10
[<ffffffff817da069>] ? error_exit+0x29/0xb0
[<ffffffff817d98ed>] ? _raw_spin_unlock_irqrestore+0x3d/0x80
[<ffffffff8145e722>] __scsi_scan_target+0x112/0x680
[<ffffffff812c690d>] ? trace_hardirqs_off_thunk+0x3a/0x3c
[<ffffffff817da069>] ? error_exit+0x29/0xb0
[<ffffffff812bcc60>] ? kobject_del+0x40/0x40
[<ffffffff8145ed16>] scsi_scan_channel+0x86/0xb0
[<ffffffff8145f0b0>] scsi_scan_host_selected+0x140/0x150
[<ffffffff8145f149>] do_scsi_scan_host+0x89/0x90
[<ffffffff8145f170>] do_scan_async+0x20/0x160
[<ffffffff8145f150>] ? do_scsi_scan_host+0x90/0x90
[<ffffffff810975b6>] kthread+0xa6/0xb0
[<ffffffff817db154>] kernel_thread_helper+0x4/0x10
[<ffffffff81066430>] ? finish_task_switch+0x80/0x110
[<ffffffff817d9c04>] ? retint_restore_args+0xe/0xe
[<ffffffff81097510>] ? __kthread_init_worker+0x70/0x70
[<ffffffff817db150>] ? gs_change+0xb/0xb
Line 2776 of block/cfq-iosched.c in v3.0-rc5 is as follows:
if (rcu_dereference(ioc->ioc_data) == cic) { if (rcu_dereference(ioc->ioc_data) == cic) {
@ -70,7 +75,7 @@ case. Instead, we hold three locks, one of which might be RCU related.
And maybe that lock really does protect this reference. If so, the fix And maybe that lock really does protect this reference. If so, the fix
is to inform RCU, perhaps by changing __cfq_exit_single_io_context() to is to inform RCU, perhaps by changing __cfq_exit_single_io_context() to
take the struct request_queue "q" from cfq_exit_queue() as an argument, take the struct request_queue "q" from cfq_exit_queue() as an argument,
which would permit us to invoke rcu_dereference_protected as follows: which would permit us to invoke rcu_dereference_protected as follows::
if (rcu_dereference_protected(ioc->ioc_data, if (rcu_dereference_protected(ioc->ioc_data,
lockdep_is_held(&q->queue_lock)) == cic) { lockdep_is_held(&q->queue_lock)) == cic) {
@ -85,7 +90,7 @@ On the other hand, perhaps we really do need an RCU read-side critical
section. In this case, the critical section must span the use of the section. In this case, the critical section must span the use of the
return value from rcu_dereference(), or at least until there is some return value from rcu_dereference(), or at least until there is some
reference count incremented or some such. One way to handle this is to reference count incremented or some such. One way to handle this is to
add rcu_read_lock() and rcu_read_unlock() as follows: add rcu_read_lock() and rcu_read_unlock() as follows::
rcu_read_lock(); rcu_read_lock();
if (rcu_dereference(ioc->ioc_data) == cic) { if (rcu_dereference(ioc->ioc_data) == cic) {
@ -102,7 +107,7 @@ above lockdep-RCU splat.
But in this particular case, we don't actually dereference the pointer But in this particular case, we don't actually dereference the pointer
returned from rcu_dereference(). Instead, that pointer is just compared returned from rcu_dereference(). Instead, that pointer is just compared
to the cic pointer, which means that the rcu_dereference() can be replaced to the cic pointer, which means that the rcu_dereference() can be replaced
by rcu_access_pointer() as follows: by rcu_access_pointer() as follows::
if (rcu_access_pointer(ioc->ioc_data) == cic) { if (rcu_access_pointer(ioc->ioc_data) == cic) {

View file

@ -1,4 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
========================
RCU and lockdep checking RCU and lockdep checking
========================
All flavors of RCU have lockdep checking available, so that lockdep is All flavors of RCU have lockdep checking available, so that lockdep is
aware of when each task enters and leaves any flavor of RCU read-side aware of when each task enters and leaves any flavor of RCU read-side
@ -8,7 +12,7 @@ tracking to include RCU state, which can sometimes help when debugging
deadlocks and the like. deadlocks and the like.
In addition, RCU provides the following primitives that check lockdep's In addition, RCU provides the following primitives that check lockdep's
state: state::
rcu_read_lock_held() for normal RCU. rcu_read_lock_held() for normal RCU.
rcu_read_lock_bh_held() for RCU-bh. rcu_read_lock_bh_held() for RCU-bh.
@ -63,7 +67,7 @@ checking of rcu_dereference() primitives:
The rcu_dereference_check() check expression can be any boolean The rcu_dereference_check() check expression can be any boolean
expression, but would normally include a lockdep expression. However, expression, but would normally include a lockdep expression. However,
any boolean expression can be used. For a moderately ornate example, any boolean expression can be used. For a moderately ornate example,
consider the following: consider the following::
file = rcu_dereference_check(fdt->fd[fd], file = rcu_dereference_check(fdt->fd[fd],
lockdep_is_held(&files->file_lock) || lockdep_is_held(&files->file_lock) ||
@ -82,7 +86,7 @@ RCU read-side critical sections, in case (2) the ->file_lock prevents
any change from taking place, and finally, in case (3) the current task any change from taking place, and finally, in case (3) the current task
is the only task accessing the file_struct, again preventing any change is the only task accessing the file_struct, again preventing any change
from taking place. If the above statement was invoked only from updater from taking place. If the above statement was invoked only from updater
code, it could instead be written as follows: code, it could instead be written as follows::
file = rcu_dereference_protected(fdt->fd[fd], file = rcu_dereference_protected(fdt->fd[fd],
lockdep_is_held(&files->file_lock) || lockdep_is_held(&files->file_lock) ||
@ -105,7 +109,7 @@ false and they are called from outside any RCU read-side critical section.
For example, the workqueue for_each_pwq() macro is intended to be used For example, the workqueue for_each_pwq() macro is intended to be used
either within an RCU read-side critical section or with wq->mutex held. either within an RCU read-side critical section or with wq->mutex held.
It is thus implemented as follows: It is thus implemented as follows::
#define for_each_pwq(pwq, wq) #define for_each_pwq(pwq, wq)
list_for_each_entry_rcu((pwq), &(wq)->pwqs, pwqs_node, list_for_each_entry_rcu((pwq), &(wq)->pwqs, pwqs_node,

View file

@ -0,0 +1,200 @@
.. SPDX-License-Identifier: GPL-2.0
=================================================
Using RCU hlist_nulls to protect list and objects
=================================================
This section describes how to use hlist_nulls to
protect read-mostly linked lists and
objects using SLAB_TYPESAFE_BY_RCU allocations.
Please read the basics in Documentation/RCU/listRCU.rst
Using 'nulls'
=============
Using special makers (called 'nulls') is a convenient way
to solve following problem :
A typical RCU linked list managing objects which are
allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can
use following algos :
1) Lookup algo
--------------
::
rcu_read_lock()
begin:
obj = lockless_lookup(key);
if (obj) {
if (!try_get_ref(obj)) // might fail for free objects
goto begin;
/*
* Because a writer could delete object, and a writer could
* reuse these object before the RCU grace period, we
* must check key after getting the reference on object
*/
if (obj->key != key) { // not the object we expected
put_ref(obj);
goto begin;
}
}
rcu_read_unlock();
Beware that lockless_lookup(key) cannot use traditional hlist_for_each_entry_rcu()
but a version with an additional memory barrier (smp_rmb())
::
lockless_lookup(key)
{
struct hlist_node *node, *next;
for (pos = rcu_dereference((head)->first);
pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) &&
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
pos = rcu_dereference(next))
if (obj->key == key)
return obj;
return NULL;
}
And note the traditional hlist_for_each_entry_rcu() misses this smp_rmb()::
struct hlist_node *node;
for (pos = rcu_dereference((head)->first);
pos && ({ prefetch(pos->next); 1; }) &&
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
pos = rcu_dereference(pos->next))
if (obj->key == key)
return obj;
return NULL;
Quoting Corey Minyard::
"If the object is moved from one list to another list in-between the
time the hash is calculated and the next field is accessed, and the
object has moved to the end of a new list, the traversal will not
complete properly on the list it should have, since the object will
be on the end of the new list and there's not a way to tell it's on a
new list and restart the list traversal. I think that this can be
solved by pre-fetching the "next" field (with proper barriers) before
checking the key."
2) Insert algo
--------------
We need to make sure a reader cannot read the new 'obj->obj_next' value
and previous value of 'obj->key'. Or else, an item could be deleted
from a chain, and inserted into another chain. If new chain was empty
before the move, 'next' pointer is NULL, and lockless reader can
not detect it missed following items in original chain.
::
/*
* Please note that new inserts are done at the head of list,
* not in the middle or end.
*/
obj = kmem_cache_alloc(...);
lock_chain(); // typically a spin_lock()
obj->key = key;
/*
* we need to make sure obj->key is updated before obj->next
* or obj->refcnt
*/
smp_wmb();
atomic_set(&obj->refcnt, 1);
hlist_add_head_rcu(&obj->obj_node, list);
unlock_chain(); // typically a spin_unlock()
3) Remove algo
--------------
Nothing special here, we can use a standard RCU hlist deletion.
But thanks to SLAB_TYPESAFE_BY_RCU, beware a deleted object can be reused
very very fast (before the end of RCU grace period)
::
if (put_last_reference_on(obj) {
lock_chain(); // typically a spin_lock()
hlist_del_init_rcu(&obj->obj_node);
unlock_chain(); // typically a spin_unlock()
kmem_cache_free(cachep, obj);
}
--------------------------------------------------------------------------
Avoiding extra smp_rmb()
========================
With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup()
and extra smp_wmb() in insert function.
For example, if we choose to store the slot number as the 'nulls'
end-of-list marker for each slot of the hash table, we can detect
a race (some writer did a delete and/or a move of an object
to another chain) checking the final 'nulls' value if
the lookup met the end of chain. If final 'nulls' value
is not the slot number, then we must restart the lookup at
the beginning. If the object was moved to the same chain,
then the reader doesn't care : It might eventually
scan the list again without harm.
1) lookup algo
--------------
::
head = &table[slot];
rcu_read_lock();
begin:
hlist_nulls_for_each_entry_rcu(obj, node, head, member) {
if (obj->key == key) {
if (!try_get_ref(obj)) // might fail for free objects
goto begin;
if (obj->key != key) { // not the object we expected
put_ref(obj);
goto begin;
}
goto out;
}
/*
* if the nulls value we got at the end of this lookup is
* not the expected one, we must restart lookup.
* We probably met an item that was moved to another chain.
*/
if (get_nulls_value(node) != slot)
goto begin;
obj = NULL;
out:
rcu_read_unlock();
2) Insert function
------------------
::
/*
* Please note that new inserts are done at the head of list,
* not in the middle or end.
*/
obj = kmem_cache_alloc(cachep);
lock_chain(); // typically a spin_lock()
obj->key = key;
/*
* changes to obj->key must be visible before refcnt one
*/
smp_wmb();
atomic_set(&obj->refcnt, 1);
/*
* insert obj in RCU way (readers might be traversing chain)
*/
hlist_nulls_add_head_rcu(&obj->obj_node, list);
unlock_chain(); // typically a spin_unlock()

View file

@ -1,172 +0,0 @@
Using hlist_nulls to protect read-mostly linked lists and
objects using SLAB_TYPESAFE_BY_RCU allocations.
Please read the basics in Documentation/RCU/listRCU.rst
Using special makers (called 'nulls') is a convenient way
to solve following problem :
A typical RCU linked list managing objects which are
allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can
use following algos :
1) Lookup algo
--------------
rcu_read_lock()
begin:
obj = lockless_lookup(key);
if (obj) {
if (!try_get_ref(obj)) // might fail for free objects
goto begin;
/*
* Because a writer could delete object, and a writer could
* reuse these object before the RCU grace period, we
* must check key after getting the reference on object
*/
if (obj->key != key) { // not the object we expected
put_ref(obj);
goto begin;
}
}
rcu_read_unlock();
Beware that lockless_lookup(key) cannot use traditional hlist_for_each_entry_rcu()
but a version with an additional memory barrier (smp_rmb())
lockless_lookup(key)
{
struct hlist_node *node, *next;
for (pos = rcu_dereference((head)->first);
pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) &&
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
pos = rcu_dereference(next))
if (obj->key == key)
return obj;
return NULL;
And note the traditional hlist_for_each_entry_rcu() misses this smp_rmb() :
struct hlist_node *node;
for (pos = rcu_dereference((head)->first);
pos && ({ prefetch(pos->next); 1; }) &&
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
pos = rcu_dereference(pos->next))
if (obj->key == key)
return obj;
return NULL;
}
Quoting Corey Minyard :
"If the object is moved from one list to another list in-between the
time the hash is calculated and the next field is accessed, and the
object has moved to the end of a new list, the traversal will not
complete properly on the list it should have, since the object will
be on the end of the new list and there's not a way to tell it's on a
new list and restart the list traversal. I think that this can be
solved by pre-fetching the "next" field (with proper barriers) before
checking the key."
2) Insert algo :
----------------
We need to make sure a reader cannot read the new 'obj->obj_next' value
and previous value of 'obj->key'. Or else, an item could be deleted
from a chain, and inserted into another chain. If new chain was empty
before the move, 'next' pointer is NULL, and lockless reader can
not detect it missed following items in original chain.
/*
* Please note that new inserts are done at the head of list,
* not in the middle or end.
*/
obj = kmem_cache_alloc(...);
lock_chain(); // typically a spin_lock()
obj->key = key;
/*
* we need to make sure obj->key is updated before obj->next
* or obj->refcnt
*/
smp_wmb();
atomic_set(&obj->refcnt, 1);
hlist_add_head_rcu(&obj->obj_node, list);
unlock_chain(); // typically a spin_unlock()
3) Remove algo
--------------
Nothing special here, we can use a standard RCU hlist deletion.
But thanks to SLAB_TYPESAFE_BY_RCU, beware a deleted object can be reused
very very fast (before the end of RCU grace period)
if (put_last_reference_on(obj) {
lock_chain(); // typically a spin_lock()
hlist_del_init_rcu(&obj->obj_node);
unlock_chain(); // typically a spin_unlock()
kmem_cache_free(cachep, obj);
}
--------------------------------------------------------------------------
With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup()
and extra smp_wmb() in insert function.
For example, if we choose to store the slot number as the 'nulls'
end-of-list marker for each slot of the hash table, we can detect
a race (some writer did a delete and/or a move of an object
to another chain) checking the final 'nulls' value if
the lookup met the end of chain. If final 'nulls' value
is not the slot number, then we must restart the lookup at
the beginning. If the object was moved to the same chain,
then the reader doesn't care : It might eventually
scan the list again without harm.
1) lookup algo
head = &table[slot];
rcu_read_lock();
begin:
hlist_nulls_for_each_entry_rcu(obj, node, head, member) {
if (obj->key == key) {
if (!try_get_ref(obj)) // might fail for free objects
goto begin;
if (obj->key != key) { // not the object we expected
put_ref(obj);
goto begin;
}
goto out;
}
/*
* if the nulls value we got at the end of this lookup is
* not the expected one, we must restart lookup.
* We probably met an item that was moved to another chain.
*/
if (get_nulls_value(node) != slot)
goto begin;
obj = NULL;
out:
rcu_read_unlock();
2) Insert function :
--------------------
/*
* Please note that new inserts are done at the head of list,
* not in the middle or end.
*/
obj = kmem_cache_alloc(cachep);
lock_chain(); // typically a spin_lock()
obj->key = key;
/*
* changes to obj->key must be visible before refcnt one
*/
smp_wmb();
atomic_set(&obj->refcnt, 1);
/*
* insert obj in RCU way (readers might be traversing chain)
*/
hlist_nulls_add_head_rcu(&obj->obj_node, list);
unlock_chain(); // typically a spin_unlock()

View file

@ -1,4 +1,8 @@
Reference-count design for elements of lists/arrays protected by RCU. .. SPDX-License-Identifier: GPL-2.0
====================================================================
Reference-count design for elements of lists/arrays protected by RCU
====================================================================
Please note that the percpu-ref feature is likely your first Please note that the percpu-ref feature is likely your first
@ -12,32 +16,33 @@ please read on.
Reference counting on elements of lists which are protected by traditional Reference counting on elements of lists which are protected by traditional
reader/writer spinlocks or semaphores are straightforward: reader/writer spinlocks or semaphores are straightforward:
CODE LISTING A: CODE LISTING A::
1. 2.
add() search_and_reference()
{ {
alloc_object read_lock(&list_lock);
... search_for_element
atomic_set(&el->rc, 1); atomic_inc(&el->rc);
write_lock(&list_lock); ...
add_element read_unlock(&list_lock);
... ...
write_unlock(&list_lock); }
}
3. 4. 1. 2.
release_referenced() delete() add() search_and_reference()
{ { { {
... write_lock(&list_lock); alloc_object read_lock(&list_lock);
if(atomic_dec_and_test(&el->rc)) ... ... search_for_element
kfree(el); atomic_set(&el->rc, 1); atomic_inc(&el->rc);
... remove_element write_lock(&list_lock); ...
} write_unlock(&list_lock); add_element read_unlock(&list_lock);
... ... ...
if (atomic_dec_and_test(&el->rc)) write_unlock(&list_lock); }
kfree(el); }
...
} 3. 4.
release_referenced() delete()
{ {
... write_lock(&list_lock);
if(atomic_dec_and_test(&el->rc)) ...
kfree(el);
... remove_element
} write_unlock(&list_lock);
...
if (atomic_dec_and_test(&el->rc))
kfree(el);
...
}
If this list/array is made lock free using RCU as in changing the If this list/array is made lock free using RCU as in changing the
write_lock() in add() and delete() to spin_lock() and changing read_lock() write_lock() in add() and delete() to spin_lock() and changing read_lock()
@ -46,34 +51,35 @@ search_and_reference() could potentially hold reference to an element which
has already been deleted from the list/array. Use atomic_inc_not_zero() has already been deleted from the list/array. Use atomic_inc_not_zero()
in this scenario as follows: in this scenario as follows:
CODE LISTING B: CODE LISTING B::
1. 2.
add() search_and_reference() 1. 2.
{ { add() search_and_reference()
alloc_object rcu_read_lock(); { {
... search_for_element alloc_object rcu_read_lock();
atomic_set(&el->rc, 1); if (!atomic_inc_not_zero(&el->rc)) { ... search_for_element
spin_lock(&list_lock); rcu_read_unlock(); atomic_set(&el->rc, 1); if (!atomic_inc_not_zero(&el->rc)) {
return FAIL; spin_lock(&list_lock); rcu_read_unlock();
add_element } return FAIL;
... ... add_element }
spin_unlock(&list_lock); rcu_read_unlock(); ... ...
} } spin_unlock(&list_lock); rcu_read_unlock();
3. 4. } }
release_referenced() delete() 3. 4.
{ { release_referenced() delete()
... spin_lock(&list_lock); { {
if (atomic_dec_and_test(&el->rc)) ... ... spin_lock(&list_lock);
call_rcu(&el->head, el_free); remove_element if (atomic_dec_and_test(&el->rc)) ...
... spin_unlock(&list_lock); call_rcu(&el->head, el_free); remove_element
} ... ... spin_unlock(&list_lock);
if (atomic_dec_and_test(&el->rc)) } ...
call_rcu(&el->head, el_free); if (atomic_dec_and_test(&el->rc))
... call_rcu(&el->head, el_free);
} ...
}
Sometimes, a reference to the element needs to be obtained in the Sometimes, a reference to the element needs to be obtained in the
update (write) stream. In such cases, atomic_inc_not_zero() might be update (write) stream. In such cases, atomic_inc_not_zero() might be
overkill, since we hold the update-side spinlock. One might instead overkill, since we hold the update-side spinlock. One might instead
use atomic_inc() in such cases. use atomic_inc() in such cases.
@ -82,39 +88,40 @@ search_and_reference() code path. In such cases, the
atomic_dec_and_test() may be moved from delete() to el_free() atomic_dec_and_test() may be moved from delete() to el_free()
as follows: as follows:
CODE LISTING C: CODE LISTING C::
1. 2.
add() search_and_reference()
{ {
alloc_object rcu_read_lock();
... search_for_element
atomic_set(&el->rc, 1); atomic_inc(&el->rc);
spin_lock(&list_lock); ...
add_element rcu_read_unlock(); 1. 2.
... } add() search_and_reference()
spin_unlock(&list_lock); 4. { {
} delete() alloc_object rcu_read_lock();
3. { ... search_for_element
release_referenced() spin_lock(&list_lock); atomic_set(&el->rc, 1); atomic_inc(&el->rc);
{ ... spin_lock(&list_lock); ...
... remove_element
if (atomic_dec_and_test(&el->rc)) spin_unlock(&list_lock); add_element rcu_read_unlock();
kfree(el); ... ... }
... call_rcu(&el->head, el_free); spin_unlock(&list_lock); 4.
} ... } delete()
5. } 3. {
void el_free(struct rcu_head *rhp) release_referenced() spin_lock(&list_lock);
{ { ...
release_referenced(); ... remove_element
} if (atomic_dec_and_test(&el->rc)) spin_unlock(&list_lock);
kfree(el); ...
... call_rcu(&el->head, el_free);
} ...
5. }
void el_free(struct rcu_head *rhp)
{
release_referenced();
}
The key point is that the initial reference added by add() is not removed The key point is that the initial reference added by add() is not removed
until after a grace period has elapsed following removal. This means that until after a grace period has elapsed following removal. This means that
search_and_reference() cannot find this element, which means that the value search_and_reference() cannot find this element, which means that the value
of el->rc cannot increase. Thus, once it reaches zero, there are no of el->rc cannot increase. Thus, once it reaches zero, there are no
readers that can or ever will be able to reference the element. The readers that can or ever will be able to reference the element. The
element can therefore safely be freed. This in turn guarantees that if element can therefore safely be freed. This in turn guarantees that if
any reader finds the element, that reader may safely acquire a reference any reader finds the element, that reader may safely acquire a reference
without checking the value of the reference counter. without checking the value of the reference counter.
@ -130,21 +137,21 @@ the eventual invocation of kfree(), which is usually not a problem on
modern computer systems, even the small ones. modern computer systems, even the small ones.
In cases where delete() can sleep, synchronize_rcu() can be called from In cases where delete() can sleep, synchronize_rcu() can be called from
delete(), so that el_free() can be subsumed into delete as follows: delete(), so that el_free() can be subsumed into delete as follows::
4. 4.
delete() delete()
{ {
spin_lock(&list_lock); spin_lock(&list_lock);
... ...
remove_element remove_element
spin_unlock(&list_lock); spin_unlock(&list_lock);
... ...
synchronize_rcu(); synchronize_rcu();
if (atomic_dec_and_test(&el->rc)) if (atomic_dec_and_test(&el->rc))
kfree(el); kfree(el);
... ...
} }
As additional examples in the kernel, the pattern in listing C is used by As additional examples in the kernel, the pattern in listing C is used by
reference counting of struct pid, while the pattern in listing B is used by reference counting of struct pid, while the pattern in listing B is used by

View file

@ -1,4 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0
==============================
Using RCU's CPU Stall Detector Using RCU's CPU Stall Detector
==============================
This document first discusses what sorts of issues RCU's CPU stall This document first discusses what sorts of issues RCU's CPU stall
detector can locate, and then discusses kernel parameters and Kconfig detector can locate, and then discusses kernel parameters and Kconfig
@ -7,39 +11,40 @@ this document explains the stall detector's "splat" format.
What Causes RCU CPU Stall Warnings? What Causes RCU CPU Stall Warnings?
===================================
So your kernel printed an RCU CPU stall warning. The next question is So your kernel printed an RCU CPU stall warning. The next question is
"What caused it?" The following problems can result in RCU CPU stall "What caused it?" The following problems can result in RCU CPU stall
warnings: warnings:
o A CPU looping in an RCU read-side critical section. - A CPU looping in an RCU read-side critical section.
o A CPU looping with interrupts disabled. - A CPU looping with interrupts disabled.
o A CPU looping with preemption disabled. - A CPU looping with preemption disabled.
o A CPU looping with bottom halves disabled. - A CPU looping with bottom halves disabled.
o For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the kernel - For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the kernel
without invoking schedule(). If the looping in the kernel is without invoking schedule(). If the looping in the kernel is
really expected and desirable behavior, you might need to add really expected and desirable behavior, you might need to add
some calls to cond_resched(). some calls to cond_resched().
o Booting Linux using a console connection that is too slow to - Booting Linux using a console connection that is too slow to
keep up with the boot-time console-message rate. For example, keep up with the boot-time console-message rate. For example,
a 115Kbaud serial console can be -way- too slow to keep up a 115Kbaud serial console can be -way- too slow to keep up
with boot-time message rates, and will frequently result in with boot-time message rates, and will frequently result in
RCU CPU stall warning messages. Especially if you have added RCU CPU stall warning messages. Especially if you have added
debug printk()s. debug printk()s.
o Anything that prevents RCU's grace-period kthreads from running. - Anything that prevents RCU's grace-period kthreads from running.
This can result in the "All QSes seen" console-log message. This can result in the "All QSes seen" console-log message.
This message will include information on when the kthread last This message will include information on when the kthread last
ran and how often it should be expected to run. It can also ran and how often it should be expected to run. It can also
result in the "rcu_.*kthread starved for" console-log message, result in the ``rcu_.*kthread starved for`` console-log message,
which will include additional debugging information. which will include additional debugging information.
o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might - A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might
happen to preempt a low-priority task in the middle of an RCU happen to preempt a low-priority task in the middle of an RCU
read-side critical section. This is especially damaging if read-side critical section. This is especially damaging if
that low-priority task is not permitted to run on any other CPU, that low-priority task is not permitted to run on any other CPU,
@ -48,7 +53,7 @@ o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might
While the system is in the process of running itself out of While the system is in the process of running itself out of
memory, you might see stall-warning messages. memory, you might see stall-warning messages.
o A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that - A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that
is running at a higher priority than the RCU softirq threads. is running at a higher priority than the RCU softirq threads.
This will prevent RCU callbacks from ever being invoked, This will prevent RCU callbacks from ever being invoked,
and in a CONFIG_PREEMPT_RCU kernel will further prevent and in a CONFIG_PREEMPT_RCU kernel will further prevent
@ -63,7 +68,7 @@ o A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that
can increase your system's context-switch rate and thus degrade can increase your system's context-switch rate and thus degrade
performance. performance.
o A periodic interrupt whose handler takes longer than the time - A periodic interrupt whose handler takes longer than the time
interval between successive pairs of interrupts. This can interval between successive pairs of interrupts. This can
prevent RCU's kthreads and softirq handlers from running. prevent RCU's kthreads and softirq handlers from running.
Note that certain high-overhead debugging options, for example Note that certain high-overhead debugging options, for example
@ -71,20 +76,27 @@ o A periodic interrupt whose handler takes longer than the time
considerably longer than normal, which can in turn result in considerably longer than normal, which can in turn result in
RCU CPU stall warnings. RCU CPU stall warnings.
o Testing a workload on a fast system, tuning the stall-warning - Testing a workload on a fast system, tuning the stall-warning
timeout down to just barely avoid RCU CPU stall warnings, and then timeout down to just barely avoid RCU CPU stall warnings, and then
running the same workload with the same stall-warning timeout on a running the same workload with the same stall-warning timeout on a
slow system. Note that thermal throttling and on-demand governors slow system. Note that thermal throttling and on-demand governors
can cause a single system to be sometimes fast and sometimes slow! can cause a single system to be sometimes fast and sometimes slow!
o A hardware or software issue shuts off the scheduler-clock - A hardware or software issue shuts off the scheduler-clock
interrupt on a CPU that is not in dyntick-idle mode. This interrupt on a CPU that is not in dyntick-idle mode. This
problem really has happened, and seems to be most likely to problem really has happened, and seems to be most likely to
result in RCU CPU stall warnings for CONFIG_NO_HZ_COMMON=n kernels. result in RCU CPU stall warnings for CONFIG_NO_HZ_COMMON=n kernels.
o A bug in the RCU implementation. - A hardware or software issue that prevents time-based wakeups
from occurring. These issues can range from misconfigured or
buggy timer hardware through bugs in the interrupt or exception
path (whether hardware, firmware, or software) through bugs
in Linux's timer subsystem through bugs in the scheduler, and,
yes, even including bugs in RCU itself.
o A hardware failure. This is quite unlikely, but has occurred - A bug in the RCU implementation.
- A hardware failure. This is quite unlikely, but has occurred
at least once in real life. A CPU failed in a running system, at least once in real life. A CPU failed in a running system,
becoming unresponsive, but not causing an immediate crash. becoming unresponsive, but not causing an immediate crash.
This resulted in a series of RCU CPU stall warnings, eventually This resulted in a series of RCU CPU stall warnings, eventually
@ -109,6 +121,7 @@ see include/trace/events/rcu.h.
Fine-Tuning the RCU CPU Stall Detector Fine-Tuning the RCU CPU Stall Detector
======================================
The rcuupdate.rcu_cpu_stall_suppress module parameter disables RCU's The rcuupdate.rcu_cpu_stall_suppress module parameter disables RCU's
CPU stall detector, which detects conditions that unduly delay RCU grace CPU stall detector, which detects conditions that unduly delay RCU grace
@ -118,6 +131,7 @@ The stall detector's idea of what constitutes "unduly delayed" is
controlled by a set of kernel configuration variables and cpp macros: controlled by a set of kernel configuration variables and cpp macros:
CONFIG_RCU_CPU_STALL_TIMEOUT CONFIG_RCU_CPU_STALL_TIMEOUT
----------------------------
This kernel configuration parameter defines the period of time This kernel configuration parameter defines the period of time
that RCU will wait from the beginning of a grace period until it that RCU will wait from the beginning of a grace period until it
@ -137,6 +151,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT
/sys/module/rcupdate/parameters/rcu_cpu_stall_suppress. /sys/module/rcupdate/parameters/rcu_cpu_stall_suppress.
RCU_STALL_DELAY_DELTA RCU_STALL_DELAY_DELTA
---------------------
Although the lockdep facility is extremely useful, it does add Although the lockdep facility is extremely useful, it does add
some overhead. Therefore, under CONFIG_PROVE_RCU, the some overhead. Therefore, under CONFIG_PROVE_RCU, the
@ -145,6 +160,7 @@ RCU_STALL_DELAY_DELTA
macro, not a kernel configuration parameter.) macro, not a kernel configuration parameter.)
RCU_STALL_RAT_DELAY RCU_STALL_RAT_DELAY
-------------------
The CPU stall detector tries to make the offending CPU print its The CPU stall detector tries to make the offending CPU print its
own warnings, as this often gives better-quality stack traces. own warnings, as this often gives better-quality stack traces.
@ -155,6 +171,7 @@ RCU_STALL_RAT_DELAY
parameter.) parameter.)
rcupdate.rcu_task_stall_timeout rcupdate.rcu_task_stall_timeout
-------------------------------
This boot/sysfs parameter controls the RCU-tasks stall warning This boot/sysfs parameter controls the RCU-tasks stall warning
interval. A value of zero or less suppresses RCU-tasks stall interval. A value of zero or less suppresses RCU-tasks stall
@ -168,9 +185,10 @@ rcupdate.rcu_task_stall_timeout
Interpreting RCU's CPU Stall-Detector "Splats" Interpreting RCU's CPU Stall-Detector "Splats"
==============================================
For non-RCU-tasks flavors of RCU, when a CPU detects that it is stalling, For non-RCU-tasks flavors of RCU, when a CPU detects that it is stalling,
it will print a message similar to the following: it will print a message similar to the following::
INFO: rcu_sched detected stalls on CPUs/tasks: INFO: rcu_sched detected stalls on CPUs/tasks:
2-...: (3 GPs behind) idle=06c/0/0 softirq=1453/1455 fqs=0 2-...: (3 GPs behind) idle=06c/0/0 softirq=1453/1455 fqs=0
@ -223,7 +241,7 @@ an estimate of the total number of RCU callbacks queued across all CPUs
(625 in this case). (625 in this case).
In kernels with CONFIG_RCU_FAST_NO_HZ, more information is printed In kernels with CONFIG_RCU_FAST_NO_HZ, more information is printed
for each CPU: for each CPU::
0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 dyntick_enabled: 1 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 dyntick_enabled: 1
@ -235,7 +253,7 @@ processing is enabled.
If the grace period ends just as the stall warning starts printing, If the grace period ends just as the stall warning starts printing,
there will be a spurious stall-warning message, which will include there will be a spurious stall-warning message, which will include
the following: the following::
INFO: Stall ended before state dump start INFO: Stall ended before state dump start
@ -248,7 +266,7 @@ which is overkill for this sort of problem.
If all CPUs and tasks have passed through quiescent states, but the If all CPUs and tasks have passed through quiescent states, but the
grace period has nevertheless failed to end, the stall-warning splat grace period has nevertheless failed to end, the stall-warning splat
will include something like the following: will include something like the following::
All QSes seen, last rcu_preempt kthread activity 23807 (4297905177-4297881370), jiffies_till_next_fqs=3, root ->qsmask 0x0 All QSes seen, last rcu_preempt kthread activity 23807 (4297905177-4297881370), jiffies_till_next_fqs=3, root ->qsmask 0x0
@ -261,7 +279,7 @@ which is way less than 23807. Finally, the root rcu_node structure's
If the relevant grace-period kthread has been unable to run prior to If the relevant grace-period kthread has been unable to run prior to
the stall warning, as was the case in the "All QSes seen" line above, the stall warning, as was the case in the "All QSes seen" line above,
the following additional line is printed: the following additional line is printed::
kthread starved for 23807 jiffies! g7075 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1 ->cpu=5 kthread starved for 23807 jiffies! g7075 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1 ->cpu=5
@ -276,6 +294,7 @@ kthread last ran on CPU 5.
Multiple Warnings From One Stall Multiple Warnings From One Stall
================================
If a stall lasts long enough, multiple stall-warning messages will be If a stall lasts long enough, multiple stall-warning messages will be
printed for it. The second and subsequent messages are printed at printed for it. The second and subsequent messages are printed at
@ -285,9 +304,10 @@ of the stall and the first message.
Stall Warnings for Expedited Grace Periods Stall Warnings for Expedited Grace Periods
==========================================
If an expedited grace period detects a stall, it will place a message If an expedited grace period detects a stall, it will place a message
like the following in dmesg: like the following in dmesg::
INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 7-... } 21119 jiffies s: 73 root: 0x2/. INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 7-... } 21119 jiffies s: 73 root: 0x2/.

View file

@ -1,7 +1,12 @@
.. SPDX-License-Identifier: GPL-2.0
==========================
RCU Torture Test Operation RCU Torture Test Operation
==========================
CONFIG_RCU_TORTURE_TEST CONFIG_RCU_TORTURE_TEST
=======================
The CONFIG_RCU_TORTURE_TEST config option is available for all RCU The CONFIG_RCU_TORTURE_TEST config option is available for all RCU
implementations. It creates an rcutorture kernel module that can implementations. It creates an rcutorture kernel module that can
@ -13,9 +18,10 @@ when the module is loaded, and stops when the module is unloaded.
Module parameters are prefixed by "rcutorture." in Module parameters are prefixed by "rcutorture." in
Documentation/admin-guide/kernel-parameters.txt. Documentation/admin-guide/kernel-parameters.txt.
OUTPUT Output
======
The statistics output is as follows: The statistics output is as follows::
rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_hz=1 shuffle_interval=3 stutter=5 irqreader=1 fqs_duration=0 fqs_holdoff=0 fqs_stutter=3 test_boost=1/0 test_boost_interval=7 test_boost_duration=4 rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_hz=1 shuffle_interval=3 stutter=5 irqreader=1 fqs_duration=0 fqs_holdoff=0 fqs_stutter=3 test_boost=1/0 test_boost_interval=7 test_boost_duration=4
rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0 rtbe: 0 rtbke: 0 rtbre: 0 rtbf: 0 rtb: 0 nt: 3055767 rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0 rtbe: 0 rtbke: 0 rtbre: 0 rtbf: 0 rtb: 0 nt: 3055767
@ -36,53 +42,53 @@ automatic determination as to whether RCU operated correctly.
The entries are as follows: The entries are as follows:
o "rtc": The hexadecimal address of the structure currently visible * "rtc": The hexadecimal address of the structure currently visible
to readers. to readers.
o "ver": The number of times since boot that the RCU writer task * "ver": The number of times since boot that the RCU writer task
has changed the structure visible to readers. has changed the structure visible to readers.
o "tfle": If non-zero, indicates that the "torture freelist" * "tfle": If non-zero, indicates that the "torture freelist"
containing structures to be placed into the "rtc" area is empty. containing structures to be placed into the "rtc" area is empty.
This condition is important, since it can fool you into thinking This condition is important, since it can fool you into thinking
that RCU is working when it is not. :-/ that RCU is working when it is not. :-/
o "rta": Number of structures allocated from the torture freelist. * "rta": Number of structures allocated from the torture freelist.
o "rtaf": Number of allocations from the torture freelist that have * "rtaf": Number of allocations from the torture freelist that have
failed due to the list being empty. It is not unusual for this failed due to the list being empty. It is not unusual for this
to be non-zero, but it is bad for it to be a large fraction of to be non-zero, but it is bad for it to be a large fraction of
the value indicated by "rta". the value indicated by "rta".
o "rtf": Number of frees into the torture freelist. * "rtf": Number of frees into the torture freelist.
o "rtmbe": A non-zero value indicates that rcutorture believes that * "rtmbe": A non-zero value indicates that rcutorture believes that
rcu_assign_pointer() and rcu_dereference() are not working rcu_assign_pointer() and rcu_dereference() are not working
correctly. This value should be zero. correctly. This value should be zero.
o "rtbe": A non-zero value indicates that one of the rcu_barrier() * "rtbe": A non-zero value indicates that one of the rcu_barrier()
family of functions is not working correctly. family of functions is not working correctly.
o "rtbke": rcutorture was unable to create the real-time kthreads * "rtbke": rcutorture was unable to create the real-time kthreads
used to force RCU priority inversion. This value should be zero. used to force RCU priority inversion. This value should be zero.
o "rtbre": Although rcutorture successfully created the kthreads * "rtbre": Although rcutorture successfully created the kthreads
used to force RCU priority inversion, it was unable to set them used to force RCU priority inversion, it was unable to set them
to the real-time priority level of 1. This value should be zero. to the real-time priority level of 1. This value should be zero.
o "rtbf": The number of times that RCU priority boosting failed * "rtbf": The number of times that RCU priority boosting failed
to resolve RCU priority inversion. to resolve RCU priority inversion.
o "rtb": The number of times that rcutorture attempted to force * "rtb": The number of times that rcutorture attempted to force
an RCU priority inversion condition. If you are testing RCU an RCU priority inversion condition. If you are testing RCU
priority boosting via the "test_boost" module parameter, this priority boosting via the "test_boost" module parameter, this
value should be non-zero. value should be non-zero.
o "nt": The number of times rcutorture ran RCU read-side code from * "nt": The number of times rcutorture ran RCU read-side code from
within a timer handler. This value should be non-zero only within a timer handler. This value should be non-zero only
if you specified the "irqreader" module parameter. if you specified the "irqreader" module parameter.
o "Reader Pipe": Histogram of "ages" of structures seen by readers. * "Reader Pipe": Histogram of "ages" of structures seen by readers.
If any entries past the first two are non-zero, RCU is broken. If any entries past the first two are non-zero, RCU is broken.
And rcutorture prints the error flag string "!!!" to make sure And rcutorture prints the error flag string "!!!" to make sure
you notice. The age of a newly allocated structure is zero, you notice. The age of a newly allocated structure is zero,
@ -94,14 +100,14 @@ o "Reader Pipe": Histogram of "ages" of structures seen by readers.
RCU. If you want to see what it looks like when broken, break RCU. If you want to see what it looks like when broken, break
it yourself. ;-) it yourself. ;-)
o "Reader Batch": Another histogram of "ages" of structures seen * "Reader Batch": Another histogram of "ages" of structures seen
by readers, but in terms of counter flips (or batches) rather by readers, but in terms of counter flips (or batches) rather
than in terms of grace periods. The legal number of non-zero than in terms of grace periods. The legal number of non-zero
entries is again two. The reason for this separate view is that entries is again two. The reason for this separate view is that
it is sometimes easier to get the third entry to show up in the it is sometimes easier to get the third entry to show up in the
"Reader Batch" list than in the "Reader Pipe" list. "Reader Batch" list than in the "Reader Pipe" list.
o "Free-Block Circulation": Shows the number of torture structures * "Free-Block Circulation": Shows the number of torture structures
that have reached a given point in the pipeline. The first element that have reached a given point in the pipeline. The first element
should closely correspond to the number of structures allocated, should closely correspond to the number of structures allocated,
the second to the number that have been removed from reader view, the second to the number that have been removed from reader view,
@ -112,7 +118,7 @@ o "Free-Block Circulation": Shows the number of torture structures
Different implementations of RCU can provide implementation-specific Different implementations of RCU can provide implementation-specific
additional information. For example, Tree SRCU provides the following additional information. For example, Tree SRCU provides the following
additional line: additional line::
srcud-torture: Tree SRCU per-CPU(idx=0): 0(35,-21) 1(-4,24) 2(1,1) 3(-26,20) 4(28,-47) 5(-9,4) 6(-10,14) 7(-14,11) T(1,6) srcud-torture: Tree SRCU per-CPU(idx=0): 0(35,-21) 1(-4,24) 2(1,1) 3(-26,20) 4(28,-47) 5(-9,4) 6(-10,14) 7(-14,11) T(1,6)
@ -123,15 +129,15 @@ using a dynamically allocated srcu_struct (hence "srcud-" rather than
"old" and "current" values to the underlying array, and is useful for "old" and "current" values to the underlying array, and is useful for
debugging. The final "T" entry contains the totals of the counters. debugging. The final "T" entry contains the totals of the counters.
Usage on Specific Kernel Builds
USAGE ON SPECIFIC KERNEL BUILDS ===============================
It is sometimes desirable to torture RCU on a specific kernel build, It is sometimes desirable to torture RCU on a specific kernel build,
for example, when preparing to put that kernel build into production. for example, when preparing to put that kernel build into production.
In that case, the kernel should be built with CONFIG_RCU_TORTURE_TEST=m In that case, the kernel should be built with CONFIG_RCU_TORTURE_TEST=m
so that the test can be started using modprobe and terminated using rmmod. so that the test can be started using modprobe and terminated using rmmod.
For example, the following script may be used to torture RCU: For example, the following script may be used to torture RCU::
#!/bin/sh #!/bin/sh
@ -148,7 +154,8 @@ two are self-explanatory, while the last indicates that while there
were no RCU failures, CPU-hotplug problems were detected. were no RCU failures, CPU-hotplug problems were detected.
USAGE ON MAINLINE KERNELS Usage on Mainline Kernels
=========================
When using rcutorture to test changes to RCU itself, it is often When using rcutorture to test changes to RCU itself, it is often
necessary to build a number of kernels in order to test that change necessary to build a number of kernels in order to test that change
@ -180,16 +187,16 @@ to Tree SRCU might run only the SRCU-N and SRCU-P scenarios using the
--configs argument to kvm.sh as follows: "--configs 'SRCU-N SRCU-P'". --configs argument to kvm.sh as follows: "--configs 'SRCU-N SRCU-P'".
Large systems can run multiple copies of of the full set of scenarios, Large systems can run multiple copies of of the full set of scenarios,
for example, a system with 448 hardware threads can run five instances for example, a system with 448 hardware threads can run five instances
of the full set concurrently. To make this happen: of the full set concurrently. To make this happen::
kvm.sh --cpus 448 --configs '5*CFLIST' kvm.sh --cpus 448 --configs '5*CFLIST'
Alternatively, such a system can run 56 concurrent instances of a single Alternatively, such a system can run 56 concurrent instances of a single
eight-CPU scenario: eight-CPU scenario::
kvm.sh --cpus 448 --configs '56*TREE04' kvm.sh --cpus 448 --configs '56*TREE04'
Or 28 concurrent instances of each of two eight-CPU scenarios: Or 28 concurrent instances of each of two eight-CPU scenarios::
kvm.sh --cpus 448 --configs '28*TREE03 28*TREE04' kvm.sh --cpus 448 --configs '28*TREE03 28*TREE04'
@ -199,14 +206,14 @@ values for memory may require disabling the callback-flooding tests
using the --bootargs parameter discussed below. using the --bootargs parameter discussed below.
Sometimes additional debugging is useful, and in such cases the --kconfig Sometimes additional debugging is useful, and in such cases the --kconfig
parameter to kvm.sh may be used, for example, "--kconfig 'CONFIG_KASAN=y'". parameter to kvm.sh may be used, for example, ``--kconfig 'CONFIG_KASAN=y'``.
Kernel boot arguments can also be supplied, for example, to control Kernel boot arguments can also be supplied, for example, to control
rcutorture's module parameters. For example, to test a change to RCU's rcutorture's module parameters. For example, to test a change to RCU's
CPU stall-warning code, use "--bootargs 'rcutorture.stall_cpu=30'". CPU stall-warning code, use "--bootargs 'rcutorture.stall_cpu=30'".
This will of course result in the scripting reporting a failure, namely This will of course result in the scripting reporting a failure, namely
the resuling RCU CPU stall warning. As noted above, reducing memory may the resuling RCU CPU stall warning. As noted above, reducing memory may
require disabling rcutorture's callback-flooding tests: require disabling rcutorture's callback-flooding tests::
kvm.sh --cpus 448 --configs '56*TREE04' --memory 128M \ kvm.sh --cpus 448 --configs '56*TREE04' --memory 128M \
--bootargs 'rcutorture.fwd_progress=0' --bootargs 'rcutorture.fwd_progress=0'
@ -225,7 +232,7 @@ is listed at the end of the kvm.sh output, which you really should redirect
to a file. The build products and console output of each run is kept in to a file. The build products and console output of each run is kept in
tools/testing/selftests/rcutorture/res in timestamped directories. A tools/testing/selftests/rcutorture/res in timestamped directories. A
given directory can be supplied to kvm-find-errors.sh in order to have given directory can be supplied to kvm-find-errors.sh in order to have
it cycle you through summaries of errors and full error logs. For example: it cycle you through summaries of errors and full error logs. For example::
tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh \ tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh \
tools/testing/selftests/rcutorture/res/2020.01.20-15.54.23 tools/testing/selftests/rcutorture/res/2020.01.20-15.54.23
@ -245,38 +252,42 @@ that was tested and any uncommitted changes in diff format.
The most frequently used files in each per-scenario-run directory are: The most frequently used files in each per-scenario-run directory are:
.config: This file contains the Kconfig options. .config:
This file contains the Kconfig options.
Make.out: This contains build output for a specific scenario. Make.out:
This contains build output for a specific scenario.
console.log: This contains the console output for a specific scenario. console.log:
This contains the console output for a specific scenario.
This file may be examined once the kernel has booted, but This file may be examined once the kernel has booted, but
it might not exist if the build failed. it might not exist if the build failed.
vmlinux: This contains the kernel, which can be useful with tools like vmlinux:
This contains the kernel, which can be useful with tools like
objdump and gdb. objdump and gdb.
A number of additional files are available, but are less frequently used. A number of additional files are available, but are less frequently used.
Many are intended for debugging of rcutorture itself or of its scripting. Many are intended for debugging of rcutorture itself or of its scripting.
As of v5.4, a successful run with the default set of scenarios produces As of v5.4, a successful run with the default set of scenarios produces
the following summary at the end of the run on a 12-CPU system: the following summary at the end of the run on a 12-CPU system::
SRCU-N ------- 804233 GPs (148.932/s) [srcu: g10008272 f0x0 ] SRCU-N ------- 804233 GPs (148.932/s) [srcu: g10008272 f0x0 ]
SRCU-P ------- 202320 GPs (37.4667/s) [srcud: g1809476 f0x0 ] SRCU-P ------- 202320 GPs (37.4667/s) [srcud: g1809476 f0x0 ]
SRCU-t ------- 1122086 GPs (207.794/s) [srcu: g0 f0x0 ] SRCU-t ------- 1122086 GPs (207.794/s) [srcu: g0 f0x0 ]
SRCU-u ------- 1111285 GPs (205.794/s) [srcud: g1 f0x0 ] SRCU-u ------- 1111285 GPs (205.794/s) [srcud: g1 f0x0 ]
TASKS01 ------- 19666 GPs (3.64185/s) [tasks: g0 f0x0 ] TASKS01 ------- 19666 GPs (3.64185/s) [tasks: g0 f0x0 ]
TASKS02 ------- 20541 GPs (3.80389/s) [tasks: g0 f0x0 ] TASKS02 ------- 20541 GPs (3.80389/s) [tasks: g0 f0x0 ]
TASKS03 ------- 19416 GPs (3.59556/s) [tasks: g0 f0x0 ] TASKS03 ------- 19416 GPs (3.59556/s) [tasks: g0 f0x0 ]
TINY01 ------- 836134 GPs (154.84/s) [rcu: g0 f0x0 ] n_max_cbs: 34198 TINY01 ------- 836134 GPs (154.84/s) [rcu: g0 f0x0 ] n_max_cbs: 34198
TINY02 ------- 850371 GPs (157.476/s) [rcu: g0 f0x0 ] n_max_cbs: 2631 TINY02 ------- 850371 GPs (157.476/s) [rcu: g0 f0x0 ] n_max_cbs: 2631
TREE01 ------- 162625 GPs (30.1157/s) [rcu: g1124169 f0x0 ] TREE01 ------- 162625 GPs (30.1157/s) [rcu: g1124169 f0x0 ]
TREE02 ------- 333003 GPs (61.6672/s) [rcu: g2647753 f0x0 ] n_max_cbs: 35844 TREE02 ------- 333003 GPs (61.6672/s) [rcu: g2647753 f0x0 ] n_max_cbs: 35844
TREE03 ------- 306623 GPs (56.782/s) [rcu: g2975325 f0x0 ] n_max_cbs: 1496497 TREE03 ------- 306623 GPs (56.782/s) [rcu: g2975325 f0x0 ] n_max_cbs: 1496497
CPU count limited from 16 to 12 CPU count limited from 16 to 12
TREE04 ------- 246149 GPs (45.5831/s) [rcu: g1695737 f0x0 ] n_max_cbs: 434961 TREE04 ------- 246149 GPs (45.5831/s) [rcu: g1695737 f0x0 ] n_max_cbs: 434961
TREE05 ------- 314603 GPs (58.2598/s) [rcu: g2257741 f0x2 ] n_max_cbs: 193997 TREE05 ------- 314603 GPs (58.2598/s) [rcu: g2257741 f0x2 ] n_max_cbs: 193997
TREE07 ------- 167347 GPs (30.9902/s) [rcu: g1079021 f0x0 ] n_max_cbs: 478732 TREE07 ------- 167347 GPs (30.9902/s) [rcu: g1079021 f0x0 ] n_max_cbs: 478732
CPU count limited from 16 to 12 CPU count limited from 16 to 12
TREE09 ------- 752238 GPs (139.303/s) [rcu: g13075057 f0x0 ] n_max_cbs: 99011 TREE09 ------- 752238 GPs (139.303/s) [rcu: g13075057 f0x0 ] n_max_cbs: 99011

View file

@ -19,9 +19,10 @@ attach to other running processes (e.g. Firefox, SSH sessions, GPG agent,
etc) to extract additional credentials and continue to expand the scope etc) to extract additional credentials and continue to expand the scope
of their attack without resorting to user-assisted phishing. of their attack without resorting to user-assisted phishing.
This is not a theoretical problem. SSH session hijacking This is not a theoretical problem. `SSH session hijacking
(http://www.storm.net.nz/projects/7) and arbitrary code injection <https://www.blackhat.com/presentations/bh-usa-05/bh-us-05-boileau.pdf>`_
(http://c-skills.blogspot.com/2007/05/injectso.html) attacks already and `arbitrary code injection
<https://c-skills.blogspot.com/2007/05/injectso.html>`_ attacks already
exist and remain possible if ptrace is allowed to operate as before. exist and remain possible if ptrace is allowed to operate as before.
Since ptrace is not commonly used by non-developers and non-admins, system Since ptrace is not commonly used by non-developers and non-admins, system
builders should be allowed the option to disable this debugging system. builders should be allowed the option to disable this debugging system.

View file

@ -10,7 +10,7 @@ Description
clusters and in this context, is a "drop-in" replacement for shared clusters and in this context, is a "drop-in" replacement for shared
storage. Simplistically, you could see it as a network RAID 1. storage. Simplistically, you could see it as a network RAID 1.
Please visit http://www.drbd.org to find out more. Please visit https://www.drbd.org to find out more.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1

View file

@ -6,7 +6,7 @@ FAQ list:
========= =========
A FAQ list may be found in the fdutils package (see below), and also A FAQ list may be found in the fdutils package (see below), and also
at <http://fdutils.linux.lu/faq.html>. at <https://fdutils.linux.lu/faq.html>.
LILO configuration options (Thinkpad users, read this) LILO configuration options (Thinkpad users, read this)
@ -220,11 +220,11 @@ It also contains additional documentation about the floppy driver.
The latest version can be found at fdutils homepage: The latest version can be found at fdutils homepage:
http://fdutils.linux.lu https://fdutils.linux.lu
The fdutils releases can be found at: The fdutils releases can be found at:
http://fdutils.linux.lu/download.html https://fdutils.linux.lu/download.html
http://www.tux.org/pub/knaff/fdutils/ http://www.tux.org/pub/knaff/fdutils/

View file

@ -71,6 +71,16 @@ For example,::
foo = bar, baz foo = bar, baz
foo = qux # !ERROR! we can not re-define same key foo = qux # !ERROR! we can not re-define same key
If you want to update the value, you must use the override operator
``:=`` explicitly. For example::
foo = bar, baz
foo := qux
then, the ``qux`` is assigned to ``foo`` key. This is useful for
overriding the default value by adding (partial) custom bootconfigs
without parsing the default bootconfig.
If you want to append the value to existing key as an array member, If you want to append the value to existing key as an array member,
you can use ``+=`` operator. For example:: you can use ``+=`` operator. For example::
@ -84,6 +94,7 @@ For example, following config is NOT allowed.::
foo = value1 foo = value1
foo.bar = value2 # !ERROR! subkey "bar" and value "value1" can NOT co-exist foo.bar = value2 # !ERROR! subkey "bar" and value "value1" can NOT co-exist
foo.bar := value2 # !ERROR! even with the override operator, this is NOT allowed.
Comments Comments

View file

@ -114,4 +114,4 @@ Following resources can be accounted by rdma controller.
(d) Delete resource limit:: (d) Delete resource limit::
echo echo mlx4_0 hca_handle=max hca_object=max > /sys/fs/cgroup/rdma/1/rdma.max echo mlx4_0 hca_handle=max hca_object=max > /sys/fs/cgroup/rdma/1/rdma.max

View file

@ -1274,6 +1274,10 @@ PAGE_SIZE multiple when read back.
Amount of memory used for storing in-kernel data Amount of memory used for storing in-kernel data
structures. structures.
percpu
Amount of memory used for storing per-cpu kernel
data structures.
sock sock
Amount of memory used in network transmission buffers Amount of memory used in network transmission buffers
@ -1483,8 +1487,7 @@ IO Interface Files
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
io.stat io.stat
A read-only nested-keyed file which exists on non-root A read-only nested-keyed file.
cgroups.
Lines are keyed by $MAJ:$MIN device numbers and not ordered. Lines are keyed by $MAJ:$MIN device numbers and not ordered.
The following nested keys are defined. The following nested keys are defined.
@ -1684,9 +1687,9 @@ per-cgroup dirty memory states are examined and the more restrictive
of the two is enforced. of the two is enforced.
cgroup writeback requires explicit support from the underlying cgroup writeback requires explicit support from the underlying
filesystem. Currently, cgroup writeback is implemented on ext2, ext4 filesystem. Currently, cgroup writeback is implemented on ext2, ext4,
and btrfs. On other filesystems, all writeback IOs are attributed to btrfs, f2fs, and xfs. On other filesystems, all writeback IOs are
the root cgroup. attributed to the root cgroup.
There are inherent differences in memory and writeback management There are inherent differences in memory and writeback management
which affects how cgroup ownership is tracked. Memory is tracked per which affects how cgroup ownership is tracked. Memory is tracked per
@ -2043,7 +2046,7 @@ RDMA
---- ----
The "rdma" controller regulates the distribution and accounting of The "rdma" controller regulates the distribution and accounting of
of RDMA resources. RDMA resources.
RDMA Interface Files RDMA Interface Files
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~

View file

@ -98,7 +98,7 @@ x) Finish support for SMB3.1.1 compression
Known Bugs Known Bugs
========== ==========
See http://bugzilla.samba.org - search on product "CifsVFS" for See https://bugzilla.samba.org - search on product "CifsVFS" for
current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS) current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS)
1) existing symbolic links (Windows reparse points) are recognized but 1) existing symbolic links (Windows reparse points) are recognized but

View file

@ -16,8 +16,7 @@ standard for interoperating between Macs and Windows and major NAS appliances.
Please see Please see
MS-SMB2 (for detailed SMB2/SMB3/SMB3.1.1 protocol specification) MS-SMB2 (for detailed SMB2/SMB3/SMB3.1.1 protocol specification)
http://protocolfreedom.org/ and or https://samba.org/samba/PFIF/
http://samba.org/samba/PFIF/
for more details. for more details.
@ -32,7 +31,7 @@ Build instructions
For Linux: For Linux:
1) Download the kernel (e.g. from http://www.kernel.org) 1) Download the kernel (e.g. from https://www.kernel.org)
and change directory into the top of the kernel directory tree and change directory into the top of the kernel directory tree
(e.g. /usr/src/linux-2.5.73) (e.g. /usr/src/linux-2.5.73)
2) make menuconfig (or make xconfig) 2) make menuconfig (or make xconfig)
@ -831,7 +830,7 @@ the active sessions and the shares that are mounted.
Enabling Kerberos (extended security) works but requires version 1.2 or later Enabling Kerberos (extended security) works but requires version 1.2 or later
of the helper program cifs.upcall to be present and to be configured in the of the helper program cifs.upcall to be present and to be configured in the
/etc/request-key.conf file. The cifs.upcall helper program is from the Samba /etc/request-key.conf file. The cifs.upcall helper program is from the Samba
project(http://www.samba.org). NTLM and NTLMv2 and LANMAN support do not project(https://www.samba.org). NTLM and NTLMv2 and LANMAN support do not
require this helper. Note that NTLMv2 security (which does not require the require this helper. Note that NTLMv2 security (which does not require the
cifs.upcall helper program), instead of using Kerberos, is sufficient for cifs.upcall helper program), instead of using Kerberos, is sufficient for
some use cases. some use cases.

View file

@ -16,7 +16,7 @@
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
# #
while(<>) { while(<>) {

View file

@ -26,7 +26,7 @@ Please go to http://support.dell.com register and you can find info on
OpenManage and Dell Update packages (DUP). OpenManage and Dell Update packages (DUP).
Libsmbios can also be used to update BIOS on Dell systems go to Libsmbios can also be used to update BIOS on Dell systems go to
http://linux.dell.com/libsmbios/ for details. https://linux.dell.com/libsmbios/ for details.
Dell_RBU driver supports BIOS update using the monolithic image and packetized Dell_RBU driver supports BIOS update using the monolithic image and packetized
image methods. In case of monolithic the driver allocates a contiguous chunk image methods. In case of monolithic the driver allocates a contiguous chunk

View file

@ -69,10 +69,11 @@ Create the dm-dust device:
$ sudo dmsetup create dust1 --table '0 33552384 dust /dev/vdb1 0 4096' $ sudo dmsetup create dust1 --table '0 33552384 dust /dev/vdb1 0 4096'
Check the status of the read behavior ("bypass" indicates that all I/O Check the status of the read behavior ("bypass" indicates that all I/O
will be passed through to the underlying device):: will be passed through to the underlying device; "verbose" indicates that
bad block additions, removals, and remaps will be verbosely logged)::
$ sudo dmsetup status dust1 $ sudo dmsetup status dust1
0 33552384 dust 252:17 bypass 0 33552384 dust 252:17 bypass verbose
$ sudo dd if=/dev/mapper/dust1 of=/dev/null bs=512 count=128 iflag=direct $ sudo dd if=/dev/mapper/dust1 of=/dev/null bs=512 count=128 iflag=direct
128+0 records in 128+0 records in
@ -164,7 +165,7 @@ following message command::
A message will print with the number of bad blocks currently A message will print with the number of bad blocks currently
configured on the device:: configured on the device::
kernel: device-mapper: dust: countbadblocks: 895 badblock(s) found countbadblocks: 895 badblock(s) found
Querying for specific bad blocks Querying for specific bad blocks
-------------------------------- --------------------------------
@ -176,11 +177,11 @@ following message command::
The following message will print if the block is in the list:: The following message will print if the block is in the list::
device-mapper: dust: queryblock: block 72 found in badblocklist dust_query_block: block 72 found in badblocklist
The following message will print if the block is not in the list:: The following message will print if the block is not in the list::
device-mapper: dust: queryblock: block 72 not found in badblocklist dust_query_block: block 72 not found in badblocklist
The "queryblock" message command will work in both the "enabled" The "queryblock" message command will work in both the "enabled"
and "disabled" modes, allowing the verification of whether a block and "disabled" modes, allowing the verification of whether a block
@ -198,12 +199,28 @@ following message command::
After clearing the bad block list, the following message will appear:: After clearing the bad block list, the following message will appear::
kernel: device-mapper: dust: clearbadblocks: badblocks cleared dust_clear_badblocks: badblocks cleared
If there were no bad blocks to clear, the following message will If there were no bad blocks to clear, the following message will
appear:: appear::
kernel: device-mapper: dust: clearbadblocks: no badblocks found dust_clear_badblocks: no badblocks found
Listing the bad block list
--------------------------
To list all bad blocks in the bad block list (using an example device
with blocks 1 and 2 in the bad block list), run the following message
command::
$ sudo dmsetup message dust1 0 listbadblocks
1
2
If there are no bad blocks in the bad block list, the command will
execute with no output::
$ sudo dmsetup message dust1 0 listbadblocks
Message commands list Message commands list
--------------------- ---------------------
@ -223,6 +240,7 @@ Single argument message commands::
countbadblocks countbadblocks
clearbadblocks clearbadblocks
listbadblocks
disable disable
enable enable
quiet quiet

View file

@ -45,7 +45,7 @@ To use the target for the first time:
will format the device will format the device
3. unload the dm-integrity target 3. unload the dm-integrity target
4. read the "provided_data_sectors" value from the superblock 4. read the "provided_data_sectors" value from the superblock
5. load the dm-integrity target with the the target size 5. load the dm-integrity target with the target size
"provided_data_sectors" "provided_data_sectors"
6. if you want to use dm-integrity with dm-crypt, load the dm-crypt target 6. if you want to use dm-integrity with dm-crypt, load the dm-crypt target
with the size "provided_data_sectors" with the size "provided_data_sectors"
@ -99,7 +99,7 @@ interleave_sectors:number
the superblock is used. the superblock is used.
meta_device:device meta_device:device
Don't interleave the data and metadata on on device. Use a Don't interleave the data and metadata on the device. Use a
separate device for metadata. separate device for metadata.
buffer_sectors:number buffer_sectors:number

View file

@ -71,7 +71,7 @@ The target is named "raid" and it accepts the following parameters::
============= =============================================================== ============= ===============================================================
Reference: Chapter 4 of Reference: Chapter 4 of
http://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf https://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf
<#raid_params>: The number of parameters that follow. <#raid_params>: The number of parameters that follow.

View file

@ -14,7 +14,7 @@ host-aware zoned block devices.
For a more detailed description of the zoned block device models and For a more detailed description of the zoned block device models and
their constraints see (for SCSI devices): their constraints see (for SCSI devices):
http://www.t10.org/drafts.htm#ZBC_Family https://www.t10.org/drafts.htm#ZBC_Family
and (for ATA devices): and (for ATA devices):

View file

@ -83,6 +83,10 @@ restart_on_corruption
not compatible with ignore_corruption and requires user space support to not compatible with ignore_corruption and requires user space support to
avoid restart loops. avoid restart loops.
panic_on_corruption
Panic the device when a corrupted block is discovered. This option is
not compatible with ignore_corruption and restart_on_corruption.
ignore_zero_blocks ignore_zero_blocks
Do not verify blocks that are expected to contain zeroes and always return Do not verify blocks that are expected to contain zeroes and always return
zeroes instead. This may be useful if the partition contains unused blocks zeroes instead. This may be useful if the partition contains unused blocks

View file

@ -375,8 +375,9 @@
239 = /dev/uhid User-space I/O driver support for HID subsystem 239 = /dev/uhid User-space I/O driver support for HID subsystem
240 = /dev/userio Serio driver testing device 240 = /dev/userio Serio driver testing device
241 = /dev/vhost-vsock Host kernel driver for virtio vsock 241 = /dev/vhost-vsock Host kernel driver for virtio vsock
242 = /dev/rfkill Turning off radio transmissions (rfkill)
242-254 Reserved for local use 243-254 Reserved for local use
255 Reserved for MISC_DYNAMIC_MINOR 255 Reserved for MISC_DYNAMIC_MINOR
11 char Raw keyboard device (Linux/SPARC only) 11 char Raw keyboard device (Linux/SPARC only)
@ -1442,7 +1443,7 @@
... ...
The driver and documentation may be obtained from The driver and documentation may be obtained from
http://www.winradio.com/ https://www.winradio.com/
82 block I2O hard disk 82 block I2O hard disk
0 = /dev/i2o/hdag 33rd I2O hard disk, whole disk 0 = /dev/i2o/hdag 33rd I2O hard disk, whole disk
@ -1656,7 +1657,7 @@
dynamically, so there is no fixed mapping from subdevice dynamically, so there is no fixed mapping from subdevice
pathnames to minor numbers. pathnames to minor numbers.
See http://www.comedi.org/ for information about the Comedi See https://www.comedi.org/ for information about the Comedi
project. project.
98 block User-mode virtual block device 98 block User-mode virtual block device
@ -1723,7 +1724,7 @@
implementations a kernel presence for caching and easy implementations a kernel presence for caching and easy
mounting. For more information about the project, mounting. For more information about the project,
write to <arla-drinkers@stacken.kth.se> or see write to <arla-drinkers@stacken.kth.se> or see
http://www.stacken.kth.se/project/arla/ https://www.stacken.kth.se/project/arla/
103 block Audit device 103 block Audit device
0 = /dev/audit Audit device 0 = /dev/audit Audit device

View file

@ -70,10 +70,10 @@ statements via::
nullarbor:~ # cat <debugfs>/dynamic_debug/control nullarbor:~ # cat <debugfs>/dynamic_debug/control
# filename:lineno [module]function flags format # filename:lineno [module]function flags format
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup =_ "SVCRDMA Module Removed, deregister RPC RDMA transport\012" net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup =_ "SVCRDMA Module Removed, deregister RPC RDMA transport\012"
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init =_ "\011max_inline : %d\012" net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init =_ "\011max_inline : %d\012"
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init =_ "\011sq_depth : %d\012" net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init =_ "\011sq_depth : %d\012"
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init =_ "\011max_requests : %d\012" net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init =_ "\011max_requests : %d\012"
... ...
@ -93,7 +93,7 @@ the debug statement callsites with any non-default flags::
nullarbor:~ # awk '$3 != "=_"' <debugfs>/dynamic_debug/control nullarbor:~ # awk '$3 != "=_"' <debugfs>/dynamic_debug/control
# filename:lineno [module]function flags format # filename:lineno [module]function flags format
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012" net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012"
Command Language Reference Command Language Reference
========================== ==========================
@ -156,6 +156,7 @@ against. Possible keywords are:::
``line-range`` cannot contain space, e.g. ``line-range`` cannot contain space, e.g.
"1-30" is valid range but "1 - 30" is not. "1-30" is valid range but "1 - 30" is not.
``module=foo`` combined keyword=value form is interchangably accepted
The meanings of each keyword are: The meanings of each keyword are:
@ -164,15 +165,18 @@ func
of each callsite. Example:: of each callsite. Example::
func svc_tcp_accept func svc_tcp_accept
func *recv* # in rfcomm, bluetooth, ping, tcp
file file
The given string is compared against either the full pathname, the The given string is compared against either the src-root relative
src-root relative pathname, or the basename of the source file of pathname, or the basename of the source file of each callsite.
each callsite. Examples:: Examples::
file svcsock.c file svcsock.c
file kernel/freezer.c file kernel/freezer.c # ie column 1 of control file
file /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c file drivers/usb/* # all callsites under it
file inode.c:start_* # parse :tail as a func (above)
file inode.c:1-100 # parse :tail as a line-range (above)
module module
The given string is compared against the module name The given string is compared against the module name
@ -182,6 +186,7 @@ module
module sunrpc module sunrpc
module nfsd module nfsd
module drm* # both drm, drm_kms_helper
format format
The given string is searched for in the dynamic debug format The given string is searched for in the dynamic debug format
@ -251,8 +256,8 @@ the syntax described above, but must not exceed 1023 characters. Your
bootloader may impose lower limits. bootloader may impose lower limits.
These ``dyndbg`` params are processed just after the ddebug tables are These ``dyndbg`` params are processed just after the ddebug tables are
processed, as part of the arch_initcall. Thus you can enable debug processed, as part of the early_initcall. Thus you can enable debug
messages in all code run after this arch_initcall via this boot messages in all code run after this early_initcall via this boot
parameter. parameter.
On an x86 system for example ACPI enablement is a subsys_initcall and:: On an x86 system for example ACPI enablement is a subsys_initcall and::

View file

@ -395,6 +395,13 @@ When mounting an ext4 filesystem, the following option are accepted:
Documentation/filesystems/dax.txt. Note that this option is Documentation/filesystems/dax.txt. Note that this option is
incompatible with data=journal. incompatible with data=journal.
inlinecrypt
When possible, encrypt/decrypt the contents of encrypted files using the
blk-crypto framework rather than filesystem-layer encryption. This
allows the use of inline encryption hardware. The on-disk format is
unaffected. For more details, see
Documentation/block/inline-encryption.rst.
Data Mode Data Mode
========= =========
There are 3 different data modes: There are 3 different data modes:
@ -611,7 +618,7 @@ kernel source: <file:fs/ext4/>
programs: http://e2fsprogs.sourceforge.net/ programs: http://e2fsprogs.sourceforge.net/
useful links: http://fedoraproject.org/wiki/ext3-devel useful links: https://fedoraproject.org/wiki/ext3-devel
http://www.bullopensource.org/ext4/ http://www.bullopensource.org/ext4/
http://ext4.wiki.kernel.org/index.php/Main_Page http://ext4.wiki.kernel.org/index.php/Main_Page
http://fedoraproject.org/wiki/Features/Ext4 https://fedoraproject.org/wiki/Features/Ext4

View file

@ -80,6 +80,10 @@ The possible values in this file are:
- The processor is not vulnerable. - The processor is not vulnerable.
* - KVM: Mitigation: Split huge pages * - KVM: Mitigation: Split huge pages
- Software changes mitigate this issue. - Software changes mitigate this issue.
* - KVM: Mitigation: VMX unsupported
- KVM is not vulnerable because Virtual Machine Extensions (VMX) is not supported.
* - KVM: Mitigation: VMX disabled
- KVM is not vulnerable because Virtual Machine Extensions (VMX) is disabled.
* - KVM: Vulnerable * - KVM: Vulnerable
- The processor is vulnerable, but no mitigation enabled - The processor is vulnerable, but no mitigation enabled

View file

@ -14,7 +14,7 @@ to the core through the special register mechanism that is susceptible
to MDS attacks. to MDS attacks.
Affected processors Affected processors
-------------------- -------------------
Core models (desktop, mobile, Xeon-E3) that implement RDRAND and/or RDSEED may Core models (desktop, mobile, Xeon-E3) that implement RDRAND and/or RDSEED may
be affected. be affected.
@ -59,7 +59,7 @@ executed on another core or sibling thread using MDS techniques.
Mitigation mechanism Mitigation mechanism
------------------- --------------------
Intel will release microcode updates that modify the RDRAND, RDSEED, and Intel will release microcode updates that modify the RDRAND, RDSEED, and
EGETKEY instructions to overwrite secret special register data in the shared EGETKEY instructions to overwrite secret special register data in the shared
staging buffer before the secret data can be accessed by another logical staging buffer before the secret data can be accessed by another logical
@ -118,7 +118,7 @@ with the option "srbds=". The option for this is:
============= ============================================================= ============= =============================================================
SRBDS System Information SRBDS System Information
----------------------- ------------------------
The Linux kernel provides vulnerability status information through sysfs. For The Linux kernel provides vulnerability status information through sysfs. For
SRBDS this can be accessed by the following sysfs file: SRBDS this can be accessed by the following sysfs file:
/sys/devices/system/cpu/vulnerabilities/srbds /sys/devices/system/cpu/vulnerabilities/srbds

View file

@ -41,6 +41,7 @@ problems and bugs in particular.
init init
kdump/index kdump/index
perf/index perf/index
pstore-blk
This is the beginning of a section with information of interest to This is the beginning of a section with information of interest to
application developers. Documents covering various aspects of the kernel application developers. Documents covering various aspects of the kernel

View file

@ -93,6 +93,11 @@ It exists in the sparse memory mapping model, and it is also somewhat
similar to the mem_map variable, both of them are used to translate an similar to the mem_map variable, both of them are used to translate an
address. address.
MAX_PHYSMEM_BITS
----------------
Defines the maximum supported physical address space memory.
page page
---- ----
@ -399,6 +404,17 @@ KERNELPACMASK
The mask to extract the Pointer Authentication Code from a kernel virtual The mask to extract the Pointer Authentication Code from a kernel virtual
address. address.
TCR_EL1.T1SZ
------------
Indicates the size offset of the memory region addressed by TTBR1_EL1.
The region size is 2^(64-T1SZ) bytes.
TTBR1_EL1 is the table base address register specified by ARMv8-A
architecture which is used to lookup the page-tables for the Virtual
addresses in the higher VA range (refer to ARMv8 ARM document for
more details).
arm arm
=== ===

View file

@ -703,6 +703,11 @@
cpufreq.off=1 [CPU_FREQ] cpufreq.off=1 [CPU_FREQ]
disable the cpufreq sub-system disable the cpufreq sub-system
cpufreq.default_governor=
[CPU_FREQ] Name of the default cpufreq governor or
policy to use. This governor must be registered in the
kernel before the cpufreq driver probes.
cpu_init_udelay=N cpu_init_udelay=N
[X86] Delay for N microsec between assert and de-assert [X86] Delay for N microsec between assert and de-assert
of APIC INIT to start processors. This delay occurs of APIC INIT to start processors. This delay occurs
@ -719,7 +724,7 @@
memory region [offset, offset + size] for that kernel memory region [offset, offset + size] for that kernel
image. If '@offset' is omitted, then a suitable offset image. If '@offset' is omitted, then a suitable offset
is selected automatically. is selected automatically.
[KNL, x86_64] select a region under 4G first, and [KNL, X86-64] Select a region under 4G first, and
fall back to reserve region above 4G when '@offset' fall back to reserve region above 4G when '@offset'
hasn't been specified. hasn't been specified.
See Documentation/admin-guide/kdump/kdump.rst for further details. See Documentation/admin-guide/kdump/kdump.rst for further details.
@ -732,14 +737,14 @@
Documentation/admin-guide/kdump/kdump.rst for an example. Documentation/admin-guide/kdump/kdump.rst for an example.
crashkernel=size[KMG],high crashkernel=size[KMG],high
[KNL, x86_64] range could be above 4G. Allow kernel [KNL, X86-64] range could be above 4G. Allow kernel
to allocate physical memory region from top, so could to allocate physical memory region from top, so could
be above 4G if system have more than 4G ram installed. be above 4G if system have more than 4G ram installed.
Otherwise memory region will be allocated below 4G, if Otherwise memory region will be allocated below 4G, if
available. available.
It will be ignored if crashkernel=X is specified. It will be ignored if crashkernel=X is specified.
crashkernel=size[KMG],low crashkernel=size[KMG],low
[KNL, x86_64] range under 4G. When crashkernel=X,high [KNL, X86-64] range under 4G. When crashkernel=X,high
is passed, kernel could allocate physical memory region is passed, kernel could allocate physical memory region
above 4G, that cause second kernel crash on system above 4G, that cause second kernel crash on system
that require some amount of low memory, e.g. swiotlb that require some amount of low memory, e.g. swiotlb
@ -827,6 +832,21 @@
useful to also enable the page_owner functionality. useful to also enable the page_owner functionality.
on: enable the feature on: enable the feature
debugfs= [KNL] This parameter enables what is exposed to userspace
and debugfs internal clients.
Format: { on, no-mount, off }
on: All functions are enabled.
no-mount:
Filesystem is not registered but kernel clients can
access APIs and a crashkernel can be used to read
its content. There is nothing to mount.
off: Filesystem is not registered and clients
get a -EPERM as result when trying to register files
or directories within debugfs.
This is equivalent of the runtime functionality if
debugfs was not enabled in the kernel at all.
Default value is set in build-time with a kernel configuration.
debugpat [X86] Enable PAT debugging debugpat [X86] Enable PAT debugging
decnet.addr= [HW,NET] decnet.addr= [HW,NET]
@ -896,6 +916,10 @@
disable_radix [PPC] disable_radix [PPC]
Disable RADIX MMU mode on POWER9 Disable RADIX MMU mode on POWER9
radix_hcall_invalidate=on [PPC/PSERIES]
Disable RADIX GTSE feature and use hcall for TLB
invalidate.
disable_tlbie [PPC] disable_tlbie [PPC]
Disable TLBIE instruction. Currently does not work Disable TLBIE instruction. Currently does not work
with KVM, with HASH MMU, or with coherent accelerators. with KVM, with HASH MMU, or with coherent accelerators.
@ -1207,26 +1231,28 @@
Format: {"off" | "on" | "skip[mbr]"} Format: {"off" | "on" | "skip[mbr]"}
efi= [EFI] efi= [EFI]
Format: { "old_map", "nochunk", "noruntime", "debug", Format: { "debug", "disable_early_pci_dma",
"nosoftreserve", "disable_early_pci_dma", "nochunk", "noruntime", "nosoftreserve",
"no_disable_early_pci_dma" } "novamap", "no_disable_early_pci_dma",
old_map [X86-64]: switch to the old ioremap-based EFI "old_map" }
runtime services mapping. [Needs CONFIG_X86_UV=y] debug: enable misc debug output.
disable_early_pci_dma: disable the busmaster bit on all
PCI bridges while in the EFI boot stub.
nochunk: disable reading files in "chunks" in the EFI nochunk: disable reading files in "chunks" in the EFI
boot stub, as chunking can cause problems with some boot stub, as chunking can cause problems with some
firmware implementations. firmware implementations.
noruntime : disable EFI runtime services support noruntime : disable EFI runtime services support
debug: enable misc debug output
nosoftreserve: The EFI_MEMORY_SP (Specific Purpose) nosoftreserve: The EFI_MEMORY_SP (Specific Purpose)
attribute may cause the kernel to reserve the attribute may cause the kernel to reserve the
memory range for a memory mapping driver to memory range for a memory mapping driver to
claim. Specify efi=nosoftreserve to disable this claim. Specify efi=nosoftreserve to disable this
reservation and treat the memory by its base type reservation and treat the memory by its base type
(i.e. EFI_CONVENTIONAL_MEMORY / "System RAM"). (i.e. EFI_CONVENTIONAL_MEMORY / "System RAM").
disable_early_pci_dma: Disable the busmaster bit on all novamap: do not call SetVirtualAddressMap().
PCI bridges while in the EFI boot stub
no_disable_early_pci_dma: Leave the busmaster bit set no_disable_early_pci_dma: Leave the busmaster bit set
on all PCI bridges while in the EFI boot stub on all PCI bridges while in the EFI boot stub
old_map [X86-64]: switch to the old ioremap-based EFI
runtime services mapping. [Needs CONFIG_X86_UV=y]
efi_no_storage_paranoia [EFI; X86] efi_no_storage_paranoia [EFI; X86]
Using this parameter you can use more than 50% of Using this parameter you can use more than 50% of
@ -1401,7 +1427,7 @@
gamma= [HW,DRM] gamma= [HW,DRM]
gart_fix_e820= [X86_64] disable the fix e820 for K8 GART gart_fix_e820= [X86-64] disable the fix e820 for K8 GART
Format: off | on Format: off | on
default: on default: on
@ -1788,7 +1814,7 @@
Format: 0 | 1 Format: 0 | 1
Default set by CONFIG_INIT_ON_FREE_DEFAULT_ON. Default set by CONFIG_INIT_ON_FREE_DEFAULT_ON.
init_pkru= [x86] Specify the default memory protection keys rights init_pkru= [X86] Specify the default memory protection keys rights
register contents for all processes. 0x55555554 by register contents for all processes. 0x55555554 by
default (disallow access to all but pkey 0). Can default (disallow access to all but pkey 0). Can
override in debugfs after boot. override in debugfs after boot.
@ -1796,7 +1822,7 @@
inport.irq= [HW] Inport (ATI XL and Microsoft) busmouse driver inport.irq= [HW] Inport (ATI XL and Microsoft) busmouse driver
Format: <irq> Format: <irq>
int_pln_enable [x86] Enable power limit notification interrupt int_pln_enable [X86] Enable power limit notification interrupt
integrity_audit=[IMA] integrity_audit=[IMA]
Format: { "0" | "1" } Format: { "0" | "1" }
@ -1814,7 +1840,7 @@
bypassed by not enabling DMAR with this option. In bypassed by not enabling DMAR with this option. In
this case, gfx device will use physical address for this case, gfx device will use physical address for
DMA. DMA.
forcedac [x86_64] forcedac [X86-64]
With this option iommu will not optimize to look With this option iommu will not optimize to look
for io virtual address below 32-bit forcing dual for io virtual address below 32-bit forcing dual
address cycle on pci bus for cards supporting greater address cycle on pci bus for cards supporting greater
@ -1899,7 +1925,7 @@
strict regions from userspace. strict regions from userspace.
relaxed relaxed
iommu= [x86] iommu= [X86]
off off
force force
noforce noforce
@ -1909,8 +1935,8 @@
merge merge
nomerge nomerge
soft soft
pt [x86] pt [X86]
nopt [x86] nopt [X86]
nobypass [PPC/POWERNV] nobypass [PPC/POWERNV]
Disable IOMMU bypass, using IOMMU for PCI devices. Disable IOMMU bypass, using IOMMU for PCI devices.
@ -2053,21 +2079,21 @@
iucv= [HW,NET] iucv= [HW,NET]
ivrs_ioapic [HW,X86_64] ivrs_ioapic [HW,X86-64]
Provide an override to the IOAPIC-ID<->DEVICE-ID Provide an override to the IOAPIC-ID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For mapping provided in the IVRS ACPI table. For
example, to map IOAPIC-ID decimal 10 to example, to map IOAPIC-ID decimal 10 to
PCI device 00:14.0 write the parameter as: PCI device 00:14.0 write the parameter as:
ivrs_ioapic[10]=00:14.0 ivrs_ioapic[10]=00:14.0
ivrs_hpet [HW,X86_64] ivrs_hpet [HW,X86-64]
Provide an override to the HPET-ID<->DEVICE-ID Provide an override to the HPET-ID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For mapping provided in the IVRS ACPI table. For
example, to map HPET-ID decimal 0 to example, to map HPET-ID decimal 0 to
PCI device 00:14.0 write the parameter as: PCI device 00:14.0 write the parameter as:
ivrs_hpet[0]=00:14.0 ivrs_hpet[0]=00:14.0
ivrs_acpihid [HW,X86_64] ivrs_acpihid [HW,X86-64]
Provide an override to the ACPI-HID:UID<->DEVICE-ID Provide an override to the ACPI-HID:UID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For mapping provided in the IVRS ACPI table. For
example, to map UART-HID:UID AMD0020:0 to example, to map UART-HID:UID AMD0020:0 to
@ -2344,7 +2370,7 @@
lapic [X86-32,APIC] Enable the local APIC even if BIOS lapic [X86-32,APIC] Enable the local APIC even if BIOS
disabled it. disabled it.
lapic= [x86,APIC] "notscdeadline" Do not use TSC deadline lapic= [X86,APIC] "notscdeadline" Do not use TSC deadline
value for LAPIC timer one-shot implementation. Default value for LAPIC timer one-shot implementation. Default
back to the programmable timer unit in the LAPIC. back to the programmable timer unit in the LAPIC.
@ -2786,7 +2812,7 @@
touchscreen support is not enabled in the mainstream touchscreen support is not enabled in the mainstream
kernel as of 2.6.30, a preliminary port can be found kernel as of 2.6.30, a preliminary port can be found
in the "bleeding edge" mini2440 support kernel at in the "bleeding edge" mini2440 support kernel at
http://repo.or.cz/w/linux-2.6/mini2440.git https://repo.or.cz/w/linux-2.6/mini2440.git
mitigations= mitigations=
[X86,PPC,S390,ARM64] Control optional mitigations for [X86,PPC,S390,ARM64] Control optional mitigations for
@ -3079,6 +3105,8 @@
no5lvl [X86-64] Disable 5-level paging mode. Forces no5lvl [X86-64] Disable 5-level paging mode. Forces
kernel to use 4-level paging instead. kernel to use 4-level paging instead.
nofsgsbase [X86] Disables FSGSBASE instructions.
no_console_suspend no_console_suspend
[HW] Never suspend the console [HW] Never suspend the console
Disable suspending of consoles during suspend and Disable suspending of consoles during suspend and
@ -3160,12 +3188,12 @@
register save and restore. The kernel will only save register save and restore. The kernel will only save
legacy floating-point registers on task switch. legacy floating-point registers on task switch.
nohugeiomap [KNL,x86,PPC] Disable kernel huge I/O mappings. nohugeiomap [KNL,X86,PPC] Disable kernel huge I/O mappings.
nosmt [KNL,S390] Disable symmetric multithreading (SMT). nosmt [KNL,S390] Disable symmetric multithreading (SMT).
Equivalent to smt=1. Equivalent to smt=1.
[KNL,x86] Disable symmetric multithreading (SMT). [KNL,X86] Disable symmetric multithreading (SMT).
nosmt=force: Force disable SMT, cannot be undone nosmt=force: Force disable SMT, cannot be undone
via the sysfs control file. via the sysfs control file.
@ -3927,7 +3955,7 @@
pt. [PARIDE] pt. [PARIDE]
See Documentation/admin-guide/blockdev/paride.rst. See Documentation/admin-guide/blockdev/paride.rst.
pti= [X86_64] Control Page Table Isolation of user and pti= [X86-64] Control Page Table Isolation of user and
kernel address spaces. Disabling this feature kernel address spaces. Disabling this feature
removes hardening, but improves performance of removes hardening, but improves performance of
system calls and interrupts. system calls and interrupts.
@ -3939,7 +3967,7 @@
Not specifying this option is equivalent to pti=auto. Not specifying this option is equivalent to pti=auto.
nopti [X86_64] nopti [X86-64]
Equivalent to pti=off Equivalent to pti=off
pty.legacy_count= pty.legacy_count=
@ -4038,6 +4066,14 @@
latencies, which will choose a value aligned latencies, which will choose a value aligned
with the appropriate hardware boundaries. with the appropriate hardware boundaries.
rcutree.rcu_min_cached_objs= [KNL]
Minimum number of objects which are cached and
maintained per one CPU. Object size is equal
to PAGE_SIZE. The cache allows to reduce the
pressure to page allocator, also it makes the
whole algorithm to behave better in low memory
condition.
rcutree.jiffies_till_first_fqs= [KNL] rcutree.jiffies_till_first_fqs= [KNL]
Set delay from grace-period initialization to Set delay from grace-period initialization to
first attempt to force quiescent states. first attempt to force quiescent states.
@ -4258,6 +4294,20 @@
Set time (jiffies) between CPU-hotplug operations, Set time (jiffies) between CPU-hotplug operations,
or zero to disable CPU-hotplug testing. or zero to disable CPU-hotplug testing.
rcutorture.read_exit= [KNL]
Set the number of read-then-exit kthreads used
to test the interaction of RCU updaters and
task-exit processing.
rcutorture.read_exit_burst= [KNL]
The number of times in a given read-then-exit
episode that a set of read-then-exit kthreads
is spawned.
rcutorture.read_exit_delay= [KNL]
The delay, in seconds, between successive
read-then-exit testing episodes.
rcutorture.shuffle_interval= [KNL] rcutorture.shuffle_interval= [KNL]
Set task-shuffle interval (s). Shuffling tasks Set task-shuffle interval (s). Shuffling tasks
allows some CPUs to go into dyntick-idle mode allows some CPUs to go into dyntick-idle mode
@ -4407,6 +4457,45 @@
reboot_cpu is s[mp]#### with #### being the processor reboot_cpu is s[mp]#### with #### being the processor
to be used for rebooting. to be used for rebooting.
refscale.holdoff= [KNL]
Set test-start holdoff period. The purpose of
this parameter is to delay the start of the
test until boot completes in order to avoid
interference.
refscale.loops= [KNL]
Set the number of loops over the synchronization
primitive under test. Increasing this number
reduces noise due to loop start/end overhead,
but the default has already reduced the per-pass
noise to a handful of picoseconds on ca. 2020
x86 laptops.
refscale.nreaders= [KNL]
Set number of readers. The default value of -1
selects N, where N is roughly 75% of the number
of CPUs. A value of zero is an interesting choice.
refscale.nruns= [KNL]
Set number of runs, each of which is dumped onto
the console log.
refscale.readdelay= [KNL]
Set the read-side critical-section duration,
measured in microseconds.
refscale.scale_type= [KNL]
Specify the read-protection implementation to test.
refscale.shutdown= [KNL]
Shut down the system at the end of the performance
test. This defaults to 1 (shut it down) when
rcuperf is built into the kernel and to 0 (leave
it running) when rcuperf is built as a module.
refscale.verbose= [KNL]
Enable additional printk() statements.
relax_domain_level= relax_domain_level=
[KNL, SMP] Set scheduler's default relax_domain_level. [KNL, SMP] Set scheduler's default relax_domain_level.
See Documentation/admin-guide/cgroup-v1/cpusets.rst. See Documentation/admin-guide/cgroup-v1/cpusets.rst.
@ -4604,7 +4693,7 @@
fragmentation. Defaults to 1 for systems with fragmentation. Defaults to 1 for systems with
more than 32MB of RAM, 0 otherwise. more than 32MB of RAM, 0 otherwise.
slub_debug[=options[,slabs]] [MM, SLUB] slub_debug[=options[,slabs][;[options[,slabs]]...] [MM, SLUB]
Enabling slub_debug allows one to determine the Enabling slub_debug allows one to determine the
culprit if slab objects become corrupted. Enabling culprit if slab objects become corrupted. Enabling
slub_debug can create guard zones around objects and slub_debug can create guard zones around objects and
@ -5082,6 +5171,13 @@
Prevent the CPU-hotplug component of torturing Prevent the CPU-hotplug component of torturing
until after init has spawned. until after init has spawned.
torture.ftrace_dump_at_shutdown= [KNL]
Dump the ftrace buffer at torture-test shutdown,
even if there were no errors. This can be a
very costly operation when many torture tests
are running concurrently, especially on systems
with rotating-rust storage.
tp720= [HW,PS2] tp720= [HW,PS2]
tpm_suspend_pcr=[HW,TPM] tpm_suspend_pcr=[HW,TPM]
@ -5712,8 +5808,9 @@
panic() code such as dumping handler. panic() code such as dumping handler.
xen_nopvspin [X86,XEN] xen_nopvspin [X86,XEN]
Disables the ticketlock slowpath using Xen PV Disables the qspinlock slowpath using Xen PV optimizations.
optimizations. This parameter is obsoleted by "nopvspin" parameter, which
has equivalent effect for XEN platform.
xen_nopv [X86] xen_nopv [X86]
Disables the PV optimizations forcing the HVM guest to Disables the PV optimizations forcing the HVM guest to
@ -5739,6 +5836,11 @@
as generic guest with no PV drivers. Currently support as generic guest with no PV drivers. Currently support
XEN HVM, KVM, HYPER_V and VMWARE guest. XEN HVM, KVM, HYPER_V and VMWARE guest.
nopvspin [X86,XEN,KVM]
Disables the qspinlock slow path using PV optimizations
which allow the hypervisor to 'idle' the guest on lock
contention.
xirc2ps_cs= [NET,PCMCIA] xirc2ps_cs= [NET,PCMCIA]
Format: Format:
<irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]

View file

@ -135,7 +135,7 @@ single project which, although still considered experimental, is fit
for use. Please feel free to add projects that have been the victims for use. Please feel free to add projects that have been the victims
of my ignorance. of my ignorance.
- http://www.thinkwiki.org/wiki/HDAPS - https://www.thinkwiki.org/wiki/HDAPS
See this page for information about Linux support of the hard disk See this page for information about Linux support of the hard disk
active protection system as implemented in IBM/Lenovo Thinkpads. active protection system as implemented in IBM/Lenovo Thinkpads.

View file

@ -151,7 +151,7 @@ Bugs:
different way to adjust the backlighting of the screen. There different way to adjust the backlighting of the screen. There
is a userspace utility to adjust the brightness on those models, is a userspace utility to adjust the brightness on those models,
which can be downloaded from which can be downloaded from
http://www.acc.umu.se/~erikw/program/smartdimmer-0.1.tar.bz2 https://www.acc.umu.se/~erikw/program/smartdimmer-0.1.tar.bz2
- since all development was done by reverse engineering, there is - since all development was done by reverse engineering, there is
*absolutely no guarantee* that this driver will not crash your *absolutely no guarantee* that this driver will not crash your

View file

@ -50,6 +50,7 @@ detailed description):
- WAN enable and disable - WAN enable and disable
- UWB enable and disable - UWB enable and disable
- LCD Shadow (PrivacyGuard) enable and disable - LCD Shadow (PrivacyGuard) enable and disable
- Lap mode sensor
A compatibility table by model and feature is maintained on the web A compatibility table by model and feature is maintained on the web
site, http://ibm-acpi.sf.net/. I appreciate any success or failure site, http://ibm-acpi.sf.net/. I appreciate any success or failure
@ -904,7 +905,7 @@ temperatures:
The mapping of thermal sensors to physical locations varies depending on The mapping of thermal sensors to physical locations varies depending on
system-board model (and thus, on ThinkPad model). system-board model (and thus, on ThinkPad model).
http://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that https://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that
tries to track down these locations for various models. tries to track down these locations for various models.
Most (newer?) models seem to follow this pattern: Most (newer?) models seem to follow this pattern:
@ -925,7 +926,7 @@ For the R51 (source: Thomas Gruber):
- 3: Internal HDD - 3: Internal HDD
For the T43, T43/p (source: Shmidoax/Thinkwiki.org) For the T43, T43/p (source: Shmidoax/Thinkwiki.org)
http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p
- 2: System board, left side (near PCMCIA slot), reported as HDAPS temp - 2: System board, left side (near PCMCIA slot), reported as HDAPS temp
- 3: PCMCIA slot - 3: PCMCIA slot
@ -935,7 +936,7 @@ http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p
- 11: Power regulator, underside of system board, below F2 key - 11: Power regulator, underside of system board, below F2 key
The A31 has a very atypical layout for the thermal sensors The A31 has a very atypical layout for the thermal sensors
(source: Milos Popovic, http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31) (source: Milos Popovic, https://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31)
- 1: CPU - 1: CPU
- 2: Main Battery: main sensor - 2: Main Battery: main sensor
@ -1432,6 +1433,20 @@ The first command ensures the best viewing angle and the latter one turns
on the feature, restricting the viewing angles. on the feature, restricting the viewing angles.
DYTC Lapmode sensor
------------------
sysfs: dytc_lapmode
Newer thinkpads and mobile workstations have the ability to determine if
the device is in deskmode or lapmode. This feature is used by user space
to decide if WWAN transmission can be increased to maximum power and is
also useful for understanding the different thermal modes available as
they differ between desk and lap mode.
The property is read-only. If the platform doesn't have support the sysfs
class is not created.
EXPERIMENTAL: UWB EXPERIMENTAL: UWB
----------------- -----------------
@ -1470,6 +1485,23 @@ For more details about which buttons will appear depending on the mode, please
review the laptop's user guide: review the laptop's user guide:
http://www.lenovo.com/shop/americas/content/user_guides/x1carbon_2_ug_en.pdf http://www.lenovo.com/shop/americas/content/user_guides/x1carbon_2_ug_en.pdf
Battery charge control
----------------------
sysfs attributes:
/sys/class/power_supply/BAT*/charge_control_{start,end}_threshold
These two attributes are created for those batteries that are supported by the
driver. They enable the user to control the battery charge thresholds of the
given battery. Both values may be read and set. `charge_control_start_threshold`
accepts an integer between 0 and 99 (inclusive); this value represents a battery
percentage level, below which charging will begin. `charge_control_end_threshold`
accepts an integer between 1 and 100 (inclusive); this value represents a battery
percentage level, above which charging will stop.
The exact semantics of the attributes may be found in
Documentation/ABI/testing/sysfs-class-power.
Multiple Commands, Module Parameters Multiple Commands, Module Parameters
------------------------------------ ------------------------------------

View file

@ -426,6 +426,10 @@ All md devices contain:
The accepted values when writing to this file are ``ppl`` and ``resync``, The accepted values when writing to this file are ``ppl`` and ``resync``,
used to enable and disable PPL. used to enable and disable PPL.
uuid
This indicates the UUID of the array in the following format:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
As component devices are added to an md array, they appear in the ``md`` As component devices are added to an md array, they appear in the ``md``
directory as new directories named:: directory as new directories named::

View file

@ -90,7 +90,7 @@ built as modules.
Those GPU-specific drivers are selected via the ``Graphics support`` Those GPU-specific drivers are selected via the ``Graphics support``
menu, under ``Device Drivers``. menu, under ``Device Drivers``.
When a GPU driver supports supports HDMI CEC, it will automatically When a GPU driver supports HDMI CEC, it will automatically
enable the CEC core support at the media subsystem. enable the CEC core support at the media subsystem.
Media dependencies Media dependencies
@ -244,7 +244,7 @@ functionality.
If you have an hybrid card, you may need to enable both ``Analog TV`` If you have an hybrid card, you may need to enable both ``Analog TV``
and ``Digital TV`` at the menu. and ``Digital TV`` at the menu.
When using this option, the defaults for the the media support core When using this option, the defaults for the media support core
functionality are usually good enough to provide the basic functionality functionality are usually good enough to provide the basic functionality
for the driver. Yet, you could manually enable some desired extra (optional) for the driver. Yet, you could manually enable some desired extra (optional)
functionality using the settings under each of the following functionality using the settings under each of the following

View file

@ -2,7 +2,7 @@
.. include:: <isonum.txt> .. include:: <isonum.txt>
The Samsung S5P/EXYNOS4 FIMC driver The Samsung S5P/Exynos4 FIMC driver
=================================== ===================================
Copyright |copy| 2012 - 2013 Samsung Electronics Co., Ltd. Copyright |copy| 2012 - 2013 Samsung Electronics Co., Ltd.
@ -19,7 +19,7 @@ drivers/media/platform/exynos4-is directory.
Supported SoCs Supported SoCs
-------------- --------------
S5PC100 (mem-to-mem only), S5PV210, EXYNOS4210 S5PC100 (mem-to-mem only), S5PV210, Exynos4210
Supported features Supported features
------------------ ------------------
@ -45,7 +45,7 @@ Media device interface
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
The driver supports Media Controller API as defined at :ref:`media_controller`. The driver supports Media Controller API as defined at :ref:`media_controller`.
The media device driver name is "SAMSUNG S5P FIMC". The media device driver name is "Samsung S5P FIMC".
The purpose of this interface is to allow changing assignment of FIMC instances The purpose of this interface is to allow changing assignment of FIMC instances
to the SoC peripheral camera input at runtime and optionally to control internal to the SoC peripheral camera input at runtime and optionally to control internal

View file

@ -293,6 +293,15 @@ all configurable using the following module options:
- 0: vmalloc - 0: vmalloc
- 1: dma-contig - 1: dma-contig
- cache_hints:
specifies if the device should set queues' user-space cache and memory
consistency hint capability (V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS).
The hints are valid only when using MMAP streaming I/O. Default is 0.
- 0: forbid hints
- 1: allow hints
Taken together, all these module options allow you to precisely customize Taken together, all these module options allow you to precisely customize
the driver behavior and test your application with all sorts of permutations. the driver behavior and test your application with all sorts of permutations.
It is also very suitable to emulate hardware that is not yet available, e.g. It is also very suitable to emulate hardware that is not yet available, e.g.

View file

@ -35,7 +35,7 @@ physical memory (demand paging) and provides a mechanism for the
protection and controlled sharing of data between processes. protection and controlled sharing of data between processes.
With virtual memory, each and every memory access uses a virtual With virtual memory, each and every memory access uses a virtual
address. When the CPU decodes the an instruction that reads (or address. When the CPU decodes an instruction that reads (or
writes) from (or to) the system memory, it translates the `virtual` writes) from (or to) the system memory, it translates the `virtual`
address encoded in that instruction to a `physical` address that the address encoded in that instruction to a `physical` address that the
memory controller can understand. memory controller can understand.

View file

@ -101,37 +101,48 @@ be specified in bytes with optional scale suffix [kKmMgG]. The default huge
page size may be selected with the "default_hugepagesz=<size>" boot parameter. page size may be selected with the "default_hugepagesz=<size>" boot parameter.
Hugetlb boot command line parameter semantics Hugetlb boot command line parameter semantics
hugepagesz - Specify a huge page size. Used in conjunction with hugepages
hugepagesz
Specify a huge page size. Used in conjunction with hugepages
parameter to preallocate a number of huge pages of the specified parameter to preallocate a number of huge pages of the specified
size. Hence, hugepagesz and hugepages are typically specified in size. Hence, hugepagesz and hugepages are typically specified in
pairs such as: pairs such as::
hugepagesz=2M hugepages=512 hugepagesz=2M hugepages=512
hugepagesz can only be specified once on the command line for a hugepagesz can only be specified once on the command line for a
specific huge page size. Valid huge page sizes are architecture specific huge page size. Valid huge page sizes are architecture
dependent. dependent.
hugepages - Specify the number of huge pages to preallocate. This typically hugepages
Specify the number of huge pages to preallocate. This typically
follows a valid hugepagesz or default_hugepagesz parameter. However, follows a valid hugepagesz or default_hugepagesz parameter. However,
if hugepages is the first or only hugetlb command line parameter it if hugepages is the first or only hugetlb command line parameter it
implicitly specifies the number of huge pages of default size to implicitly specifies the number of huge pages of default size to
allocate. If the number of huge pages of default size is implicitly allocate. If the number of huge pages of default size is implicitly
specified, it can not be overwritten by a hugepagesz,hugepages specified, it can not be overwritten by a hugepagesz,hugepages
parameter pair for the default size. parameter pair for the default size.
For example, on an architecture with 2M default huge page size:
For example, on an architecture with 2M default huge page size::
hugepages=256 hugepagesz=2M hugepages=512 hugepages=256 hugepagesz=2M hugepages=512
will result in 256 2M huge pages being allocated and a warning message will result in 256 2M huge pages being allocated and a warning message
indicating that the hugepages=512 parameter is ignored. If a hugepages indicating that the hugepages=512 parameter is ignored. If a hugepages
parameter is preceded by an invalid hugepagesz parameter, it will parameter is preceded by an invalid hugepagesz parameter, it will
be ignored. be ignored.
default_hugepagesz - Specify the default huge page size. This parameter can default_hugepagesz
pecify the default huge page size. This parameter can
only be specified once on the command line. default_hugepagesz can only be specified once on the command line. default_hugepagesz can
optionally be followed by the hugepages parameter to preallocate a optionally be followed by the hugepages parameter to preallocate a
specific number of huge pages of default size. The number of default specific number of huge pages of default size. The number of default
sized huge pages to preallocate can also be implicitly specified as sized huge pages to preallocate can also be implicitly specified as
mentioned in the hugepages section above. Therefore, on an mentioned in the hugepages section above. Therefore, on an
architecture with 2M default huge page size: architecture with 2M default huge page size::
hugepages=256 hugepages=256
default_hugepagesz=2M hugepages=256 default_hugepagesz=2M hugepages=256
hugepages=256 default_hugepagesz=2M hugepages=256 default_hugepagesz=2M
will all result in 256 2M huge pages being allocated. Valid default will all result in 256 2M huge pages being allocated. Valid default
huge page size is architecture dependent. huge page size is architecture dependent.

View file

@ -31,6 +31,7 @@ the Linux memory management.
idle_page_tracking idle_page_tracking
ksm ksm
memory-hotplug memory-hotplug
nommu-mmap
numa_memory_policy numa_memory_policy
numaperf numaperf
pagemap pagemap

View file

@ -9,7 +9,7 @@ Overview
KSM is a memory-saving de-duplication feature, enabled by CONFIG_KSM=y, KSM is a memory-saving de-duplication feature, enabled by CONFIG_KSM=y,
added to the Linux kernel in 2.6.32. See ``mm/ksm.c`` for its implementation, added to the Linux kernel in 2.6.32. See ``mm/ksm.c`` for its implementation,
and http://lwn.net/Articles/306704/ and http://lwn.net/Articles/330589/ and http://lwn.net/Articles/306704/ and https://lwn.net/Articles/330589/
KSM was originally developed for use with KVM (where it was known as KSM was originally developed for use with KVM (where it was known as
Kernel Shared Memory), to fit more virtual machines into physical memory, Kernel Shared Memory), to fit more virtual machines into physical memory,
@ -52,7 +52,7 @@ with EAGAIN, but more probably arousing the Out-Of-Memory killer.
If KSM is not configured into the running kernel, madvise MADV_MERGEABLE If KSM is not configured into the running kernel, madvise MADV_MERGEABLE
and MADV_UNMERGEABLE simply fail with EINVAL. If the running kernel was and MADV_UNMERGEABLE simply fail with EINVAL. If the running kernel was
built with CONFIG_KSM=y, those calls will normally succeed: even if the built with CONFIG_KSM=y, those calls will normally succeed: even if the
the KSM daemon is not currently running, MADV_MERGEABLE still registers KSM daemon is not currently running, MADV_MERGEABLE still registers
the range for whenever the KSM daemon is started; even if the range the range for whenever the KSM daemon is started; even if the range
cannot contain any pages which KSM could actually merge; even if cannot contain any pages which KSM could actually merge; even if
MADV_UNMERGEABLE is applied to a range which was never MADV_MERGEABLE. MADV_UNMERGEABLE is applied to a range which was never MADV_MERGEABLE.

View file

@ -129,7 +129,7 @@ will create the following directory::
/sys/devices/system/node/nodeX/memory_side_cache/ /sys/devices/system/node/nodeX/memory_side_cache/
If that directory is not present, the system either does not not provide If that directory is not present, the system either does not provide
a memory-side cache, or that information is not accessible to the kernel. a memory-side cache, or that information is not accessible to the kernel.
The attributes for each level of cache is provided under its cache The attributes for each level of cache is provided under its cache

View file

@ -65,8 +65,8 @@ migrated onto another server by means of the special "fs_locations"
attribute. See `RFC3530 Section 6: Filesystem Migration and Replication`_ and attribute. See `RFC3530 Section 6: Filesystem Migration and Replication`_ and
`Implementation Guide for Referrals in NFSv4`_. `Implementation Guide for Referrals in NFSv4`_.
.. _RFC3530 Section 6\: Filesystem Migration and Replication: http://tools.ietf.org/html/rfc3530#section-6 .. _RFC3530 Section 6\: Filesystem Migration and Replication: https://tools.ietf.org/html/rfc3530#section-6
.. _Implementation Guide for Referrals in NFSv4: http://tools.ietf.org/html/draft-ietf-nfsv4-referrals-00 .. _Implementation Guide for Referrals in NFSv4: https://tools.ietf.org/html/draft-ietf-nfsv4-referrals-00
The fs_locations information can take the form of either an ip address and The fs_locations information can take the form of either an ip address and
a path, or a DNS hostname and a path. The latter requires the NFS client to a path, or a DNS hostname and a path. The latter requires the NFS client to

View file

@ -65,7 +65,7 @@ use with NFS/RDMA.
If the version is less than 1.1.2 or the command does not exist, If the version is less than 1.1.2 or the command does not exist,
you should install the latest version of nfs-utils. you should install the latest version of nfs-utils.
Download the latest package from: http://www.kernel.org/pub/linux/utils/nfs Download the latest package from: https://www.kernel.org/pub/linux/utils/nfs
Uncompress the package and follow the installation instructions. Uncompress the package and follow the installation instructions.

View file

@ -264,7 +264,7 @@ They depend on various facilities being available:
access to the floppy drive device, /dev/fd0 access to the floppy drive device, /dev/fd0
For more information on syslinux, including how to create bootdisks For more information on syslinux, including how to create bootdisks
for prebuilt kernels, see http://syslinux.zytor.com/ for prebuilt kernels, see https://syslinux.zytor.com/
.. note:: .. note::
Previously it was possible to write a kernel directly to Previously it was possible to write a kernel directly to
@ -292,7 +292,7 @@ They depend on various facilities being available:
cdrecord dev=ATAPI:1,0,0 arch/x86/boot/image.iso cdrecord dev=ATAPI:1,0,0 arch/x86/boot/image.iso
For more information on isolinux, including how to create bootdisks For more information on isolinux, including how to create bootdisks
for prebuilt kernels, see http://syslinux.zytor.com/ for prebuilt kernels, see https://syslinux.zytor.com/
- Using LILO - Using LILO
@ -346,7 +346,7 @@ They depend on various facilities being available:
see Documentation/admin-guide/serial-console.rst for more information. see Documentation/admin-guide/serial-console.rst for more information.
For more information on isolinux, including how to create bootdisks For more information on isolinux, including how to create bootdisks
for prebuilt kernels, see http://syslinux.zytor.com/ for prebuilt kernels, see https://syslinux.zytor.com/

View file

@ -8,7 +8,7 @@ to handling all the metadata access to the NFS export also hands out layouts
to the clients to directly access the underlying block devices that are to the clients to directly access the underlying block devices that are
shared with the client. shared with the client.
To use pNFS block layouts with with the Linux NFS server the exported file To use pNFS block layouts with the Linux NFS server the exported file
system needs to support the pNFS block layouts (currently just XFS), and the system needs to support the pNFS block layouts (currently just XFS), and the
file system must sit on shared storage (typically iSCSI) that is accessible file system must sit on shared storage (typically iSCSI) that is accessible
to the clients in addition to the MDS. As of now the file system needs to to the clients in addition to the MDS. As of now the file system needs to

View file

@ -9,7 +9,7 @@ which in addition to handling all the metadata access to the NFS export,
also hands out layouts to the clients so that they can directly access the also hands out layouts to the clients so that they can directly access the
underlying SCSI LUNs that are shared with the client. underlying SCSI LUNs that are shared with the client.
To use pNFS SCSI layouts with with the Linux NFS server, the exported file To use pNFS SCSI layouts with the Linux NFS server, the exported file
system needs to support the pNFS SCSI layouts (currently just XFS), and the system needs to support the pNFS SCSI layouts (currently just XFS), and the
file system must sit on a SCSI LUN that is accessible to the clients in file system must sit on a SCSI LUN that is accessible to the clients in
addition to the MDS. As of now the file system needs to sit directly on the addition to the MDS. As of now the file system needs to sit directly on the

View file

@ -27,7 +27,7 @@ Crosspoint PMU events require "xp" (index), "bus" (bus number)
and "vc" (virtual channel ID). and "vc" (virtual channel ID).
Crosspoint watchpoint-based events (special "event" value 0xfe) Crosspoint watchpoint-based events (special "event" value 0xfe)
require "xp" and "vc" as as above plus "port" (device port index), require "xp" and "vc" as above plus "port" (device port index),
"dir" (transmit/receive direction), comparator values ("cmp_l" "dir" (transmit/receive direction), comparator values ("cmp_l"
and "cmp_h") and "mask", being index of the comparator mask. and "cmp_h") and "mask", being index of the comparator mask.

View file

@ -147,9 +147,9 @@ CPUs in it.
The next major initialization step for a new policy object is to attach a The next major initialization step for a new policy object is to attach a
scaling governor to it (to begin with, that is the default scaling governor scaling governor to it (to begin with, that is the default scaling governor
determined by the kernel configuration, but it may be changed later determined by the kernel command line or configuration, but it may be changed
via ``sysfs``). First, a pointer to the new policy object is passed to the later via ``sysfs``). First, a pointer to the new policy object is passed to
governor's ``->init()`` callback which is expected to initialize all of the the governor's ``->init()`` callback which is expected to initialize all of the
data structures necessary to handle the given policy and, possibly, to add data structures necessary to handle the given policy and, possibly, to add
a governor ``sysfs`` interface to it. Next, the governor is started by a governor ``sysfs`` interface to it. Next, the governor is started by
invoking its ``->start()`` callback. invoking its ``->start()`` callback.

View file

@ -114,7 +114,7 @@ base performance profile (which is performance level 0).
Lock/Unlock status Lock/Unlock status
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
Even if there are multiple performance profiles, it is possible that that they Even if there are multiple performance profiles, it is possible that they
are locked. If they are locked, users cannot issue a command to change the are locked. If they are locked, users cannot issue a command to change the
performance state. It is possible that there is a BIOS setup to unlock or check performance state. It is possible that there is a BIOS setup to unlock or check
with your system vendor. with your system vendor.
@ -883,7 +883,7 @@ To enable Intel(R) SST-TF, execute::
enable:success enable:success
In this case, the option "-a" is optional. If set, it enables Intel(R) SST-TF In this case, the option "-a" is optional. If set, it enables Intel(R) SST-TF
feature and also sets the CPUs to high and and low priority using Intel Speed feature and also sets the CPUs to high and low priority using Intel Speed
Select Technology Core Power (Intel(R) SST-CP) features. The CPU numbers passed Select Technology Core Power (Intel(R) SST-CP) features. The CPU numbers passed
with "-c" arguments are marked as high priority, including its siblings. with "-c" arguments are marked as high priority, including its siblings.

View file

@ -54,10 +54,13 @@ registered (see `below <status_attr_>`_).
Operation Modes Operation Modes
=============== ===============
``intel_pstate`` can operate in three different modes: in the active mode with ``intel_pstate`` can operate in two different modes, active or passive. In the
or without hardware-managed P-states support and in the passive mode. Which of active mode, it uses its own internal performance scaling governor algorithm or
them will be in effect depends on what kernel command line options are used and allows the hardware to do preformance scaling by itself, while in the passive
on the capabilities of the processor. mode it responds to requests made by a generic ``CPUFreq`` governor implementing
a certain performance scaling algorithm. Which of them will be in effect
depends on what kernel command line options are used and on the capabilities of
the processor.
Active Mode Active Mode
----------- -----------
@ -194,10 +197,11 @@ This is the default operation mode of ``intel_pstate`` for processors without
hardware-managed P-states (HWP) support. It is always used if the hardware-managed P-states (HWP) support. It is always used if the
``intel_pstate=passive`` argument is passed to the kernel in the command line ``intel_pstate=passive`` argument is passed to the kernel in the command line
regardless of whether or not the given processor supports HWP. [Note that the regardless of whether or not the given processor supports HWP. [Note that the
``intel_pstate=no_hwp`` setting implies ``intel_pstate=passive`` if it is used ``intel_pstate=no_hwp`` setting causes the driver to start in the passive mode
without ``intel_pstate=active``.] Like in the active mode without HWP support, if it is not combined with ``intel_pstate=active``.] Like in the active mode
in this mode ``intel_pstate`` may refuse to work with processors that are not without HWP support, in this mode ``intel_pstate`` may refuse to work with
recognized by it. processors that are not recognized by it if HWP is prevented from being enabled
through the kernel command line.
If the driver works in this mode, the ``scaling_driver`` policy attribute in If the driver works in this mode, the ``scaling_driver`` policy attribute in
``sysfs`` for all ``CPUFreq`` policies contains the string "intel_cpufreq". ``sysfs`` for all ``CPUFreq`` policies contains the string "intel_cpufreq".
@ -318,10 +322,9 @@ manuals need to be consulted to get to it too.
For this reason, there is a list of supported processors in ``intel_pstate`` and For this reason, there is a list of supported processors in ``intel_pstate`` and
the driver initialization will fail if the detected processor is not in that the driver initialization will fail if the detected processor is not in that
list, unless it supports the `HWP feature <Active Mode_>`_. [The interface to list, unless it supports the HWP feature. [The interface to obtain all of the
obtain all of the information listed above is the same for all of the processors information listed above is the same for all of the processors supporting the
supporting the HWP feature, which is why they all are supported by HWP feature, which is why ``intel_pstate`` works with all of them.]
``intel_pstate``.]
User Space Interface in ``sysfs`` User Space Interface in ``sysfs``
@ -425,11 +428,16 @@ argument is passed to the kernel in the command line.
as well as the per-policy ones) are then reset to their default as well as the per-policy ones) are then reset to their default
values, possibly depending on the target operation mode.] values, possibly depending on the target operation mode.]
That only is supported in some configurations, though (for example, if ``energy_efficiency``
the `HWP feature is enabled in the processor <Active Mode With HWP_>`_, This attribute is only present on platforms with CPUs matching the Kaby
the operation mode of the driver cannot be changed), and if it is not Lake or Coffee Lake desktop CPU model. By default, energy-efficiency
supported in the current configuration, writes to this attribute will optimizations are disabled on these CPU models if HWP is enabled.
fail with an appropriate error. Enabling energy-efficiency optimizations may limit maximum operating
frequency with or without the HWP feature. With HWP enabled, the
optimizations are done only in the turbo frequency range. Without it,
they are done in the entire available frequency range. Setting this
attribute to "1" enables the energy-efficiency optimizations and setting
to "0" disables them.
Interpretation of Policy Attributes Interpretation of Policy Attributes
----------------------------------- -----------------------------------
@ -473,8 +481,8 @@ Next, the following policy attributes have special meaning if
policy for the time interval between the last two invocations of the policy for the time interval between the last two invocations of the
driver's utilization update callback by the CPU scheduler for that CPU. driver's utilization update callback by the CPU scheduler for that CPU.
One more policy attribute is present if the `HWP feature is enabled in the One more policy attribute is present if the HWP feature is enabled in the
processor <Active Mode With HWP_>`_: processor:
``base_frequency`` ``base_frequency``
Shows the base frequency of the CPU. Any frequency above this will be Shows the base frequency of the CPU. Any frequency above this will be
@ -515,11 +523,11 @@ on the following rules, regardless of the current operation mode of the driver:
3. The global and per-policy limits can be set independently. 3. The global and per-policy limits can be set independently.
If the `HWP feature is enabled in the processor <Active Mode With HWP_>`_, the In the `active mode with the HWP feature enabled <Active Mode With HWP_>`_, the
resulting effective values are written into its registers whenever the limits resulting effective values are written into hardware registers whenever the
change in order to request its internal P-state selection logic to always set limits change in order to request its internal P-state selection logic to always
P-states within these limits. Otherwise, the limits are taken into account by set P-states within these limits. Otherwise, the limits are taken into account
scaling governors (in the `passive mode <Passive Mode_>`_) and by the driver by scaling governors (in the `passive mode <Passive Mode_>`_) and by the driver
every time before setting a new P-state for a CPU. every time before setting a new P-state for a CPU.
Additionally, if the ``intel_pstate=per_cpu_perf_limits`` command line argument Additionally, if the ``intel_pstate=per_cpu_perf_limits`` command line argument
@ -530,12 +538,11 @@ at all and the only way to set the limits is by using the policy attributes.
Energy vs Performance Hints Energy vs Performance Hints
--------------------------- ---------------------------
If ``intel_pstate`` works in the `active mode with the HWP feature enabled If the hardware-managed P-states (HWP) is enabled in the processor, additional
<Active Mode With HWP_>`_ in the processor, additional attributes are present attributes, intended to allow user space to help ``intel_pstate`` to adjust the
in every ``CPUFreq`` policy directory in ``sysfs``. They are intended to allow processor's internal P-state selection logic by focusing it on performance or on
user space to help ``intel_pstate`` to adjust the processor's internal P-state energy-efficiency, or somewhere between the two extremes, are present in every
selection logic by focusing it on performance or on energy-efficiency, or ``CPUFreq`` policy directory in ``sysfs``. They are :
somewhere between the two extremes:
``energy_performance_preference`` ``energy_performance_preference``
Current value of the energy vs performance hint for the given policy Current value of the energy vs performance hint for the given policy
@ -554,7 +561,11 @@ somewhere between the two extremes:
Strings written to the ``energy_performance_preference`` attribute are Strings written to the ``energy_performance_preference`` attribute are
internally translated to integer values written to the processor's internally translated to integer values written to the processor's
Energy-Performance Preference (EPP) knob (if supported) or its Energy-Performance Preference (EPP) knob (if supported) or its
Energy-Performance Bias (EPB) knob. Energy-Performance Bias (EPB) knob. It is also possible to write a positive
integer value between 0 to 255, if the EPP feature is present. If the EPP
feature is not present, writing integer value to this attribute is not
supported. In this case, user can use
"/sys/devices/system/cpu/cpu*/power/energy_perf_bias" interface.
[Note that tasks may by migrated from one CPU to another by the scheduler's [Note that tasks may by migrated from one CPU to another by the scheduler's
load-balancing algorithm and if different energy vs performance hints are load-balancing algorithm and if different energy vs performance hints are
@ -635,12 +646,14 @@ of them have to be prepended with the ``intel_pstate=`` prefix.
Do not register ``intel_pstate`` as the scaling driver even if the Do not register ``intel_pstate`` as the scaling driver even if the
processor is supported by it. processor is supported by it.
``active``
Register ``intel_pstate`` in the `active mode <Active Mode_>`_ to start
with.
``passive`` ``passive``
Register ``intel_pstate`` in the `passive mode <Passive Mode_>`_ to Register ``intel_pstate`` in the `passive mode <Passive Mode_>`_ to
start with. start with.
This option implies the ``no_hwp`` one described below.
``force`` ``force``
Register ``intel_pstate`` as the scaling driver instead of Register ``intel_pstate`` as the scaling driver instead of
``acpi-cpufreq`` even if the latter is preferred on the given system. ``acpi-cpufreq`` even if the latter is preferred on the given system.
@ -655,13 +668,12 @@ of them have to be prepended with the ``intel_pstate=`` prefix.
driver is used instead of ``acpi-cpufreq``. driver is used instead of ``acpi-cpufreq``.
``no_hwp`` ``no_hwp``
Do not enable the `hardware-managed P-states (HWP) feature Do not enable the hardware-managed P-states (HWP) feature even if it is
<Active Mode With HWP_>`_ even if it is supported by the processor. supported by the processor.
``hwp_only`` ``hwp_only``
Register ``intel_pstate`` as the scaling driver only if the Register ``intel_pstate`` as the scaling driver only if the
`hardware-managed P-states (HWP) feature <Active Mode With HWP_>`_ is hardware-managed P-states (HWP) feature is supported by the processor.
supported by the processor.
``support_acpi_ppc`` ``support_acpi_ppc``
Take ACPI ``_PPC`` performance limits into account. Take ACPI ``_PPC`` performance limits into account.
@ -708,7 +720,7 @@ core (for the policies with other scaling governors).
The ``ftrace`` interface can be used for low-level diagnostics of The ``ftrace`` interface can be used for low-level diagnostics of
``intel_pstate``. For example, to check how often the function to set a ``intel_pstate``. For example, to check how often the function to set a
P-state is called, the ``ftrace`` filter can be set to to P-state is called, the ``ftrace`` filter can be set to
:c:func:`intel_pstate_set_pstate`:: :c:func:`intel_pstate_set_pstate`::
# cd /sys/kernel/debug/tracing/ # cd /sys/kernel/debug/tracing/

Some files were not shown because too many files have changed in this diff Show more