1
0
Fork 0

ALSA/ASoC/SOF/SoundWire: fix Kconfig issues

In January, Intel kbuild bot and Arnd Bergmann reported multiple
 issues with randconfig. This patchset builds on Arnd's suggestions to
 
 a) expose ACPI and PCI devices in separate modules, while sof-acpi-dev
 and sof-pci-dev become helpers. This will result in minor changes
 required for developers/testers, i.e. modprobe snd-sof-pci will no
 longer result in a probe. The SOF CI was already updated to deal with
 this module dependency change and introduction of new modules.
 
 b) Fix SOF/SoundWire/DSP_config dependencies by moving the code
 required to detect SoundWire presence in ACPI tables to sound/hda.
 
 Link: https://lore.kernel.org/r/20210302003125.1178419-1-pierre-louis.bossart@linux.intel.com
 -----BEGIN PGP SIGNATURE-----
 
 iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAmA+Tc4OHHRpd2FpQHN1
 c2UuZGUACgkQLtJE4w1nLE9r6w/9E/pkuOIX9qTTeuVhOk2uoODQeSd9JSNXMvoN
 rm9oamjBrugBl/x0V5UAFVLO3AXGfDJTGJT71dF51RbODyj0ISim+Ve7/2ObggN6
 LRGoiAL850KGYhaAsLxTm/7OI2gH/WYwMerRdrvrJRDXAFHW5U2zLpHuj9TaZSDE
 LgpwJvQbSBNbMu72xix2/KuWUnh7UVVhT9guvi+wLJkC4F81FHO5btu5rWo/BGfW
 ekWVKw4raLMfjx2Y1P3X5/veCTgPTMOQC2Z5nuB6o9btXPTRf3tTigJcnt2xlpVk
 d0FtoFyn0blJ1rC3bkzAjTh3wiaLvSoz9Z8MPRoLECqk70Dtg6l1IQHmK7JCol0B
 EHNcW4WKAbUpRfohBw2xahZU4KJddPsdWUwSWCcY3a6rwa6MGJ2Vc1Foy3uZ0kW5
 uIvwuxtuZDDazLTSr2wXeD+lF3Y6fKU4DPbpEbcYrTV+K9F6jUiArAXRQ98CrxUe
 MtiC2L5ll24XhxL4m5XO0DLBa0Rx+qlJ7ZoGq4iG6ekRZwC+Q6UEvjnIa5ZnnPBC
 veV+0Z243/y0TBy+VoVOS1XxR3xjEYYErGms6A/WBSMEZAX7AhGmre4iusgNNSyU
 bCIcIyjIuCLLAilwfS0siG87KYYFpEHOz+XFliM6qWDr+6cIbXmNrQhlsAVLoQ8G
 BcBiIiA=
 =ttBB
 -----END PGP SIGNATURE-----

Merge tag 'tags/sound-sdw-kconfig-fixes' into for-linus

ALSA/ASoC/SOF/SoundWire: fix Kconfig issues

In January, Intel kbuild bot and Arnd Bergmann reported multiple
issues with randconfig. This patchset builds on Arnd's suggestions to

a) expose ACPI and PCI devices in separate modules, while sof-acpi-dev
and sof-pci-dev become helpers. This will result in minor changes
required for developers/testers, i.e. modprobe snd-sof-pci will no
longer result in a probe. The SOF CI was already updated to deal with
this module dependency change and introduction of new modules.

b) Fix SOF/SoundWire/DSP_config dependencies by moving the code
required to detect SoundWire presence in ACPI tables to sound/hda.

Link: https://lore.kernel.org/r/20210302003125.1178419-1-pierre-louis.bossart@linux.intel.com
master
Takashi Iwai 2021-03-02 18:30:07 +01:00
commit 9b838a3c32
5934 changed files with 234901 additions and 156532 deletions

View File

@ -109,6 +109,7 @@ ForEachMacros:
- 'css_for_each_child' - 'css_for_each_child'
- 'css_for_each_descendant_post' - 'css_for_each_descendant_post'
- 'css_for_each_descendant_pre' - 'css_for_each_descendant_pre'
- 'cxl_for_each_cmd'
- 'device_for_each_child_node' - 'device_for_each_child_node'
- 'dma_fence_chain_for_each' - 'dma_fence_chain_for_each'
- 'do_for_each_ftrace_op' - 'do_for_each_ftrace_op'

2
.gitignore vendored
View File

@ -18,6 +18,7 @@
*.c.[012]*.* *.c.[012]*.*
*.dt.yaml *.dt.yaml
*.dtb *.dtb
*.dtbo
*.dtb.S *.dtb.S
*.dwo *.dwo
*.elf *.elf
@ -41,6 +42,7 @@
*.so.dbg *.so.dbg
*.su *.su
*.symtypes *.symtypes
*.symversions
*.tab.[ch] *.tab.[ch]
*.tar *.tar
*.xz *.xz

View File

@ -174,7 +174,6 @@ Juha Yrjola <at solidboot.com>
Juha Yrjola <juha.yrjola@nokia.com> Juha Yrjola <juha.yrjola@nokia.com>
Juha Yrjola <juha.yrjola@solidboot.com> Juha Yrjola <juha.yrjola@solidboot.com>
Julien Thierry <julien.thierry.kdev@gmail.com> <julien.thierry@arm.com> Julien Thierry <julien.thierry.kdev@gmail.com> <julien.thierry@arm.com>
Kamil Konieczny <k.konieczny@samsung.com> <k.konieczny@partner.samsung.com>
Kay Sievers <kay.sievers@vrfy.org> Kay Sievers <kay.sievers@vrfy.org>
Kees Cook <keescook@chromium.org> <kees.cook@canonical.com> Kees Cook <keescook@chromium.org> <kees.cook@canonical.com>
Kees Cook <keescook@chromium.org> <keescook@google.com> Kees Cook <keescook@chromium.org> <keescook@google.com>
@ -238,6 +237,7 @@ Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
Mayuresh Janorkar <mayur@ti.com> Mayuresh Janorkar <mayur@ti.com>
Michael Buesch <m@bues.ch> Michael Buesch <m@bues.ch>
Michel Dänzer <michel@tungstengraphics.com> Michel Dänzer <michel@tungstengraphics.com>
Miguel Ojeda <ojeda@kernel.org> <miguel.ojeda.sandonis@gmail.com>
Mike Rapoport <rppt@kernel.org> <mike@compulab.co.il> Mike Rapoport <rppt@kernel.org> <mike@compulab.co.il>
Mike Rapoport <rppt@kernel.org> <mike.rapoport@gmail.com> Mike Rapoport <rppt@kernel.org> <mike.rapoport@gmail.com>
Mike Rapoport <rppt@kernel.org> <rppt@linux.ibm.com> Mike Rapoport <rppt@kernel.org> <rppt@linux.ibm.com>

17
CREDITS
View File

@ -1244,10 +1244,10 @@ S: 80050-430 - Curitiba - Paraná
S: Brazil S: Brazil
N: Oded Gabbay N: Oded Gabbay
E: oded.gabbay@gmail.com E: ogabbay@kernel.org
D: HabanaLabs and AMD KFD maintainer D: HabanaLabs maintainer
S: 12 Shraga Raphaeli S: 29 Duchifat St.
S: Petah-Tikva, 4906418 S: Ra'anana 4372029
S: Israel S: Israel
N: Kumar Gala N: Kumar Gala
@ -2841,14 +2841,11 @@ S: Subiaco, 6008
S: Perth, Western Australia S: Perth, Western Australia
S: Australia S: Australia
N: Miguel Ojeda Sandonis N: Miguel Ojeda
E: miguel.ojeda.sandonis@gmail.com E: ojeda@kernel.org
W: http://miguelojeda.es W: https://ojeda.dev
W: http://jair.lab.fi.uva.es/~migojed/
D: Author of the ks0108, cfag12864b and cfag12864bfb auxiliary display drivers. D: Author of the ks0108, cfag12864b and cfag12864bfb auxiliary display drivers.
D: Maintainer of the auxiliary display drivers tree (drivers/auxdisplay/*) D: Maintainer of the auxiliary display drivers tree (drivers/auxdisplay/*)
S: C/ Mieses 20, 9-B
S: Valladolid 47009
S: Spain S: Spain
N: Peter Oruba N: Peter Oruba

View File

@ -0,0 +1,19 @@
What: /sys/bus/fsl-mc/rescan
Date: January 2021
KernelVersion: 5.12
Contact: Ioana Ciornei <ioana.ciornei@nxp.com>
Description: Writing a non-zero value to this attribute will
force a rescan of fsl-mc bus in the system and
synchronize the objects under fsl-mc bus and the
Management Complex firmware.
Users: Userspace drivers and management tools
What: /sys/bus/fsl-mc/autorescan
Date: January 2021
KernelVersion: 5.12
Contact: Ioana Ciornei <ioana.ciornei@nxp.com>
Description: Writing a zero value to this attribute will
disable the DPRC IRQs on which automatic rescan
of the fsl-mc bus is performed. A non-zero value
will enable the DPRC IRQs.
Users: Userspace drivers and management tools

View File

@ -194,3 +194,17 @@ Description: The "tpm_version_major" property shows the TCG spec major version
Example output:: Example output::
2 2
What: /sys/class/tpm/tpmX/pcr-H/N
Date: March 2021
KernelVersion: 5.12
Contact: linux-integrity@vger.kernel.org
Description: produces output in compact hex representation for PCR
number N from hash bank H. N is the numeric value of
the PCR number and H is the crypto string
representation of the hash
Example output::
cat /sys/class/tpm/tpm0/pcr-sha256/7
2ED93F199692DC6788EFA6A1FE74514AB9760B2A6CEEAEF6C808C13E4ABB0D42

View File

@ -273,7 +273,7 @@ Description: In `/sys/accessibility/speakup` is a directory corresponding to
Below is a description of values and parameters for soft Below is a description of values and parameters for soft
synthesizer, which is currently the most commonly used. synthesizer, which is currently the most commonly used.
What: /sys/accessibility/speakup/soft/caps_start What: /sys/accessibility/speakup/<synth-name>/caps_start
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: This is the string that is sent to the synthesizer to cause it Description: This is the string that is sent to the synthesizer to cause it
@ -281,7 +281,7 @@ Description: This is the string that is sent to the synthesizer to cause it
and most others, this causes the pitch of the voice to rise and most others, this causes the pitch of the voice to rise
above the currently set pitch. above the currently set pitch.
What: /sys/accessibility/speakup/soft/caps_stop What: /sys/accessibility/speakup/<synth-name>/caps_stop
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: This is the string sent to the synthesizer to cause it to stop Description: This is the string sent to the synthesizer to cause it to stop
@ -290,12 +290,12 @@ Description: This is the string sent to the synthesizer to cause it to stop
down to the down to the
currently set pitch. currently set pitch.
What: /sys/accessibility/speakup/soft/delay_time What: /sys/accessibility/speakup/<synth-name>/delay_time
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: TODO: Description: TODO:
What: /sys/accessibility/speakup/soft/direct What: /sys/accessibility/speakup/<synth-name>/direct
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Controls if punctuation is spoken by speakup, or by the Description: Controls if punctuation is spoken by speakup, or by the
@ -306,36 +306,43 @@ Description: Controls if punctuation is spoken by speakup, or by the
than". Zero lets speakup speak the punctuation. One lets the than". Zero lets speakup speak the punctuation. One lets the
synthesizer itself speak punctuation. synthesizer itself speak punctuation.
What: /sys/accessibility/speakup/soft/freq What: /sys/accessibility/speakup/<synth-name>/freq
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the frequency of the speech synthesizer. Range is Description: Gets or sets the frequency of the speech synthesizer. Range is
0-9. 0-9.
What: /sys/accessibility/speakup/soft/full_time What: /sys/accessibility/speakup/<synth-name>/flush_time
KernelVersion: 5.12
Contact: speakup@linux-speakup.org
Description: Gets or sets the timeout to wait for the synthesizer flush to
complete. This can be used when the cable gets faulty and flush
notifications are getting lost.
What: /sys/accessibility/speakup/<synth-name>/full_time
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: TODO: Description: TODO:
What: /sys/accessibility/speakup/soft/jiffy_delta What: /sys/accessibility/speakup/<synth-name>/jiffy_delta
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: This controls how many jiffys the kernel gives to the Description: This controls how many jiffys the kernel gives to the
synthesizer. Setting this too high can make a system unstable, synthesizer. Setting this too high can make a system unstable,
or even crash it. or even crash it.
What: /sys/accessibility/speakup/soft/pitch What: /sys/accessibility/speakup/<synth-name>/pitch
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the pitch of the synthesizer. The range is 0-9. Description: Gets or sets the pitch of the synthesizer. The range is 0-9.
What: /sys/accessibility/speakup/soft/inflection What: /sys/accessibility/speakup/<synth-name>/inflection
KernelVersion: 5.8 KernelVersion: 5.8
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the inflection of the synthesizer, i.e. the pitch Description: Gets or sets the inflection of the synthesizer, i.e. the pitch
range. The range is 0-9. range. The range is 0-9.
What: /sys/accessibility/speakup/soft/punct What: /sys/accessibility/speakup/<synth-name>/punct
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the amount of punctuation spoken by the Description: Gets or sets the amount of punctuation spoken by the
@ -343,13 +350,13 @@ Description: Gets or sets the amount of punctuation spoken by the
TODO: How is this related to speakup's punc_level, or TODO: How is this related to speakup's punc_level, or
reading_punc. reading_punc.
What: /sys/accessibility/speakup/soft/rate What: /sys/accessibility/speakup/<synth-name>/rate
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the rate of the synthesizer. Range is from zero Description: Gets or sets the rate of the synthesizer. Range is from zero
slowest, to nine fastest. slowest, to nine fastest.
What: /sys/accessibility/speakup/soft/tone What: /sys/accessibility/speakup/<synth-name>/tone
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the tone of the speech synthesizer. The range for Description: Gets or sets the tone of the speech synthesizer. The range for
@ -357,12 +364,12 @@ Description: Gets or sets the tone of the speech synthesizer. The range for
difference if using espeak and the espeakup connector. difference if using espeak and the espeakup connector.
TODO: does espeakup support different tonalities? TODO: does espeakup support different tonalities?
What: /sys/accessibility/speakup/soft/trigger_time What: /sys/accessibility/speakup/<synth-name>/trigger_time
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: TODO: Description: TODO:
What: /sys/accessibility/speakup/soft/voice What: /sys/accessibility/speakup/<synth-name>/voice
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the voice used by the synthesizer if the Description: Gets or sets the voice used by the synthesizer if the
@ -371,7 +378,7 @@ Description: Gets or sets the voice used by the synthesizer if the
voices, this parameter will not set the voice when the espeakup voices, this parameter will not set the voice when the espeakup
connector is used between speakup and espeak. connector is used between speakup and espeak.
What: /sys/accessibility/speakup/soft/vol What: /sys/accessibility/speakup/<synth-name>/vol
KernelVersion: 2.6 KernelVersion: 2.6
Contact: speakup@linux-speakup.org Contact: speakup@linux-speakup.org
Description: Gets or sets the volume of the speech synthesizer. Range is 0-9, Description: Gets or sets the volume of the speech synthesizer. Range is 0-9,

View File

@ -1,7 +1,7 @@
What: /sys/kernel/debug/habanalabs/hl<n>/addr What: /sys/kernel/debug/habanalabs/hl<n>/addr
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets the device address to be used for read or write through Description: Sets the device address to be used for read or write through
PCI bar, or the device VA of a host mapped memory to be read or PCI bar, or the device VA of a host mapped memory to be read or
written directly from the host. The latter option is allowed written directly from the host. The latter option is allowed
@ -11,7 +11,7 @@ Description: Sets the device address to be used for read or write through
What: /sys/kernel/debug/habanalabs/hl<n>/clk_gate What: /sys/kernel/debug/habanalabs/hl<n>/clk_gate
Date: May 2020 Date: May 2020
KernelVersion: 5.8 KernelVersion: 5.8
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allow the root user to disable/enable in runtime the clock Description: Allow the root user to disable/enable in runtime the clock
gating mechanism in Gaudi. Due to how Gaudi is built, the gating mechanism in Gaudi. Due to how Gaudi is built, the
clock gating needs to be disabled in order to access the clock gating needs to be disabled in order to access the
@ -34,28 +34,28 @@ Description: Allow the root user to disable/enable in runtime the clock
What: /sys/kernel/debug/habanalabs/hl<n>/command_buffers What: /sys/kernel/debug/habanalabs/hl<n>/command_buffers
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays a list with information about the currently allocated Description: Displays a list with information about the currently allocated
command buffers command buffers
What: /sys/kernel/debug/habanalabs/hl<n>/command_submission What: /sys/kernel/debug/habanalabs/hl<n>/command_submission
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays a list with information about the currently active Description: Displays a list with information about the currently active
command submissions command submissions
What: /sys/kernel/debug/habanalabs/hl<n>/command_submission_jobs What: /sys/kernel/debug/habanalabs/hl<n>/command_submission_jobs
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays a list with detailed information about each JOB (CB) of Description: Displays a list with detailed information about each JOB (CB) of
each active command submission each active command submission
What: /sys/kernel/debug/habanalabs/hl<n>/data32 What: /sys/kernel/debug/habanalabs/hl<n>/data32
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the root user to read or write directly through the Description: Allows the root user to read or write directly through the
device's PCI bar. Writing to this file generates a write device's PCI bar. Writing to this file generates a write
transaction while reading from the file generates a read transaction while reading from the file generates a read
@ -70,7 +70,7 @@ Description: Allows the root user to read or write directly through the
What: /sys/kernel/debug/habanalabs/hl<n>/data64 What: /sys/kernel/debug/habanalabs/hl<n>/data64
Date: Jan 2020 Date: Jan 2020
KernelVersion: 5.6 KernelVersion: 5.6
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the root user to read or write 64 bit data directly Description: Allows the root user to read or write 64 bit data directly
through the device's PCI bar. Writing to this file generates a through the device's PCI bar. Writing to this file generates a
write transaction while reading from the file generates a read write transaction while reading from the file generates a read
@ -85,7 +85,7 @@ Description: Allows the root user to read or write 64 bit data directly
What: /sys/kernel/debug/habanalabs/hl<n>/device What: /sys/kernel/debug/habanalabs/hl<n>/device
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Enables the root user to set the device to specific state. Description: Enables the root user to set the device to specific state.
Valid values are "disable", "enable", "suspend", "resume". Valid values are "disable", "enable", "suspend", "resume".
User can read this property to see the valid values User can read this property to see the valid values
@ -93,28 +93,28 @@ Description: Enables the root user to set the device to specific state.
What: /sys/kernel/debug/habanalabs/hl<n>/engines What: /sys/kernel/debug/habanalabs/hl<n>/engines
Date: Jul 2019 Date: Jul 2019
KernelVersion: 5.3 KernelVersion: 5.3
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the status registers values of the device engines and Description: Displays the status registers values of the device engines and
their derived idle status their derived idle status
What: /sys/kernel/debug/habanalabs/hl<n>/i2c_addr What: /sys/kernel/debug/habanalabs/hl<n>/i2c_addr
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets I2C device address for I2C transaction that is generated Description: Sets I2C device address for I2C transaction that is generated
by the device's CPU by the device's CPU
What: /sys/kernel/debug/habanalabs/hl<n>/i2c_bus What: /sys/kernel/debug/habanalabs/hl<n>/i2c_bus
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets I2C bus address for I2C transaction that is generated by Description: Sets I2C bus address for I2C transaction that is generated by
the device's CPU the device's CPU
What: /sys/kernel/debug/habanalabs/hl<n>/i2c_data What: /sys/kernel/debug/habanalabs/hl<n>/i2c_data
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Triggers an I2C transaction that is generated by the device's Description: Triggers an I2C transaction that is generated by the device's
CPU. Writing to this file generates a write transaction while CPU. Writing to this file generates a write transaction while
reading from the file generates a read transcation reading from the file generates a read transcation
@ -122,32 +122,32 @@ Description: Triggers an I2C transaction that is generated by the device's
What: /sys/kernel/debug/habanalabs/hl<n>/i2c_reg What: /sys/kernel/debug/habanalabs/hl<n>/i2c_reg
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets I2C register id for I2C transaction that is generated by Description: Sets I2C register id for I2C transaction that is generated by
the device's CPU the device's CPU
What: /sys/kernel/debug/habanalabs/hl<n>/led0 What: /sys/kernel/debug/habanalabs/hl<n>/led0
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets the state of the first S/W led on the device Description: Sets the state of the first S/W led on the device
What: /sys/kernel/debug/habanalabs/hl<n>/led1 What: /sys/kernel/debug/habanalabs/hl<n>/led1
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets the state of the second S/W led on the device Description: Sets the state of the second S/W led on the device
What: /sys/kernel/debug/habanalabs/hl<n>/led2 What: /sys/kernel/debug/habanalabs/hl<n>/led2
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets the state of the third S/W led on the device Description: Sets the state of the third S/W led on the device
What: /sys/kernel/debug/habanalabs/hl<n>/mmu What: /sys/kernel/debug/habanalabs/hl<n>/mmu
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the hop values and physical address for a given ASID Description: Displays the hop values and physical address for a given ASID
and virtual address. The user should write the ASID and VA into and virtual address. The user should write the ASID and VA into
the file and then read the file to get the result. the file and then read the file to get the result.
@ -157,14 +157,14 @@ Description: Displays the hop values and physical address for a given ASID
What: /sys/kernel/debug/habanalabs/hl<n>/set_power_state What: /sys/kernel/debug/habanalabs/hl<n>/set_power_state
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets the PCI power state. Valid values are "1" for D0 and "2" Description: Sets the PCI power state. Valid values are "1" for D0 and "2"
for D3Hot for D3Hot
What: /sys/kernel/debug/habanalabs/hl<n>/userptr What: /sys/kernel/debug/habanalabs/hl<n>/userptr
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays a list with information about the currently user Description: Displays a list with information about the currently user
pointers (user virtual addresses) that are pinned and mapped pointers (user virtual addresses) that are pinned and mapped
to DMA addresses to DMA addresses
@ -172,13 +172,21 @@ Description: Displays a list with information about the currently user
What: /sys/kernel/debug/habanalabs/hl<n>/vm What: /sys/kernel/debug/habanalabs/hl<n>/vm
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays a list with information about all the active virtual Description: Displays a list with information about all the active virtual
address mappings per ASID address mappings per ASID
What: /sys/kernel/debug/habanalabs/hl<n>/stop_on_err What: /sys/kernel/debug/habanalabs/hl<n>/stop_on_err
Date: Mar 2020 Date: Mar 2020
KernelVersion: 5.6 KernelVersion: 5.6
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Sets the stop-on_error option for the device engines. Value of Description: Sets the stop-on_error option for the device engines. Value of
"0" is for disable, otherwise enable. "0" is for disable, otherwise enable.
What: /sys/kernel/debug/habanalabs/hl<n>/dump_security_violations
Date: Jan 2021
KernelVersion: 5.12
Contact: ogabbay@kernel.org
Description: Dumps all security violations to dmesg. This will also ack
all security violations meanings those violations will not be
dumped next time user calls this API

View File

@ -29,10 +29,10 @@ Description:
option: [[appraise_type=]] [template=] [permit_directio] option: [[appraise_type=]] [template=] [permit_directio]
[appraise_flag=] [keyrings=] [appraise_flag=] [keyrings=]
base: base:
func:= [BPRM_CHECK][MMAP_CHECK][CREDS_CHECK][FILE_CHECK]MODULE_CHECK] func:= [BPRM_CHECK][MMAP_CHECK][CREDS_CHECK][FILE_CHECK][MODULE_CHECK]
[FIRMWARE_CHECK] [FIRMWARE_CHECK]
[KEXEC_KERNEL_CHECK] [KEXEC_INITRAMFS_CHECK] [KEXEC_KERNEL_CHECK] [KEXEC_INITRAMFS_CHECK]
[KEXEC_CMDLINE] [KEY_CHECK] [KEXEC_CMDLINE] [KEY_CHECK] [CRITICAL_DATA]
mask:= [[^]MAY_READ] [[^]MAY_WRITE] [[^]MAY_APPEND] mask:= [[^]MAY_READ] [[^]MAY_WRITE] [[^]MAY_APPEND]
[[^]MAY_EXEC] [[^]MAY_EXEC]
fsmagic:= hex value fsmagic:= hex value
@ -52,6 +52,9 @@ Description:
template:= name of a defined IMA template type template:= name of a defined IMA template type
(eg, ima-ng). Only valid when action is "measure". (eg, ima-ng). Only valid when action is "measure".
pcr:= decimal value pcr:= decimal value
label:= [selinux]|[kernel_info]|[data_label]
data_label:= a unique string used for grouping and limiting critical data.
For example, "selinux" to measure critical data for SELinux.
default policy: default policy:
# PROC_SUPER_MAGIC # PROC_SUPER_MAGIC

View File

@ -371,6 +371,14 @@ Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (Read) Print the content of the Device ID Register Description: (Read) Print the content of the Device ID Register
(0xFC8). The value is taken directly from the HW. (0xFC8). The value is taken directly from the HW.
What: /sys/bus/coresight/devices/etm<N>/mgmt/trcdevarch
Date: January 2021
KernelVersion: 5.12
Contact: Mathieu Poirier <mathieu.poirier@linaro.org>
Description: (Read) Print the content of the Device Architecture Register
(offset 0xFBC). The value is taken directly read
from the HW.
What: /sys/bus/coresight/devices/etm<N>/mgmt/trcdevtype What: /sys/bus/coresight/devices/etm<N>/mgmt/trcdevtype
Date: April 2015 Date: April 2015
KernelVersion: 4.01 KernelVersion: 4.01

View File

@ -0,0 +1,26 @@
What: /sys/bus/cxl/devices/memX/firmware_version
Date: December, 2020
KernelVersion: v5.12
Contact: linux-cxl@vger.kernel.org
Description:
(RO) "FW Revision" string as reported by the Identify
Memory Device Output Payload in the CXL-2.0
specification.
What: /sys/bus/cxl/devices/memX/ram/size
Date: December, 2020
KernelVersion: v5.12
Contact: linux-cxl@vger.kernel.org
Description:
(RO) "Volatile Only Capacity" as bytes. Represents the
identically named field in the Identify Memory Device Output
Payload in the CXL-2.0 specification.
What: /sys/bus/cxl/devices/memX/pmem/size
Date: December, 2020
KernelVersion: v5.12
Contact: linux-cxl@vger.kernel.org
Description:
(RO) "Persistent Only Capacity" as bytes. Represents the
identically named field in the Identify Memory Device Output
Payload in the CXL-2.0 specification.

View File

@ -0,0 +1,25 @@
What: /sys/bus/dfl/devices/dfl_dev.X/infX_cal_fail
Date: Oct 2020
KernelVersion: 5.12
Contact: Xu Yilun <yilun.xu@intel.com>
Description: Read-only. It indicates if the calibration failed on this
memory interface. "1" for calibration failure, "0" for OK.
Format: %u
What: /sys/bus/dfl/devices/dfl_dev.X/infX_init_done
Date: Oct 2020
KernelVersion: 5.12
Contact: Xu Yilun <yilun.xu@intel.com>
Description: Read-only. It indicates if the initialization completed on
this memory interface. "1" for initialization complete, "0"
for not yet.
Format: %u
What: /sys/bus/dfl/devices/dfl_dev.X/infX_clear
Date: Oct 2020
KernelVersion: 5.12
Contact: Xu Yilun <yilun.xu@intel.com>
Description: Write-only. Writing "1" to this file will zero out all memory
data in this memory interface. Writing of other values is
invalid.
Format: %u

View File

@ -0,0 +1,47 @@
What: /sys/bus/dfl/devices/dfl_dev.X/fec_mode
Date: Oct 2020
KernelVersion: 5.12
Contact: Xu Yilun <yilun.xu@intel.com>
Description: Read-only. Returns the FEC mode of the 25G links of the
ethernet retimers configured by Nios firmware. "rs" for Reed
Solomon FEC, "kr" for Fire Code FEC, "no" for NO FEC.
"not supported" if the FEC mode setting is not supported, this
happens when the Nios firmware version major < 3, or no link is
configured to 25G.
Format: string
What: /sys/bus/dfl/devices/dfl_dev.X/retimer_A_mode
Date: Oct 2020
KernelVersion: 5.12
Contact: Xu Yilun <yilun.xu@intel.com>
Description: Read-only. Returns the enumeration value of the working mode of
the retimer A configured by the Nios firmware. The value is
read out from shared registers filled by the Nios firmware. Now
the values could be:
- "0": Reset
- "1": 4x10G
- "2": 4x25G
- "3": 2x25G
- "4": 2x25G+2x10G
- "5": 1x25G
If the Nios firmware is updated in future to support more
retimer modes, more enumeration value is expected.
Format: 0x%x
What: /sys/bus/dfl/devices/dfl_dev.X/retimer_B_mode
Date: Oct 2020
KernelVersion: 5.12
Contact: Xu Yilun <yilun.xu@intel.com>
Description: Read-only. Returns the enumeration value of the working mode of
the retimer B configured by the Nios firmware. The value format
is the same as retimer_A_mode.
What: /sys/bus/dfl/devices/dfl_dev.X/nios_fw_version
Date: Oct 2020
KernelVersion: 5.12
Contact: Xu Yilun <yilun.xu@intel.com>
Description: Read-only. Returns the version of the Nios firmware in the
FPGA. Its format is "major.minor.patch".
Format: %x.%x.%x

View File

@ -0,0 +1,24 @@
What: /sys/devices/pci0000:00/*/QEMU0001:00/capability
Date: Jan 2021
Contact: zhenwei pi <pizhenwei@bytedance.com>
Description:
Read-only attribute. Capabilities of pvpanic device which
are supported by QEMU.
Format: %x.
Detailed bit definition refers to section <Bit Definition>
from pvpanic device specification:
https://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/specs/pvpanic.txt
What: /sys/devices/pci0000:00/*/QEMU0001:00/events
Date: Jan 2021
Contact: zhenwei pi <pizhenwei@bytedance.com>
Description:
RW attribute. Set/get which features in-use. This attribute
is used to enable/disable feature(s) of pvpanic device.
Notice that this value should be a subset of capability.
Format: %x.
Also refer to pvpanic device specification.

View File

@ -0,0 +1,82 @@
What: /sys/class/power_supply/ltc4162-l/charge_status
Date: Januari 2021
KernelVersion: 5.11
Description:
Detailed charge status information as reported by the chip.
Access: Read
Valid values:
ilim_reg_active
thermal_reg_active
vin_uvcl_active
iin_limit_active
constant_current
constant_voltage
charger_off
What: /sys/class/power_supply/ltc4162-l/ibat
Date: Januari 2021
KernelVersion: 5.11
Description:
Battery input current as measured by the charger. Negative value
means that the battery is discharging.
Access: Read
Valid values: Signed value in microamps
What: /sys/class/power_supply/ltc4162-l/vbat
Date: Januari 2021
KernelVersion: 5.11
Description:
Battery voltage as measured by the charger.
Access: Read
Valid values: In microvolts
What: /sys/class/power_supply/ltc4162-l/vbat_avg
Date: Januari 2021
KernelVersion: 5.11
Description:
Battery voltage, averaged over time, as measured by the charger.
Access: Read
Valid values: In microvolts
What: /sys/class/power_supply/ltc4162-l/force_telemetry
Date: Januari 2021
KernelVersion: 5.11
Description:
To save battery current, the measurement system is disabled if
the battery is the only source of power. This affects all
voltage, current and temperature measurements.
Write a "1" to this to keep performing telemetry once every few
seconds, even when running on battery (as reported by the online
property, which is "1" when external power is available and "0"
when the system runs on battery).
Access: Read, Write
Valid values: 0 (disabled) or 1 (enabled)
What: /sys/class/power_supply/ltc4162-l/arm_ship_mode
Date: Januari 2021
KernelVersion: 5.11
Description:
The charger will normally drain the battery while inactive,
typically drawing about 54 microamps. Write a "1" to this
property to arm a special "ship" mode that extends shelf life
by reducing the leakage to about 2.8 microamps. The chip will
remain in this mode (and no longer respond to I2C commands)
until some external power-supply is attached raising the input
voltage above 1V. It will then automatically revert to "0".
Writing a "0" to the property cancels the "ship" mode request.
The ship mode, when armed, activates once the input voltage
drops below 1V.
Access: Read, Write
Valid values: 0 (disable) or 1 (enable)

View File

@ -13,21 +13,22 @@ What: /sys/devices/system/memory/memoryX/removable
Date: June 2008 Date: June 2008
Contact: Badari Pulavarty <pbadari@us.ibm.com> Contact: Badari Pulavarty <pbadari@us.ibm.com>
Description: Description:
The file /sys/devices/system/memory/memoryX/removable The file /sys/devices/system/memory/memoryX/removable is a
indicates whether this memory block is removable or not. legacy interface used to indicated whether a memory block is
This is useful for a user-level agent to determine likely to be offlineable or not. Newer kernel versions return
identify removable sections of the memory before attempting "1" if and only if the kernel supports memory offlining.
potentially expensive hot-remove memory operation
Users: hotplug memory remove tools Users: hotplug memory remove tools
http://www.ibm.com/developerworks/wikis/display/LinuxP/powerpc-utils http://www.ibm.com/developerworks/wikis/display/LinuxP/powerpc-utils
lsmem/chmem part of util-linux
What: /sys/devices/system/memory/memoryX/phys_device What: /sys/devices/system/memory/memoryX/phys_device
Date: September 2008 Date: September 2008
Contact: Badari Pulavarty <pbadari@us.ibm.com> Contact: Badari Pulavarty <pbadari@us.ibm.com>
Description: Description:
The file /sys/devices/system/memory/memoryX/phys_device The file /sys/devices/system/memory/memoryX/phys_device
is read-only and is designed to show the name of physical is read-only; it is a legacy interface only ever used on s390x
memory device. Implementation is currently incomplete. to expose the covered storage increment.
Users: Legacy s390-tools lsmem/chmem
What: /sys/devices/system/memory/memoryX/phys_index What: /sys/devices/system/memory/memoryX/phys_index
Date: September 2008 Date: September 2008
@ -43,23 +44,25 @@ Date: September 2008
Contact: Badari Pulavarty <pbadari@us.ibm.com> Contact: Badari Pulavarty <pbadari@us.ibm.com>
Description: Description:
The file /sys/devices/system/memory/memoryX/state The file /sys/devices/system/memory/memoryX/state
is read-write. When read, its contents show the is read-write. When read, it returns the online/offline
online/offline state of the memory section. When written, state of the memory block. When written, root can toggle
root can toggle the the online/offline state of a removable the online/offline state of a memory block using the following
memory section (see removable file description above) commands::
using the following commands::
# echo online > /sys/devices/system/memory/memoryX/state # echo online > /sys/devices/system/memory/memoryX/state
# echo offline > /sys/devices/system/memory/memoryX/state # echo offline > /sys/devices/system/memory/memoryX/state
For example, if /sys/devices/system/memory/memory22/removable On newer kernel versions, advanced states can be specified
contains a value of 1 and when onlining to select a target zone: "online_movable"
/sys/devices/system/memory/memory22/state contains the selects the movable zone. "online_kernel" selects the
string "online" the following command can be executed by applicable kernel zone (DMA, DMA32, or Normal). However,
by root to offline that section:: after successfully setting one of the advanced states,
reading the file will return "online"; the zone information
# echo offline > /sys/devices/system/memory/memory22/state can be obtained via "valid_zones" instead.
While onlining is unlikely to fail, there are no guarantees
that offlining will succeed. Offlining is more likely to
succeed if "valid_zones" indicates "Movable".
Users: hotplug memory remove tools Users: hotplug memory remove tools
http://www.ibm.com/developerworks/wikis/display/LinuxP/powerpc-utils http://www.ibm.com/developerworks/wikis/display/LinuxP/powerpc-utils
@ -69,8 +72,19 @@ Date: July 2014
Contact: Zhang Zhen <zhenzhang.zhang@huawei.com> Contact: Zhang Zhen <zhenzhang.zhang@huawei.com>
Description: Description:
The file /sys/devices/system/memory/memoryX/valid_zones is The file /sys/devices/system/memory/memoryX/valid_zones is
read-only and is designed to show which zone this memory read-only.
block can be onlined to.
For online memory blocks, it returns in which zone memory
provided by a memory block is managed. If multiple zones
apply (not applicable for hotplugged memory), "None" is returned
and the memory block cannot be offlined.
For offline memory blocks, it returns by which zone memory
provided by a memory block can be managed when onlining.
The first returned zone ("default") will be used when setting
the state of an offline memory block to "online". Only one of
the kernel zones (DMA, DMA32, Normal) is applicable for a single
memory block.
What: /sys/devices/system/memoryX/nodeY What: /sys/devices/system/memoryX/nodeY
Date: October 2009 Date: October 2009

View File

@ -0,0 +1,41 @@
What: /sys/devices/*/xenbus/event_channels
Date: February 2021
Contact: Xen Developers mailing list <xen-devel@lists.xenproject.org>
Description:
Number of Xen event channels associated with a kernel based
paravirtualized device frontend or backend.
What: /sys/devices/*/xenbus/events
Date: February 2021
Contact: Xen Developers mailing list <xen-devel@lists.xenproject.org>
Description:
Total number of Xen events received for a Xen pv device
frontend or backend.
What: /sys/devices/*/xenbus/jiffies_eoi_delayed
Date: February 2021
Contact: Xen Developers mailing list <xen-devel@lists.xenproject.org>
Description:
Summed up time in jiffies the EOI of an interrupt for a Xen
pv device has been delayed in order to avoid stalls due to
event storms. This value rising is a first sign for a rogue
other end of the pv device.
What: /sys/devices/*/xenbus/spurious_events
Date: February 2021
Contact: Xen Developers mailing list <xen-devel@lists.xenproject.org>
Description:
Number of events received for a Xen pv device which did not
require any action. Too many spurious events in a row will
trigger delayed EOI processing.
What: /sys/devices/*/xenbus/spurious_threshold
Date: February 2021
Contact: Xen Developers mailing list <xen-devel@lists.xenproject.org>
Description:
Controls the tolerated number of subsequent spurious events
before delayed EOI processing is triggered for a Xen pv
device. Default is 1. This can be modified in case the other
end of the pv device is issuing spurious events on a regular
basis and is known not to be malicious on purpose. Raising
the value for such cases can improve pv device performance.

View File

@ -1,7 +1,7 @@
What: /sys/class/habanalabs/hl<n>/armcp_kernel_ver What: /sys/class/habanalabs/hl<n>/armcp_kernel_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the Linux kernel running on the device's CPU. Description: Version of the Linux kernel running on the device's CPU.
Will be DEPRECATED in Linux kernel version 5.10, and be Will be DEPRECATED in Linux kernel version 5.10, and be
replaced with cpucp_kernel_ver replaced with cpucp_kernel_ver
@ -9,7 +9,7 @@ Description: Version of the Linux kernel running on the device's CPU.
What: /sys/class/habanalabs/hl<n>/armcp_ver What: /sys/class/habanalabs/hl<n>/armcp_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the application running on the device's CPU Description: Version of the application running on the device's CPU
Will be DEPRECATED in Linux kernel version 5.10, and be Will be DEPRECATED in Linux kernel version 5.10, and be
replaced with cpucp_ver replaced with cpucp_ver
@ -17,7 +17,7 @@ Description: Version of the application running on the device's CPU
What: /sys/class/habanalabs/hl<n>/clk_max_freq_mhz What: /sys/class/habanalabs/hl<n>/clk_max_freq_mhz
Date: Jun 2019 Date: Jun 2019
KernelVersion: not yet upstreamed KernelVersion: not yet upstreamed
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the user to set the maximum clock frequency, in MHz. Description: Allows the user to set the maximum clock frequency, in MHz.
The device clock might be set to lower value than the maximum. The device clock might be set to lower value than the maximum.
The user should read the clk_cur_freq_mhz to see the actual The user should read the clk_cur_freq_mhz to see the actual
@ -27,52 +27,52 @@ Description: Allows the user to set the maximum clock frequency, in MHz.
What: /sys/class/habanalabs/hl<n>/clk_cur_freq_mhz What: /sys/class/habanalabs/hl<n>/clk_cur_freq_mhz
Date: Jun 2019 Date: Jun 2019
KernelVersion: not yet upstreamed KernelVersion: not yet upstreamed
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the current frequency, in MHz, of the device clock. Description: Displays the current frequency, in MHz, of the device clock.
This property is valid only for the Gaudi ASIC family This property is valid only for the Gaudi ASIC family
What: /sys/class/habanalabs/hl<n>/cpld_ver What: /sys/class/habanalabs/hl<n>/cpld_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the Device's CPLD F/W Description: Version of the Device's CPLD F/W
What: /sys/class/habanalabs/hl<n>/cpucp_kernel_ver What: /sys/class/habanalabs/hl<n>/cpucp_kernel_ver
Date: Oct 2020 Date: Oct 2020
KernelVersion: 5.10 KernelVersion: 5.10
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the Linux kernel running on the device's CPU Description: Version of the Linux kernel running on the device's CPU
What: /sys/class/habanalabs/hl<n>/cpucp_ver What: /sys/class/habanalabs/hl<n>/cpucp_ver
Date: Oct 2020 Date: Oct 2020
KernelVersion: 5.10 KernelVersion: 5.10
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the application running on the device's CPU Description: Version of the application running on the device's CPU
What: /sys/class/habanalabs/hl<n>/device_type What: /sys/class/habanalabs/hl<n>/device_type
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the code name of the device according to its type. Description: Displays the code name of the device according to its type.
The supported values are: "GOYA" The supported values are: "GOYA"
What: /sys/class/habanalabs/hl<n>/eeprom What: /sys/class/habanalabs/hl<n>/eeprom
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: A binary file attribute that contains the contents of the Description: A binary file attribute that contains the contents of the
on-board EEPROM on-board EEPROM
What: /sys/class/habanalabs/hl<n>/fuse_ver What: /sys/class/habanalabs/hl<n>/fuse_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the device's version from the eFuse Description: Displays the device's version from the eFuse
What: /sys/class/habanalabs/hl<n>/hard_reset What: /sys/class/habanalabs/hl<n>/hard_reset
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Interface to trigger a hard-reset operation for the device. Description: Interface to trigger a hard-reset operation for the device.
Hard-reset will reset ALL internal components of the device Hard-reset will reset ALL internal components of the device
except for the PCI interface and the internal PLLs except for the PCI interface and the internal PLLs
@ -80,14 +80,14 @@ Description: Interface to trigger a hard-reset operation for the device.
What: /sys/class/habanalabs/hl<n>/hard_reset_cnt What: /sys/class/habanalabs/hl<n>/hard_reset_cnt
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays how many times the device have undergone a hard-reset Description: Displays how many times the device have undergone a hard-reset
operation since the driver was loaded operation since the driver was loaded
What: /sys/class/habanalabs/hl<n>/high_pll What: /sys/class/habanalabs/hl<n>/high_pll
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the user to set the maximum clock frequency for MME, TPC Description: Allows the user to set the maximum clock frequency for MME, TPC
and IC when the power management profile is set to "automatic". and IC when the power management profile is set to "automatic".
This property is valid only for the Goya ASIC family This property is valid only for the Goya ASIC family
@ -95,7 +95,7 @@ Description: Allows the user to set the maximum clock frequency for MME, TPC
What: /sys/class/habanalabs/hl<n>/ic_clk What: /sys/class/habanalabs/hl<n>/ic_clk
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the user to set the maximum clock frequency, in Hz, of Description: Allows the user to set the maximum clock frequency, in Hz, of
the Interconnect fabric. Writes to this parameter affect the the Interconnect fabric. Writes to this parameter affect the
device only when the power management profile is set to "manual" device only when the power management profile is set to "manual"
@ -107,27 +107,27 @@ Description: Allows the user to set the maximum clock frequency, in Hz, of
What: /sys/class/habanalabs/hl<n>/ic_clk_curr What: /sys/class/habanalabs/hl<n>/ic_clk_curr
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the current clock frequency, in Hz, of the Interconnect Description: Displays the current clock frequency, in Hz, of the Interconnect
fabric. This property is valid only for the Goya ASIC family fabric. This property is valid only for the Goya ASIC family
What: /sys/class/habanalabs/hl<n>/infineon_ver What: /sys/class/habanalabs/hl<n>/infineon_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the Device's power supply F/W code Description: Version of the Device's power supply F/W code
What: /sys/class/habanalabs/hl<n>/max_power What: /sys/class/habanalabs/hl<n>/max_power
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the user to set the maximum power consumption of the Description: Allows the user to set the maximum power consumption of the
device in milliwatts. device in milliwatts.
What: /sys/class/habanalabs/hl<n>/mme_clk What: /sys/class/habanalabs/hl<n>/mme_clk
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the user to set the maximum clock frequency, in Hz, of Description: Allows the user to set the maximum clock frequency, in Hz, of
the MME compute engine. Writes to this parameter affect the the MME compute engine. Writes to this parameter affect the
device only when the power management profile is set to "manual" device only when the power management profile is set to "manual"
@ -139,21 +139,21 @@ Description: Allows the user to set the maximum clock frequency, in Hz, of
What: /sys/class/habanalabs/hl<n>/mme_clk_curr What: /sys/class/habanalabs/hl<n>/mme_clk_curr
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the current clock frequency, in Hz, of the MME compute Description: Displays the current clock frequency, in Hz, of the MME compute
engine. This property is valid only for the Goya ASIC family engine. This property is valid only for the Goya ASIC family
What: /sys/class/habanalabs/hl<n>/pci_addr What: /sys/class/habanalabs/hl<n>/pci_addr
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the PCI address of the device. This is needed so the Description: Displays the PCI address of the device. This is needed so the
user would be able to open a device based on its PCI address user would be able to open a device based on its PCI address
What: /sys/class/habanalabs/hl<n>/pm_mng_profile What: /sys/class/habanalabs/hl<n>/pm_mng_profile
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Power management profile. Values are "auto", "manual". In "auto" Description: Power management profile. Values are "auto", "manual". In "auto"
mode, the driver will set the maximum clock frequency to a high mode, the driver will set the maximum clock frequency to a high
value when a user-space process opens the device's file (unless value when a user-space process opens the device's file (unless
@ -167,13 +167,13 @@ Description: Power management profile. Values are "auto", "manual". In "auto"
What: /sys/class/habanalabs/hl<n>/preboot_btl_ver What: /sys/class/habanalabs/hl<n>/preboot_btl_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the device's preboot F/W code Description: Version of the device's preboot F/W code
What: /sys/class/habanalabs/hl<n>/soft_reset What: /sys/class/habanalabs/hl<n>/soft_reset
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Interface to trigger a soft-reset operation for the device. Description: Interface to trigger a soft-reset operation for the device.
Soft-reset will reset only the compute and DMA engines of the Soft-reset will reset only the compute and DMA engines of the
device device
@ -181,26 +181,26 @@ Description: Interface to trigger a soft-reset operation for the device.
What: /sys/class/habanalabs/hl<n>/soft_reset_cnt What: /sys/class/habanalabs/hl<n>/soft_reset_cnt
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays how many times the device have undergone a soft-reset Description: Displays how many times the device have undergone a soft-reset
operation since the driver was loaded operation since the driver was loaded
What: /sys/class/habanalabs/hl<n>/status What: /sys/class/habanalabs/hl<n>/status
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Status of the card: "Operational", "Malfunction", "In reset". Description: Status of the card: "Operational", "Malfunction", "In reset".
What: /sys/class/habanalabs/hl<n>/thermal_ver What: /sys/class/habanalabs/hl<n>/thermal_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the Device's thermal daemon Description: Version of the Device's thermal daemon
What: /sys/class/habanalabs/hl<n>/tpc_clk What: /sys/class/habanalabs/hl<n>/tpc_clk
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Allows the user to set the maximum clock frequency, in Hz, of Description: Allows the user to set the maximum clock frequency, in Hz, of
the TPC compute engines. Writes to this parameter affect the the TPC compute engines. Writes to this parameter affect the
device only when the power management profile is set to "manual" device only when the power management profile is set to "manual"
@ -212,12 +212,12 @@ Description: Allows the user to set the maximum clock frequency, in Hz, of
What: /sys/class/habanalabs/hl<n>/tpc_clk_curr What: /sys/class/habanalabs/hl<n>/tpc_clk_curr
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Displays the current clock frequency, in Hz, of the TPC compute Description: Displays the current clock frequency, in Hz, of the TPC compute
engines. This property is valid only for the Goya ASIC family engines. This property is valid only for the Goya ASIC family
What: /sys/class/habanalabs/hl<n>/uboot_ver What: /sys/class/habanalabs/hl<n>/uboot_ver
Date: Jan 2019 Date: Jan 2019
KernelVersion: 5.1 KernelVersion: 5.1
Contact: oded.gabbay@gmail.com Contact: ogabbay@kernel.org
Description: Version of the u-boot running on the device's CPU Description: Version of the u-boot running on the device's CPU

View File

@ -0,0 +1,6 @@
What: /sys/class/input/input(x)/device/function_row_physmap
Date: January 2021
Contact: Philip Chen <philipchen@chromium.org>
Description: A space separated list of scancodes for the top row keys,
ordered by the physical positions of the keys, from left
to right.

View File

@ -13,3 +13,24 @@ Contact: Xu Yilun <yilun.xu@intel.com>
Description: Read only. Returns the firmware version of Intel MAX10 Description: Read only. Returns the firmware version of Intel MAX10
BMC chip. BMC chip.
Format: "0x%x". Format: "0x%x".
What: /sys/bus/spi/devices/.../mac_address
Date: January 2021
KernelVersion: 5.12
Contact: Russ Weight <russell.h.weight@intel.com>
Description: Read only. Returns the first MAC address in a block
of sequential MAC addresses assigned to the board
that is managed by the Intel MAX10 BMC. It is stored in
FLASH storage and is mirrored in the MAX10 BMC register
space.
Format: "%02x:%02x:%02x:%02x:%02x:%02x".
What: /sys/bus/spi/devices/.../mac_count
Date: January 2021
KernelVersion: 5.12
Contact: Russ Weight <russell.h.weight@intel.com>
Description: Read only. Returns the number of sequential MAC
addresses assigned to the board managed by the Intel
MAX10 BMC. This value is stored in FLASH and is mirrored
in the MAX10 BMC register space.
Format: "%u".

View File

@ -1161,3 +1161,14 @@ Description: This entry shows the configured size of WriteBooster buffer.
0400h corresponds to 4GB. 0400h corresponds to 4GB.
The file is read only. The file is read only.
What: /sys/bus/platform/drivers/ufshcd/*/wb_on
Date: January 2021
Contact: Bean Huo <beanhuo@micron.com>
Description: This node is used to set or display whether UFS WriteBooster is
enabled. Echo 0 to this file to disable UFS WriteBooster or 1 to
enable it. The WriteBooster is enabled after power-on/reset,
however, it will be disabled/enable while CLK scaling down/up
(if the platform supports UFSHCD_CAP_CLK_SCALING). For a
platform that doesn't support UFSHCD_CAP_CLK_SCALING, we can
disable/enable WriteBooster through this sysfs node.

View File

@ -1,3 +1,46 @@
What: /sys/firmware/acpi/fpdt/
Date: Jan 2021
Contact: Zhang Rui <rui.zhang@intel.com>
Description:
ACPI Firmware Performance Data Table (FPDT) provides
information for firmware performance data for system boot,
S3 suspend and S3 resume. This sysfs entry contains the
performance data retrieved from the FPDT.
boot:
firmware_start_ns: Timer value logged at the beginning
of firmware image execution. In nanoseconds.
bootloader_load_ns: Timer value logged just prior to
loading the OS boot loader into memory.
In nanoseconds.
bootloader_launch_ns: Timer value logged just prior to
launching the currently loaded OS boot loader
image. In nanoseconds.
exitbootservice_start_ns: Timer value logged at the
point when the OS loader calls the
ExitBootServices function for UEFI compatible
firmware. In nanoseconds.
exitbootservice_end_ns: Timer value logged at the point
just prior to the OS loader gaining control
back from the ExitBootServices function for
UEFI compatible firmware. In nanoseconds.
suspend:
suspend_start_ns: Timer value recorded at the previous
OS write to SLP_TYP upon entry to S3. In
nanoseconds.
suspend_end_ns: Timer value recorded at the previous
firmware write to SLP_TYP used to trigger
hardware entry to S3. In nanoseconds.
resume:
resume_count: A count of the number of S3 resume cycles
since the last full boot sequence.
resume_avg_ns: Average timer value of all resume cycles
logged since the last full boot sequence,
including the most recent resume. In nanoseconds.
resume_prev_ns: Timer recorded at the end of the previous
platform runtime firmware S3 resume, just prior to
handoff to the OS waking vector. In nanoseconds.
What: /sys/firmware/acpi/bgrt/ What: /sys/firmware/acpi/bgrt/
Date: January 2012 Date: January 2012
Contact: Matthew Garrett <mjg@redhat.com> Contact: Matthew Garrett <mjg@redhat.com>

View File

@ -1,15 +0,0 @@
What: /sys/firmware/sfi/tables/
Date: May 2010
Contact: Len Brown <lenb@kernel.org>
Description:
SFI defines a number of small static memory tables
so the kernel can get platform information from firmware.
The tables are defined in the latest SFI specification:
http://simplefirmware.org/documentation
While the tables are used by the kernel, user-space
can observe them this way::
# cd /sys/firmware/sfi/tables
# cat $TABLENAME > $TABLENAME.bin

View File

@ -1,11 +1,11 @@
What: /sys/devices/platform/ideapad/camera_power What: /sys/bus/platform/devices/VPC2004:*/camera_power
Date: Dec 2010 Date: Dec 2010
KernelVersion: 2.6.37 KernelVersion: 2.6.37
Contact: "Ike Panhc <ike.pan@canonical.com>" Contact: "Ike Panhc <ike.pan@canonical.com>"
Description: Description:
Control the power of camera module. 1 means on, 0 means off. Control the power of camera module. 1 means on, 0 means off.
What: /sys/devices/platform/ideapad/fan_mode What: /sys/bus/platform/devices/VPC2004:*/fan_mode
Date: June 2012 Date: June 2012
KernelVersion: 3.6 KernelVersion: 3.6
Contact: "Maxim Mikityanskiy <maxtram95@gmail.com>" Contact: "Maxim Mikityanskiy <maxtram95@gmail.com>"
@ -18,7 +18,7 @@ Description:
* 2 -> Dust Cleaning * 2 -> Dust Cleaning
* 4 -> Efficient Thermal Dissipation Mode * 4 -> Efficient Thermal Dissipation Mode
What: /sys/devices/platform/ideapad/touchpad What: /sys/bus/platform/devices/VPC2004:*/touchpad
Date: May 2017 Date: May 2017
KernelVersion: 4.13 KernelVersion: 4.13
Contact: "Ritesh Raj Sarraf <rrs@debian.org>" Contact: "Ritesh Raj Sarraf <rrs@debian.org>"
@ -27,7 +27,16 @@ Description:
* 1 -> Switched On * 1 -> Switched On
* 0 -> Switched Off * 0 -> Switched Off
What: /sys/bus/pci/devices/<bdf>/<device>/VPC2004:00/fn_lock What: /sys/bus/platform/devices/VPC2004:*/conservation_mode
Date: Aug 2017
KernelVersion: 4.14
Contact: platform-driver-x86@vger.kernel.org
Description:
Controls whether the conservation mode is enabled or not.
This feature limits the maximum battery charge percentage to
around 50-60% in order to prolong the lifetime of the battery.
What: /sys/bus/platform/devices/VPC2004:*/fn_lock
Date: May 2018 Date: May 2018
KernelVersion: 4.18 KernelVersion: 4.18
Contact: "Oleg Keri <ezhi99@gmail.com>" Contact: "Oleg Keri <ezhi99@gmail.com>"
@ -41,3 +50,12 @@ Description:
# echo "0" > \ # echo "0" > \
/sys/bus/pci/devices/0000:00:1f.0/PNP0C09:00/VPC2004:00/fn_lock /sys/bus/pci/devices/0000:00:1f.0/PNP0C09:00/VPC2004:00/fn_lock
What: /sys/bus/platform/devices/VPC2004:*/usb_charging
Date: Feb 2021
KernelVersion: 5.12
Contact: platform-driver-x86@vger.kernel.org
Description:
Controls whether the "always on USB charging" feature is
enabled or not. This feature enables charging USB devices
even if the computer is not turned on.

View File

@ -7,7 +7,7 @@ Description:
is connected. example: "/dev/ttyS0". is connected. example: "/dev/ttyS0".
The device name flows down to architecture specific board The device name flows down to architecture specific board
initialization file from the SFI/ATAGS bootloader initialization file from the ATAGS bootloader
firmware. The name exposed is read from the user-space firmware. The name exposed is read from the user-space
dameon and opens the device when install is requested. dameon and opens the device when install is requested.

View File

@ -5,13 +5,17 @@ Description: This file contains a space-separated list of profiles supported for
Drivers must use the following standard profile-names: Drivers must use the following standard profile-names:
============ ============================================ ==================== ========================================
low-power Low power consumption low-power Low power consumption
cool Cooler operation cool Cooler operation
quiet Quieter operation quiet Quieter operation
balanced Balance between low power consumption and performance balanced Balance between low power consumption
performance High performance operation and performance
============ ============================================ balanced-performance Balance between performance and low
power consumption with a slight bias
towards performance
performance High performance operation
==================== ========================================
Userspace may expect drivers to offer more than one of these Userspace may expect drivers to offer more than one of these
standard profile names. standard profile names.

View File

@ -0,0 +1,38 @@
.. SPDX-License-Identifier: GPL-2.0
==========================
PCI NTB Endpoint Function
==========================
1) Create a subdirectory to pci_epf_ntb directory in configfs.
Standard EPF Configurable Fields:
================ ===========================================================
vendorid should be 0x104c
deviceid should be 0xb00d for TI's J721E SoC
revid don't care
progif_code don't care
subclass_code should be 0x00
baseclass_code should be 0x5
cache_line_size don't care
subsys_vendor_id don't care
subsys_id don't care
interrupt_pin don't care
msi_interrupts don't care
msix_interrupts don't care
================ ===========================================================
2) Create a subdirectory to directory created in 1
NTB EPF specific configurable fields:
================ ===========================================================
db_count Number of doorbells; default = 4
mw1 size of memory window1
mw2 size of memory window2
mw3 size of memory window3
mw4 size of memory window4
num_mws Number of memory windows; max = 4
spad_count Number of scratchpad registers; default = 64
================ ===========================================================

View File

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

View File

@ -68,6 +68,16 @@ created)
... subsys_vendor_id ... subsys_vendor_id
... subsys_id ... subsys_id
... interrupt_pin ... interrupt_pin
... primary/
... <Symlink EPC Device1>/
... secondary/
... <Symlink EPC Device2>/
If an EPF device has to be associated with 2 EPCs (like in the case of
Non-transparent bridge), symlink of endpoint controller connected to primary
interface should be added in 'primary' directory and symlink of endpoint
controller connected to secondary interface should be added in 'secondary'
directory.
EPC Device EPC Device
========== ==========

View File

@ -0,0 +1,348 @@
.. SPDX-License-Identifier: GPL-2.0
=================
PCI NTB Function
=================
:Author: Kishon Vijay Abraham I <kishon@ti.com>
PCI Non-Transparent Bridges (NTB) allow two host systems to communicate
with each other by exposing each host as a device to the other host.
NTBs typically support the ability to generate interrupts on the remote
machine, expose memory ranges as BARs, and perform DMA. They also support
scratchpads, which are areas of memory within the NTB that are accessible
from both machines.
PCI NTB Function allows two different systems (or hosts) to communicate
with each other by configuring the endpoint instances in such a way that
transactions from one system are routed to the other system.
In the below diagram, PCI NTB function configures the SoC with multiple
PCI Endpoint (EP) instances in such a way that transactions from one EP
controller are routed to the other EP controller. Once PCI NTB function
configures the SoC with multiple EP instances, HOST1 and HOST2 can
communicate with each other using SoC as a bridge.
.. code-block:: text
+-------------+ +-------------+
| | | |
| HOST1 | | HOST2 |
| | | |
+------^------+ +------^------+
| |
| |
+---------|-------------------------------------------------|---------+
| +------v------+ +------v------+ |
| | | | | |
| | EP | | EP | |
| | CONTROLLER1 | | CONTROLLER2 | |
| | <-----------------------------------> | |
| | | | | |
| | | | | |
| | | SoC With Multiple EP Instances | | |
| | | (Configured using NTB Function) | | |
| +-------------+ +-------------+ |
+---------------------------------------------------------------------+
Constructs used for Implementing NTB
====================================
1) Config Region
2) Self Scratchpad Registers
3) Peer Scratchpad Registers
4) Doorbell (DB) Registers
5) Memory Window (MW)
Config Region:
--------------
Config Region is a construct that is specific to NTB implemented using NTB
Endpoint Function Driver. The host and endpoint side NTB function driver will
exchange information with each other using this region. Config Region has
Control/Status Registers for configuring the Endpoint Controller. Host can
write into this region for configuring the outbound Address Translation Unit
(ATU) and to indicate the link status. Endpoint can indicate the status of
commands issued by host in this region. Endpoint can also indicate the
scratchpad offset and number of memory windows to the host using this region.
The format of Config Region is given below. All the fields here are 32 bits.
.. code-block:: text
+------------------------+
| COMMAND |
+------------------------+
| ARGUMENT |
+------------------------+
| STATUS |
+------------------------+
| TOPOLOGY |
+------------------------+
| ADDRESS (LOWER 32) |
+------------------------+
| ADDRESS (UPPER 32) |
+------------------------+
| SIZE |
+------------------------+
| NO OF MEMORY WINDOW |
+------------------------+
| MEMORY WINDOW1 OFFSET |
+------------------------+
| SPAD OFFSET |
+------------------------+
| SPAD COUNT |
+------------------------+
| DB ENTRY SIZE |
+------------------------+
| DB DATA |
+------------------------+
| : |
+------------------------+
| : |
+------------------------+
| DB DATA |
+------------------------+
COMMAND:
NTB function supports three commands:
CMD_CONFIGURE_DOORBELL (0x1): Command to configure doorbell. Before
invoking this command, the host should allocate and initialize
MSI/MSI-X vectors (i.e., initialize the MSI/MSI-X Capability in the
Endpoint). The endpoint on receiving this command will configure
the outbound ATU such that transactions to Doorbell BAR will be routed
to the MSI/MSI-X address programmed by the host. The ARGUMENT
register should be populated with number of DBs to configure (in the
lower 16 bits) and if MSI or MSI-X should be configured (BIT 16).
CMD_CONFIGURE_MW (0x2): Command to configure memory window (MW). The
host invokes this command after allocating a buffer that can be
accessed by remote host. The allocated address should be programmed
in the ADDRESS register (64 bit), the size should be programmed in
the SIZE register and the memory window index should be programmed
in the ARGUMENT register. The endpoint on receiving this command
will configure the outbound ATU such that transactions to MW BAR
are routed to the address provided by the host.
CMD_LINK_UP (0x3): Command to indicate an NTB application is
bound to the EP device on the host side. Once the endpoint
receives this command from both the hosts, the endpoint will
raise a LINK_UP event to both the hosts to indicate the host
NTB applications can start communicating with each other.
ARGUMENT:
The value of this register is based on the commands issued in
command register. See COMMAND section for more information.
TOPOLOGY:
Set to NTB_TOPO_B2B_USD for Primary interface
Set to NTB_TOPO_B2B_DSD for Secondary interface
ADDRESS/SIZE:
Address and Size to be used while configuring the memory window.
See "CMD_CONFIGURE_MW" for more info.
MEMORY WINDOW1 OFFSET:
Memory Window 1 and Doorbell registers are packed together in the
same BAR. The initial portion of the region will have doorbell
registers and the latter portion of the region is for memory window 1.
This register will specify the offset of the memory window 1.
NO OF MEMORY WINDOW:
Specifies the number of memory windows supported by the NTB device.
SPAD OFFSET:
Self scratchpad region and config region are packed together in the
same BAR. The initial portion of the region will have config region
and the latter portion of the region is for self scratchpad. This
register will specify the offset of the self scratchpad registers.
SPAD COUNT:
Specifies the number of scratchpad registers supported by the NTB
device.
DB ENTRY SIZE:
Used to determine the offset within the DB BAR that should be written
in order to raise doorbell. EPF NTB can use either MSI or MSI-X to
ring doorbell (MSI-X support will be added later). MSI uses same
address for all the interrupts and MSI-X can provide different
addresses for different interrupts. The MSI/MSI-X address is provided
by the host and the address it gives is based on the MSI/MSI-X
implementation supported by the host. For instance, ARM platform
using GIC ITS will have the same MSI-X address for all the interrupts.
In order to support all the combinations and use the same mechanism
for both MSI and MSI-X, EPF NTB allocates a separate region in the
Outbound Address Space for each of the interrupts. This region will
be mapped to the MSI/MSI-X address provided by the host. If a host
provides the same address for all the interrupts, all the regions
will be translated to the same address. If a host provides different
addresses, the regions will be translated to different addresses. This
will ensure there is no difference while raising the doorbell.
DB DATA:
EPF NTB supports 32 interrupts, so there are 32 DB DATA registers.
This holds the MSI/MSI-X data that has to be written to MSI address
for raising doorbell interrupt. This will be populated by EPF NTB
while invoking CMD_CONFIGURE_DOORBELL.
Scratchpad Registers:
---------------------
Each host has its own register space allocated in the memory of NTB endpoint
controller. They are both readable and writable from both sides of the bridge.
They are used by applications built over NTB and can be used to pass control
and status information between both sides of a device.
Scratchpad registers has 2 parts
1) Self Scratchpad: Host's own register space
2) Peer Scratchpad: Remote host's register space.
Doorbell Registers:
-------------------
Doorbell Registers are used by the hosts to interrupt each other.
Memory Window:
--------------
Actual transfer of data between the two hosts will happen using the
memory window.
Modeling Constructs:
====================
There are 5 or more distinct regions (config, self scratchpad, peer
scratchpad, doorbell, one or more memory windows) to be modeled to achieve
NTB functionality. At least one memory window is required while more than
one is permitted. All these regions should be mapped to BARs for hosts to
access these regions.
If one 32-bit BAR is allocated for each of these regions, the scheme would
look like this:
====== ===============
BAR NO CONSTRUCTS USED
====== ===============
BAR0 Config Region
BAR1 Self Scratchpad
BAR2 Peer Scratchpad
BAR3 Doorbell
BAR4 Memory Window 1
BAR5 Memory Window 2
====== ===============
However if we allocate a separate BAR for each of the regions, there would not
be enough BARs for all the regions in a platform that supports only 64-bit
BARs.
In order to be supported by most of the platforms, the regions should be
packed and mapped to BARs in a way that provides NTB functionality and
also makes sure the host doesn't access any region that it is not supposed
to.
The following scheme is used in EPF NTB Function:
====== ===============================
BAR NO CONSTRUCTS USED
====== ===============================
BAR0 Config Region + Self Scratchpad
BAR1 Peer Scratchpad
BAR2 Doorbell + Memory Window 1
BAR3 Memory Window 2
BAR4 Memory Window 3
BAR5 Memory Window 4
====== ===============================
With this scheme, for the basic NTB functionality 3 BARs should be sufficient.
Modeling Config/Scratchpad Region:
----------------------------------
.. code-block:: text
+-----------------+------->+------------------+ +-----------------+
| BAR0 | | CONFIG REGION | | BAR0 |
+-----------------+----+ +------------------+<-------+-----------------+
| BAR1 | | |SCRATCHPAD REGION | | BAR1 |
+-----------------+ +-->+------------------+<-------+-----------------+
| BAR2 | Local Memory | BAR2 |
+-----------------+ +-----------------+
| BAR3 | | BAR3 |
+-----------------+ +-----------------+
| BAR4 | | BAR4 |
+-----------------+ +-----------------+
| BAR5 | | BAR5 |
+-----------------+ +-----------------+
EP CONTROLLER 1 EP CONTROLLER 2
Above diagram shows Config region + Scratchpad region for HOST1 (connected to
EP controller 1) allocated in local memory. The HOST1 can access the config
region and scratchpad region (self scratchpad) using BAR0 of EP controller 1.
The peer host (HOST2 connected to EP controller 2) can also access this
scratchpad region (peer scratchpad) using BAR1 of EP controller 2. This
diagram shows the case where Config region and Scratchpad regions are allocated
for HOST1, however the same is applicable for HOST2.
Modeling Doorbell/Memory Window 1:
----------------------------------
.. code-block:: text
+-----------------+ +----->+----------------+-----------+-----------------+
| BAR0 | | | Doorbell 1 +-----------> MSI-X ADDRESS 1 |
+-----------------+ | +----------------+ +-----------------+
| BAR1 | | | Doorbell 2 +---------+ | |
+-----------------+----+ +----------------+ | | |
| BAR2 | | Doorbell 3 +-------+ | +-----------------+
+-----------------+----+ +----------------+ | +-> MSI-X ADDRESS 2 |
| BAR3 | | | Doorbell 4 +-----+ | +-----------------+
+-----------------+ | |----------------+ | | | |
| BAR4 | | | | | | +-----------------+
+-----------------+ | | MW1 +---+ | +-->+ MSI-X ADDRESS 3||
| BAR5 | | | | | | +-----------------+
+-----------------+ +----->-----------------+ | | | |
EP CONTROLLER 1 | | | | +-----------------+
| | | +---->+ MSI-X ADDRESS 4 |
+----------------+ | +-----------------+
EP CONTROLLER 2 | | |
(OB SPACE) | | |
+-------> MW1 |
| |
| |
+-----------------+
| |
| |
| |
| |
| |
+-----------------+
PCI Address Space
(Managed by HOST2)
Above diagram shows how the doorbell and memory window 1 is mapped so that
HOST1 can raise doorbell interrupt on HOST2 and also how HOST1 can access
buffers exposed by HOST2 using memory window1 (MW1). Here doorbell and
memory window 1 regions are allocated in EP controller 2 outbound (OB) address
space. Allocating and configuring BARs for doorbell and memory window1
is done during the initialization phase of NTB endpoint function driver.
Mapping from EP controller 2 OB space to PCI address space is done when HOST2
sends CMD_CONFIGURE_MW/CMD_CONFIGURE_DOORBELL.
Modeling Optional Memory Windows:
---------------------------------
This is modeled the same was as MW1 but each of the additional memory windows
is mapped to separate BARs.

View File

@ -0,0 +1,161 @@
.. SPDX-License-Identifier: GPL-2.0
===================================================================
PCI Non-Transparent Bridge (NTB) Endpoint Function (EPF) User Guide
===================================================================
:Author: Kishon Vijay Abraham I <kishon@ti.com>
This document is a guide to help users use pci-epf-ntb function driver
and ntb_hw_epf host driver for NTB functionality. The list of steps to
be followed in the host side and EP side is given below. For the hardware
configuration and internals of NTB using configurable endpoints see
Documentation/PCI/endpoint/pci-ntb-function.rst
Endpoint Device
===============
Endpoint Controller Devices
---------------------------
For implementing NTB functionality at least two endpoint controller devices
are required.
To find the list of endpoint controller devices in the system::
# ls /sys/class/pci_epc/
2900000.pcie-ep 2910000.pcie-ep
If PCI_ENDPOINT_CONFIGFS is enabled::
# ls /sys/kernel/config/pci_ep/controllers
2900000.pcie-ep 2910000.pcie-ep
Endpoint Function Drivers
-------------------------
To find the list of endpoint function drivers in the system::
# ls /sys/bus/pci-epf/drivers
pci_epf_ntb pci_epf_ntb
If PCI_ENDPOINT_CONFIGFS is enabled::
# ls /sys/kernel/config/pci_ep/functions
pci_epf_ntb pci_epf_ntb
Creating pci-epf-ntb Device
----------------------------
PCI endpoint function device can be created using the configfs. To create
pci-epf-ntb device, the following commands can be used::
# mount -t configfs none /sys/kernel/config
# cd /sys/kernel/config/pci_ep/
# mkdir functions/pci_epf_ntb/func1
The "mkdir func1" above creates the pci-epf-ntb function device that will
be probed by pci_epf_ntb driver.
The PCI endpoint framework populates the directory with the following
configurable fields::
# ls functions/pci_epf_ntb/func1
baseclass_code deviceid msi_interrupts pci-epf-ntb.0
progif_code secondary subsys_id vendorid
cache_line_size interrupt_pin msix_interrupts primary
revid subclass_code subsys_vendor_id
The PCI endpoint function driver populates these entries with default values
when the device is bound to the driver. The pci-epf-ntb driver populates
vendorid with 0xffff and interrupt_pin with 0x0001::
# cat functions/pci_epf_ntb/func1/vendorid
0xffff
# cat functions/pci_epf_ntb/func1/interrupt_pin
0x0001
Configuring pci-epf-ntb Device
-------------------------------
The user can configure the pci-epf-ntb device using its configfs entry. In order
to change the vendorid and the deviceid, the following
commands can be used::
# echo 0x104c > functions/pci_epf_ntb/func1/vendorid
# echo 0xb00d > functions/pci_epf_ntb/func1/deviceid
In order to configure NTB specific attributes, a new sub-directory to func1
should be created::
# mkdir functions/pci_epf_ntb/func1/pci_epf_ntb.0/
The NTB function driver will populate this directory with various attributes
that can be configured by the user::
# ls functions/pci_epf_ntb/func1/pci_epf_ntb.0/
db_count mw1 mw2 mw3 mw4 num_mws
spad_count
A sample configuration for NTB function is given below::
# echo 4 > functions/pci_epf_ntb/func1/pci_epf_ntb.0/db_count
# echo 128 > functions/pci_epf_ntb/func1/pci_epf_ntb.0/spad_count
# echo 2 > functions/pci_epf_ntb/func1/pci_epf_ntb.0/num_mws
# echo 0x100000 > functions/pci_epf_ntb/func1/pci_epf_ntb.0/mw1
# echo 0x100000 > functions/pci_epf_ntb/func1/pci_epf_ntb.0/mw2
Binding pci-epf-ntb Device to EP Controller
--------------------------------------------
NTB function device should be attached to two PCI endpoint controllers
connected to the two hosts. Use the 'primary' and 'secondary' entries
inside NTB function device to attach one PCI endpoint controller to
primary interface and the other PCI endpoint controller to the secondary
interface::
# ln -s controllers/2900000.pcie-ep/ functions/pci-epf-ntb/func1/primary
# ln -s controllers/2910000.pcie-ep/ functions/pci-epf-ntb/func1/secondary
Once the above step is completed, both the PCI endpoint controllers are ready to
establish a link with the host.
Start the Link
--------------
In order for the endpoint device to establish a link with the host, the _start_
field should be populated with '1'. For NTB, both the PCI endpoint controllers
should establish link with the host::
# echo 1 > controllers/2900000.pcie-ep/start
# echo 1 > controllers/2910000.pcie-ep/start
RootComplex Device
==================
lspci Output
------------
Note that the devices listed here correspond to the values populated in
"Creating pci-epf-ntb Device" section above::
# lspci
0000:00:00.0 PCI bridge: Texas Instruments Device b00d
0000:01:00.0 RAM memory: Texas Instruments Device b00d
Using ntb_hw_epf Device
-----------------------
The host side software follows the standard NTB software architecture in Linux.
All the existing client side NTB utilities like NTB Transport Client and NTB
Netdev, NTB Ping Pong Test Client and NTB Tool Test Client can be used with NTB
function device.
For more information on NTB see
:doc:`Non-Transparent Bridge <../../driver-api/ntb>`

View File

@ -683,7 +683,7 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
,month="October" ,month="October"
,year="2001" ,year="2001"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2001/10/13/105} \url{https://lore.kernel.org/r/Pine.LNX.4.33.0110131015410.8707-100000@penguin.transmeta.com}
[Viewed August 21, 2004]" [Viewed August 21, 2004]"
,annotation={ ,annotation={
} }
@ -826,7 +826,7 @@ Symposium on Distributed Computing}
,month="October" ,month="October"
,year="2002" ,year="2002"
,note="Available: ,note="Available:
\url{https://lkml.org/lkml/2002/10/24/262} \url{https://lore.kernel.org/r/3DB86B05.447E7410@us.ibm.com}
[Viewed February 15, 2014]" [Viewed February 15, 2014]"
,annotation={ ,annotation={
Mingming Cao's patch to introduce RCU to SysV IPC. Mingming Cao's patch to introduce RCU to SysV IPC.
@ -839,7 +839,7 @@ Symposium on Distributed Computing}
,month="March" ,month="March"
,year="2003" ,year="2003"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2003/3/9/205} \url{https://lore.kernel.org/r/Pine.LNX.4.44.0303091831560.2129-100000@home.transmeta.com}
[Viewed March 13, 2006]" [Viewed March 13, 2006]"
,annotation={ ,annotation={
Linus suggests replacing brlock with RCU and/or seqlocks: Linus suggests replacing brlock with RCU and/or seqlocks:
@ -1036,15 +1036,15 @@ Add per-cpu batch counter"
,annotation={ ,annotation={
RCU runs reasonably on a 512-CPU SGI using Manfred Spraul's patches, RCU runs reasonably on a 512-CPU SGI using Manfred Spraul's patches,
which may be found at: which may be found at:
https://lkml.org/lkml/2004/5/20/49 (split vars into cachelines) https://lore.kernel.org/r/40AC9823.6020709@colorfullife.com (split vars into cachelines)
https://lkml.org/lkml/2004/5/22/114 (cpu_quiet() patch) https://lore.kernel.org/r/Pine.LNX.4.44.0405222141260.11106-100000@dbl.q-ag.de (cpu_quiet() patch)
https://lkml.org/lkml/2004/5/25/24 (0/5) https://lore.kernel.org/r/200405250535.i4P5ZJo8017583@dbl.q-ag.de (0/5)
https://lkml.org/lkml/2004/5/25/23 (1/5) https://lore.kernel.org/r/200405250535.i4P5ZKAQ017591@dbl.q-ag.de (1/5)
https://lkml.org/lkml/2004/5/25/265 (works for Jack) https://lore.kernel.org/r/20040525203215.GB5127@sgi.com (works for Jack)
https://lkml.org/lkml/2004/5/25/20 (2/5) https://lore.kernel.org/r/200405250535.i4P5ZLiR017599@dbl.q-ag.de (2/5)
https://lkml.org/lkml/2004/5/25/22 (3/5) https://lore.kernel.org/r/200405250535.i4P5ZMFt017607@dbl.q-ag.de (3/5)
https://lkml.org/lkml/2004/5/25/19 (4/5) https://lore.kernel.org/r/200405250535.i4P5ZN6g017615@dbl.q-ag.de (4/5)
https://lkml.org/lkml/2004/5/25/21 (5/5) https://lore.kernel.org/r/200405250535.i4P5ZO7I017623@dbl.q-ag.de (5/5)
} }
} }
@ -1106,7 +1106,7 @@ Oregon Health and Sciences University"
,month="August" ,month="August"
,year="2004" ,year="2004"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2004/8/6/237} \url{https://lore.kernel.org/r/20040807192424.GF3936@in.ibm.com}
[Viewed June 8, 2010]" [Viewed June 8, 2010]"
,annotation={ ,annotation={
Introduce rcu_dereference(). Introduce rcu_dereference().
@ -1119,7 +1119,7 @@ Oregon Health and Sciences University"
,month="August" ,month="August"
,year="2004" ,year="2004"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2004/8/30/87} \url{https://lore.kernel.org/r/1093873222.984.12.camel@new.localdomain}
[Viewed February 17, 2005]" [Viewed February 17, 2005]"
,annotation={ ,annotation={
Uses active code in rcu_read_lock() and rcu_read_unlock() to Uses active code in rcu_read_lock() and rcu_read_unlock() to
@ -1186,7 +1186,7 @@ Oregon Health and Sciences University"
,month="October" ,month="October"
,year="2004" ,year="2004"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2004/10/23/241} \url{https://lore.kernel.org/r/20041023202723.GA1930@us.ibm.com}
[Viewed June 8, 2010]" [Viewed June 8, 2010]"
,annotation={ ,annotation={
Introduce rcu_assign_pointer(). Introduce rcu_assign_pointer().
@ -1203,7 +1203,7 @@ Oregon Health and Sciences University"
,annotation={ ,annotation={
James Morris posts Kaigai Kohei's patch to LKML. James Morris posts Kaigai Kohei's patch to LKML.
[Viewed December 10, 2004] [Viewed December 10, 2004]
Kaigai's patch is at https://lkml.org/lkml/2004/9/27/52 Kaigai's patch is at https://lore.kernel.org/r/200409271057.i8RAvcA1007873@mailsv.bs1.fc.nec.co.jp
} }
} }
@ -1241,7 +1241,7 @@ Oregon Health and Sciences University"
,year="2005" ,year="2005"
,day="17" ,day="17"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2005/3/17/199} \url{https://lore.kernel.org/r/20050318002026.GA2693@us.ibm.com}
[Viewed September 5, 2005]" [Viewed September 5, 2005]"
,annotation={ ,annotation={
First posting showing how RCU can be safely adapted for First posting showing how RCU can be safely adapted for
@ -1256,7 +1256,7 @@ Oregon Health and Sciences University"
,year="2005" ,year="2005"
,day="18" ,day="18"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2005/3/18/122} \url{https://lore.kernel.org/r/Pine.OSF.4.05.10503181336310.2466-100000@da410.phys.au.dk}
[Viewed March 30, 2006]" [Viewed March 30, 2006]"
,annotation={ ,annotation={
Esben Neilsen suggests read-side suppression of grace-period Esben Neilsen suggests read-side suppression of grace-period
@ -1302,7 +1302,7 @@ Data Structures"
,month="May" ,month="May"
,year="2005" ,year="2005"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2005/5/9/185} \url{https://lore.kernel.org/r/20050510012444.GA3011@us.ibm.com}
[Viewed May 13, 2005]" [Viewed May 13, 2005]"
,annotation={ ,annotation={
First publication of working lock-based deferred free patches First publication of working lock-based deferred free patches
@ -1385,7 +1385,7 @@ Data Structures"
,day="1" ,day="1"
,year="2005" ,year="2005"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2005/8/1/155} \url{https://lore.kernel.org/r/20050801171137.GA1754@us.ibm.com}
[Viewed March 14, 2006]" [Viewed March 14, 2006]"
,annotation={ ,annotation={
First operating counter-based realtime RCU patch posted to LKML. First operating counter-based realtime RCU patch posted to LKML.
@ -1399,7 +1399,7 @@ Data Structures"
,day="8" ,day="8"
,year="2005" ,year="2005"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2005/8/8/108} \url{https://lore.kernel.org/r/20050808144216.GA1307@us.ibm.com}
[Viewed March 14, 2006]" [Viewed March 14, 2006]"
,annotation={ ,annotation={
First operating counter-based realtime RCU patch posted to LKML, First operating counter-based realtime RCU patch posted to LKML,
@ -1415,7 +1415,7 @@ Data Structures"
,day="1" ,day="1"
,year="2005" ,year="2005"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2005/10/1/70} \url{https://lore.kernel.org/r/20051001182056.GA1613@us.ibm.com}
[Viewed March 14, 2006]" [Viewed March 14, 2006]"
,annotation={ ,annotation={
First rcutorture patch. First rcutorture patch.
@ -1429,7 +1429,7 @@ Data Structures"
,day="6" ,day="6"
,year="2006" ,year="2006"
,note="Available: ,note="Available:
\url{https://lkml.org/lkml/2006/1/7/22} \url{https://lore.kernel.org/r/20060106.231054.43576567.davem@davemloft.net}
[Viewed February 29, 2012]" [Viewed February 29, 2012]"
,annotation={ ,annotation={
David Miller's view on hashed arrays of locks: used to really David Miller's view on hashed arrays of locks: used to really
@ -1464,7 +1464,7 @@ Distributed Processing Symposium"
,day="20" ,day="20"
,year="2006" ,year="2006"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2006/6/20/238} \url{https://lore.kernel.org/r/20060408134707.22479.33814.sendpatchset@linux.site}
[Viewed March 25, 2008]" [Viewed March 25, 2008]"
,annotation={ ,annotation={
RCU-protected radix tree. RCU-protected radix tree.
@ -1554,7 +1554,7 @@ Revised:
,day="28" ,day="28"
,year="2006" ,year="2006"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2006/9/28/160} \url{https://lore.kernel.org/r/20060928142616.GA20185@infradead.org}
[Viewed March 27, 2008]" [Viewed March 27, 2008]"
} }
@ -1593,7 +1593,7 @@ Revised:
,year="2006" ,year="2006"
,day=26 ,day=26
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2006/10/26/73} \url{https://lore.kernel.org/r/20061026105731.GE11803@in.ibm.com}
[Viewed January 26, 2009]" [Viewed January 26, 2009]"
,annotation={ ,annotation={
RCU-based reader-writer lock that allows readers to proceed with RCU-based reader-writer lock that allows readers to proceed with
@ -1612,12 +1612,12 @@ Revised:
,year="2006" ,year="2006"
,day=17 ,day=17
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2006/11/17/56} \url{https://lore.kernel.org/r/20061117092925.GT7164@kernel.dk}
[Viewed May 28, 2007]" [Viewed May 28, 2007]"
,annotation={ ,annotation={
SRCU's grace periods are too slow for Jens, even after a SRCU's grace periods are too slow for Jens, even after a
factor-of-three speedup. factor-of-three speedup.
Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359. Sped-up version of SRCU at https://lore.kernel.org/r/20061118002845.GF2632@us.ibm.com.
} }
} }
@ -1629,7 +1629,7 @@ Revised:
,year="2006" ,year="2006"
,day=19 ,day=19
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2006/11/19/69} \url{https://lore.kernel.org/r/20061119190027.GA3676@oleg}
[Viewed May 28, 2007]" [Viewed May 28, 2007]"
,annotation={ ,annotation={
First cut of QRCU. Expanded/corrected versions followed. First cut of QRCU. Expanded/corrected versions followed.
@ -1644,7 +1644,7 @@ Revised:
,year="2006" ,year="2006"
,day=30 ,day=30
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2006/11/29/330} \url{https://lore.kernel.org/r/20061130015714.GC1350@oleg}
[Viewed November 26, 2008]" [Viewed November 26, 2008]"
,annotation={ ,annotation={
Expanded/corrected version of QRCU. Expanded/corrected version of QRCU.
@ -1709,7 +1709,7 @@ Revised:
,year="2007" ,year="2007"
,day=3 ,day=3
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2007/1/3/112} \url{https://lore.kernel.org/r/20070103152738.GA16063@localdomain}
[Viewed May 28, 2007]" [Viewed May 28, 2007]"
,annotation={ ,annotation={
Patch for list_splice_rcu(). Patch for list_splice_rcu().
@ -1737,7 +1737,7 @@ Revised:
,year="2007" ,year="2007"
,day=28 ,day=28
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2007/1/28/34} \url{https://lore.kernel.org/r/20070128120509.719287000@programming.kicks-ass.net}
[Viewed March 27, 2008]" [Viewed March 27, 2008]"
,annotation={ ,annotation={
RCU-like implementation for frequent updaters and rare readers(!). RCU-like implementation for frequent updaters and rare readers(!).
@ -1767,7 +1767,7 @@ Revised:
,year="2007" ,year="2007"
,day=24 ,day=24
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2007/2/25/18} \url{https://lore.kernel.org/r/20070225062349.GA17468@linux.vnet.ibm.com}
[Viewed March 27, 2008]" [Viewed March 27, 2008]"
,annotation={ ,annotation={
Patch for QRCU supplying lock-free fast path. Patch for QRCU supplying lock-free fast path.
@ -1846,7 +1846,7 @@ Revised:
,annotation={ ,annotation={
LWN article describing Promela and spin, and also using Oleg LWN article describing Promela and spin, and also using Oleg
Nesterov's QRCU as an example (with Paul McKenney's fastpath). Nesterov's QRCU as an example (with Paul McKenney's fastpath).
Merged patch at: http://lkml.org/lkml/2007/2/25/18 Merged patch at: https://lore.kernel.org/r/20070225062349.GA17468@linux.vnet.ibm.com
} }
} }
@ -1885,7 +1885,7 @@ Revised:
,day="10" ,day="10"
,year="2007" ,year="2007"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2007/9/10/213} \url{https://lore.kernel.org/r/20070910183004.GA3299@linux.vnet.ibm.com}
[Viewed October 25, 2007]" [Viewed October 25, 2007]"
,annotation={ ,annotation={
Final patch for preemptable RCU to -rt. (Later patches were Final patch for preemptable RCU to -rt. (Later patches were
@ -1933,7 +1933,7 @@ Revised:
,day="20" ,day="20"
,year="2007" ,year="2007"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2007/12/20/244} \url{https://lore.kernel.org/r/20071220142540.GB22523@Krystal}
[Viewed March 27, 2008]" [Viewed March 27, 2008]"
,annotation={ ,annotation={
Request for call_rcu_sched() and rcu_barrier_sched(). Request for call_rcu_sched() and rcu_barrier_sched().
@ -2013,7 +2013,7 @@ Revised:
,day="29" ,day="29"
,year="2008" ,year="2008"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2008/1/29/208} \url{https://lore.kernel.org/r/Pine.LNX.4.58.0801291113350.20371@gandalf.stny.rr.com}
[Viewed March 27, 2008]" [Viewed March 27, 2008]"
,annotation={ ,annotation={
Patch that prevents preemptible RCU from unnecessarily waking Patch that prevents preemptible RCU from unnecessarily waking
@ -2028,7 +2028,7 @@ Revised:
,day="1" ,day="1"
,year="2008" ,year="2008"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2008/2/2/255} \url{https://lore.kernel.org/r/20080202214124.GA28612@linux.vnet.ibm.com}
[Viewed October 18, 2008]" [Viewed October 18, 2008]"
,annotation={ ,annotation={
Explanation of compilers violating dependency ordering. Explanation of compilers violating dependency ordering.
@ -2088,7 +2088,7 @@ lot of {Linux} into your technology!!!"
,day="3" ,day="3"
,year="2008" ,year="2008"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2008/6/2/539} \url{https://lore.kernel.org/r/4844BE83.5010401@cn.fujitsu.com}
[Viewed December 10, 2008]" [Viewed December 10, 2008]"
,annotation={ ,annotation={
Updated RCU classic algorithm. Introduced multi-tailed list Updated RCU classic algorithm. Introduced multi-tailed list
@ -2122,7 +2122,7 @@ lot of {Linux} into your technology!!!"
,day="21" ,day="21"
,year="2008" ,year="2008"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2008/8/21/336} \url{https://lore.kernel.org/r/48AD8969.7060900@colorfullife.com}
[Viewed December 8, 2008]" [Viewed December 8, 2008]"
,annotation={ ,annotation={
State-based RCU. One key thing that this patch does is to State-based RCU. One key thing that this patch does is to
@ -2137,7 +2137,7 @@ lot of {Linux} into your technology!!!"
,day="6" ,day="6"
,year="2008" ,year="2008"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2008/9/6/86} \url{https://lore.kernel.org/r/48C2B1D2.5070801@colorfullife.com}
[Viewed December 8, 2008]" [Viewed December 8, 2008]"
,annotation={ ,annotation={
Manfred notes a fix required to my attempt to separate irq Manfred notes a fix required to my attempt to separate irq
@ -2183,7 +2183,7 @@ lot of {Linux} into your technology!!!"
,day="14" ,day="14"
,year="2009" ,year="2009"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2009/1/14/449} \url{https://lore.kernel.org/r/20090114202044.GJ6734@linux.vnet.ibm.com}
[Viewed January 15, 2009]" [Viewed January 15, 2009]"
,annotation={ ,annotation={
Small-footprint implementation of RCU for uniprocessor Small-footprint implementation of RCU for uniprocessor
@ -2218,7 +2218,7 @@ lot of {Linux} into your technology!!!"
git://lttng.org/userspace-rcu.git git://lttng.org/userspace-rcu.git
http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git
http://lttng.org/urcu http://lttng.org/urcu
http://lkml.org/lkml/2009/2/5/572 https://lore.kernel.org/r/20090206030543.GB8560@Krystal
} }
} }
@ -2258,7 +2258,7 @@ lot of {Linux} into your technology!!!"
,day="25" ,day="25"
,year="2009" ,year="2009"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2009/6/25/306} \url{https://lore.kernel.org/r/20090625160706.GA9467@linux.vnet.ibm.com}
[Viewed August 16, 2009]" [Viewed August 16, 2009]"
,annotation={ ,annotation={
First posting of expedited RCU to be accepted into -tip. First posting of expedited RCU to be accepted into -tip.
@ -2272,7 +2272,7 @@ lot of {Linux} into your technology!!!"
,day="23" ,day="23"
,year="2009" ,year="2009"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2009/7/23/294} \url{https://lore.kernel.org/r/20090724001429.GA17374@linux.vnet.ibm.com}
[Viewed August 15, 2009]" [Viewed August 15, 2009]"
,annotation={ ,annotation={
First posting of simple and fast preemptable RCU. First posting of simple and fast preemptable RCU.
@ -2350,7 +2350,7 @@ lot of {Linux} into your technology!!!"
,month="December" ,month="December"
,year="2009" ,year="2009"
,note="Available: ,note="Available:
\url{http://lkml.org/lkml/2009/10/18/129} \url{https://lore.kernel.org/r/20091018232918.GA7385@Krystal}
[Viewed December 29, 2009]" [Viewed December 29, 2009]"
,annotation={ ,annotation={
Mathieu proposed defer_rcu() with fixed-size per-thread pool Mathieu proposed defer_rcu() with fixed-size per-thread pool
@ -2518,7 +2518,7 @@ lot of {Linux} into your technology!!!"
,month="January" ,month="January"
,year="2011" ,year="2011"
,note="Available: ,note="Available:
\url{https://lkml.org/lkml/2011/1/18/322} \url{https://lore.kernel.org/r/AANLkTimajU0x1v6y3rH2+jr-bZ=tNLs1S_agXdGGAa3S@mail.gmail.com}
[Viewed March 4, 2011]" [Viewed March 4, 2011]"
,annotation={ ,annotation={
"The RCU-based name lookup is at the other end of the spectrum - the "The RCU-based name lookup is at the other end of the spectrum - the

View File

@ -3,8 +3,8 @@ Control Groupstats
================== ==================
Control Groupstats is inspired by the discussion at Control Groupstats is inspired by the discussion at
http://lkml.org/lkml/2007/4/11/187 and implements per cgroup statistics as https://lore.kernel.org/r/461CF883.2030308@sw.ru and implements per cgroup statistics as
suggested by Andrew Morton in http://lkml.org/lkml/2007/4/11/263. suggested by Andrew Morton in https://lore.kernel.org/r/20070411114927.1277d7c9.akpm@linux-foundation.org.
Per cgroup statistics infrastructure re-uses code from the taskstats Per cgroup statistics infrastructure re-uses code from the taskstats
interface. A new set of cgroup operations are registered with commands interface. A new set of cgroup operations are registered with commands

View File

@ -226,10 +226,11 @@ Configuring the kernel
all module options to built in (=y) options. You can all module options to built in (=y) options. You can
also preserve modules by LMC_KEEP. also preserve modules by LMC_KEEP.
"make kvmconfig" Enable additional options for kvm guest kernel support. "make kvm_guest.config" Enable additional options for kvm guest kernel
support.
"make xenconfig" Enable additional options for xen dom0 guest kernel "make xen.config" Enable additional options for xen dom0 guest kernel
support. support.
"make tinyconfig" Configure the tiniest possible kernel. "make tinyconfig" Configure the tiniest possible kernel.

View File

@ -3,7 +3,7 @@ cfag12864b LCD Driver Documentation
=================================== ===================================
:License: GPLv2 :License: GPLv2
:Author & Maintainer: Miguel Ojeda Sandonis :Author & Maintainer: Miguel Ojeda <ojeda@kernel.org>
:Date: 2006-10-27 :Date: 2006-10-27

View File

@ -3,7 +3,7 @@ ks0108 LCD Controller Driver Documentation
========================================== ==========================================
:License: GPLv2 :License: GPLv2
:Author & Maintainer: Miguel Ojeda Sandonis :Author & Maintainer: Miguel Ojeda <ojeda@kernel.org>
:Date: 2006-10-27 :Date: 2006-10-27

View File

@ -963,21 +963,21 @@ References
2. Singh, Balbir. Memory Controller (RSS Control), 2. Singh, Balbir. Memory Controller (RSS Control),
http://lwn.net/Articles/222762/ http://lwn.net/Articles/222762/
3. Emelianov, Pavel. Resource controllers based on process cgroups 3. Emelianov, Pavel. Resource controllers based on process cgroups
http://lkml.org/lkml/2007/3/6/198 https://lore.kernel.org/r/45ED7DEC.7010403@sw.ru
4. Emelianov, Pavel. RSS controller based on process cgroups (v2) 4. Emelianov, Pavel. RSS controller based on process cgroups (v2)
http://lkml.org/lkml/2007/4/9/78 https://lore.kernel.org/r/461A3010.90403@sw.ru
5. Emelianov, Pavel. RSS controller based on process cgroups (v3) 5. Emelianov, Pavel. RSS controller based on process cgroups (v3)
http://lkml.org/lkml/2007/5/30/244 https://lore.kernel.org/r/465D9739.8070209@openvz.org
6. Menage, Paul. Control Groups v10, http://lwn.net/Articles/236032/ 6. Menage, Paul. Control Groups v10, http://lwn.net/Articles/236032/
7. Vaidyanathan, Srinivasan, Control Groups: Pagecache accounting and control 7. Vaidyanathan, Srinivasan, Control Groups: Pagecache accounting and control
subsystem (v3), http://lwn.net/Articles/235534/ subsystem (v3), http://lwn.net/Articles/235534/
8. Singh, Balbir. RSS controller v2 test results (lmbench), 8. Singh, Balbir. RSS controller v2 test results (lmbench),
http://lkml.org/lkml/2007/5/17/232 https://lore.kernel.org/r/464C95D4.7070806@linux.vnet.ibm.com
9. Singh, Balbir. RSS controller v2 AIM9 results 9. Singh, Balbir. RSS controller v2 AIM9 results
http://lkml.org/lkml/2007/5/18/1 https://lore.kernel.org/r/464D267A.50107@linux.vnet.ibm.com
10. Singh, Balbir. Memory controller v6 test results, 10. Singh, Balbir. Memory controller v6 test results,
http://lkml.org/lkml/2007/8/19/36 https://lore.kernel.org/r/20070819094658.654.84837.sendpatchset@balbir-laptop
11. Singh, Balbir. Memory controller introduction (v6), 11. Singh, Balbir. Memory controller introduction (v6),
http://lkml.org/lkml/2007/8/17/69 https://lore.kernel.org/r/20070817084228.26003.12568.sendpatchset@balbir-laptop
12. Corbet, Jonathan, Controlling memory use in cgroups, 12. Corbet, Jonathan, Controlling memory use in cgroups,
http://lwn.net/Articles/243795/ http://lwn.net/Articles/243795/

View File

@ -1,3 +1,5 @@
.. _cgroup-v2:
================ ================
Control Group v2 Control Group v2
================ ================
@ -172,7 +174,6 @@ disabling controllers in v1 and make them always available in v2.
cgroup v2 currently supports the following mount options. cgroup v2 currently supports the following mount options.
nsdelegate nsdelegate
Consider cgroup namespaces as delegation boundaries. This Consider cgroup namespaces as delegation boundaries. This
option is system wide and can only be set on mount or modified option is system wide and can only be set on mount or modified
through remount from the init namespace. The mount option is through remount from the init namespace. The mount option is
@ -180,7 +181,6 @@ cgroup v2 currently supports the following mount options.
Delegation section for details. Delegation section for details.
memory_localevents memory_localevents
Only populate memory.events with data for the current cgroup, Only populate memory.events with data for the current cgroup,
and not any subtrees. This is legacy behaviour, the default and not any subtrees. This is legacy behaviour, the default
behaviour without this option is to include subtree counts. behaviour without this option is to include subtree counts.
@ -189,7 +189,6 @@ cgroup v2 currently supports the following mount options.
option is ignored on non-init namespace mounts. option is ignored on non-init namespace mounts.
memory_recursiveprot memory_recursiveprot
Recursively apply memory.min and memory.low protection to Recursively apply memory.min and memory.low protection to
entire subtrees, without requiring explicit downward entire subtrees, without requiring explicit downward
propagation into leaf cgroups. This allows protecting entire propagation into leaf cgroups. This allows protecting entire
@ -786,7 +785,6 @@ Core Interface Files
All cgroup core files are prefixed with "cgroup." All cgroup core files are prefixed with "cgroup."
cgroup.type cgroup.type
A read-write single value file which exists on non-root A read-write single value file which exists on non-root
cgroups. cgroups.
@ -954,6 +952,8 @@ All cgroup core files are prefixed with "cgroup."
Controllers Controllers
=========== ===========
.. _cgroup-v2-cpu:
CPU CPU
--- ---
@ -1259,9 +1259,9 @@ PAGE_SIZE multiple when read back.
can show up in the middle. Don't rely on items remaining in a can show up in the middle. Don't rely on items remaining in a
fixed position; use the keys to look up specific values! fixed position; use the keys to look up specific values!
If the entry has no per-node counter(or not show in the If the entry has no per-node counter (or not show in the
mempry.numa_stat). We use 'npn'(non-per-node) as the tag memory.numa_stat). We use 'npn' (non-per-node) as the tag
to indicate that it will not show in the mempry.numa_stat. to indicate that it will not show in the memory.numa_stat.
anon anon
Amount of memory used in anonymous mappings such as Amount of memory used in anonymous mappings such as
@ -1277,11 +1277,11 @@ PAGE_SIZE multiple when read back.
pagetables pagetables
Amount of memory allocated for page tables. Amount of memory allocated for page tables.
percpu(npn) percpu (npn)
Amount of memory used for storing per-cpu kernel Amount of memory used for storing per-cpu kernel
data structures. data structures.
sock(npn) sock (npn)
Amount of memory used in network transmission buffers Amount of memory used in network transmission buffers
shmem shmem
@ -1299,6 +1299,10 @@ PAGE_SIZE multiple when read back.
Amount of cached filesystem data that was modified and Amount of cached filesystem data that was modified and
is currently being written back to disk is currently being written back to disk
swapcached
Amount of swap cached in memory. The swapcache is accounted
against both memory and swap usage.
anon_thp anon_thp
Amount of memory used in anonymous mappings backed by Amount of memory used in anonymous mappings backed by
transparent hugepages transparent hugepages
@ -1329,7 +1333,7 @@ PAGE_SIZE multiple when read back.
Part of "slab" that cannot be reclaimed on memory Part of "slab" that cannot be reclaimed on memory
pressure. pressure.
slab(npn) slab (npn)
Amount of memory used for storing in-kernel data Amount of memory used for storing in-kernel data
structures. structures.
@ -1357,39 +1361,39 @@ PAGE_SIZE multiple when read back.
workingset_nodereclaim workingset_nodereclaim
Number of times a shadow node has been reclaimed Number of times a shadow node has been reclaimed
pgfault(npn) pgfault (npn)
Total number of page faults incurred Total number of page faults incurred
pgmajfault(npn) pgmajfault (npn)
Number of major page faults incurred Number of major page faults incurred
pgrefill(npn) pgrefill (npn)
Amount of scanned pages (in an active LRU list) Amount of scanned pages (in an active LRU list)
pgscan(npn) pgscan (npn)
Amount of scanned pages (in an inactive LRU list) Amount of scanned pages (in an inactive LRU list)
pgsteal(npn) pgsteal (npn)
Amount of reclaimed pages Amount of reclaimed pages
pgactivate(npn) pgactivate (npn)
Amount of pages moved to the active LRU list Amount of pages moved to the active LRU list
pgdeactivate(npn) pgdeactivate (npn)
Amount of pages moved to the inactive LRU list Amount of pages moved to the inactive LRU list
pglazyfree(npn) pglazyfree (npn)
Amount of pages postponed to be freed under memory pressure Amount of pages postponed to be freed under memory pressure
pglazyfreed(npn) pglazyfreed (npn)
Amount of reclaimed lazyfree pages Amount of reclaimed lazyfree pages
thp_fault_alloc(npn) thp_fault_alloc (npn)
Number of transparent hugepages which were allocated to satisfy Number of transparent hugepages which were allocated to satisfy
a page fault. This counter is not present when CONFIG_TRANSPARENT_HUGEPAGE a page fault. This counter is not present when CONFIG_TRANSPARENT_HUGEPAGE
is not set. is not set.
thp_collapse_alloc(npn) thp_collapse_alloc (npn)
Number of transparent hugepages which were allocated to allow Number of transparent hugepages which were allocated to allow
collapsing an existing range of pages. This counter is not collapsing an existing range of pages. This counter is not
present when CONFIG_TRANSPARENT_HUGEPAGE is not set. present when CONFIG_TRANSPARENT_HUGEPAGE is not set.
@ -1558,7 +1562,7 @@ IO Interface Files
8:0 rbytes=90430464 wbytes=299008000 rios=8950 wios=1252 dbytes=50331648 dios=3021 8:0 rbytes=90430464 wbytes=299008000 rios=8950 wios=1252 dbytes=50331648 dios=3021
io.cost.qos io.cost.qos
A read-write nested-keyed file with exists only on the root A read-write nested-keyed file which exists only on the root
cgroup. cgroup.
This file configures the Quality of Service of the IO cost This file configures the Quality of Service of the IO cost
@ -1613,7 +1617,7 @@ IO Interface Files
automatic mode can be restored by setting "ctrl" to "auto". automatic mode can be restored by setting "ctrl" to "auto".
io.cost.model io.cost.model
A read-write nested-keyed file with exists only on the root A read-write nested-keyed file which exists only on the root
cgroup. cgroup.
This file configures the cost model of the IO cost model based This file configures the cost model of the IO cost model based
@ -2000,10 +2004,12 @@ Cpuset Interface Files
cpuset-enabled cgroups. This flag is owned by the parent cgroup cpuset-enabled cgroups. This flag is owned by the parent cgroup
and is not delegatable. and is not delegatable.
It accepts only the following input values when written to. It accepts only the following input values when written to.
"root" - a partition root ======== ================================
"member" - a non-root member of a partition "root" a partition root
"member" a non-root member of a partition
======== ================================
When set to be a partition root, the current cgroup is the When set to be a partition root, the current cgroup is the
root of a new partition or scheduling domain that comprises root of a new partition or scheduling domain that comprises
@ -2044,9 +2050,11 @@ Cpuset Interface Files
root to change. On read, the "cpuset.sched.partition" file root to change. On read, the "cpuset.sched.partition" file
can show the following values. can show the following values.
"member" Non-root member of a partition ============== ==============================
"root" Partition root "member" Non-root member of a partition
"root invalid" Invalid partition root "root" Partition root
"root invalid" Invalid partition root
============== ==============================
It is a partition root if the first 2 partition root conditions It is a partition root if the first 2 partition root conditions
above are true and at least one CPU from "cpuset.cpus" is above are true and at least one CPU from "cpuset.cpus" is
@ -2090,7 +2098,7 @@ If the program returns 0, the attempt fails with -EPERM, otherwise
it succeeds. it succeeds.
An example of BPF_CGROUP_DEVICE program may be found in the kernel An example of BPF_CGROUP_DEVICE program may be found in the kernel
source tree in the tools/testing/selftests/bpf/dev_cgroup.c file. source tree in the tools/testing/selftests/bpf/progs/dev_cgroup.c file.
RDMA RDMA
@ -2219,7 +2227,7 @@ Without cgroup namespace, the "/proc/$PID/cgroup" file shows the
complete path of the cgroup of a process. In a container setup where complete path of the cgroup of a process. In a container setup where
a set of cgroups and namespaces are intended to isolate processes the a set of cgroups and namespaces are intended to isolate processes the
"/proc/$PID/cgroup" file may leak potential system level information "/proc/$PID/cgroup" file may leak potential system level information
to the isolated processes. For Example:: to the isolated processes. For example::
# cat /proc/self/cgroup # cat /proc/self/cgroup
0::/batchjobs/container_id1 0::/batchjobs/container_id1

View File

@ -5,10 +5,10 @@ Authors
Original Author Original Author
--------------- ---------------
Steve French (sfrench@samba.org) Steve French (smfrench@gmail.com, sfrench@samba.org)
The author wishes to express his appreciation and thanks to: The author wishes to express his appreciation and thanks to:
Andrew Tridgell (Samba team) for his early suggestions about smb/cifs VFS Andrew Tridgell (Samba team) for his early suggestions about SMB/CIFS VFS
improvements. Thanks to IBM for allowing me time and test resources to pursue improvements. Thanks to IBM for allowing me time and test resources to pursue
this project, to Jim McDonough from IBM (and the Samba Team) for his help, to this project, to Jim McDonough from IBM (and the Samba Team) for his help, to
the IBM Linux JFS team for explaining many esoteric Linux filesystem features. the IBM Linux JFS team for explaining many esoteric Linux filesystem features.
@ -51,7 +51,7 @@ Patch Contributors
- Ronnie Sahlberg (for SMB3 xattr work, bug fixes, and lots of great work on compounding) - Ronnie Sahlberg (for SMB3 xattr work, bug fixes, and lots of great work on compounding)
- Shirish Pargaonkar (for many ACL patches over the years) - Shirish Pargaonkar (for many ACL patches over the years)
- Sachin Prabhu (many bug fixes, including for reconnect, copy offload and security) - Sachin Prabhu (many bug fixes, including for reconnect, copy offload and security)
- Paulo Alcantara - Paulo Alcantara (for some excellent work in DFS, and in booting from SMB3)
- Long Li (some great work on RDMA, SMB Direct) - Long Li (some great work on RDMA, SMB Direct)

View File

@ -3,6 +3,7 @@ Changes
======= =======
See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary
information (that may be easier to read than parsing the output of information about fixes/improvements to CIFS/SMB2/SMB3 support (changes
"git log fs/cifs") about fixes/improvements to CIFS/SMB2/SMB3 support (changes
to cifs.ko module) by kernel version (and cifs internal module version). to cifs.ko module) by kernel version (and cifs internal module version).
This may be easier to read than parsing the output of "git log fs/cifs"
by release.

View File

@ -7,19 +7,19 @@ Introduction
protocol which was the successor to the Server Message Block protocol which was the successor to the Server Message Block
(SMB) protocol, the native file sharing mechanism for most early (SMB) protocol, the native file sharing mechanism for most early
PC operating systems. New and improved versions of CIFS are now PC operating systems. New and improved versions of CIFS are now
called SMB2 and SMB3. Use of SMB3 (and later, including SMB3.1.1) called SMB2 and SMB3. Use of SMB3 (and later, including SMB3.1.1
is strongly preferred over using older dialects like CIFS due to the most current dialect) is strongly preferred over using older
security reasons. All modern dialects, including the most recent, dialects like CIFS due to security reasons. All modern dialects,
SMB3.1.1 are supported by the CIFS VFS module. The SMB3 protocol including the most recent, SMB3.1.1, are supported by the CIFS VFS
is implemented and supported by all major file servers module. The SMB3 protocol is implemented and supported by all major
such as all modern versions of Windows (including Windows 2016 file servers such as Windows (including Windows 2019 Server), as
Server), as well as by Samba (which provides excellent well as by Samba (which provides excellent CIFS/SMB2/SMB3 server
CIFS/SMB2/SMB3 server support and tools for Linux and many other support and tools for Linux and many other operating systems).
operating systems). Apple systems also support SMB3 well, as Apple systems also support SMB3 well, as do most Network Attached
do most Network Attached Storage vendors, so this network Storage vendors, so this network filesystem client can mount to a
filesystem client can mount to a wide variety of systems. wide variety of systems. It also supports mounting to the cloud
It also supports mounting to the cloud (for example (for example Microsoft Azure), including the necessary security
Microsoft Azure), including the necessary security features. features.
The intent of this module is to provide the most advanced network The intent of this module is to provide the most advanced network
file system function for SMB3 compliant servers, including advanced file system function for SMB3 compliant servers, including advanced
@ -27,8 +27,8 @@ Introduction
POSIX compliance, secure per-user session establishment, encryption, POSIX compliance, secure per-user session establishment, encryption,
high performance safe distributed caching (leases/oplocks), optional packet high performance safe distributed caching (leases/oplocks), optional packet
signing, large files, Unicode support and other internationalization signing, large files, Unicode support and other internationalization
improvements. Since both Samba server and this filesystem client support improvements. Since both Samba server and this filesystem client support the
the CIFS Unix extensions (and in the future SMB3 POSIX extensions), CIFS Unix extensions, and the Linux client also suppors SMB3 POSIX extensions,
the combination can provide a reasonable alternative to other network and the combination can provide a reasonable alternative to other network and
cluster file systems for fileserving in some Linux to Linux environments, cluster file systems for fileserving in some Linux to Linux environments,
not just in Linux to Windows (or Linux to Mac) environments. not just in Linux to Windows (or Linux to Mac) environments.

View File

@ -13,24 +13,26 @@ is a partial list of the known problems and missing features:
a) SMB3 (and SMB3.1.1) missing optional features: a) SMB3 (and SMB3.1.1) missing optional features:
- multichannel (started), integration with RDMA - multichannel (partially integrated), integration of multichannel with RDMA
- directory leases (improved metadata caching), started (root dir only) - directory leases (improved metadata caching). Currently only implemented for root dir
- T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl - T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl
currently the only two server side copy mechanisms supported) currently the only two server side copy mechanisms supported)
b) improved sparse file support (fiemap and SEEK_HOLE are implemented b) improved sparse file support (fiemap and SEEK_HOLE are implemented
but additional features would be supportable by the protocol). but additional features would be supportable by the protocol such
as FALLOC_FL_COLLAPSE_RANGE and FALLOC_FL_INSERT_RANGE)
c) Directory entry caching relies on a 1 second timer, rather than c) Directory entry caching relies on a 1 second timer, rather than
using Directory Leases, currently only the root file handle is cached longer using Directory Leases, currently only the root file handle is cached longer
by leveraging Directory Leases
d) quota support (needs minor kernel change since quota calls d) quota support (needs minor kernel change since quota calls otherwise
to make it to network filesystems or deviceless filesystems) won't make it to network filesystems or deviceless filesystems).
e) Additional use cases can be optimized to use "compounding" (e.g. e) Additional use cases can be optimized to use "compounding" (e.g.
open/query/close and open/setinfo/close) to reduce the number of open/query/close and open/setinfo/close) to reduce the number of
roundtrips to the server and improve performance. Various cases roundtrips to the server and improve performance. Various cases
(stat, statfs, create, unlink, mkdir) already have been improved by (stat, statfs, create, unlink, mkdir, xattrs) already have been improved by
using compounding but more can be done. In addition we could using compounding but more can be done. In addition we could
significantly reduce redundant opens by using deferred close (with significantly reduce redundant opens by using deferred close (with
handle caching leases) and better using reference counters on file handle caching leases) and better using reference counters on file
@ -60,7 +62,9 @@ k) Add tools to take advantage of more smb3 specific ioctls and features
metadata attributes easier from tools (e.g. extending what was done metadata attributes easier from tools (e.g. extending what was done
in smb-info tool). in smb-info tool).
l) encrypted file support l) encrypted file support (currently the attribute showing the file is
encrypted on the server is reported, but changing the attribute is not
supported).
m) improved stats gathering tools (perhaps integration with nfsometer?) m) improved stats gathering tools (perhaps integration with nfsometer?)
to extend and make easier to use what is currently in /proc/fs/cifs/Stats to extend and make easier to use what is currently in /proc/fs/cifs/Stats
@ -69,14 +73,13 @@ n) Add support for claims based ACLs ("DAC")
o) mount helper GUI (to simplify the various configuration options on mount) o) mount helper GUI (to simplify the various configuration options on mount)
p) Add support for witness protocol (perhaps ioctl to cifs.ko from user space p) Expand support for witness protocol to allow for notification of share
tool listening on witness protocol RPC) to allow for notification of share move, and server network adapter changes. Currently only notifications by
move, server failover, and server adapter changes. And also improve other the witness protocol for server move is supported by the Linux client.
failover scenarios, e.g. when client knows multiple DFS entries point to
different servers, and the server we are connected to has gone down.
q) Allow mount.cifs to be more verbose in reporting errors with dialect q) Allow mount.cifs to be more verbose in reporting errors with dialect
or unsupported feature errors. or unsupported feature errors. This would now be easier due to the
implementation of the new mount API.
r) updating cifs documentation, and user guide. r) updating cifs documentation, and user guide.
@ -87,11 +90,10 @@ t) split cifs and smb3 support into separate modules so legacy (and less
secure) CIFS dialect can be disabled in environments that don't need it secure) CIFS dialect can be disabled in environments that don't need it
and simplify the code. and simplify the code.
v) POSIX Extensions for SMB3.1.1 (started, create and mkdir support added v) Additional testing of POSIX Extensions for SMB3.1.1
so far).
w) Add support for additional strong encryption types, and additional spnego w) Add support for additional strong encryption types, and additional spnego
authentication mechanisms (see MS-SMB2) authentication mechanisms (see MS-SMB2). GCM-256 is now partially implemented.
x) Finish support for SMB3.1.1 compression x) Finish support for SMB3.1.1 compression

View File

@ -83,7 +83,7 @@ and encrypted shares and stronger signing and authentication algorithms.
There are additional mount options that may be helpful for SMB3 to get There are additional mount options that may be helpful for SMB3 to get
improved POSIX behavior (NB: can use vers=3.0 to force only SMB3, never 2.1): improved POSIX behavior (NB: can use vers=3.0 to force only SMB3, never 2.1):
``mfsymlinks`` and ``cifsacl`` and ``idsfromsid`` ``mfsymlinks`` and either ``cifsacl`` or ``modefromsid`` (usually with ``idsfromsid``)
Allowing User Mounts Allowing User Mounts
==================== ====================

View File

@ -107,7 +107,7 @@ will lead to quite erratic information inside ``/proc/stat``::
References References
---------- ----------
- http://lkml.org/lkml/2007/2/12/6 - https://lore.kernel.org/r/loom.20070212T063225-663@post.gmane.org
- Documentation/filesystems/proc.rst (1.8) - Documentation/filesystems/proc.rst (1.8)

View File

@ -67,7 +67,7 @@ Parameters::
the value passed in <key_size>. the value passed in <key_size>.
<key_type> <key_type>
Either 'logon', 'user' or 'encrypted' kernel key type. Either 'logon', 'user', 'encrypted' or 'trusted' kernel key type.
<key_description> <key_description>
The kernel keyring key description crypt target should look for The kernel keyring key description crypt target should look for

View File

@ -143,8 +143,8 @@ recalculate
journal_crypt:algorithm(:key) (the key is optional) journal_crypt:algorithm(:key) (the key is optional)
Encrypt the journal using given algorithm to make sure that the Encrypt the journal using given algorithm to make sure that the
attacker can't read the journal. You can use a block cipher here attacker can't read the journal. You can use a block cipher here
(such as "cbc(aes)") or a stream cipher (for example "chacha20", (such as "cbc(aes)") or a stream cipher (for example "chacha20"
"salsa20" or "ctr(aes)"). or "ctr(aes)").
The journal contains history of last writes to the block device, The journal contains history of last writes to the block device,
an attacker reading the journal could see the last sector numbers an attacker reading the journal could see the last sector numbers
@ -186,6 +186,17 @@ fix_padding
space-efficient. If this option is not present, large padding is space-efficient. If this option is not present, large padding is
used - that is for compatibility with older kernels. used - that is for compatibility with older kernels.
fix_hmac
Improve security of internal_hash and journal_mac:
- the section number is mixed to the mac, so that an attacker can't
copy sectors from one journal section to another journal section
- the superblock is protected by journal_mac
- a 16-byte salt stored in the superblock is mixed to the mac, so
that the attacker can't detect that two disks have the same hmac
key and also to disallow the attacker to move sectors from one
disk to another
legacy_recalculate legacy_recalculate
Allow recalculating of volumes with HMAC keys. This is disabled by Allow recalculating of volumes with HMAC keys. This is disabled by
default for security reasons - an attacker could modify the volume, default for security reasons - an attacker could modify the volume,

View File

@ -60,7 +60,7 @@ Note that for the special case of a range one can split the range into equal
sized groups and for each group use some amount from the beginning of that sized groups and for each group use some amount from the beginning of that
group: group:
<cpu number>-cpu number>:<used size>/<group size> <cpu number>-<cpu number>:<used size>/<group size>
For example one can add to the command line following parameter: For example one can add to the command line following parameter:

View File

@ -606,7 +606,7 @@
kernel/dma/contiguous.c kernel/dma/contiguous.c
cma_pernuma=nn[MG] cma_pernuma=nn[MG]
[ARM64,KNL] [ARM64,KNL,CMA]
Sets the size of kernel per-numa memory area for Sets the size of kernel per-numa memory area for
contiguous memory allocations. A value of 0 disables contiguous memory allocations. A value of 0 disables
per-numa CMA altogether. And If this option is not per-numa CMA altogether. And If this option is not
@ -1434,6 +1434,11 @@
to enforce probe and suspend/resume ordering. to enforce probe and suspend/resume ordering.
rpm -- Like "on", but also use to order runtime PM. rpm -- Like "on", but also use to order runtime PM.
fw_devlink.strict=<bool>
[KNL] Treat all inferred dependencies as mandatory
dependencies. This only applies for fw_devlink=on|rpm.
Format: <bool>
gamecon.map[2|3]= gamecon.map[2|3]=
[HW,JOY] Multisystem joystick and NES/SNES/PSX pad [HW,JOY] Multisystem joystick and NES/SNES/PSX pad
support via parallel port (up to 5 devices per port) support via parallel port (up to 5 devices per port)
@ -1525,12 +1530,12 @@
hpet_mmap= [X86, HPET_MMAP] Allow userspace to mmap HPET hpet_mmap= [X86, HPET_MMAP] Allow userspace to mmap HPET
registers. Default set by CONFIG_HPET_MMAP_DEFAULT. registers. Default set by CONFIG_HPET_MMAP_DEFAULT.
hugetlb_cma= [HW] The size of a cma area used for allocation hugetlb_cma= [HW,CMA] The size of a CMA area used for allocation
of gigantic hugepages. of gigantic hugepages.
Format: nn[KMGTPE] Format: nn[KMGTPE]
Reserve a cma area of given size and allocate gigantic Reserve a CMA area of given size and allocate gigantic
hugepages using the cma allocator. If enabled, the hugepages using the CMA allocator. If enabled, the
boot-time allocation of gigantic hugepages is skipped. boot-time allocation of gigantic hugepages is skipped.
hugepages= [HW] Number of HugeTLB pages to allocate at boot. hugepages= [HW] Number of HugeTLB pages to allocate at boot.
@ -1674,6 +1679,12 @@
In such case C2/C3 won't be used again. In such case C2/C3 won't be used again.
idle=nomwait: Disable mwait for CPU C-states idle=nomwait: Disable mwait for CPU C-states
idxd.sva= [HW]
Format: <bool>
Allow force disabling of Shared Virtual Memory (SVA)
support for the idxd driver. By default it is set to
true (1).
ieee754= [MIPS] Select IEEE Std 754 conformance mode ieee754= [MIPS] Select IEEE Std 754 conformance mode
Format: { strict | legacy | 2008 | relaxed } Format: { strict | legacy | 2008 | relaxed }
Default: strict Default: strict
@ -1747,7 +1758,7 @@
ima_policy= [IMA] ima_policy= [IMA]
The builtin policies to load during IMA setup. The builtin policies to load during IMA setup.
Format: "tcb | appraise_tcb | secure_boot | Format: "tcb | appraise_tcb | secure_boot |
fail_securely" fail_securely | critical_data"
The "tcb" policy measures all programs exec'd, files The "tcb" policy measures all programs exec'd, files
mmap'd for exec, and all files opened with the read mmap'd for exec, and all files opened with the read
@ -1766,6 +1777,9 @@
filesystems with the SB_I_UNVERIFIABLE_SIGNATURE filesystems with the SB_I_UNVERIFIABLE_SIGNATURE
flag. flag.
The "critical_data" policy measures kernel integrity
critical data.
ima_tcb [IMA] Deprecated. Use ima_policy= instead. ima_tcb [IMA] Deprecated. Use ima_policy= instead.
Load a policy which meets the needs of the Trusted Load a policy which meets the needs of the Trusted
Computing Base. This means IMA will measure all Computing Base. This means IMA will measure all
@ -3270,9 +3284,14 @@
parameter, xsave area per process might occupy more parameter, xsave area per process might occupy more
memory on xsaves enabled systems. memory on xsaves enabled systems.
nohlt [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or nohlt [ARM,ARM64,MICROBLAZE,SH] Forces the kernel to busy wait
wfi(ARM) instruction doesn't work correctly and not to in do_idle() and not use the arch_cpu_idle()
use it. This is also useful when using JTAG debugger. implementation; requires CONFIG_GENERIC_IDLE_POLL_SETUP
to be effective. This is useful on platforms where the
sleep(SH) or wfi(ARM,ARM64) instructions do not work
correctly or when doing power measurements to evalute
the impact of the sleep instructions. This is also
useful when using JTAG debugger.
no_file_caps Tells the kernel not to honor file capabilities. The no_file_caps Tells the kernel not to honor file capabilities. The
only way then for a file to be executed with privilege only way then for a file to be executed with privilege
@ -3285,6 +3304,21 @@
in certain environments such as networked servers or in certain environments such as networked servers or
real-time systems. real-time systems.
no_hash_pointers
Force pointers printed to the console or buffers to be
unhashed. By default, when a pointer is printed via %p
format string, that pointer is "hashed", i.e. obscured
by hashing the pointer value. This is a security feature
that hides actual kernel addresses from unprivileged
users, but it also makes debugging the kernel more
difficult since unequal pointers can no longer be
compared. However, if this command-line option is
specified, then all normal pointers will have their true
value printed. Pointers printed via %pK may still be
hashed. This option should only be specified when
debugging the kernel. Please do not use on production
kernels.
nohibernate [HIBERNATION] Disable hibernation and resume. nohibernate [HIBERNATION] Disable hibernation and resume.
nohz= [KNL] Boottime enable/disable dynamic ticks nohz= [KNL] Boottime enable/disable dynamic ticks
@ -4870,14 +4904,6 @@
last alloc / free. For more information see last alloc / free. For more information see
Documentation/vm/slub.rst. Documentation/vm/slub.rst.
slub_memcg_sysfs= [MM, SLUB]
Determines whether to enable sysfs directories for
memory cgroup sub-caches. 1 to enable, 0 to disable.
The default is determined by CONFIG_SLUB_MEMCG_SYSFS_ON.
Enabling this can lead to a very high number of debug
directories and files being created under
/sys/kernel/slub.
slub_max_order= [MM, SLUB] slub_max_order= [MM, SLUB]
Determines the maximum allowed order for slabs. Determines the maximum allowed order for slabs.
A high setting may cause OOMs due to memory A high setting may cause OOMs due to memory
@ -5156,6 +5182,12 @@
growing up) the main stack are reserved for no other growing up) the main stack are reserved for no other
mapping. Default value is 256 pages. mapping. Default value is 256 pages.
stack_depot_disable= [KNL]
Setting this to true through kernel command line will
disable the stack depot thereby saving the static memory
consumed by the stack hash table. By default this is set
to false.
stacktrace [FTRACE] stacktrace [FTRACE]
Enabled the stack tracer on boot up. Enabled the stack tracer on boot up.
@ -5956,12 +5988,6 @@
default x2apic cluster mode on platforms default x2apic cluster mode on platforms
supporting x2apic. supporting x2apic.
x86_intel_mid_timer= [X86-32,APBT]
Choose timer option for x86 Intel MID platform.
Two valid options are apbt timer only and lapic timer
plus one apbt timer for broadcast timer.
x86_intel_mid_timer=apbt_only | lapic_and_apbt
xen_512gb_limit [KNL,X86-64,XEN] xen_512gb_limit [KNL,X86-64,XEN]
Restricts the kernel running paravirtualized under Xen Restricts the kernel running paravirtualized under Xen
to use only up to 512 GB of RAM. The reason to do so is to use only up to 512 GB of RAM. The reason to do so is

View File

@ -273,7 +273,7 @@ To reduce its OS jitter, do any of the following:
However, there is an RFC patch from Christoph Lameter However, there is an RFC patch from Christoph Lameter
(based on an earlier one from Gilad Ben-Yossef) that (based on an earlier one from Gilad Ben-Yossef) that
reduces or even eliminates vmstat overhead for some reduces or even eliminates vmstat overhead for some
workloads at https://lkml.org/lkml/2013/9/4/379. workloads at https://lore.kernel.org/r/00000140e9dfd6bd-40db3d4f-c1be-434f-8132-7820f81bb586-000000@email.amazonses.com.
e. If running on high-end powerpc servers, build with e. If running on high-end powerpc servers, build with
CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS
daemon from running on each CPU every second or so. daemon from running on each CPU every second or so.

View File

@ -51,6 +51,7 @@ detailed description):
- UWB enable and disable - UWB enable and disable
- LCD Shadow (PrivacyGuard) enable and disable - LCD Shadow (PrivacyGuard) enable and disable
- Lap mode sensor - Lap mode sensor
- Setting keyboard language
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
@ -1466,6 +1467,30 @@ Sysfs notes
rfkill controller switch "tpacpi_uwb_sw": refer to rfkill controller switch "tpacpi_uwb_sw": refer to
Documentation/driver-api/rfkill.rst for details. Documentation/driver-api/rfkill.rst for details.
Setting keyboard language
-------------------------
sysfs: keyboard_lang
This feature is used to set keyboard language to ECFW using ASL interface.
Fewer thinkpads models like T580 , T590 , T15 Gen 1 etc.. has "=", "(',
")" numeric keys, which are not displaying correctly, when keyboard language
is other than "english". This is because the default keyboard language in ECFW
is set as "english". Hence using this sysfs, user can set the correct keyboard
language to ECFW and then these key's will work correctly.
Example of command to set keyboard language is mentioned below::
echo jp > /sys/devices/platform/thinkpad_acpi/keyboard_lang
Text corresponding to keyboard layout to be set in sysfs are: be(Belgian),
cz(Czech), da(Danish), de(German), en(English), es(Spain), et(Estonian),
fr(French), fr-ch(French(Switzerland)), hu(Hungarian), it(Italy), jp (Japan),
nl(Dutch), nn(Norway), pl(Polish), pt(portugese), sl(Slovenian), sv(Sweden),
tr(Turkey)
Adaptive keyboard Adaptive keyboard
----------------- -----------------

View File

@ -160,16 +160,16 @@ Under each memory block, you can see 5 files:
"online_movable", "online", "offline" command "online_movable", "online", "offline" command
which will be performed on all sections in the block. which will be performed on all sections in the block.
``phys_device`` read-only: designed to show the name of physical memory ``phys_device`` read-only: legacy interface only ever used on s390x to
device. This is not well implemented now. expose the covered storage increment.
``removable`` read-only: contains an integer value indicating ``removable`` read-only: legacy interface that indicated whether a memory
whether the memory block is removable or not block was likely to be offlineable or not. Newer kernel
removable. A value of 1 indicates that the memory versions return "1" if and only if the kernel supports
block is removable and a value of 0 indicates that memory offlining.
it is not removable. A memory block is removable only if ``valid_zones`` read-only: designed to show by which zone memory provided by
every section in the block is removable. a memory block is managed, and to show by which zone memory
``valid_zones`` read-only: designed to show which zones this memory block provided by an offline memory block could be managed when
can be onlined to. onlining.
The first column shows it`s default zone. The first column shows it`s default zone.

View File

@ -72,7 +72,7 @@ monitoring and observability operations, thus, bypass *scope* permissions
checks in the kernel. CAP_PERFMON implements the principle of least checks in the kernel. CAP_PERFMON implements the principle of least
privilege [13]_ (POSIX 1003.1e: 2.2.2.39) for performance monitoring and privilege [13]_ (POSIX 1003.1e: 2.2.2.39) for performance monitoring and
observability operations in the kernel and provides a secure approach to observability operations in the kernel and provides a secure approach to
perfomance monitoring and observability in the system. performance monitoring and observability in the system.
For backward compatibility reasons the access to perf_events monitoring and For backward compatibility reasons the access to perf_events monitoring and
observability operations is also open for CAP_SYS_ADMIN privileged observability operations is also open for CAP_SYS_ADMIN privileged

View File

@ -1033,7 +1033,9 @@ speakup + keypad 3, you would hear:
The speakup key is depressed, so the name of the key state is speakup. The speakup key is depressed, so the name of the key state is speakup.
This part of the message comes from the states collection. This part of the message comes from the states collection.
14.2. Loading Your Own Messages 14.2. Changing language
14.2.1. Loading Your Own Messages
The files under the i18n subdirectory all follow the same format. The files under the i18n subdirectory all follow the same format.
They consist of lines, with one message per line. They consist of lines, with one message per line.
@ -1066,8 +1068,50 @@ echo '1 azul' > /speakup/i18n/colors
The next time that Speakup says message 1 from the colors group, it will The next time that Speakup says message 1 from the colors group, it will
say "azul", rather than "blue." say "azul", rather than "blue."
14.2.2. Choose a language
In the future, translations into various languages will be made available, In the future, translations into various languages will be made available,
and most users will just load the files necessary for their language. and most users will just load the files necessary for their language. So far,
only French language is available beyond native Canadian English language.
French is only available after you are logged in.
Canadian English is the default language. To toggle another language,
download the source of Speakup and untar it in your home directory. The
following command should let you do this:
tar xvjf speakup-<version>.tar.bz2
where <version> is the version number of the application.
Next, change to the newly created directory, then into the tools/ directory, and
run the script speakup_setlocale. You are asked the language that you want to
use. Type the number associated to your language (e.g. fr for French) then press
Enter. Needed files are copied in the i18n directory.
Note: the speakupconf must be installed on your system so that settings are saved.
Otherwise, you will have an error: your language will be loaded but you will
have to run the script again every time Speakup restarts.
See section 16.1. for information about speakupconf.
You will have to repeat these steps for any change of locale, i.e. if you wish
change the speakup's language or charset (iso-8859-15 ou UTF-8).
If you wish store the settings, note that at your next login, you will need to
do:
speakup load
Alternatively, you can add the above line to your file
~/.bashrc or ~/.bash_profile.
If your system administrator ran himself the script, all the users will be able
to change from English to the language choosed by root and do directly
speakupconf load (or add this to the ~/.bashrc or
~/.bash_profile file). If there are several languages to handle, the
administrator (or every user) will have to run the first steps until speakupconf
save, choosing the appropriate language, in every user's home directory. Every
user will then be able to do speakupconf load, Speakup will load his own settings.
14.3. No Support for Non-Western-European Languages 14.3. No Support for Non-Western-European Languages

View File

@ -380,5 +380,5 @@ This configuration option sets the maximum number of "watches" that are
allowed for each user. allowed for each user.
Each "watch" costs roughly 90 bytes on a 32bit kernel, and roughly 160 bytes Each "watch" costs roughly 90 bytes on a 32bit kernel, and roughly 160 bytes
on a 64bit one. on a 64bit one.
The current default value for max_user_watches is the 1/32 of the available The current default value for max_user_watches is the 1/25 (4%) of the
low memory, divided for the "watch" cost in bytes. available low memory, divided for the "watch" cost in bytes.

View File

@ -983,11 +983,11 @@ that benefit from having their data cached, zone_reclaim_mode should be
left disabled as the caching effect is likely to be more important than left disabled as the caching effect is likely to be more important than
data locality. data locality.
zone_reclaim may be enabled if it's known that the workload is partitioned Consider enabling one or more zone_reclaim mode bits if it's known that the
such that each partition fits within a NUMA node and that accessing remote workload is partitioned such that each partition fits within a NUMA node
memory would cause a measurable performance reduction. The page allocator and that accessing remote memory would cause a measurable performance
will then reclaim easily reusable pages (those page cache pages that are reduction. The page allocator will take additional actions before
currently not used) before allocating off node pages. allocating off node pages.
Allowing zone reclaim to write out pages stops processes that are Allowing zone reclaim to write out pages stops processes that are
writing large amounts of data from dirtying pages on other nodes. Zone writing large amounts of data from dirtying pages on other nodes. Zone

View File

@ -284,6 +284,9 @@ The following sysctls are available for the XFS filesystem:
removes unused preallocation from clean inodes and releases removes unused preallocation from clean inodes and releases
the unused space back to the free pool. the unused space back to the free pool.
fs.xfs.speculative_cow_prealloc_lifetime
This is an alias for speculative_prealloc_lifetime.
fs.xfs.error_level (Min: 0 Default: 3 Max: 11) fs.xfs.error_level (Min: 0 Default: 3 Max: 11)
A volume knob for error reporting when internal errors occur. A volume knob for error reporting when internal errors occur.
This will generate detailed messages & backtraces for filesystem This will generate detailed messages & backtraces for filesystem
@ -356,12 +359,13 @@ The following sysctls are available for the XFS filesystem:
Deprecated Sysctls Deprecated Sysctls
================== ==================
=========================== ================ =========================================== ================
Name Removal Schedule Name Removal Schedule
=========================== ================ =========================================== ================
fs.xfs.irix_sgid_inherit September 2025 fs.xfs.irix_sgid_inherit September 2025
fs.xfs.irix_symlink_mode September 2025 fs.xfs.irix_symlink_mode September 2025
=========================== ================ fs.xfs.speculative_cow_prealloc_lifetime September 2025
=========================================== ================
Removed Sysctls Removed Sysctls

View File

@ -128,7 +128,7 @@ it. The recommended placement is in the first 16KiB of RAM.
The boot loader must load a device tree image (dtb) into system ram The boot loader must load a device tree image (dtb) into system ram
at a 64bit aligned address and initialize it with the boot data. The at a 64bit aligned address and initialize it with the boot data. The
dtb format is documented in Documentation/devicetree/booting-without-of.rst. dtb format is documented at https://www.devicetree.org/specifications/.
The kernel will look for the dtb magic value of 0xd00dfeed at the dtb The kernel will look for the dtb magic value of 0xd00dfeed at the dtb
physical address to determine if a dtb has been passed instead of a physical address to determine if a dtb has been passed instead of a
tagged list. tagged list.

View File

@ -33,7 +33,7 @@ SoC-specific documents
ixp4xx ixp4xx
marvel marvell
microchip microchip
netwinder netwinder

View File

@ -127,7 +127,7 @@ EBU Armada family
- 88F6828 Armada 388 - 88F6828 Armada 388
- Product infos: http://www.marvell.com/embedded-processors/armada-38x/ - Product infos: http://www.marvell.com/embedded-processors/armada-38x/
- Functional Spec: https://marvellcorp.wufoo.com/forms/marvell-armada-38x-functional-specifications/ - Functional Spec: http://www.marvell.com/content/dam/marvell/en/public-collateral/embedded-processors/marvell-embedded-processors-armada-38x-functional-specifications-2015-11.pdf
Core: Core:
ARM Cortex-A9 ARM Cortex-A9
@ -183,7 +183,10 @@ EBU Armada family ARMv8
http://www.marvell.com/embedded-processors/armada-3700/ http://www.marvell.com/embedded-processors/armada-3700/
Product Brief: Product Brief:
http://www.marvell.com/embedded-processors/assets/PB-88F3700-FNL.pdf http://www.marvell.com/content/dam/marvell/en/public-collateral/embedded-processors/marvell-embedded-processors-armada-37xx-product-brief-2016-01.pdf
Hardware Spec:
http://www.marvell.com/content/dam/marvell/en/public-collateral/embedded-processors/marvell-embedded-processors-armada-37xx-hardware-specifications-2019-09.pdf
Device tree files: Device tree files:
arch/arm64/boot/dts/marvell/armada-37* arch/arm64/boot/dts/marvell/armada-37*

View File

@ -182,8 +182,9 @@ API presented to device drivers
A :c:type:``struct blk_keyslot_manager`` should be set up by device drivers in A :c:type:``struct blk_keyslot_manager`` should be set up by device drivers in
the ``request_queue`` of the device. The device driver needs to call the ``request_queue`` of the device. The device driver needs to call
``blk_ksm_init`` on the ``blk_keyslot_manager``, which specifying the number of ``blk_ksm_init`` (or its resource-managed variant ``devm_blk_ksm_init``) on the
keyslots supported by the hardware. ``blk_keyslot_manager``, while specifying the number of keyslots supported by
the hardware.
The device driver also needs to tell the KSM how to actually manipulate the The device driver also needs to tell the KSM how to actually manipulate the
IE hardware in the device to do things like programming the crypto key into IE hardware in the device to do things like programming the crypto key into
@ -202,10 +203,9 @@ needs each and every of its keyslots to be reprogrammed with the key it
"should have" at the point in time when the function is called. This is useful "should have" at the point in time when the function is called. This is useful
e.g. if a device loses all its keys on runtime power down/up. e.g. if a device loses all its keys on runtime power down/up.
``blk_ksm_destroy`` should be called to free up all resources used by a keyslot If the driver used ``blk_ksm_init`` instead of ``devm_blk_ksm_init``, then
manager upon ``blk_ksm_init``, once the ``blk_keyslot_manager`` is no longer ``blk_ksm_destroy`` should be called to free up all resources used by a
needed. ``blk_keyslot_manager`` once it is no longer needed.
Layered Devices Layered Devices
=============== ===============

View File

@ -31,7 +31,7 @@ from load_config import loadConfig
# -- General configuration ------------------------------------------------ # -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here. # If your documentation needs a minimal Sphinx version, state it here.
needs_sphinx = '1.3' needs_sphinx = '1.7'
# Add any Sphinx extension module names here, as strings. They can be # Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
@ -49,8 +49,7 @@ extensions = ['kerneldoc', 'rstFlatTable', 'kernel_include',
if major >= 3: if major >= 3:
sys.stderr.write('''WARNING: The kernel documentation build process sys.stderr.write('''WARNING: The kernel documentation build process
support for Sphinx v3.0 and above is brand new. Be prepared for support for Sphinx v3.0 and above is brand new. Be prepared for
possible issues in the generated output. possible issues in the generated output.\n''')
''')
if (major > 3) or (minor > 0 or patch >= 2): if (major > 3) or (minor > 0 or patch >= 2):
# Sphinx c function parser is more pedantic with regards to type # Sphinx c function parser is more pedantic with regards to type
# checking. Due to that, having macros at c:function cause problems. # checking. Due to that, having macros at c:function cause problems.
@ -112,19 +111,12 @@ if major >= 3:
else: else:
extensions.append('cdomain') extensions.append('cdomain')
if major == 1 and minor < 7:
sys.stderr.write('WARNING: Sphinx 1.7 or greater will be required as of '
'the 5.12 release\n')
# Ensure that autosectionlabel will produce unique names # Ensure that autosectionlabel will produce unique names
autosectionlabel_prefix_document = True autosectionlabel_prefix_document = True
autosectionlabel_maxdepth = 2 autosectionlabel_maxdepth = 2
# The name of the math extension changed on Sphinx 1.4 extensions.append("sphinx.ext.imgmath")
if (major == 1 and minor > 3) or (major > 1):
extensions.append("sphinx.ext.imgmath")
else:
extensions.append("sphinx.ext.pngmath")
# Add any paths that contain templates here, relative to this directory. # Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates'] templates_path = ['_templates']
@ -375,71 +367,9 @@ if cjk_cmd.find("Noto Sans CJK SC") >= 0:
''' '''
# Fix reference escape troubles with Sphinx 1.4.x # Fix reference escape troubles with Sphinx 1.4.x
if major == 1 and minor > 3: if major == 1:
latex_elements['preamble'] += '\\renewcommand*{\\DUrole}[2]{ #2 }\n' latex_elements['preamble'] += '\\renewcommand*{\\DUrole}[2]{ #2 }\n'
if major == 1 and minor <= 4:
latex_elements['preamble'] += '\\usepackage[margin=0.5in, top=1in, bottom=1in]{geometry}'
elif major == 1 and (minor > 5 or (minor == 5 and patch >= 3)):
latex_elements['sphinxsetup'] = 'hmargin=0.5in, vmargin=1in'
latex_elements['preamble'] += '\\fvset{fontsize=auto}\n'
# Customize notice background colors on Sphinx < 1.6:
if major == 1 and minor < 6:
latex_elements['preamble'] += '''
\\usepackage{ifthen}
% Put notes in color and let them be inside a table
\\definecolor{NoteColor}{RGB}{204,255,255}
\\definecolor{WarningColor}{RGB}{255,204,204}
\\definecolor{AttentionColor}{RGB}{255,255,204}
\\definecolor{ImportantColor}{RGB}{192,255,204}
\\definecolor{OtherColor}{RGB}{204,204,204}
\\newlength{\\mynoticelength}
\\makeatletter\\newenvironment{coloredbox}[1]{%
\\setlength{\\fboxrule}{1pt}
\\setlength{\\fboxsep}{7pt}
\\setlength{\\mynoticelength}{\\linewidth}
\\addtolength{\\mynoticelength}{-2\\fboxsep}
\\addtolength{\\mynoticelength}{-2\\fboxrule}
\\begin{lrbox}{\\@tempboxa}\\begin{minipage}{\\mynoticelength}}{\\end{minipage}\\end{lrbox}%
\\ifthenelse%
{\\equal{\\py@noticetype}{note}}%
{\\colorbox{NoteColor}{\\usebox{\\@tempboxa}}}%
{%
\\ifthenelse%
{\\equal{\\py@noticetype}{warning}}%
{\\colorbox{WarningColor}{\\usebox{\\@tempboxa}}}%
{%
\\ifthenelse%
{\\equal{\\py@noticetype}{attention}}%
{\\colorbox{AttentionColor}{\\usebox{\\@tempboxa}}}%
{%
\\ifthenelse%
{\\equal{\\py@noticetype}{important}}%
{\\colorbox{ImportantColor}{\\usebox{\\@tempboxa}}}%
{\\colorbox{OtherColor}{\\usebox{\\@tempboxa}}}%
}%
}%
}%
}\\makeatother
\\makeatletter
\\renewenvironment{notice}[2]{%
\\def\\py@noticetype{#1}
\\begin{coloredbox}{#1}
\\bf\\it
\\par\\strong{#2}
\\csname py@noticestart@#1\\endcsname
}
{
\\csname py@noticeend@\\py@noticetype\\endcsname
\\end{coloredbox}
}
\\makeatother
'''
# With Sphinx 1.6, it is possible to change the Bg color directly # With Sphinx 1.6, it is possible to change the Bg color directly
# by using: # by using:
# \definecolor{sphinxnoteBgColor}{RGB}{204,255,255} # \definecolor{sphinxnoteBgColor}{RGB}{204,255,255}

View File

@ -526,46 +526,6 @@ for the kernel vs the device.
If you don't understand how cache line coherency works between a processor and If you don't understand how cache line coherency works between a processor and
an I/O device, you should not be using this part of the API. an I/O device, you should not be using this part of the API.
::
void *
dma_alloc_noncoherent(struct device *dev, size_t size,
dma_addr_t *dma_handle, enum dma_data_direction dir,
gfp_t gfp)
This routine allocates a region of <size> bytes of consistent memory. It
returns a pointer to the allocated region (in the processor's virtual address
space) or NULL if the allocation failed. The returned memory may or may not
be in the kernel direct mapping. Drivers must not call virt_to_page on
the returned memory region.
It also returns a <dma_handle> which may be cast to an unsigned integer the
same width as the bus and given to the device as the DMA address base of
the region.
The dir parameter specified if data is read and/or written by the device,
see dma_map_single() for details.
The gfp parameter allows the caller to specify the ``GFP_`` flags (see
kmalloc()) for the allocation, but rejects flags used to specify a memory
zone such as GFP_DMA or GFP_HIGHMEM.
Before giving the memory to the device, dma_sync_single_for_device() needs
to be called, and before reading memory written by the device,
dma_sync_single_for_cpu(), just like for streaming DMA mappings that are
reused.
::
void
dma_free_noncoherent(struct device *dev, size_t size, void *cpu_addr,
dma_addr_t dma_handle, enum dma_data_direction dir)
Free a region of memory previously allocated using dma_alloc_noncoherent().
dev, size and dma_handle and dir must all be the same as those passed into
dma_alloc_noncoherent(). cpu_addr must be the virtual address returned by
dma_alloc_noncoherent().
:: ::
struct page * struct page *
@ -600,9 +560,29 @@ reused.
dma_addr_t dma_handle, enum dma_data_direction dir) dma_addr_t dma_handle, enum dma_data_direction dir)
Free a region of memory previously allocated using dma_alloc_pages(). Free a region of memory previously allocated using dma_alloc_pages().
dev, size and dma_handle and dir must all be the same as those passed into dev, size, dma_handle and dir must all be the same as those passed into
dma_alloc_noncoherent(). page must be the pointer returned by dma_alloc_pages(). page must be the pointer returned by dma_alloc_pages().
dma_alloc_pages().
::
void *
dma_alloc_noncoherent(struct device *dev, size_t size,
dma_addr_t *dma_handle, enum dma_data_direction dir,
gfp_t gfp)
This routine is a convenient wrapper around dma_alloc_pages that returns the
kernel virtual address for the allocated memory instead of the page structure.
::
void
dma_free_noncoherent(struct device *dev, size_t size, void *cpu_addr,
dma_addr_t dma_handle, enum dma_data_direction dir)
Free a region of memory previously allocated using dma_alloc_noncoherent().
dev, size, dma_handle and dir must all be the same as those passed into
dma_alloc_noncoherent(). cpu_addr must be the virtual address returned by
dma_alloc_noncoherent().
:: ::

View File

@ -19,11 +19,8 @@ User Space Memory Access
Memory Allocation Controls Memory Allocation Controls
========================== ==========================
Functions which need to allocate memory often use GFP flags to express .. kernel-doc:: include/linux/gfp.h
how that memory should be allocated. The GFP acronym stands for "get :internal:
free pages", the underlying memory allocation function. Not every GFP
flag is allowed to every function which may allocate memory. Most
users will want to use a plain ``GFP_KERNEL``.
.. kernel-doc:: include/linux/gfp.h .. kernel-doc:: include/linux/gfp.h
:doc: Page mobility and placement hints :doc: Page mobility and placement hints

View File

@ -28,8 +28,8 @@ Symmetric Key Cipher Request Handle
Single Block Cipher API Single Block Cipher API
----------------------- -----------------------
.. kernel-doc:: include/linux/crypto.h .. kernel-doc:: include/crypto/internal/cipher.h
:doc: Single Block Cipher API :doc: Single Block Cipher API
.. kernel-doc:: include/linux/crypto.h .. kernel-doc:: include/crypto/internal/cipher.h
:functions: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one :functions: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one

View File

@ -22,6 +22,7 @@ whole; patches welcome!
ubsan ubsan
kmemleak kmemleak
kcsan kcsan
kfence
gdb-kernel-debugging gdb-kernel-debugging
kgdb kgdb
kselftest kselftest

View File

@ -147,16 +147,15 @@ negative values to distinguish between different kinds of inaccessible memory
like redzones or freed memory (see mm/kasan/kasan.h). like redzones or freed memory (see mm/kasan/kasan.h).
In the report above the arrows point to the shadow byte 03, which means that In the report above the arrows point to the shadow byte 03, which means that
the accessed address is partially accessible. the accessed address is partially accessible. For tag-based KASAN modes this
last report section shows the memory tags around the accessed address
For tag-based KASAN this last report section shows the memory tags around the (see the `Implementation details`_ section).
accessed address (see `Implementation details`_ section).
Boot parameters Boot parameters
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Hardware tag-based KASAN mode (see the section about different mode below) is Hardware tag-based KASAN mode (see the section about various modes below) is
intended for use in production as a security mitigation. Therefore it supports intended for use in production as a security mitigation. Therefore, it supports
boot parameters that allow to disable KASAN competely or otherwise control boot parameters that allow to disable KASAN competely or otherwise control
particular KASAN features. particular KASAN features.
@ -166,7 +165,8 @@ particular KASAN features.
traces collection (default: ``on``). traces collection (default: ``on``).
- ``kasan.fault=report`` or ``=panic`` controls whether to only print a KASAN - ``kasan.fault=report`` or ``=panic`` controls whether to only print a KASAN
report or also panic the kernel (default: ``report``). report or also panic the kernel (default: ``report``). Note, that tag
checking gets disabled after the first reported bug.
For developers For developers
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
@ -289,6 +289,16 @@ reserved to tag freed memory regions.
Hardware tag-based KASAN currently only supports tagging of Hardware tag-based KASAN currently only supports tagging of
kmem_cache_alloc/kmalloc and page_alloc memory. kmem_cache_alloc/kmalloc and page_alloc memory.
If the hardware doesn't support MTE (pre ARMv8.5), hardware tag-based KASAN
won't be enabled. In this case all boot parameters are ignored.
Note, that enabling CONFIG_KASAN_HW_TAGS always results in in-kernel TBI being
enabled. Even when kasan.mode=off is provided, or when the hardware doesn't
support MTE (but supports TBI).
Hardware tag-based KASAN only reports the first found bug. After that MTE tag
checking gets disabled.
What memory accesses are sanitised by KASAN? What memory accesses are sanitised by KASAN?
-------------------------------------------- --------------------------------------------
@ -352,17 +362,17 @@ unmapped. This will require changes in arch-specific code.
This allows ``VMAP_STACK`` support on x86, and can simplify support of This allows ``VMAP_STACK`` support on x86, and can simplify support of
architectures that do not have a fixed module region. architectures that do not have a fixed module region.
CONFIG_KASAN_KUNIT_TEST & CONFIG_TEST_KASAN_MODULE CONFIG_KASAN_KUNIT_TEST and CONFIG_KASAN_MODULE_TEST
-------------------------------------------------- ----------------------------------------------------
KASAN tests consist on two parts: KASAN tests consist of two parts:
1. Tests that are integrated with the KUnit Test Framework. Enabled with 1. Tests that are integrated with the KUnit Test Framework. Enabled with
``CONFIG_KASAN_KUNIT_TEST``. These tests can be run and partially verified ``CONFIG_KASAN_KUNIT_TEST``. These tests can be run and partially verified
automatically in a few different ways, see the instructions below. automatically in a few different ways, see the instructions below.
2. Tests that are currently incompatible with KUnit. Enabled with 2. Tests that are currently incompatible with KUnit. Enabled with
``CONFIG_TEST_KASAN_MODULE`` and can only be run as a module. These tests can ``CONFIG_KASAN_MODULE_TEST`` and can only be run as a module. These tests can
only be verified manually, by loading the kernel module and inspecting the only be verified manually, by loading the kernel module and inspecting the
kernel log for KASAN reports. kernel log for KASAN reports.

View File

@ -0,0 +1,298 @@
.. SPDX-License-Identifier: GPL-2.0
.. Copyright (C) 2020, Google LLC.
Kernel Electric-Fence (KFENCE)
==============================
Kernel Electric-Fence (KFENCE) is a low-overhead sampling-based memory safety
error detector. KFENCE detects heap out-of-bounds access, use-after-free, and
invalid-free errors.
KFENCE is designed to be enabled in production kernels, and has near zero
performance overhead. Compared to KASAN, KFENCE trades performance for
precision. The main motivation behind KFENCE's design, is that with enough
total uptime KFENCE will detect bugs in code paths not typically exercised by
non-production test workloads. One way to quickly achieve a large enough total
uptime is when the tool is deployed across a large fleet of machines.
Usage
-----
To enable KFENCE, configure the kernel with::
CONFIG_KFENCE=y
To build a kernel with KFENCE support, but disabled by default (to enable, set
``kfence.sample_interval`` to non-zero value), configure the kernel with::
CONFIG_KFENCE=y
CONFIG_KFENCE_SAMPLE_INTERVAL=0
KFENCE provides several other configuration options to customize behaviour (see
the respective help text in ``lib/Kconfig.kfence`` for more info).
Tuning performance
~~~~~~~~~~~~~~~~~~
The most important parameter is KFENCE's sample interval, which can be set via
the kernel boot parameter ``kfence.sample_interval`` in milliseconds. The
sample interval determines the frequency with which heap allocations will be
guarded by KFENCE. The default is configurable via the Kconfig option
``CONFIG_KFENCE_SAMPLE_INTERVAL``. Setting ``kfence.sample_interval=0``
disables KFENCE.
The KFENCE memory pool is of fixed size, and if the pool is exhausted, no
further KFENCE allocations occur. With ``CONFIG_KFENCE_NUM_OBJECTS`` (default
255), the number of available guarded objects can be controlled. Each object
requires 2 pages, one for the object itself and the other one used as a guard
page; object pages are interleaved with guard pages, and every object page is
therefore surrounded by two guard pages.
The total memory dedicated to the KFENCE memory pool can be computed as::
( #objects + 1 ) * 2 * PAGE_SIZE
Using the default config, and assuming a page size of 4 KiB, results in
dedicating 2 MiB to the KFENCE memory pool.
Note: On architectures that support huge pages, KFENCE will ensure that the
pool is using pages of size ``PAGE_SIZE``. This will result in additional page
tables being allocated.
Error reports
~~~~~~~~~~~~~
A typical out-of-bounds access looks like this::
==================================================================
BUG: KFENCE: out-of-bounds read in test_out_of_bounds_read+0xa3/0x22b
Out-of-bounds read at 0xffffffffb672efff (1B left of kfence-#17):
test_out_of_bounds_read+0xa3/0x22b
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
kfence-#17 [0xffffffffb672f000-0xffffffffb672f01f, size=32, cache=kmalloc-32] allocated by task 507:
test_alloc+0xf3/0x25b
test_out_of_bounds_read+0x98/0x22b
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
CPU: 4 PID: 107 Comm: kunit_try_catch Not tainted 5.8.0-rc6+ #7
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1 04/01/2014
==================================================================
The header of the report provides a short summary of the function involved in
the access. It is followed by more detailed information about the access and
its origin. Note that, real kernel addresses are only shown when using the
kernel command line option ``no_hash_pointers``.
Use-after-free accesses are reported as::
==================================================================
BUG: KFENCE: use-after-free read in test_use_after_free_read+0xb3/0x143
Use-after-free read at 0xffffffffb673dfe0 (in kfence-#24):
test_use_after_free_read+0xb3/0x143
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
kfence-#24 [0xffffffffb673dfe0-0xffffffffb673dfff, size=32, cache=kmalloc-32] allocated by task 507:
test_alloc+0xf3/0x25b
test_use_after_free_read+0x76/0x143
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
freed by task 507:
test_use_after_free_read+0xa8/0x143
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
CPU: 4 PID: 109 Comm: kunit_try_catch Tainted: G W 5.8.0-rc6+ #7
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1 04/01/2014
==================================================================
KFENCE also reports on invalid frees, such as double-frees::
==================================================================
BUG: KFENCE: invalid free in test_double_free+0xdc/0x171
Invalid free of 0xffffffffb6741000:
test_double_free+0xdc/0x171
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
kfence-#26 [0xffffffffb6741000-0xffffffffb674101f, size=32, cache=kmalloc-32] allocated by task 507:
test_alloc+0xf3/0x25b
test_double_free+0x76/0x171
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
freed by task 507:
test_double_free+0xa8/0x171
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
CPU: 4 PID: 111 Comm: kunit_try_catch Tainted: G W 5.8.0-rc6+ #7
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1 04/01/2014
==================================================================
KFENCE also uses pattern-based redzones on the other side of an object's guard
page, to detect out-of-bounds writes on the unprotected side of the object.
These are reported on frees::
==================================================================
BUG: KFENCE: memory corruption in test_kmalloc_aligned_oob_write+0xef/0x184
Corrupted memory at 0xffffffffb6797ff9 [ 0xac . . . . . . ] (in kfence-#69):
test_kmalloc_aligned_oob_write+0xef/0x184
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
kfence-#69 [0xffffffffb6797fb0-0xffffffffb6797ff8, size=73, cache=kmalloc-96] allocated by task 507:
test_alloc+0xf3/0x25b
test_kmalloc_aligned_oob_write+0x57/0x184
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
CPU: 4 PID: 120 Comm: kunit_try_catch Tainted: G W 5.8.0-rc6+ #7
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1 04/01/2014
==================================================================
For such errors, the address where the corruption occurred as well as the
invalidly written bytes (offset from the address) are shown; in this
representation, '.' denote untouched bytes. In the example above ``0xac`` is
the value written to the invalid address at offset 0, and the remaining '.'
denote that no following bytes have been touched. Note that, real values are
only shown if the kernel was booted with ``no_hash_pointers``; to avoid
information disclosure otherwise, '!' is used instead to denote invalidly
written bytes.
And finally, KFENCE may also report on invalid accesses to any protected page
where it was not possible to determine an associated object, e.g. if adjacent
object pages had not yet been allocated::
==================================================================
BUG: KFENCE: invalid read in test_invalid_access+0x26/0xe0
Invalid read at 0xffffffffb670b00a:
test_invalid_access+0x26/0xe0
kunit_try_run_case+0x51/0x85
kunit_generic_run_threadfn_adapter+0x16/0x30
kthread+0x137/0x160
ret_from_fork+0x22/0x30
CPU: 4 PID: 124 Comm: kunit_try_catch Tainted: G W 5.8.0-rc6+ #7
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1 04/01/2014
==================================================================
DebugFS interface
~~~~~~~~~~~~~~~~~
Some debugging information is exposed via debugfs:
* The file ``/sys/kernel/debug/kfence/stats`` provides runtime statistics.
* The file ``/sys/kernel/debug/kfence/objects`` provides a list of objects
allocated via KFENCE, including those already freed but protected.
Implementation Details
----------------------
Guarded allocations are set up based on the sample interval. After expiration
of the sample interval, the next allocation through the main allocator (SLAB or
SLUB) returns a guarded allocation from the KFENCE object pool (allocation
sizes up to PAGE_SIZE are supported). At this point, the timer is reset, and
the next allocation is set up after the expiration of the interval. To "gate" a
KFENCE allocation through the main allocator's fast-path without overhead,
KFENCE relies on static branches via the static keys infrastructure. The static
branch is toggled to redirect the allocation to KFENCE.
KFENCE objects each reside on a dedicated page, at either the left or right
page boundaries selected at random. The pages to the left and right of the
object page are "guard pages", whose attributes are changed to a protected
state, and cause page faults on any attempted access. Such page faults are then
intercepted by KFENCE, which handles the fault gracefully by reporting an
out-of-bounds access, and marking the page as accessible so that the faulting
code can (wrongly) continue executing (set ``panic_on_warn`` to panic instead).
To detect out-of-bounds writes to memory within the object's page itself,
KFENCE also uses pattern-based redzones. For each object page, a redzone is set
up for all non-object memory. For typical alignments, the redzone is only
required on the unguarded side of an object. Because KFENCE must honor the
cache's requested alignment, special alignments may result in unprotected gaps
on either side of an object, all of which are redzoned.
The following figure illustrates the page layout::
---+-----------+-----------+-----------+-----------+-----------+---
| xxxxxxxxx | O : | xxxxxxxxx | : O | xxxxxxxxx |
| xxxxxxxxx | B : | xxxxxxxxx | : B | xxxxxxxxx |
| x GUARD x | J : RED- | x GUARD x | RED- : J | x GUARD x |
| xxxxxxxxx | E : ZONE | xxxxxxxxx | ZONE : E | xxxxxxxxx |
| xxxxxxxxx | C : | xxxxxxxxx | : C | xxxxxxxxx |
| xxxxxxxxx | T : | xxxxxxxxx | : T | xxxxxxxxx |
---+-----------+-----------+-----------+-----------+-----------+---
Upon deallocation of a KFENCE object, the object's page is again protected and
the object is marked as freed. Any further access to the object causes a fault
and KFENCE reports a use-after-free access. Freed objects are inserted at the
tail of KFENCE's freelist, so that the least recently freed objects are reused
first, and the chances of detecting use-after-frees of recently freed objects
is increased.
Interface
---------
The following describes the functions which are used by allocators as well as
page handling code to set up and deal with KFENCE allocations.
.. kernel-doc:: include/linux/kfence.h
:functions: is_kfence_address
kfence_shutdown_cache
kfence_alloc kfence_free __kfence_free
kfence_ksize kfence_object_start
kfence_handle_page_fault
Related Tools
-------------
In userspace, a similar approach is taken by `GWP-ASan
<http://llvm.org/docs/GwpAsan.html>`_. GWP-ASan also relies on guard pages and
a sampling strategy to detect memory unsafety bugs at scale. KFENCE's design is
directly influenced by GWP-ASan, and can be seen as its kernel sibling. Another
similar but non-sampling approach, that also inspired the name "KFENCE", can be
found in the userspace `Electric Fence Malloc Debugger
<https://linux.die.net/man/3/efence>`_.
In the kernel, several tools exist to debug memory access errors, and in
particular KASAN can detect all bug classes that KFENCE can detect. While KASAN
is more precise, relying on compiler instrumentation, this comes at a
performance cost.
It is worth highlighting that KASAN and KFENCE are complementary, with
different target environments. For instance, KASAN is the better debugging-aid,
where test cases or reproducers exists: due to the lower chance to detect the
error, it would require more effort using KFENCE to debug. Deployments at scale
that cannot afford to enable KASAN, however, would benefit from using KFENCE to
discover bugs due to code paths not exercised by test cases or fuzzers.

View File

@ -13,6 +13,7 @@ KUnit - Unit Testing for the Linux Kernel
api/index api/index
style style
faq faq
tips
What is KUnit? What is KUnit?
============== ==============
@ -88,6 +89,7 @@ How do I use it?
================ ================
* :doc:`start` - for new users of KUnit * :doc:`start` - for new users of KUnit
* :doc:`tips` - for short examples of best practices
* :doc:`usage` - for a more detailed explanation of KUnit features * :doc:`usage` - for a more detailed explanation of KUnit features
* :doc:`api/index` - for the list of KUnit APIs used for testing * :doc:`api/index` - for the list of KUnit APIs used for testing
* :doc:`kunit-tool` - for more information on the kunit_tool helper script * :doc:`kunit-tool` - for more information on the kunit_tool helper script

View File

@ -196,8 +196,9 @@ Now add the following to ``drivers/misc/Kconfig``:
.. code-block:: kconfig .. code-block:: kconfig
config MISC_EXAMPLE_TEST config MISC_EXAMPLE_TEST
bool "Test for my example" tristate "Test for my example" if !KUNIT_ALL_TESTS
depends on MISC_EXAMPLE && KUNIT=y depends on MISC_EXAMPLE && KUNIT=y
default KUNIT_ALL_TESTS
and the following to ``drivers/misc/Makefile``: and the following to ``drivers/misc/Makefile``:
@ -233,5 +234,7 @@ Congrats! You just wrote your first KUnit test!
Next Steps Next Steps
========== ==========
* Check out the :doc:`usage` page for a more * Check out the :doc:`tips` page for tips on
writing idiomatic KUnit tests.
* Optional: see the :doc:`usage` page for a more
in-depth explanation of KUnit. in-depth explanation of KUnit.

View File

@ -0,0 +1,115 @@
.. SPDX-License-Identifier: GPL-2.0
============================
Tips For Writing KUnit Tests
============================
Exiting early on failed expectations
------------------------------------
``KUNIT_EXPECT_EQ`` and friends will mark the test as failed and continue
execution. In some cases, it's unsafe to continue and you can use the
``KUNIT_ASSERT`` variant to exit on failure.
.. code-block:: c
void example_test_user_alloc_function(struct kunit *test)
{
void *object = alloc_some_object_for_me();
/* Make sure we got a valid pointer back. */
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, object);
do_something_with_object(object);
}
Allocating memory
-----------------
Where you would use ``kzalloc``, you should prefer ``kunit_kzalloc`` instead.
KUnit will ensure the memory is freed once the test completes.
This is particularly useful since it lets you use the ``KUNIT_ASSERT_EQ``
macros to exit early from a test without having to worry about remembering to
call ``kfree``.
Example:
.. code-block:: c
void example_test_allocation(struct kunit *test)
{
char *buffer = kunit_kzalloc(test, 16, GFP_KERNEL);
/* Ensure allocation succeeded. */
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buffer);
KUNIT_ASSERT_STREQ(test, buffer, "");
}
Testing static functions
------------------------
If you don't want to expose functions or variables just for testing, one option
is to conditionally ``#include`` the test file at the end of your .c file, e.g.
.. code-block:: c
/* In my_file.c */
static int do_interesting_thing();
#ifdef CONFIG_MY_KUNIT_TEST
#include "my_kunit_test.c"
#endif
Injecting test-only code
------------------------
Similarly to the above, it can be useful to add test-specific logic.
.. code-block:: c
/* In my_file.h */
#ifdef CONFIG_MY_KUNIT_TEST
/* Defined in my_kunit_test.c */
void test_only_hook(void);
#else
void test_only_hook(void) { }
#endif
TODO(dlatypov@google.com): add an example of using ``current->kunit_test`` in
such a hook when it's not only updated for ``CONFIG_KASAN=y``.
Customizing error messages
--------------------------
Each of the ``KUNIT_EXPECT`` and ``KUNIT_ASSERT`` macros have a ``_MSG`` variant.
These take a format string and arguments to provide additional context to the automatically generated error messages.
.. code-block:: c
char some_str[41];
generate_sha1_hex_string(some_str);
/* Before. Not easy to tell why the test failed. */
KUNIT_EXPECT_EQ(test, strlen(some_str), 40);
/* After. Now we see the offending string. */
KUNIT_EXPECT_EQ_MSG(test, strlen(some_str), 40, "some_str='%s'", some_str);
Alternatively, one can take full control over the error message by using ``KUNIT_FAIL()``, e.g.
.. code-block:: c
/* Before */
KUNIT_EXPECT_EQ(test, some_setup_function(), 0);
/* After: full control over the failure message. */
if (some_setup_function())
KUNIT_FAIL(test, "Failed to setup thing for testing");
Next Steps
==========
* Optional: see the :doc:`usage` page for a more
in-depth explanation of KUnit.

View File

@ -10,7 +10,7 @@ DT_SCHEMA_MIN_VERSION = 2020.8.1
PHONY += check_dtschema_version PHONY += check_dtschema_version
check_dtschema_version: check_dtschema_version:
@{ echo $(DT_SCHEMA_MIN_VERSION); \ @{ echo $(DT_SCHEMA_MIN_VERSION); \
$(DT_DOC_CHECKER) --version 2>/dev/null || echo 0; } | sort -VC || \ $(DT_DOC_CHECKER) --version 2>/dev/null || echo 0; } | sort -Vc >/dev/null || \
{ echo "ERROR: dtschema minimum version is v$(DT_SCHEMA_MIN_VERSION)" >&2; false; } { echo "ERROR: dtschema minimum version is v$(DT_SCHEMA_MIN_VERSION)" >&2; false; }
quiet_cmd_extract_ex = DTEX $@ quiet_cmd_extract_ex = DTEX $@
@ -78,10 +78,10 @@ $(obj)/processed-schema.json: $(DT_SCHEMA_FILES) check_dtschema_version FORCE
endif endif
extra-$(CHECK_DT_BINDING) += processed-schema-examples.json always-$(CHECK_DT_BINDING) += processed-schema-examples.json
extra-$(CHECK_DTBS) += processed-schema.json always-$(CHECK_DTBS) += processed-schema.json
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) always-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES)) always-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of # Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
# build artifacts here before they are processed by scripts/Makefile.clean # build artifacts here before they are processed by scripts/Makefile.clean

View File

@ -91,7 +91,8 @@ SHDWC SAMA5D2-Compatible Shutdown Controller
1) shdwc node 1) shdwc node
required properties: required properties:
- compatible: should be "atmel,sama5d2-shdwc" or "microchip,sam9x60-shdwc". - compatible: should be "atmel,sama5d2-shdwc", "microchip,sam9x60-shdwc" or
"microchip,sama7g5-shdwc"
- reg: should contain registers location and length - reg: should contain registers location and length
- clocks: phandle to input clock. - clocks: phandle to input clock.
- #address-cells: should be one. The cell is the wake-up input index. - #address-cells: should be one. The cell is the wake-up input index.
@ -103,7 +104,7 @@ optional properties:
microseconds. It's usually a board-related property. microseconds. It's usually a board-related property.
- atmel,wakeup-rtc-timer: boolean to enable Real-Time Clock wake-up. - atmel,wakeup-rtc-timer: boolean to enable Real-Time Clock wake-up.
optional microchip,sam9x60-shdwc properties: optional microchip,sam9x60-shdwc or microchip,sama7g5-shdwc properties:
- atmel,wakeup-rtt-timer: boolean to enable Real-time Timer Wake-up. - atmel,wakeup-rtt-timer: boolean to enable Real-time Timer Wake-up.
The node contains child nodes for each wake-up input that the platform uses. The node contains child nodes for each wake-up input that the platform uses.

View File

@ -34,9 +34,12 @@ its hardware characteristcs.
Program Flow Trace Macrocell: Program Flow Trace Macrocell:
"arm,coresight-etm3x", "arm,primecell"; "arm,coresight-etm3x", "arm,primecell";
- Embedded Trace Macrocell (version 4.x): - Embedded Trace Macrocell (version 4.x), with memory mapped access.
"arm,coresight-etm4x", "arm,primecell"; "arm,coresight-etm4x", "arm,primecell";
- Embedded Trace Macrocell (version 4.x), with system register access only.
"arm,coresight-etm4x-sysreg";
- Coresight programmable Replicator : - Coresight programmable Replicator :
"arm,coresight-dynamic-replicator", "arm,primecell"; "arm,coresight-dynamic-replicator", "arm,primecell";

View File

@ -80,6 +80,11 @@ Required properties:
- offset: offset address inside the syscon block - offset: offset address inside the syscon block
Optional properties:
- marvell,pwm-offset: offset address of PWM duration control registers inside
the syscon block
Example: Example:
ap_syscon: system-controller@6f4000 { ap_syscon: system-controller@6f4000 {
compatible = "syscon", "simple-mfd"; compatible = "syscon", "simple-mfd";
@ -101,6 +106,9 @@ ap_syscon: system-controller@6f4000 {
gpio-controller; gpio-controller;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-ranges = <&ap_pinctrl 0 0 19>; gpio-ranges = <&ap_pinctrl 0 0 19>;
marvell,pwm-offset = <0x10c0>;
#pwm-cells = <2>;
clocks = <&ap_clk 3>;
}; };
}; };

View File

@ -132,6 +132,7 @@ properties:
- enum: - enum:
- friendlyarm,nanopc-t4 - friendlyarm,nanopc-t4
- friendlyarm,nanopi-m4 - friendlyarm,nanopi-m4
- friendlyarm,nanopi-m4b
- friendlyarm,nanopi-neo4 - friendlyarm,nanopi-neo4
- const: rockchip,rk3399 - const: rockchip,rk3399

View File

@ -30,8 +30,8 @@ properties:
Interrupts can be used to notify the completion of cache operations. Interrupts can be used to notify the completion of cache operations.
The number of interrupts should match to the number of CPU cores. The number of interrupts should match to the number of CPU cores.
The specified interrupts correspond to CPU0, CPU1, ... in this order. The specified interrupts correspond to CPU0, CPU1, ... in this order.
minItems: 1 minItems: 1
maxItems: 4 maxItems: 4
cache-unified: true cache-unified: true

View File

@ -61,6 +61,7 @@ properties:
maxItems: 8 maxItems: 8
calxeda,sgpio-gpio: calxeda,sgpio-gpio:
maxItems: 3
description: | description: |
phandle-gpio bank, bit offset, and default on or off, which indicates phandle-gpio bank, bit offset, and default on or off, which indicates
that the driver supports SGPIO indicator lights using the indicated that the driver supports SGPIO indicator lights using the indicated

View File

@ -0,0 +1,77 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/auxdisplay/holtek,ht16k33.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Holtek HT16K33 RAM mapping 16*8 LED controller with keyscan
maintainers:
- Robin van der Gracht <robin@protonic.nl>
allOf:
- $ref: "/schemas/input/matrix-keymap.yaml#"
properties:
compatible:
const: holtek,ht16k33
reg:
maxItems: 1
refresh-rate-hz:
maxItems: 1
description: Display update interval in Hertz
interrupts:
maxItems: 1
debounce-delay-ms:
maxItems: 1
description: Debouncing interval time in milliseconds
linux,keymap: true
linux,no-autorepeat:
description: Disable keyrepeat
default-brightness-level:
minimum: 1
maximum: 16
default: 16
description: Initial brightness level
required:
- compatible
- reg
- refresh-rate-hz
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/input/input.h>
i2c1 {
#address-cells = <1>;
#size-cells = <0>;
ht16k33: ht16k33@70 {
compatible = "holtek,ht16k33";
reg = <0x70>;
refresh-rate-hz = <20>;
interrupt-parent = <&gpio4>;
interrupts = <5 (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING)>;
debounce-delay-ms = <50>;
linux,keymap = <MATRIX_KEY(2, 0, KEY_F6)>,
<MATRIX_KEY(3, 0, KEY_F8)>,
<MATRIX_KEY(4, 0, KEY_F10)>,
<MATRIX_KEY(5, 0, KEY_F4)>,
<MATRIX_KEY(6, 0, KEY_F2)>,
<MATRIX_KEY(2, 1, KEY_F5)>,
<MATRIX_KEY(3, 1, KEY_F7)>,
<MATRIX_KEY(4, 1, KEY_F9)>,
<MATRIX_KEY(5, 1, KEY_F3)>,
<MATRIX_KEY(6, 1, KEY_F1)>;
};
};

View File

@ -20,6 +20,7 @@ properties:
compatible: compatible:
enum: enum:
- adi,axi-clkgen-2.00.a - adi,axi-clkgen-2.00.a
- adi,zynqmp-axi-clkgen-2.00.a
clocks: clocks:
description: description:

View File

@ -41,6 +41,8 @@ properties:
- allwinner,sun50i-h5-ccu - allwinner,sun50i-h5-ccu
- allwinner,sun50i-h6-ccu - allwinner,sun50i-h6-ccu
- allwinner,sun50i-h6-r-ccu - allwinner,sun50i-h6-r-ccu
- allwinner,sun50i-h616-ccu
- allwinner,sun50i-h616-r-ccu
- allwinner,suniv-f1c100s-ccu - allwinner,suniv-f1c100s-ccu
- nextthing,gr8-ccu - nextthing,gr8-ccu
@ -82,6 +84,7 @@ if:
- allwinner,sun50i-a64-r-ccu - allwinner,sun50i-a64-r-ccu
- allwinner,sun50i-a100-r-ccu - allwinner,sun50i-a100-r-ccu
- allwinner,sun50i-h6-r-ccu - allwinner,sun50i-h6-r-ccu
- allwinner,sun50i-h616-r-ccu
then: then:
properties: properties:
@ -100,6 +103,7 @@ else:
enum: enum:
- allwinner,sun50i-a100-ccu - allwinner,sun50i-a100-ccu
- allwinner,sun50i-h6-ccu - allwinner,sun50i-h6-ccu
- allwinner,sun50i-h616-ccu
then: then:
properties: properties:

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
%YAML 1.2 %YAML 1.2
--- ---
$id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-usb-clocks.yaml# $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-usb-clks.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Allwinner A80 USB Clock Controller Device Tree Bindings title: Allwinner A80 USB Clock Controller Device Tree Bindings
@ -18,7 +18,7 @@ properties:
const: 1 const: 1
compatible: compatible:
const: allwinner,sun9i-a80-usb-clocks const: allwinner,sun9i-a80-usb-clks
reg: reg:
maxItems: 1 maxItems: 1

View File

@ -66,8 +66,8 @@ properties:
- arm,syscon-icst525-integratorcp-cm-mem - arm,syscon-icst525-integratorcp-cm-mem
- arm,integrator-cm-auxosc - arm,integrator-cm-auxosc
- arm,versatile-cm-auxosc - arm,versatile-cm-auxosc
- arm,impd-vco1 - arm,impd1-vco1
- arm,impd-vco2 - arm,impd1-vco2
clocks: clocks:
description: Parent clock for the ICST VCO description: Parent clock for the ICST VCO

View File

@ -22,6 +22,7 @@ properties:
const: canaan,k210-clk const: canaan,k210-clk
clocks: clocks:
maxItems: 1
description: description:
Phandle of the SoC 26MHz fixed-rate oscillator clock. Phandle of the SoC 26MHz fixed-rate oscillator clock.

View File

@ -1,55 +0,0 @@
* Clock and reset bindings for CSR atlas7
Required properties:
- compatible: Should be "sirf,atlas7-car"
- reg: Address and length of the register set
- #clock-cells: Should be <1>
- #reset-cells: Should be <1>
The clock consumer should specify the desired clock by having the clock
ID in its "clocks" phandle cell.
The ID list atlas7_clks defined in drivers/clk/sirf/clk-atlas7.c
The reset consumer should specify the desired reset by having the reset
ID in its "reset" phandle cell.
The ID list atlas7_reset_unit defined in drivers/clk/sirf/clk-atlas7.c
Examples: Clock and reset controller node:
car: clock-controller@18620000 {
compatible = "sirf,atlas7-car";
reg = <0x18620000 0x1000>;
#clock-cells = <1>;
#reset-cells = <1>;
};
Examples: Consumers using clock or reset:
timer@10dc0000 {
compatible = "sirf,macro-tick";
reg = <0x10dc0000 0x1000>;
clocks = <&car 54>;
interrupts = <0 0 0>,
<0 1 0>,
<0 2 0>,
<0 49 0>,
<0 50 0>,
<0 51 0>;
};
uart1: uart@18020000 {
cell-index = <1>;
compatible = "sirf,macro-uart";
reg = <0x18020000 0x1000>;
clocks = <&clks 95>;
interrupts = <0 18 0>;
fifosize = <32>;
};
vpp@13110000 {
compatible = "sirf,prima2-vpp";
reg = <0x13110000 0x10000>;
interrupts = <0 31 0>;
clocks = <&car 85>;
resets = <&car 29>;
};

View File

@ -59,6 +59,12 @@ properties:
minItems: 1 minItems: 1
maxItems: 2 maxItems: 2
idt,xtal-load-femtofarads:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 9000
maximum: 22760
description: Optional load capacitor for XTAL1 and XTAL2
patternProperties: patternProperties:
"^OUT[1-4]$": "^OUT[1-4]$":
type: object type: object

View File

@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Clock bindings for Freescale i.MX27 title: Clock bindings for Freescale i.MX27
maintainers: maintainers:
- Fabio Estevam <fabio.estevam@nxp.com> - Fabio Estevam <festevam@gmail.com>
description: | description: |
The clock consumer should specify the desired clock by having the clock The clock consumer should specify the desired clock by having the clock

View File

@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Clock bindings for Freescale i.MX31 title: Clock bindings for Freescale i.MX31
maintainers: maintainers:
- Fabio Estevam <fabio.estevam@nxp.com> - Fabio Estevam <festevam@gmail.com>
description: | description: |
The clock consumer should specify the desired clock by having the clock The clock consumer should specify the desired clock by having the clock

View File

@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Clock bindings for Freescale i.MX5 title: Clock bindings for Freescale i.MX5
maintainers: maintainers:
- Fabio Estevam <fabio.estevam@nxp.com> - Fabio Estevam <festevam@gmail.com>
description: | description: |
The clock consumer should specify the desired clock by having the clock The clock consumer should specify the desired clock by having the clock

View File

@ -0,0 +1,46 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/intel,easic-n5x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Intel SoCFPGA eASIC N5X platform clock controller binding
maintainers:
- Dinh Nguyen <dinguyen@kernel.org>
description:
The Intel eASIC N5X Clock controller is an integrated clock controller, which
generates and supplies to all modules.
properties:
compatible:
const: intel,easic-n5x-clkmgr
'#clock-cells':
const: 1
reg:
maxItems: 1
clocks:
maxItems: 1
required:
- compatible
- reg
- clocks
- '#clock-cells'
additionalProperties: false
examples:
# Clock controller node:
- |
clkmgr: clock-controller@ffd10000 {
compatible = "intel,easic-n5x-clkmgr";
reg = <0xffd10000 0x1000>;
clocks = <&osc1>;
#clock-cells = <1>;
};
...

View File

@ -0,0 +1,46 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/mstar,msc313-mpll.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MStar/Sigmastar MSC313 MPLL
maintainers:
- Daniel Palmer <daniel@thingy.jp>
description: |
The MStar/SigmaStar MSC313 and later ARMv7 chips have an MPLL block that
takes the external xtal input and multiplies it to create a high
frequency clock and divides that down into a number of clocks that
peripherals use.
properties:
compatible:
const: mstar,msc313-mpll
"#clock-cells":
const: 1
clocks:
maxItems: 1
reg:
maxItems: 1
required:
- compatible
- "#clock-cells"
- clocks
- reg
additionalProperties: false
examples:
- |
mpll@206000 {
compatible = "mstar,msc313-mpll";
reg = <0x206000 0x200>;
#clock-cells = <1>;
clocks = <&xtal>;
};

View File

@ -1,73 +0,0 @@
* Clock bindings for CSR SiRFprimaII
Required properties:
- compatible: Should be "sirf,prima2-clkc"
- reg: Address and length of the register set
- interrupts: Should contain clock controller interrupt
- #clock-cells: Should be <1>
The clock consumer should specify the desired clock by having the clock
ID in its "clocks" phandle cell. The following is a full list of prima2
clocks and IDs.
Clock ID
---------------------------
rtc 0
osc 1
pll1 2
pll2 3
pll3 4
mem 5
sys 6
security 7
dsp 8
gps 9
mf 10
io 11
cpu 12
uart0 13
uart1 14
uart2 15
tsc 16
i2c0 17
i2c1 18
spi0 19
spi1 20
pwmc 21
efuse 22
pulse 23
dmac0 24
dmac1 25
nand 26
audio 27
usp0 28
usp1 29
usp2 30
vip 31
gfx 32
mm 33
lcd 34
vpp 35
mmc01 36
mmc23 37
mmc45 38
usbpll 39
usb0 40
usb1 41
Examples:
clks: clock-controller@88000000 {
compatible = "sirf,prima2-clkc";
reg = <0x88000000 0x1000>;
interrupts = <3>;
#clock-cells = <1>;
};
i2c0: i2c@b00e0000 {
cell-index = <0>;
compatible = "sirf,prima2-i2c";
reg = <0xb00e0000 0x10000>;
interrupts = <24>;
clocks = <&clks 17>;
};

View File

@ -0,0 +1,51 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/qcom,a7pll.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm A7 PLL Binding
maintainers:
- Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
description:
The A7 PLL on the Qualcomm platforms like SDX55 is used to provide high
frequency clock to the CPU.
properties:
compatible:
enum:
- qcom,sdx55-a7pll
reg:
maxItems: 1
'#clock-cells':
const: 0
clocks:
items:
- description: board XO clock
clock-names:
items:
- const: bi_tcxo
required:
- compatible
- reg
- '#clock-cells'
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,rpmh.h>
a7pll: clock@17808000 {
compatible = "qcom,sdx55-a7pll";
reg = <0x17808000 0x1000>;
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-names = "bi_tcxo";
#clock-cells = <0>;
};

View File

@ -0,0 +1,92 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/qcom,gcc-sc7280.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Global Clock & Reset Controller Binding for SC7280
maintainers:
- Taniya Das <tdas@codeaurora.org>
description: |
Qualcomm global clock control module which supports the clocks, resets and
power domains on SC7280.
See also:
- dt-bindings/clock/qcom,gcc-sc7280.h
properties:
compatible:
const: qcom,gcc-sc7280
clocks:
items:
- description: Board XO source
- description: Board active XO source
- description: Sleep clock source
- description: PCIE-0 pipe clock source
- description: PCIE-1 pipe clock source
- description: USF phy rx symbol 0 clock source
- description: USF phy rx symbol 1 clock source
- description: USF phy tx symbol 0 clock source
- description: USB30 phy wrapper pipe clock source
clock-names:
items:
- const: bi_tcxo
- const: bi_tcxo_ao
- const: sleep_clk
- const: pcie_0_pipe_clk
- const: pcie_1_pipe_clk
- const: ufs_phy_rx_symbol_0_clk
- const: ufs_phy_rx_symbol_1_clk
- const: ufs_phy_tx_symbol_0_clk
- const: usb3_phy_wrapper_gcc_usb30_pipe_clk
'#clock-cells':
const: 1
'#reset-cells':
const: 1
'#power-domain-cells':
const: 1
reg:
maxItems: 1
required:
- compatible
- clocks
- clock-names
- reg
- '#clock-cells'
- '#reset-cells'
- '#power-domain-cells'
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,rpmh.h>
clock-controller@100000 {
compatible = "qcom,gcc-sc7280";
reg = <0x00100000 0x1f0000>;
clocks = <&rpmhcc RPMH_CXO_CLK>,
<&rpmhcc RPMH_CXO_CLK_A>,
<&sleep_clk>,
<&pcie_0_pipe_clk>, <&pcie_1_pipe_clk>,
<&ufs_phy_rx_symbol_0_clk>, <&ufs_phy_rx_symbol_1_clk>,
<&ufs_phy_tx_symbol_0_clk>,
<&usb3_phy_wrapper_gcc_usb30_pipe_clk>;
clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", "pcie_0_pipe_clk",
"pcie_1_pipe_clk", "ufs_phy_rx_symbol_0_clk",
"ufs_phy_rx_symbol_1_clk", "ufs_phy_tx_symbol_0_clk",
"usb3_phy_wrapper_gcc_usb30_pipe_clk";
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
};
...

View File

@ -0,0 +1,76 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/qcom,gcc-sc8180x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Global Clock & Reset Controller Binding for SC8180x
maintainers:
- Bjorn Andersson <bjorn.andersson@linaro.org>
description: |
Qualcomm global clock control module which supports the clocks, resets and
power domains on SC8180x.
See also:
- dt-bindings/clock/qcom,gcc-sc8180x.h
properties:
compatible:
const: qcom,gcc-sc8180x
clocks:
items:
- description: Board XO source
- description: Board active XO source
- description: Sleep clock source
clock-names:
items:
- const: bi_tcxo
- const: bi_tcxo_ao
- const: sleep_clk
'#clock-cells':
const: 1
'#reset-cells':
const: 1
'#power-domain-cells':
const: 1
reg:
maxItems: 1
protected-clocks:
description:
Protected clock specifier list as per common clock binding.
required:
- compatible
- clocks
- clock-names
- reg
- '#clock-cells'
- '#reset-cells'
- '#power-domain-cells'
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,rpmh.h>
clock-controller@100000 {
compatible = "qcom,gcc-sc8180x";
reg = <0x00100000 0x1f0000>;
clocks = <&rpmhcc RPMH_CXO_CLK>,
<&rpmhcc RPMH_CXO_CLK_A>,
<&sleep_clk>;
clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
};
...

View File

@ -0,0 +1,96 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/qcom,gcc-sm8350.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Global Clock & Reset Controller Binding for SM8350
maintainers:
- Vinod Koul <vkoul@kernel.org>
description: |
Qualcomm global clock control module which supports the clocks, resets and
power domains on SM8350.
See also:
- dt-bindings/clock/qcom,gcc-sm8350.h
properties:
compatible:
const: qcom,gcc-sm8350
clocks:
items:
- description: Board XO source
- description: Sleep clock source
- description: PLL test clock source (Optional clock)
- description: PCIE 0 Pipe clock source (Optional clock)
- description: PCIE 1 Pipe clock source (Optional clock)
- description: UFS card Rx symbol 0 clock source (Optional clock)
- description: UFS card Rx symbol 1 clock source (Optional clock)
- description: UFS card Tx symbol 0 clock source (Optional clock)
- description: UFS phy Rx symbol 0 clock source (Optional clock)
- description: UFS phy Rx symbol 1 clock source (Optional clock)
- description: UFS phy Tx symbol 0 clock source (Optional clock)
- description: USB3 phy wrapper pipe clock source (Optional clock)
- description: USB3 phy sec pipe clock source (Optional clock)
minItems: 2
maxItems: 13
clock-names:
items:
- const: bi_tcxo
- const: sleep_clk
- const: core_bi_pll_test_se # Optional clock
- const: pcie_0_pipe_clk # Optional clock
- const: pcie_1_pipe_clk # Optional clock
- const: ufs_card_rx_symbol_0_clk # Optional clock
- const: ufs_card_rx_symbol_1_clk # Optional clock
- const: ufs_card_tx_symbol_0_clk # Optional clock
- const: ufs_phy_rx_symbol_0_clk # Optional clock
- const: ufs_phy_rx_symbol_1_clk # Optional clock
- const: ufs_phy_tx_symbol_0_clk # Optional clock
- const: usb3_phy_wrapper_gcc_usb30_pipe_clk # Optional clock
- const: usb3_uni_phy_sec_gcc_usb30_pipe_clk # Optional clock
minItems: 2
maxItems: 13
'#clock-cells':
const: 1
'#reset-cells':
const: 1
'#power-domain-cells':
const: 1
reg:
maxItems: 1
required:
- compatible
- clocks
- clock-names
- reg
- '#clock-cells'
- '#reset-cells'
- '#power-domain-cells'
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,rpmh.h>
clock-controller@100000 {
compatible = "qcom,gcc-sm8350";
reg = <0x00100000 0x1f0000>;
clocks = <&rpmhcc RPMH_CXO_CLK>,
<&sleep_clk>;
clock-names = "bi_tcxo", "sleep_clk";
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
};
...

View File

@ -0,0 +1,76 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/qcom,gpucc-sdm660.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Graphics Clock & Reset Controller Binding for SDM630 and SDM660
maintainers:
- AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
description: |
Qualcomm graphics clock control module which supports the clocks, resets and
power domains on SDM630 and SDM660.
See also dt-bindings/clock/qcom,gpucc-sdm660.h.
properties:
compatible:
enum:
- qcom,gpucc-sdm630
- qcom,gpucc-sdm660
clocks:
items:
- description: Board XO source
- description: GPLL0 main gpu branch
- description: GPLL0 divider gpu branch
clock-names:
items:
- const: xo
- const: gcc_gpu_gpll0_clk
- const: gcc_gpu_gpll0_div_clk
'#clock-cells':
const: 1
'#reset-cells':
const: 1
'#power-domain-cells':
const: 1
reg:
maxItems: 1
required:
- compatible
- reg
- clocks
- clock-names
- '#clock-cells'
- '#reset-cells'
- '#power-domain-cells'
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,gcc-sdm660.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
clock-controller@5065000 {
compatible = "qcom,gpucc-sdm660";
reg = <0x05065000 0x9038>;
clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
<&gcc GCC_GPU_GPLL0_CLK>,
<&gcc GCC_GPU_GPLL0_DIV_CLK>;
clock-names = "xo", "gcc_gpu_gpll0_clk",
"gcc_gpu_gpll0_div_clk";
#clock-cells = <1>;
#power-domain-cells = <1>;
#reset-cells = <1>;
};
...

View File

@ -24,6 +24,8 @@ properties:
- qcom,mmcc-msm8974 - qcom,mmcc-msm8974
- qcom,mmcc-msm8996 - qcom,mmcc-msm8996
- qcom,mmcc-msm8998 - qcom,mmcc-msm8998
- qcom,mmcc-sdm630
- qcom,mmcc-sdm660
clocks: clocks:
items: items:

View File

@ -18,6 +18,8 @@ properties:
compatible: compatible:
enum: enum:
- qcom,sc7180-rpmh-clk - qcom,sc7180-rpmh-clk
- qcom,sc7280-rpmh-clk
- qcom,sc8180x-rpmh-clk
- qcom,sdm845-rpmh-clk - qcom,sdm845-rpmh-clk
- qcom,sdx55-rpmh-clk - qcom,sdx55-rpmh-clk
- qcom,sm8150-rpmh-clk - qcom,sm8150-rpmh-clk

View File

@ -35,6 +35,9 @@ properties:
compatible: compatible:
items: items:
- enum: - enum:
- renesas,r8a774a1-rcar-usb2-clock-sel # RZ/G2M
- renesas,r8a774b1-rcar-usb2-clock-sel # RZ/G2N
- renesas,r8a774e1-rcar-usb2-clock-sel # RZ/G2H
- renesas,r8a7795-rcar-usb2-clock-sel # R-Car H3 - renesas,r8a7795-rcar-usb2-clock-sel # R-Car H3
- renesas,r8a7796-rcar-usb2-clock-sel # R-Car M3-W - renesas,r8a7796-rcar-usb2-clock-sel # R-Car M3-W
- renesas,r8a77961-rcar-usb2-clock-sel # R-Car M3-W+ - renesas,r8a77961-rcar-usb2-clock-sel # R-Car M3-W+

View File

@ -28,6 +28,8 @@ Optional properties:
- clock-frequency: Output frequency to generate. This defines the output - clock-frequency: Output frequency to generate. This defines the output
frequency set during boot. It can be reprogrammed during frequency set during boot. It can be reprogrammed during
runtime through the common clock framework. runtime through the common clock framework.
- silabs,skip-recall: Do not perform NVM->RAM recall operation. It will rely
on hardware loading of RAM from NVM at power on.
Example: Example:
si570: clock-generator@5d { si570: clock-generator@5d {

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