Commit 1f440397 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'docs-6.9' of git://git.lwn.net/linux

Pull documentation updates from Jonathan Corbet:
 "A moderatly busy cycle for development this time around.

   - Some cleanup of the main index page for easier navigation

   - Rework some of the other top-level pages for better readability
     and, with luck, fewer merge conflicts in the future.

   - Submit-checklist improvements, hopefully the first of many.

   - New Italian translations

   - A fair number of kernel-doc fixes and improvements. We have also
     dropped the recommendation to use an old version of Sphinx.

   - A new document from Thorsten on bisection

  ... and lots of fixes and updates"

* tag 'docs-6.9' of git://git.lwn.net/linux: (54 commits)
  docs: verify/bisect: fixes, finetuning, and support for Arch
  docs: Makefile: Add dependency to $(YNL_INDEX) for targets other than htmldocs
  docs: Move ja_JP/howto.rst to ja_JP/process/howto.rst
  docs: submit-checklist: use subheadings
  docs: submit-checklist: structure by category
  docs: new text on bisecting which also covers bug validation
  docs: drop the version constraints for sphinx and dependencies
  docs: kerneldoc-preamble.sty: Remove code for Sphinx <2.4
  docs: Restore "smart quotes" for quotes
  docs/zh_CN: accurate translation of "function"
  docs: Include simplified link titles in main index
  docs: Correct formatting of title in admin-guide/index.rst
  docs: kernel_feat.py: fix build error for missing files
  MAINTAINERS: Set the field name for subsystem profile section
  kasan: Add documentation for CONFIG_KASAN_EXTRA_INFO
  Fixed case issue with 'fault-injection' in documentation
  kernel-doc: handle #if in enums as well
  Documentation: update mailing list addresses
  doc: kerneldoc.py: fix indentation
  scripts/kernel-doc: simplify signature printing
  ...
parents 3749bda2 0c8e9b53
What: /sys/bus/vdpa/drivers_autoprobe What: /sys/bus/vdpa/drivers_autoprobe
Date: March 2020 Date: March 2020
Contact: virtualization@lists.linux-foundation.org Contact: virtualization@lists.linux.dev
Description: Description:
This file determines whether new devices are immediately bound This file determines whether new devices are immediately bound
to a driver after the creation. It initially contains 1, which to a driver after the creation. It initially contains 1, which
...@@ -12,7 +12,7 @@ Description: ...@@ -12,7 +12,7 @@ Description:
What: /sys/bus/vdpa/driver_probe What: /sys/bus/vdpa/driver_probe
Date: March 2020 Date: March 2020
Contact: virtualization@lists.linux-foundation.org Contact: virtualization@lists.linux.dev
Description: Description:
Writing a device name to this file will cause the kernel binds Writing a device name to this file will cause the kernel binds
devices to a compatible driver. devices to a compatible driver.
...@@ -22,7 +22,7 @@ Description: ...@@ -22,7 +22,7 @@ Description:
What: /sys/bus/vdpa/drivers/.../bind What: /sys/bus/vdpa/drivers/.../bind
Date: March 2020 Date: March 2020
Contact: virtualization@lists.linux-foundation.org Contact: virtualization@lists.linux.dev
Description: Description:
Writing a device name to this file will cause the driver to Writing a device name to this file will cause the driver to
attempt to bind to the device. This is useful for overriding attempt to bind to the device. This is useful for overriding
...@@ -30,7 +30,7 @@ Description: ...@@ -30,7 +30,7 @@ Description:
What: /sys/bus/vdpa/drivers/.../unbind What: /sys/bus/vdpa/drivers/.../unbind
Date: March 2020 Date: March 2020
Contact: virtualization@lists.linux-foundation.org Contact: virtualization@lists.linux.dev
Description: Description:
Writing a device name to this file will cause the driver to Writing a device name to this file will cause the driver to
attempt to unbind from the device. This may be useful when attempt to unbind from the device. This may be useful when
...@@ -38,7 +38,7 @@ Description: ...@@ -38,7 +38,7 @@ Description:
What: /sys/bus/vdpa/devices/.../driver_override What: /sys/bus/vdpa/devices/.../driver_override
Date: November 2021 Date: November 2021
Contact: virtualization@lists.linux-foundation.org Contact: virtualization@lists.linux.dev
Description: Description:
This file allows the driver for a device to be specified. This file allows the driver for a device to be specified.
When specified, only a driver with a name matching the value When specified, only a driver with a name matching the value
......
...@@ -111,7 +111,9 @@ $(YNL_INDEX): $(YNL_RST_FILES) ...@@ -111,7 +111,9 @@ $(YNL_INDEX): $(YNL_RST_FILES)
$(YNL_RST_DIR)/%.rst: $(YNL_YAML_DIR)/%.yaml $(YNL_TOOL) $(YNL_RST_DIR)/%.rst: $(YNL_YAML_DIR)/%.yaml $(YNL_TOOL)
$(Q)$(YNL_TOOL) -i $< -o $@ $(Q)$(YNL_TOOL) -i $< -o $@
htmldocs: $(YNL_INDEX) htmldocs texinfodocs latexdocs epubdocs xmldocs: $(YNL_INDEX)
htmldocs:
@$(srctree)/scripts/sphinx-pre-install --version-check @$(srctree)/scripts/sphinx-pre-install --version-check
@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var))) @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
...@@ -176,6 +178,7 @@ refcheckdocs: ...@@ -176,6 +178,7 @@ refcheckdocs:
$(Q)cd $(srctree);scripts/documentation-file-ref-check $(Q)cd $(srctree);scripts/documentation-file-ref-check
cleandocs: cleandocs:
$(Q)rm -f $(YNL_INDEX) $(YNL_RST_FILES)
$(Q)rm -rf $(BUILDDIR) $(Q)rm -rf $(BUILDDIR)
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean $(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean
......
...@@ -318,7 +318,7 @@ Suppose that a previous kvm.sh run left its output in this directory:: ...@@ -318,7 +318,7 @@ Suppose that a previous kvm.sh run left its output in this directory::
tools/testing/selftests/rcutorture/res/2022.11.03-11.26.28 tools/testing/selftests/rcutorture/res/2022.11.03-11.26.28
Then this run can be re-run without rebuilding as follow: Then this run can be re-run without rebuilding as follow::
kvm-again.sh tools/testing/selftests/rcutorture/res/2022.11.03-11.26.28 kvm-again.sh tools/testing/selftests/rcutorture/res/2022.11.03-11.26.28
......
...@@ -262,9 +262,11 @@ Compiling the kernel ...@@ -262,9 +262,11 @@ Compiling the kernel
- Make sure you have at least gcc 5.1 available. - Make sure you have at least gcc 5.1 available.
For more information, refer to :ref:`Documentation/process/changes.rst <changes>`. For more information, refer to :ref:`Documentation/process/changes.rst <changes>`.
- Do a ``make`` to create a compressed kernel image. It is also - Do a ``make`` to create a compressed kernel image. It is also possible to do
possible to do ``make install`` if you have lilo installed to suit the ``make install`` if you have lilo installed or if your distribution has an
kernel makefiles, but you may want to check your particular lilo setup first. install script recognised by the kernel's installer. Most popular
distributions will have a recognized install script. You may want to
check your distribution's setup first.
To do the actual install, you have to be root, but none of the normal To do the actual install, you have to be root, but none of the normal
build should require that. Don't take the name of root in vain. build should require that. Don't take the name of root in vain.
...@@ -301,32 +303,51 @@ Compiling the kernel ...@@ -301,32 +303,51 @@ Compiling the kernel
image (e.g. .../linux/arch/x86/boot/bzImage after compilation) image (e.g. .../linux/arch/x86/boot/bzImage after compilation)
to the place where your regular bootable kernel is found. to the place where your regular bootable kernel is found.
- Booting a kernel directly from a floppy without the assistance of a - Booting a kernel directly from a storage device without the assistance
bootloader such as LILO, is no longer supported. of a bootloader such as LILO or GRUB, is no longer supported in BIOS
(non-EFI systems). On UEFI/EFI systems, however, you can use EFISTUB
If you boot Linux from the hard drive, chances are you use LILO, which which allows the motherboard to boot directly to the kernel.
uses the kernel image as specified in the file /etc/lilo.conf. The On modern workstations and desktops, it's generally recommended to use a
kernel image file is usually /vmlinuz, /boot/vmlinuz, /bzImage or bootloader as difficulties can arise with multiple kernels and secure boot.
/boot/bzImage. To use the new kernel, save a copy of the old image For more details on EFISTUB,
and copy the new image over the old one. Then, you MUST RERUN LILO see "Documentation/admin-guide/efi-stub.rst".
to update the loading map! If you don't, you won't be able to boot
the new kernel image. - It's important to note that as of 2016 LILO (LInux LOader) is no longer in
active development, though as it was extremely popular, it often comes up
Reinstalling LILO is usually a matter of running /sbin/lilo. in documentation. Popular alternatives include GRUB2, rEFInd, Syslinux,
You may wish to edit /etc/lilo.conf to specify an entry for your systemd-boot, or EFISTUB. For various reasons, it's not recommended to use
old kernel image (say, /vmlinux.old) in case the new one does not software that's no longer in active development.
work. See the LILO docs for more information.
- Chances are your distribution includes an install script and running
After reinstalling LILO, you should be all set. Shutdown the system, ``make install`` will be all that's needed. Should that not be the case
you'll have to identify your bootloader and reference its documentation or
configure your EFI.
Legacy LILO Instructions
------------------------
- If you use LILO the kernel images are specified in the file /etc/lilo.conf.
The kernel image file is usually /vmlinuz, /boot/vmlinuz, /bzImage or
/boot/bzImage. To use the new kernel, save a copy of the old image and copy
the new image over the old one. Then, you MUST RERUN LILO to update the
loading map! If you don't, you won't be able to boot the new kernel image.
- Reinstalling LILO is usually a matter of running /sbin/lilo. You may wish
to edit /etc/lilo.conf to specify an entry for your old kernel image
(say, /vmlinux.old) in case the new one does not work. See the LILO docs
for more information.
- After reinstalling LILO, you should be all set. Shutdown the system,
reboot, and enjoy! reboot, and enjoy!
If you ever need to change the default root device, video mode, - If you ever need to change the default root device, video mode, etc. in the
etc. in the kernel image, use your bootloader's boot options kernel image, use your bootloader's boot options where appropriate. No need
where appropriate. No need to recompile the kernel to change to recompile the kernel to change these parameters.
these parameters.
- Reboot with the new kernel and enjoy. - Reboot with the new kernel and enjoy.
If something goes wrong If something goes wrong
----------------------- -----------------------
......
=================================================
The Linux kernel user's and administrator's guide The Linux kernel user's and administrator's guide
================================================= =================================================
...@@ -37,6 +38,7 @@ problems and bugs in particular. ...@@ -37,6 +38,7 @@ problems and bugs in particular.
reporting-issues reporting-issues
reporting-regressions reporting-regressions
quickly-build-trimmed-linux quickly-build-trimmed-linux
verify-bugs-and-bisect-regressions
bug-hunting bug-hunting
bug-bisect bug-bisect
tainted-kernels tainted-kernels
......
...@@ -4668,6 +4668,11 @@ ...@@ -4668,6 +4668,11 @@
may be specified. may be specified.
Format: <port>,<port>.... Format: <port>,<port>....
possible_cpus= [SMP,S390,X86]
Format: <unsigned int>
Set the number of possible CPUs, overriding the
regular discovery mechanisms (such as ACPI/FW, etc).
powersave=off [PPC] This option disables power saving features. powersave=off [PPC] This option disables power saving features.
It specifically disables cpuidle and sets the It specifically disables cpuidle and sets the
platform machine description specific power_save platform machine description specific power_save
......
...@@ -34,7 +34,7 @@ name of the command ('Comm:') that triggered the event:: ...@@ -34,7 +34,7 @@ name of the command ('Comm:') that triggered the event::
You'll find a 'Not tainted: ' there if the kernel was not tainted at the You'll find a 'Not tainted: ' there if the kernel was not tainted at the
time of the event; if it was, then it will print 'Tainted: ' and characters time of the event; if it was, then it will print 'Tainted: ' and characters
either letters or blanks. In above example it looks like this:: either letters or blanks. In the example above it looks like this::
Tainted: P W O Tainted: P W O
...@@ -52,7 +52,7 @@ At runtime, you can query the tainted state by reading ...@@ -52,7 +52,7 @@ At runtime, you can query the tainted state by reading
tainted; any other number indicates the reasons why it is. The easiest way to tainted; any other number indicates the reasons why it is. The easiest way to
decode that number is the script ``tools/debugging/kernel-chktaint``, which your decode that number is the script ``tools/debugging/kernel-chktaint``, which your
distribution might ship as part of a package called ``linux-tools`` or distribution might ship as part of a package called ``linux-tools`` or
``kernel-tools``; if it doesn't you can download the script from ``kernel-tools``; if it doesn't, you can download the script from
`git.kernel.org <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint>`_ `git.kernel.org <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint>`_
and execute it with ``sh kernel-chktaint``, which would print something like and execute it with ``sh kernel-chktaint``, which would print something like
this on the machine that had the statements in the logs that were quoted earlier:: this on the machine that had the statements in the logs that were quoted earlier::
......
...@@ -346,9 +346,9 @@ sys.stderr.write("Using %s theme\n" % html_theme) ...@@ -346,9 +346,9 @@ sys.stderr.write("Using %s theme\n" % html_theme)
html_static_path = ['sphinx-static'] html_static_path = ['sphinx-static']
# If true, Docutils "smart quotes" will be used to convert quotes and dashes # If true, Docutils "smart quotes" will be used to convert quotes and dashes
# to typographically correct entities. This will convert "--" to "—", # to typographically correct entities. However, conversion of "--" to "—"
# which is not always what we want, so disable it. # is not always what we want, so enable only quotes.
smartquotes = False smartquotes_action = 'q'
# Custom sidebar templates, maps document names to template names. # Custom sidebar templates, maps document names to template names.
# Note that the RTD theme ignores this # Note that the RTD theme ignores this
......
...@@ -168,7 +168,7 @@ Available options: ...@@ -168,7 +168,7 @@ Available options:
- --fix - --fix
This is an EXPERIMENTAL feature. If correctable errors exists, a file This is an EXPERIMENTAL feature. If correctable errors exist, a file
<inputfile>.EXPERIMENTAL-checkpatch-fixes is created which has the <inputfile>.EXPERIMENTAL-checkpatch-fixes is created which has the
automatically fixable errors corrected. automatically fixable errors corrected.
...@@ -181,7 +181,7 @@ Available options: ...@@ -181,7 +181,7 @@ Available options:
- --ignore-perl-version - --ignore-perl-version
Override checking of perl version. Runtime errors maybe encountered after Override checking of perl version. Runtime errors may be encountered after
enabling this flag if the perl version does not meet the minimum specified. enabling this flag if the perl version does not meet the minimum specified.
- --codespell - --codespell
......
...@@ -277,6 +277,27 @@ traces point to places in code that interacted with the object but that are not ...@@ -277,6 +277,27 @@ traces point to places in code that interacted with the object but that are not
directly present in the bad access stack trace. Currently, this includes directly present in the bad access stack trace. Currently, this includes
call_rcu() and workqueue queuing. call_rcu() and workqueue queuing.
CONFIG_KASAN_EXTRA_INFO
~~~~~~~~~~~~~~~~~~~~~~~
Enabling CONFIG_KASAN_EXTRA_INFO allows KASAN to record and report more
information. The extra information currently supported is the CPU number and
timestamp at allocation and free. More information can help find the cause of
the bug and correlate the error with other system events, at the cost of using
extra memory to record more information (more cost details in the help text of
CONFIG_KASAN_EXTRA_INFO).
Here is the report with CONFIG_KASAN_EXTRA_INFO enabled (only the
different parts are shown)::
==================================================================
...
Allocated by task 134 on cpu 5 at 229.133855s:
...
Freed by task 136 on cpu 3 at 230.199335s:
...
==================================================================
Implementation details Implementation details
---------------------- ----------------------
......
...@@ -341,6 +341,51 @@ Typedefs with function prototypes can also be documented:: ...@@ -341,6 +341,51 @@ Typedefs with function prototypes can also be documented::
*/ */
typedef void (*type_name)(struct v4l2_ctrl *arg1, void *arg2); typedef void (*type_name)(struct v4l2_ctrl *arg1, void *arg2);
Object-like macro documentation
-------------------------------
Object-like macros are distinct from function-like macros. They are
differentiated by whether the macro name is immediately followed by a
left parenthesis ('(') for function-like macros or not followed by one
for object-like macros.
Function-like macros are handled like functions by ``scripts/kernel-doc``.
They may have a parameter list. Object-like macros have do not have a
parameter list.
The general format of an object-like macro kernel-doc comment is::
/**
* define object_name - Brief description.
*
* Description of the object.
*/
Example::
/**
* define MAX_ERRNO - maximum errno value that is supported
*
* Kernel pointers have redundant information, so we can use a
* scheme where we can return either an error code or a normal
* pointer with the same return value.
*/
#define MAX_ERRNO 4095
Example::
/**
* define DRM_GEM_VRAM_PLANE_HELPER_FUNCS - \
* Initializes struct drm_plane_helper_funcs for VRAM handling
*
* This macro initializes struct drm_plane_helper_funcs to use the
* respective helper functions.
*/
#define DRM_GEM_VRAM_PLANE_HELPER_FUNCS \
.prepare_fb = drm_gem_vram_plane_helper_prepare_fb, \
.cleanup_fb = drm_gem_vram_plane_helper_cleanup_fb
Highlights and cross-references Highlights and cross-references
------------------------------- -------------------------------
......
...@@ -27,6 +27,13 @@ documentation and ensure that no new errors or warnings have been ...@@ -27,6 +27,13 @@ documentation and ensure that no new errors or warnings have been
introduced. Generating HTML documents and looking at the result will help introduced. Generating HTML documents and looking at the result will help
to avoid unsightly misunderstandings about how things will be rendered. to avoid unsightly misunderstandings about how things will be rendered.
All new documentation (including additions to existing documents) should
ideally justify who the intended target audience is somewhere in the
changelog; this way, we ensure that the documentation ends up in the correct
place. Some possible categories are: kernel developers (experts or
beginners), userspace programmers, end users and/or system administrators,
and distributors.
Key cycle dates Key cycle dates
--------------- ---------------
......
...@@ -48,13 +48,14 @@ or ``virtualenv``, depending on how your distribution packaged Python 3. ...@@ -48,13 +48,14 @@ or ``virtualenv``, depending on how your distribution packaged Python 3.
on the Sphinx version, it should be installed separately, on the Sphinx version, it should be installed separately,
with ``pip install sphinx_rtd_theme``. with ``pip install sphinx_rtd_theme``.
In summary, if you want to install Sphinx version 2.4.4, you should do:: In summary, if you want to install the latest version of Sphinx, you
should do::
$ virtualenv sphinx_2.4.4 $ virtualenv sphinx_latest
$ . sphinx_2.4.4/bin/activate $ . sphinx_latest/bin/activate
(sphinx_2.4.4) $ pip install -r Documentation/sphinx/requirements.txt (sphinx_latest) $ pip install -r Documentation/sphinx/requirements.txt
After running ``. sphinx_2.4.4/bin/activate``, the prompt will change, After running ``. sphinx_latest/bin/activate``, the prompt will change,
in order to indicate that you're using the new environment. If you in order to indicate that you're using the new environment. If you
open a new shell, you need to rerun this command to enter again at open a new shell, you need to rerun this command to enter again at
the virtual environment before building the documentation. the virtual environment before building the documentation.
...@@ -63,8 +64,7 @@ Image output ...@@ -63,8 +64,7 @@ Image output
------------ ------------
The kernel documentation build system contains an extension that The kernel documentation build system contains an extension that
handles images on both GraphViz and SVG formats (see handles images in both GraphViz and SVG formats (see :ref:`sphinx_kfigure`).
:ref:`sphinx_kfigure`).
For it to work, you need to install both GraphViz and ImageMagick For it to work, you need to install both GraphViz and ImageMagick
packages. If those packages are not installed, the build system will packages. If those packages are not installed, the build system will
...@@ -108,7 +108,7 @@ further info. ...@@ -108,7 +108,7 @@ further info.
Checking for Sphinx dependencies Checking for Sphinx dependencies
-------------------------------- --------------------------------
There's a script that automatically check for Sphinx dependencies. If it can There's a script that automatically checks for Sphinx dependencies. If it can
recognize your distribution, it will also give a hint about the install recognize your distribution, it will also give a hint about the install
command line options for your distro:: command line options for your distro::
...@@ -283,7 +283,7 @@ Here are some specific guidelines for the kernel documentation: ...@@ -283,7 +283,7 @@ Here are some specific guidelines for the kernel documentation:
from highlighting. For a short snippet of code embedded in the text, use \`\`. from highlighting. For a short snippet of code embedded in the text, use \`\`.
the C domain The C domain
------------ ------------
The **Sphinx C Domain** (name c) is suited for documentation of C API. E.g. a The **Sphinx C Domain** (name c) is suited for documentation of C API. E.g. a
......
...@@ -9,110 +9,141 @@ of device drivers. This document is an only somewhat organized collection ...@@ -9,110 +9,141 @@ of device drivers. This document is an only somewhat organized collection
of some of those interfaces — it will hopefully get better over time! The of some of those interfaces — it will hopefully get better over time! The
available subsections can be seen below. available subsections can be seen below.
General information for driver authors
======================================
This section contains documentation that should, at some point or other, be
of interest to most developers working on device drivers.
.. toctree:: .. toctree::
:caption: Table of contents :maxdepth: 1
:maxdepth: 2
driver-model/index
basics basics
driver-model/index
device_link
infrastructure infrastructure
ioctl ioctl
early-userspace/index
pm/index pm/index
clk
Useful support libraries
========================
This section contains documentation that should, at some point or other, be
of interest to most developers working on device drivers.
.. toctree::
:maxdepth: 1
early-userspace/index
connector
device-io device-io
devfreq
dma-buf dma-buf
device_link
component component
message-based io-mapping
infiniband io_ordering
aperture uio-howto
frame-buffer vfio-mediated-device
regulator vfio
reset vfio-pci-device-specific-driver-acceptance
iio/index
input Bus-level documentation
usb/index =======================
firewire
pci/index .. toctree::
:maxdepth: 1
auxiliary_bus
cxl/index cxl/index
spi eisa
i2c firewire
ipmb
ipmi
i3c/index i3c/index
interconnect isa
devfreq men-chameleon-bus
hsi pci/index
edac
scsi
libata
target
mailbox
mtdnand
miscellaneous
mei/index
mtd/index
mmc/index
nvdimm/index
w1
rapidio/index rapidio/index
s390-drivers slimbus
usb/index
virtio/index
vme vme
w1
xillybus
Subsystem-specific APIs
=======================
.. toctree::
:maxdepth: 1
80211/index 80211/index
uio-howto acpi/index
backlight/lp855x-driver.rst
clk
console
crypto/index
dmaengine/index
dpll
edac
firmware/index firmware/index
pin-control fpga/index
frame-buffer
aperture
generic-counter
gpio/index gpio/index
hsi
hte/index
i2c
iio/index
infiniband
input
interconnect
ipmb
ipmi
libata
mailbox
md/index md/index
media/index media/index
mei/index
memory-devices/index
message-based
misc_devices misc_devices
miscellaneous
mmc/index
mtd/index
mtdnand
nfc/index nfc/index
dmaengine/index
slimbus
soundwire/index
thermal/index
fpga/index
acpi/index
auxiliary_bus
backlight/lp855x-driver.rst
connector
console
eisa
isa
io-mapping
io_ordering
generic-counter
memory-devices/index
men-chameleon-bus
ntb ntb
nvdimm/index
nvmem nvmem
parport-lowlevel parport-lowlevel
phy/index
pin-control
pldmfw/index
pps pps
ptp ptp
phy/index
pwm pwm
pldmfw/index regulator
reset
rfkill rfkill
s390-drivers
scsi
serial/index serial/index
sm501 sm501
soundwire/index
spi
surface_aggregator/index surface_aggregator/index
switchtec switchtec
sync_file sync_file
target
tee
thermal/index
tty/index tty/index
vfio-mediated-device wbrf
vfio wmi
vfio-pci-device-specific-driver-acceptance
virtio/index
xilinx/index xilinx/index
xillybus
zorro zorro
hte/index
wmi
dpll
wbrf
crypto/index
tee
.. only:: subproject and html .. only:: subproject and html
......
.. SPDX-License-Identifier: GPL-2.0 .. SPDX-License-Identifier: GPL-2.0
=============== ===============
fault-injection Fault-injection
=============== ===============
.. toctree:: .. toctree::
......
...@@ -1899,8 +1899,8 @@ For more information on mount propagation see: ...@@ -1899,8 +1899,8 @@ For more information on mount propagation see:
These files provide a method to access a task's comm value. It also allows for These files provide a method to access a task's comm value. It also allows for
a task to set its own or one of its thread siblings comm value. The comm value a task to set its own or one of its thread siblings comm value. The comm value
is limited in size compared to the cmdline value, so writing anything longer is limited in size compared to the cmdline value, so writing anything longer
then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated then the kernel's TASK_COMM_LEN (currently 16 chars, including the NUL
comm value. terminator) will result in a truncated comm value.
3.7 /proc/<pid>/task/<tid>/children - Information about task children 3.7 /proc/<pid>/task/<tid>/children - Information about task children
......
...@@ -22,10 +22,10 @@ community and getting your work upstream. ...@@ -22,10 +22,10 @@ community and getting your work upstream.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
process/development-process Development process <process/development-process>
process/submitting-patches Submitting patches <process/submitting-patches>
Code of conduct <process/code-of-conduct> Code of conduct <process/code-of-conduct>
maintainer/index Maintainer handbook <maintainer/index>
All development-process docs <process/index> All development-process docs <process/index>
...@@ -38,10 +38,10 @@ kernel. ...@@ -38,10 +38,10 @@ kernel.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
core-api/index Core API <core-api/index>
driver-api/index Driver APIs <driver-api/index>
subsystem-apis Subsystems <subsystem-apis>
Locking in the kernel <locking/index> Locking <locking/index>
Development tools and processes Development tools and processes
=============================== ===============================
...@@ -51,15 +51,15 @@ Various other manuals with useful information for all kernel developers. ...@@ -51,15 +51,15 @@ Various other manuals with useful information for all kernel developers.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
process/license-rules Licensing rules <process/license-rules>
doc-guide/index Writing documentation <doc-guide/index>
dev-tools/index Development tools <dev-tools/index>
dev-tools/testing-overview Testing guide <dev-tools/testing-overview>
kernel-hacking/index Hacking guide <kernel-hacking/index>
trace/index Tracing <trace/index>
fault-injection/index Fault injection <fault-injection/index>
livepatch/index Livepatching <livepatch/index>
rust/index Rust <rust/index>
User-oriented documentation User-oriented documentation
...@@ -72,11 +72,11 @@ developers seeking information on the kernel's user-space APIs. ...@@ -72,11 +72,11 @@ developers seeking information on the kernel's user-space APIs.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
admin-guide/index Administration <admin-guide/index>
The kernel build system <kbuild/index> Build system <kbuild/index>
admin-guide/reporting-issues.rst Reporting issues <admin-guide/reporting-issues.rst>
User-space tools <tools/index> Userspace tools <tools/index>
userspace-api/index Userspace API <userspace-api/index>
See also: the `Linux man pages <https://www.kernel.org/doc/man-pages/>`_, See also: the `Linux man pages <https://www.kernel.org/doc/man-pages/>`_,
which are kept separately from the kernel's own documentation. which are kept separately from the kernel's own documentation.
...@@ -89,8 +89,8 @@ platform firmwares. ...@@ -89,8 +89,8 @@ platform firmwares.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
firmware-guide/index Firmware <firmware-guide/index>
devicetree/index Firmware and Devicetree <devicetree/index>
Architecture-specific documentation Architecture-specific documentation
...@@ -99,7 +99,7 @@ Architecture-specific documentation ...@@ -99,7 +99,7 @@ Architecture-specific documentation
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
arch/index CPU architectures <arch/index>
Other documentation Other documentation
...@@ -112,7 +112,7 @@ to ReStructured Text format, or are simply too old. ...@@ -112,7 +112,7 @@ to ReStructured Text format, or are simply too old.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
staging/index Unsorted documentation <staging/index>
Translations Translations
...@@ -121,7 +121,7 @@ Translations ...@@ -121,7 +121,7 @@ Translations
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
translations/index Translations <translations/index>
Indices and tables Indices and tables
================== ==================
......
...@@ -102,7 +102,10 @@ to do something different in the near future. ...@@ -102,7 +102,10 @@ to do something different in the near future.
../doc-guide/maintainer-profile ../doc-guide/maintainer-profile
../nvdimm/maintainer-entry-profile ../nvdimm/maintainer-entry-profile
../arch/riscv/patch-acceptance ../arch/riscv/patch-acceptance
../process/maintainer-soc
../process/maintainer-soc-clean-dts
../driver-api/media/maintainer-entry-profile ../driver-api/media/maintainer-entry-profile
../process/maintainer-netdev
../driver-api/vfio-pci-device-specific-driver-acceptance ../driver-api/vfio-pci-device-specific-driver-acceptance
../nvme/feature-and-quirk-policy ../nvme/feature-and-quirk-policy
../filesystems/xfs/xfs-maintainer-entry-profile ../filesystems/xfs/xfs-maintainer-entry-profile
...@@ -324,7 +324,7 @@ Contact Info ...@@ -324,7 +324,7 @@ Contact Info
The code is currently maintained by Roopa Prabhu <roopa@nvidia.com> and The code is currently maintained by Roopa Prabhu <roopa@nvidia.com> and
Nikolay Aleksandrov <razor@blackwall.org>. Bridge bugs and enhancements Nikolay Aleksandrov <razor@blackwall.org>. Bridge bugs and enhancements
are discussed on the linux-netdev mailing list netdev@vger.kernel.org and are discussed on the linux-netdev mailing list netdev@vger.kernel.org and
bridge@lists.linux-foundation.org. bridge@lists.linux.dev.
The list is open to anyone interested: http://vger.kernel.org/vger-lists.html#netdev The list is open to anyone interested: http://vger.kernel.org/vger-lists.html#netdev
......
...@@ -144,8 +144,8 @@ Bison ...@@ -144,8 +144,8 @@ Bison
Since Linux 4.16, the build system generates parsers Since Linux 4.16, the build system generates parsers
during build. This requires bison 2.0 or later. during build. This requires bison 2.0 or later.
pahole: pahole
------- ------
Since Linux 5.2, if CONFIG_DEBUG_INFO_BTF is selected, the build system Since Linux 5.2, if CONFIG_DEBUG_INFO_BTF is selected, the build system
generates BTF (BPF Type Format) from DWARF in vmlinux, a bit later from kernel generates BTF (BPF Type Format) from DWARF in vmlinux, a bit later from kernel
......
...@@ -203,7 +203,7 @@ Do not unnecessarily use braces where a single statement will do. ...@@ -203,7 +203,7 @@ Do not unnecessarily use braces where a single statement will do.
and and
.. code-block:: none .. code-block:: c
if (condition) if (condition)
do_this(); do_this();
...@@ -586,9 +586,9 @@ fix for this is to split it up into two error labels ``err_free_bar:`` and ...@@ -586,9 +586,9 @@ fix for this is to split it up into two error labels ``err_free_bar:`` and
.. code-block:: c .. code-block:: c
err_free_bar: err_free_bar:
kfree(foo->bar); kfree(foo->bar);
err_free_foo: err_free_foo:
kfree(foo); kfree(foo);
return ret; return ret;
...@@ -660,7 +660,7 @@ make a good program). ...@@ -660,7 +660,7 @@ make a good program).
So, you can either get rid of GNU emacs, or change it to use saner So, you can either get rid of GNU emacs, or change it to use saner
values. To do the latter, you can stick the following in your .emacs file: values. To do the latter, you can stick the following in your .emacs file:
.. code-block:: none .. code-block:: elisp
(defun c-lineup-arglist-tabs-only (ignored) (defun c-lineup-arglist-tabs-only (ignored)
"Line up argument lists by tabs, not spaces" "Line up argument lists by tabs, not spaces"
...@@ -679,7 +679,7 @@ values. To do the latter, you can stick the following in your .emacs file: ...@@ -679,7 +679,7 @@ values. To do the latter, you can stick the following in your .emacs file:
(c-offsets-alist . ( (c-offsets-alist . (
(arglist-close . c-lineup-arglist-tabs-only) (arglist-close . c-lineup-arglist-tabs-only)
(arglist-cont-nonempty . (arglist-cont-nonempty .
(c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only)) (c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only))
(arglist-intro . +) (arglist-intro . +)
(brace-list-intro . +) (brace-list-intro . +)
(c . c-lineup-C-comments) (c . c-lineup-C-comments)
...@@ -899,7 +899,8 @@ which you should use to make sure messages are matched to the right device ...@@ -899,7 +899,8 @@ which you should use to make sure messages are matched to the right device
and driver, and are tagged with the right level: dev_err(), dev_warn(), and driver, and are tagged with the right level: dev_err(), dev_warn(),
dev_info(), and so forth. For messages that aren't associated with a dev_info(), and so forth. For messages that aren't associated with a
particular device, <linux/printk.h> defines pr_notice(), pr_info(), particular device, <linux/printk.h> defines pr_notice(), pr_info(),
pr_warn(), pr_err(), etc. pr_warn(), pr_err(), etc. When drivers are working properly they are quiet,
so prefer to use dev_dbg/pr_debug unless something is wrong.
Coming up with good debugging messages can be quite a challenge; and once Coming up with good debugging messages can be quite a challenge; and once
you have them, they can be a huge help for remote troubleshooting. However you have them, they can be a huge help for remote troubleshooting. However
......
...@@ -255,7 +255,7 @@ an involved disclosed party. The current ambassadors list: ...@@ -255,7 +255,7 @@ an involved disclosed party. The current ambassadors list:
IBM Power Anton Blanchard <anton@linux.ibm.com> IBM Power Anton Blanchard <anton@linux.ibm.com>
IBM Z Christian Borntraeger <borntraeger@de.ibm.com> IBM Z Christian Borntraeger <borntraeger@de.ibm.com>
Intel Tony Luck <tony.luck@intel.com> Intel Tony Luck <tony.luck@intel.com>
Qualcomm Trilok Soni <tsoni@codeaurora.org> Qualcomm Trilok Soni <quic_tsoni@quicinc.com>
RISC-V Palmer Dabbelt <palmer@dabbelt.com> RISC-V Palmer Dabbelt <palmer@dabbelt.com>
Samsung Javier González <javier.gonz@samsung.com> Samsung Javier González <javier.gonz@samsung.com>
......
...@@ -351,8 +351,8 @@ Managing bug reports ...@@ -351,8 +351,8 @@ Managing bug reports
-------------------- --------------------
One of the best ways to put into practice your hacking skills is by fixing One of the best ways to put into practice your hacking skills is by fixing
bugs reported by other people. Not only you will help to make the kernel bugs reported by other people. Not only will you help to make the kernel
more stable, but you'll also learn to fix real world problems and you will more stable, but you'll also learn to fix real-world problems and you will
improve your skills, and other developers will be aware of your presence. improve your skills, and other developers will be aware of your presence.
Fixing bugs is one of the best ways to get merits among other developers, Fixing bugs is one of the best ways to get merits among other developers,
because not many people like wasting time fixing other people's bugs. because not many people like wasting time fixing other people's bugs.
......
...@@ -167,4 +167,4 @@ If no one can be found to internally review patches and you need ...@@ -167,4 +167,4 @@ If no one can be found to internally review patches and you need
help finding such a person, or if you have any other questions help finding such a person, or if you have any other questions
related to this document and the developer community's expectations, related to this document and the developer community's expectations,
please reach out to the private Technical Advisory Board mailing list: please reach out to the private Technical Advisory Board mailing list:
<tech-board@lists.linux-foundation.org>. <tech-board@groups.linuxfoundation.org>.
.. _submitchecklist: .. _submitchecklist:
=======================================
Linux Kernel patch submission checklist Linux Kernel patch submission checklist
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =======================================
Here are some basic things that developers should do if they want to see their Here are some basic things that developers should do if they want to see their
kernel patch submissions accepted more quickly. kernel patch submissions accepted more quickly.
...@@ -10,111 +11,123 @@ These are all above and beyond the documentation that is provided in ...@@ -10,111 +11,123 @@ These are all above and beyond the documentation that is provided in
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>` :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
and elsewhere regarding submitting Linux kernel patches. and elsewhere regarding submitting Linux kernel patches.
Review your code
================
1) If you use a facility then #include the file that defines/declares 1) If you use a facility then #include the file that defines/declares
that facility. Don't depend on other header files pulling in ones that facility. Don't depend on other header files pulling in ones
that you use. that you use.
2) Builds cleanly: 2) Check your patch for general style as detailed in
:ref:`Documentation/process/coding-style.rst <codingstyle>`.
a) with applicable or modified ``CONFIG`` options ``=y``, ``=m``, and 3) All memory barriers {e.g., ``barrier()``, ``rmb()``, ``wmb()``} need a
``=n``. No ``gcc`` warnings/errors, no linker warnings/errors. comment in the source code that explains the logic of what they are doing
and why.
b) Passes ``allnoconfig``, ``allmodconfig`` Review Kconfig changes
======================
c) Builds successfully when using ``O=builddir`` 1) Any new or modified ``CONFIG`` options do not muck up the config menu and
default to off unless they meet the exception criteria documented in
``Documentation/kbuild/kconfig-language.rst`` Menu attributes: default value.
d) Any Documentation/ changes build successfully without new warnings/errors. 2) All new ``Kconfig`` options have help text.
Use ``make htmldocs`` or ``make pdfdocs`` to check the build and
fix any issues.
3) Builds on multiple CPU architectures by using local cross-compile tools 3) Has been carefully reviewed with respect to relevant ``Kconfig``
or some other build farm. combinations. This is very hard to get right with testing---brainpower
pays off here.
4) ppc64 is a good architecture for cross-compilation checking because it Provide documentation
tends to use ``unsigned long`` for 64-bit quantities. =====================
5) Check your patch for general style as detailed in 1) Include :ref:`kernel-doc <kernel_doc>` to document global kernel APIs.
:ref:`Documentation/process/coding-style.rst <codingstyle>`. (Not required for static functions, but OK there also.)
Check for trivial violations with the patch style checker prior to
submission (``scripts/checkpatch.pl``).
You should be able to justify all violations that remain in
your patch.
6) Any new or modified ``CONFIG`` options do not muck up the config menu and 2) All new ``/proc`` entries are documented under ``Documentation/``
default to off unless they meet the exception criteria documented in
``Documentation/kbuild/kconfig-language.rst`` Menu attributes: default value.
7) All new ``Kconfig`` options have help text. 3) All new kernel boot parameters are documented in
``Documentation/admin-guide/kernel-parameters.rst``.
8) Has been carefully reviewed with respect to relevant ``Kconfig`` 4) All new module parameters are documented with ``MODULE_PARM_DESC()``
combinations. This is very hard to get right with testing -- brainpower
pays off here.
9) Check cleanly with sparse. 5) All new userspace interfaces are documented in ``Documentation/ABI/``.
See ``Documentation/ABI/README`` for more information.
Patches that change userspace interfaces should be CCed to
linux-api@vger.kernel.org.
10) Use ``make checkstack`` and fix any problems that it finds. 6) If any ioctl's are added by the patch, then also update
``Documentation/userspace-api/ioctl/ioctl-number.rst``.
.. note:: Check your code with tools
==========================
``checkstack`` does not point out problems explicitly, 1) Check for trivial violations with the patch style checker prior to
but any one function that uses more than 512 bytes on the stack is a submission (``scripts/checkpatch.pl``).
candidate for change. You should be able to justify all violations that remain in
your patch.
11) Include :ref:`kernel-doc <kernel_doc>` to document global kernel APIs. 2) Check cleanly with sparse.
(Not required for static functions, but OK there also.) Use
``make htmldocs`` or ``make pdfdocs`` to check the
:ref:`kernel-doc <kernel_doc>` and fix any issues.
12) Has been tested with ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``, 3) Use ``make checkstack`` and fix any problems that it finds.
``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``, Note that ``checkstack`` does not point out problems explicitly,
``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``, but any one function that uses more than 512 bytes on the stack is a
``CONFIG_PROVE_RCU`` and ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` all candidate for change.
simultaneously enabled.
13) Has been build- and runtime tested with and without ``CONFIG_SMP`` and Build your code
``CONFIG_PREEMPT.`` ===============
14) All codepaths have been exercised with all lockdep features enabled. 1) Builds cleanly:
15) All new ``/proc`` entries are documented under ``Documentation/`` a) with applicable or modified ``CONFIG`` options ``=y``, ``=m``, and
``=n``. No ``gcc`` warnings/errors, no linker warnings/errors.
16) All new kernel boot parameters are documented in b) Passes ``allnoconfig``, ``allmodconfig``
``Documentation/admin-guide/kernel-parameters.rst``.
c) Builds successfully when using ``O=builddir``
d) Any Documentation/ changes build successfully without new warnings/errors.
Use ``make htmldocs`` or ``make pdfdocs`` to check the build and
fix any issues.
17) All new module parameters are documented with ``MODULE_PARM_DESC()`` 2) Builds on multiple CPU architectures by using local cross-compile tools
or some other build farm. Note that ppc64 is a good architecture for
cross-compilation checking because it tends to use ``unsigned long`` for
64-bit quantities.
18) All new userspace interfaces are documented in ``Documentation/ABI/``. 3) Newly-added code has been compiled with ``gcc -W`` (use
See ``Documentation/ABI/README`` for more information. ``make KCFLAGS=-W``). This will generate lots of noise, but is good
Patches that change userspace interfaces should be CCed to for finding bugs like "warning: comparison between signed and unsigned".
linux-api@vger.kernel.org.
19) Has been checked with injection of at least slab and page-allocation 4) If your modified source code depends on or uses any of the kernel
failures. See ``Documentation/fault-injection/``. APIs or features that are related to the following ``Kconfig`` symbols,
then test multiple builds with the related ``Kconfig`` symbols disabled
and/or ``=m`` (if that option is available) [not all of these at the
same time, just various/random combinations of them]:
If the new code is substantial, addition of subsystem-specific fault ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``,
injection might be appropriate. ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``,
``CONFIG_NET``, ``CONFIG_INET=n`` (but latter with ``CONFIG_NET=y``).
20) Newly-added code has been compiled with ``gcc -W`` (use Test your code
``make KCFLAGS=-W``). This will generate lots of noise, but is good ==============
for finding bugs like "warning: comparison between signed and unsigned".
21) Tested after it has been merged into the -mm patchset to make sure 1) Has been tested with ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``,
that it still works with all of the other queued patches and various ``CONFIG_SLUB_DEBUG``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``,
changes in the VM, VFS, and other subsystems. ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``,
``CONFIG_PROVE_RCU`` and ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` all
simultaneously enabled.
22) All memory barriers {e.g., ``barrier()``, ``rmb()``, ``wmb()``} need a 2) Has been build- and runtime tested with and without ``CONFIG_SMP`` and
comment in the source code that explains the logic of what they are doing ``CONFIG_PREEMPT.``
and why.
23) If any ioctl's are added by the patch, then also update 3) All codepaths have been exercised with all lockdep features enabled.
``Documentation/userspace-api/ioctl/ioctl-number.rst``.
24) If your modified source code depends on or uses any of the kernel 4) Has been checked with injection of at least slab and page-allocation
APIs or features that are related to the following ``Kconfig`` symbols, failures. See ``Documentation/fault-injection/``.
then test multiple builds with the related ``Kconfig`` symbols disabled If the new code is substantial, addition of subsystem-specific fault
and/or ``=m`` (if that option is available) [not all of these at the injection might be appropriate.
same time, just various/random combinations of them]:
``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``, ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``, 5) Tested with the most recent tag of linux-next to make sure that it still
``CONFIG_NET``, ``CONFIG_INET=n`` (but latter with ``CONFIG_NET=y``). works with all of the other queued patches and various changes in the VM,
VFS, and other subsystems.
...@@ -54,9 +54,7 @@ ...@@ -54,9 +54,7 @@
\renewcommand*\l@section{\@dottedtocline{1}{2.4em}{3.2em}} \renewcommand*\l@section{\@dottedtocline{1}{2.4em}{3.2em}}
\renewcommand*\l@subsection{\@dottedtocline{2}{5.6em}{4.3em}} \renewcommand*\l@subsection{\@dottedtocline{2}{5.6em}{4.3em}}
\makeatother \makeatother
%% Sphinx < 1.8 doesn't have \sphinxtableofcontentshook %% Prevent default \sphinxtableofcontentshook from overwriting above tweaks.
\providecommand{\sphinxtableofcontentshook}{}
%% Undefine it for compatibility with Sphinx 1.7.9
\renewcommand{\sphinxtableofcontentshook}{} % Empty the hook \renewcommand{\sphinxtableofcontentshook}{} % Empty the hook
% Prevent column squeezing of tabulary. \tymin is set by Sphinx as: % Prevent column squeezing of tabulary. \tymin is set by Sphinx as:
...@@ -136,9 +134,6 @@ ...@@ -136,9 +134,6 @@
} }
\newCJKfontfamily[JPsans]\jpsans{Noto Sans CJK JP}[AutoFakeSlant] \newCJKfontfamily[JPsans]\jpsans{Noto Sans CJK JP}[AutoFakeSlant]
\newCJKfontfamily[JPmono]\jpmono{Noto Sans Mono CJK JP}[AutoFakeSlant] \newCJKfontfamily[JPmono]\jpmono{Noto Sans Mono CJK JP}[AutoFakeSlant]
% Dummy commands for Sphinx < 2.3 (no 'extrapackages' support)
\providecommand{\onehalfspacing}{}
\providecommand{\singlespacing}{}
% Define custom macros to on/off CJK % Define custom macros to on/off CJK
%% One and half spacing for CJK contents %% One and half spacing for CJK contents
\newcommand{\kerneldocCJKon}{\makexeCJKactive\onehalfspacing} \newcommand{\kerneldocCJKon}{\makexeCJKactive\onehalfspacing}
......
...@@ -61,9 +61,9 @@ class KernelDocDirective(Directive): ...@@ -61,9 +61,9 @@ class KernelDocDirective(Directive):
env = self.state.document.settings.env env = self.state.document.settings.env
cmd = [env.config.kerneldoc_bin, '-rst', '-enable-lineno'] cmd = [env.config.kerneldoc_bin, '-rst', '-enable-lineno']
# Pass the version string to kernel-doc, as it needs to use a different # Pass the version string to kernel-doc, as it needs to use a different
# dialect, depending what the C domain supports for each specific # dialect, depending what the C domain supports for each specific
# Sphinx versions # Sphinx versions
cmd += ['-sphinx-version', sphinx.__version__] cmd += ['-sphinx-version', sphinx.__version__]
filename = env.config.kerneldoc_srctree + '/' + self.arguments[0] filename = env.config.kerneldoc_srctree + '/' + self.arguments[0]
......
# jinja2>=3.1 is not compatible with Sphinx<4.0 alabaster
jinja2<3.1 Sphinx
# alabaster>=0.7.14 is not compatible with Sphinx<=3.3
alabaster<0.7.14
Sphinx==2.4.4
pyyaml pyyaml
...@@ -157,7 +157,7 @@ Returns 0 on success and an appropriate error value on failure. ...@@ -157,7 +157,7 @@ Returns 0 on success and an appropriate error value on failure.
int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst) int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
sends a message across to the remote processor from a given endoint, sends a message across to the remote processor from a given endpoint,
to a destination address provided by the user. to a destination address provided by the user.
The user should specify the channel, the data it wants to send, The user should specify the channel, the data it wants to send,
......
...@@ -61,6 +61,8 @@ Storage interfaces ...@@ -61,6 +61,8 @@ Storage interfaces
scsi/index scsi/index
target/index target/index
Other subsystems
----------------
**Fixme**: much more organizational work is needed here. **Fixme**: much more organizational work is needed here.
.. toctree:: .. toctree::
......
.. SPDX-License-Identifier: GPL-2.0
.. _it_rcu_concepts:
===============
Concetti su RCU
===============
.. toctree::
:maxdepth: 3
torture
.. only:: subproject and html
Indici
======
* :ref:`genindex`
This diff is collapsed.
...@@ -10,6 +10,18 @@ Utilità di base ...@@ -10,6 +10,18 @@ Utilità di base
symbol-namespaces symbol-namespaces
Primitive di sincronizzazione
=============================
Come Linux impedisce che tutto si verifichi contemporaneamente. Consultate
Documentation/translations/it_IT/locking/index.rst per maggiorni informazioni
sul tema.
.. toctree::
:maxdepth: 1
../RCU/index
.. only:: subproject and html .. only:: subproject and html
Indices Indices
......
=================
Il protocollo I2C
=================
Questo documento è una panoramica delle transazioni di base I2C e delle API
del kernel per eseguirli.
Spiegazione dei simboli
=======================
=============== ===========================================================
S Condizione di avvio
P Condizione di stop
Rd/Wr (1 bit) Bit di lettura/scrittura. Rd vale 1, Wr vale 0.
A, NA (1 bit) Bit di riconoscimento (ACK) e di non riconoscimento (NACK).
Addr (7 bit) Indirizzo I2C a 7 bit. Nota che questo può essere espanso
per ottenere un indirizzo I2C a 10 bit.
Dati (8 bit) Un byte di dati.
[..] Fra parentesi quadre i dati inviati da dispositivi I2C,
anziché dal master.
=============== ===========================================================
Transazione semplice di invio
=============================
Implementato da i2c_master_send()::
S Addr Wr [A] Dati [A] Dati [A] ... [A] Dati [A] P
Transazione semplice di ricezione
=================================
Implementato da i2c_master_recv()::
S Addr Rd [A] [Dati] A [Dati] A ... A [Dati] NA P
Transazioni combinate
=====================
Implementato da i2c_transfer().
Sono come le transazioni di cui sopra, ma invece di uno condizione di stop P
viene inviata una condizione di inizio S e la transazione continua.
Un esempio di lettura di un byte, seguita da una scrittura di un byte::
S Addr Rd [A] [Dati] NA S Addr Wr [A] Dati [A] P
Transazioni modificate
======================
Le seguenti modifiche al protocollo I2C possono essere generate
impostando questi flag per i messaggi I2C. Ad eccezione di I2C_M_NOSTART, sono
di solito necessari solo per risolvere problemi di un dispositivo:
I2C_M_IGNORE_NAK:
Normalmente il messaggio viene interrotto immediatamente se il dispositivo
risponde con [NA]. Impostando questo flag, si considera qualsiasi [NA] come
[A] e tutto il messaggio viene inviato.
Questi messaggi potrebbero comunque non riuscire a raggiungere il timeout
SCL basso->alto.
I2C_M_NO_RD_ACK:
In un messaggio di lettura, il bit A/NA del master viene saltato.
I2C_M_NOSTART:
In una transazione combinata, potrebbe non essere generato alcun
"S Addr Wr/Rd [A]".
Ad esempio, impostando I2C_M_NOSTART sul secondo messaggio parziale
genera qualcosa del tipo::
S Addr Rd [A] [Dati] NA Dati [A] P
Se si imposta il flag I2C_M_NOSTART per il primo messaggio parziale,
non viene generato Addr, ma si genera la condizione di avvio S.
Questo probabilmente confonderà tutti gli altri dispositivi sul bus, quindi
meglio non usarlo.
Questo viene spesso utilizzato per raccogliere le trasmissioni da più
buffer di dati presenti nella memoria di sistema in qualcosa che appare
come un singolo trasferimento verso il dispositivo I2C. Inoltre, alcuni
dispositivi particolari lo utilizzano anche tra i cambi di direzione.
I2C_M_REV_DIR_ADDR:
Questo inverte il flag Rd/Wr. Cioè, se si vuole scrivere, ma si ha bisogno
di emettere una Rd invece di una Wr, o viceversa, si può impostare questo
flag.
Per esempio::
S Addr Rd [A] Dati [A] Dati [A] ... [A] Dati [A] P
I2C_M_STOP:
Forza una condizione di stop (P) dopo il messaggio. Alcuni protocolli
simili a I2C come SCCB lo richiedono. Normalmente, non si vuole essere
interrotti tra i messaggi di un trasferimento.
.. SPDX-License-Identifier: GPL-2.0
=========================
Il sottosistema I2C/SMBus
=========================
Introduzione
============
.. toctree::
:maxdepth: 1
summary
i2c-protocol
Scrivere un device driver
=========================
.. toctree::
:maxdepth: 1
Debugging
=========
.. toctree::
:maxdepth: 1
Slave I2C
=========
.. toctree::
:maxdepth: 1
Argomenti avanzati
==================
.. toctree::
:maxdepth: 1
.. only:: subproject and html
Indici
======
* :ref:`genindex`
==========================
Introduzione a I2C e SMBus
==========================
I²C (letteralmente "I al quadrato C" e scritto I2C nella documentazione del
kernel) è un protocollo sviluppato da Philips. É un protocollo lento a 2 fili
(a velocità variabile, al massimo 400KHz), con un'estensione per le velocità
elevate (3.4 MHz). Questo protocollo offre un bus a basso costo per collegare
dispositivi di vario genere a cui si accede sporadicamente e utilizzando
poca banda. Alcuni sistemi usano varianti che non rispettano i requisiti
originali, per cui non sono indicati come I2C, ma hanno nomi diversi, per
esempio TWI (Interfaccia a due fili), IIC.
L'ultima specifica ufficiale I2C è la `"Specifica I2C-bus e manuale utente"
(UM10204) <https://www.nxp.com/webapp/Download?colCode=UM10204>`_
pubblicata da NXP Semiconductors. Tuttavia, è necessario effettuare il login
al sito per accedere al PDF. Una versione precedente della specifica
(revisione 6) è archiviata
`qui <https://web.archive.org/web/20210813122132/
https://www.nxp.com/docs/en/user-guide/UM10204.pdf>`_.
SMBus (Bus per la gestione del sistema) si basa sul protocollo I2C ed è
principalmente un sottoinsieme di protocolli e segnali I2C. Molti dispositivi
I2C funzioneranno su SMBus, ma alcuni protocolli SMBus aggiungono semantica
oltre quanto richiesto da I2C. Le moderne schede madri dei PC si affidano a
SMBus. I più comuni dispositivi collegati tramite SMBus sono moduli RAM
configurati utilizzando EEPROM I2C, e circuiti integrati di monitoraggio
hardware.
Poiché SMBus è principalmente un sottoinsieme del bus I2C,
possiamo farne uso su molti sistemi I2C. Ci sono però sistemi che non
soddisfano i vincoli elettrici sia di SMBus che di I2C; e altri che non possono
implementare tutta la semantica o messaggi comuni del protocollo SMBus.
Terminologia
============
Utilizzando la terminologia della documentazione ufficiale, il bus I2C connette
uno o più circuiti integrati *master* e uno o più circuiti integrati *slave*.
.. kernel-figure:: ../../../i2c/i2c_bus.svg
:alt: Un semplice bus I2C con un master e 3 slave
Un semplice Bus I2C
Un circuito integrato **master** è un nodo che inizia le comunicazioni con gli
slave. Nell'implementazione del kernel Linux è chiamato **adattatore** o bus. I
driver degli adattatori si trovano nella sottocartella ``drivers/i2c/busses/``.
Un **algoritmo** contiene codice generico che può essere utilizzato per
implementare una intera classe di adattatori I2C. Ciascun driver dell'
adattatore specifico dipende da un driver dell'algoritmo nella sottocartella
``drivers/i2c/algos/`` o include la propria implementazione.
Un circuito integrato **slave** è un nodo che risponde alle comunicazioni
quando indirizzato dal master. In Linux è chiamato **client** (dispositivo). I
driver dei dispositivi sono contenuti in una cartella specifica per la
funzionalità che forniscono, ad esempio ``drivers/media/gpio/`` per espansori
GPIO e ``drivers/media/i2c/`` per circuiti integrati relativi ai video.
Per la configurazione di esempio in figura, avrai bisogno di un driver per il
tuo adattatore I2C e driver per i tuoi dispositivi I2C (solitamente un driver
per ciascuno dispositivo).
...@@ -91,6 +91,8 @@ interfacciarsi con il resto del kernel. ...@@ -91,6 +91,8 @@ interfacciarsi con il resto del kernel.
:maxdepth: 1 :maxdepth: 1
core-api/index core-api/index
Sincronizzazione nel kernel <locking/index>
subsystem-apis
Strumenti e processi per lo sviluppo Strumenti e processi per lo sviluppo
==================================== ====================================
......
.. SPDX-License-Identifier: GPL-2.0
================
Sincronizzazione
================
.. toctree::
:maxdepth: 1
locktypes
lockdep-design
lockstat
locktorture
.. only:: subproject and html
Indici
======
* :ref:`genindex`
This diff is collapsed.
This diff is collapsed.
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-ita.rst
============================================
Funzionamento del test *Kernel Lock Torture*
============================================
CONFIG_LOCK_TORTURE_TEST
========================
L'opzione di configurazione CONFIG_LOCK_TORTURE_TEST fornisce un
modulo kernel che esegue delle verifiche che *torturano* le primitive di
sincronizzazione del kernel. Se dovesse servire, il modulo kernel,
'locktorture', può essere generato successivamente su un kernel che
volete verificare. Periodicamente le verifiche stampano messaggi tramite
``printk()`` e che quindi possono essere letti tramite ``dmesg`` (magari
filtrate l'output con ``grep "torture"``). La verifica inizia quando
il modulo viene caricato e termina quando viene rimosso. Questo
programma si basa sulle modalità di verifica di RCU tramite rcutorture.
Questa verifica consiste nella creazione di un certo numero di thread
del kernel che acquisiscono un blocco e lo trattengono per una certa
quantità di tempo così da simulare diversi comportamenti nelle sezioni
critiche. La quantità di contese su un blocco può essere simulata
allargando la sezione critica e/o creando più thread.
Parametri del modulo
====================
Questo modulo ha i seguenti parametri:
Specifici di locktorture
------------------------
nwriters_stress
Numero di thread del kernel che stresseranno l'acquisizione
esclusiva dei blocchi (scrittori). Il valore di base è il
doppio del numero di processori attivi presenti.
nreaders_stress
Numero di thread del kernel che stresseranno l'acquisizione
condivisa dei blocchi (lettori). Il valore di base è lo stesso
di nwriters_stress. Se l'utente non ha specificato
nwriters_stress, allora entrambe i valori corrisponderanno
al numero di processori attivi presenti.
torture_type
Tipo di blocco da verificare. Di base, solo gli spinlock
verranno verificati. Questo modulo può verificare anche
i seguenti tipi di blocchi:
- "lock_busted":
Simula un'incorretta implementazione del
blocco.
- "spin_lock":
coppie di spin_lock() e spin_unlock().
- "spin_lock_irq":
coppie di spin_lock_irq() e spin_unlock_irq().
- "rw_lock":
coppie di rwlock read/write lock() e unlock().
- "rw_lock_irq":
copie di rwlock read/write lock_irq() e
unlock_irq().
- "mutex_lock":
coppie di mutex_lock() e mutex_unlock().
- "rtmutex_lock":
coppie di rtmutex_lock() e rtmutex_unlock().
Il kernel deve avere CONFIG_RT_MUTEXES=y.
- "rwsem_lock":
coppie di semafori read/write down() e up().
Generici dell'ambiente di sviluppo 'torture' (RCU + locking)
------------------------------------------------------------
shutdown_secs
Numero di secondi prima che la verifica termini e il sistema
venga spento. Il valore di base è zero, il che disabilita
la possibilità di terminare e spegnere. Questa funzionalità
può essere utile per verifiche automatizzate.
onoff_interval
Numero di secondi fra ogni tentativo di esecuzione di
un'operazione casuale di CPU-hotplug. Di base è zero, il
che disabilita la funzionalità di CPU-hotplug. Nei kernel
con CONFIG_HOTPLUG_CPU=n, locktorture si rifiuterà, senza
dirlo, di effettuare una qualsiasi operazione di
CPU-hotplug indipendentemente dal valore specificato in
onoff_interval.
onoff_holdoff
Numero di secondi da aspettare prima di iniziare le
operazioni di CPU-hotplug. Normalmente questo verrebbe
usato solamente quando locktorture è compilato come parte
integrante del kernel ed eseguito automaticamente all'avvio,
in questo caso è utile perché permette di non confondere
l'avvio con i processori che vanno e vengono. Questo
parametro è utile sono se CONFIG_HOTPLUG_CPU è abilitato.
stat_interval
Numero di secondi fra una stampa (printk()) delle
statistiche e l'altra. Di base, locktorture riporta le
statistiche ogni 60 secondi. Impostando l'intervallo a 0
ha l'effetto di stampare le statistiche -solo- quando il
modulo viene rimosso.
stutter
Durata della verifica prima di effettuare una pausa di
eguale durata. Di base "stutter=5", quindi si eseguono
verifiche e pause di (circa) cinque secondi.
L'impostazione di "stutter=0" fa si che la verifica
venga eseguita continuamente senza fermarsi.
shuffle_interval
Il numero di secondi per cui un thread debba mantenere
l'affinità con un sottoinsieme di processori, di base è
3 secondi. Viene usato assieme a test_no_idle_hz.
verbose
Abilita le stampe di debug, via printk(). Di base è
abilitato. Queste informazioni aggiuntive sono per la
maggior parte relative ad errori di alto livello e resoconti
da parte dell'struttura 'torture'.
Statistiche
===========
Le statistiche vengono stampate secondo il seguente formato::
spin_lock-torture: Writes: Total: 93746064 Max/Min: 0/0 Fail: 0
(A) (B) (C) (D) (E)
(A): tipo di lock sotto verifica -- parametro torture_type.
(B): Numero di acquisizione del blocco in scrittura. Se si ha a che fare
con una primitiva di lettura/scrittura apparirà di seguito anche una
seconda voce "Reads"
(C): Numero di volte che il blocco è stato acquisito
(D): Numero minimo e massimo di volte che un thread ha fallito
nell'acquisire il blocco
(E): valori true/false nel caso di errori durante l'acquisizione del blocco.
Questo dovrebbe dare un riscontro positivo -solo- se c'è un baco
nell'implementazione delle primitive di sincronizzazione. Altrimenti un
blocco non dovrebbe mai fallire (per esempio, spin_lock()).
Ovviamente lo stesso si applica per (C). Un semplice esempio è il tipo
"lock_busted".
Uso
===
Il seguente script può essere utilizzato per verificare i blocchi::
#!/bin/sh
modprobe locktorture
sleep 3600
rmmod locktorture
dmesg | grep torture:
L'output può essere manualmente ispezionato cercando il marcatore d'errore
"!!!". Ovviamente potreste voler creare degli script più elaborati che
verificano automaticamente la presenza di errori. Il comando "rmmod" forza la
stampa (usando printk()) di "SUCCESS", "FAILURE", oppure "RCU_HOTPLUG". I primi
due si piegano da soli, mentre l'ultimo indica che non stati trovati problemi di
sincronizzazione, tuttavia ne sono stati trovati in CPU-hotplug.
Consultate anche: Documentation/translations/it_IT/RCU/torture.rst
This diff is collapsed.
.. include:: ../disclaimer-ita.rst
:Original: :ref:`Documentation/process/maintainer-netdev.rst <netdev-FAQ>`
.. _it_netdev-FAQ:
==========
netdev FAQ
==========
.. warning::
TODO ancora da tradurre
...@@ -575,9 +575,9 @@ due parti ``err_free_bar:`` e ``err_free_foo:``: ...@@ -575,9 +575,9 @@ due parti ``err_free_bar:`` e ``err_free_foo:``:
.. code-block:: c .. code-block:: c
err_free_bar: err_free_bar:
kfree(foo->bar); kfree(foo->bar);
err_free_foo: err_free_foo:
kfree(foo); kfree(foo);
return ret; return ret;
...@@ -671,7 +671,7 @@ segue nel vostro file .emacs: ...@@ -671,7 +671,7 @@ segue nel vostro file .emacs:
(c-offsets-alist . ( (c-offsets-alist . (
(arglist-close . c-lineup-arglist-tabs-only) (arglist-close . c-lineup-arglist-tabs-only)
(arglist-cont-nonempty . (arglist-cont-nonempty .
(c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only)) (c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only))
(arglist-intro . +) (arglist-intro . +)
(brace-list-intro . +) (brace-list-intro . +)
(c . c-lineup-C-comments) (c . c-lineup-C-comments)
......
.. SPDX-License-Identifier: GPL-2.0
==========================================
Documentazione dei sottosistemi del kernel
==========================================
In questa parte della documentazione si entra nel dettaglio di come funzionano
i sottosistemi specifici del kernel dal punto di vista di uno sviluppatore del
kernel. Molte delle informazioni qui contenute provengono direttamente dai
sorgenti del kernel, con aggiunte di materiale dove è necessario (anche se
talora *non* è stato aggiunto tutto ciò che era necessario).
Sottosistemi principali
-----------------------
.. toctree::
:maxdepth: 1
core-api/index
Interfacce uomo-macchina
------------------------
.. toctree::
:maxdepth: 1
Interfacce di rete
------------------
.. toctree::
:maxdepth: 1
Interfacce per l'archiviazione
------------------------------
.. toctree::
:maxdepth: 1
Interfacce varie
----------------
.. toctree::
:maxdepth: 1
i2c/index
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
howto process/howto
.. raw:: latex .. raw:: latex
......
...@@ -604,9 +604,9 @@ Normalmente la solución para esto es dividirlo en dos etiquetas de error ...@@ -604,9 +604,9 @@ Normalmente la solución para esto es dividirlo en dos etiquetas de error
.. code-block:: c .. code-block:: c
err_free_bar: err_free_bar:
kfree(foo->bar); kfree(foo->bar);
err_free_foo: err_free_foo:
kfree(foo); kfree(foo);
return ret; return ret;
...@@ -698,7 +698,7 @@ sanos. Para hacer esto último, puede pegar lo siguiente en su archivo ...@@ -698,7 +698,7 @@ sanos. Para hacer esto último, puede pegar lo siguiente en su archivo
(c-offsets-alist . ( (c-offsets-alist . (
(arglist-close . c-lineup-arglist-tabs-only) (arglist-close . c-lineup-arglist-tabs-only)
(arglist-cont-nonempty . (arglist-cont-nonempty .
(c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only)) (c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only))
(arglist-intro . +) (arglist-intro . +)
(brace-list-intro . +) (brace-list-intro . +)
(c . c-lineup-C-comments) (c . c-lineup-C-comments)
......
...@@ -273,7 +273,7 @@ revelada involucrada. La lista de embajadores actuales: ...@@ -273,7 +273,7 @@ revelada involucrada. La lista de embajadores actuales:
IBM Power Anton Blanchard <anton@linux.ibm.com> IBM Power Anton Blanchard <anton@linux.ibm.com>
IBM Z Christian Borntraeger <borntraeger@de.ibm.com> IBM Z Christian Borntraeger <borntraeger@de.ibm.com>
Intel Tony Luck <tony.luck@intel.com> Intel Tony Luck <tony.luck@intel.com>
Qualcomm Trilok Soni <tsoni@codeaurora.org> Qualcomm Trilok Soni <quic_tsoni@quicinc.com>
Samsung Javier González <javier.gonz@samsung.com> Samsung Javier González <javier.gonz@samsung.com>
Microsoft James Morris <jamorris@linux.microsoft.com> Microsoft James Morris <jamorris@linux.microsoft.com>
......
...@@ -147,4 +147,4 @@ Si no se puede encontrar a nadie para revisar internamente los parches y necesit ...@@ -147,4 +147,4 @@ Si no se puede encontrar a nadie para revisar internamente los parches y necesit
ayuda para encontrar a esa persona, o si tiene alguna otra pregunta relacionada ayuda para encontrar a esa persona, o si tiene alguna otra pregunta relacionada
con este documento y las expectativas de la comunidad de desarrolladores, por con este documento y las expectativas de la comunidad de desarrolladores, por
favor contacte con la lista de correo privada Technical Advisory Board: favor contacte con la lista de correo privada Technical Advisory Board:
<tech-board@lists.linux-foundation.org>. <tech-board@groups.linuxfoundation.org>.
...@@ -523,9 +523,9 @@ Linux 里这是提倡的做法,因为这样可以很简单的给读者提供 ...@@ -523,9 +523,9 @@ Linux 里这是提倡的做法,因为这样可以很简单的给读者提供
.. code-block:: c .. code-block:: c
err_free_bar: err_free_bar:
kfree(foo->bar); kfree(foo->bar);
err_free_foo: err_free_foo:
kfree(foo); kfree(foo);
return ret; return ret;
......
...@@ -177,7 +177,7 @@ CVE分配 ...@@ -177,7 +177,7 @@ CVE分配
AMD Tom Lendacky <thomas.lendacky@amd.com> AMD Tom Lendacky <thomas.lendacky@amd.com>
IBM IBM
Intel Tony Luck <tony.luck@intel.com> Intel Tony Luck <tony.luck@intel.com>
Qualcomm Trilok Soni <tsoni@codeaurora.org> Qualcomm Trilok Soni <quic_tsoni@quicinc.com>
Microsoft Sasha Levin <sashal@kernel.org> Microsoft Sasha Levin <sashal@kernel.org>
VMware VMware
......
...@@ -53,7 +53,7 @@ OpenCAPI定义了一个在物理链路层上实现的数据链路层(TL)和 ...@@ -53,7 +53,7 @@ OpenCAPI定义了一个在物理链路层上实现的数据链路层(TL)和
Processor:处理器 Processor:处理器
Memory:内存 Memory:内存
Accelerated Function Unit:加速函数单元 Accelerated Function Unit:加速功能单元
...@@ -97,7 +97,7 @@ OpenCAPI拥有AFU向主机进程发送中断的可能性。它通过定义在传 ...@@ -97,7 +97,7 @@ OpenCAPI拥有AFU向主机进程发送中断的可能性。它通过定义在传
======== ========
驱动为每个在物理设备上发现的AFU创建一个字符设备。一个物理设备可能拥有多个 驱动为每个在物理设备上发现的AFU创建一个字符设备。一个物理设备可能拥有多个
函数,一个函数可以拥有多个AFU。不过编写这篇文档之时,只对导出一个AFU的设备 功能,一个功能可以拥有多个AFU。不过编写这篇文档之时,只对导出一个AFU的设备
测试过。 测试过。
字符设备可以在 /dev/ocxl/ 中被找到,其命名为: 字符设备可以在 /dev/ocxl/ 中被找到,其命名为:
......
...@@ -526,9 +526,9 @@ Linux 裏這是提倡的做法,因爲這樣可以很簡單的給讀者提供 ...@@ -526,9 +526,9 @@ Linux 裏這是提倡的做法,因爲這樣可以很簡單的給讀者提供
.. code-block:: c .. code-block:: c
err_free_bar: err_free_bar:
kfree(foo->bar); kfree(foo->bar);
err_free_foo: err_free_foo:
kfree(foo); kfree(foo);
return ret; return ret;
......
...@@ -180,7 +180,7 @@ CVE分配 ...@@ -180,7 +180,7 @@ CVE分配
AMD Tom Lendacky <thomas.lendacky@amd.com> AMD Tom Lendacky <thomas.lendacky@amd.com>
IBM IBM
Intel Tony Luck <tony.luck@intel.com> Intel Tony Luck <tony.luck@intel.com>
Qualcomm Trilok Soni <tsoni@codeaurora.org> Qualcomm Trilok Soni <quic_tsoni@quicinc.com>
Microsoft Sasha Levin <sashal@kernel.org> Microsoft Sasha Levin <sashal@kernel.org>
VMware VMware
......
...@@ -9,31 +9,58 @@ While much of the kernel's user-space API is documented elsewhere ...@@ -9,31 +9,58 @@ While much of the kernel's user-space API is documented elsewhere
also be found in the kernel tree itself. This manual is intended to be the also be found in the kernel tree itself. This manual is intended to be the
place where this information is gathered. place where this information is gathered.
System calls
============
.. toctree::
:maxdepth: 1
unshare
futex2
ebpf/index
ioctl/index
Security-related interfaces
===========================
.. toctree:: .. toctree::
:caption: Table of contents :maxdepth: 1
:maxdepth: 2
no_new_privs no_new_privs
seccomp_filter seccomp_filter
landlock landlock
unshare lsm
spec_ctrl spec_ctrl
tee
Devices and I/O
===============
.. toctree::
:maxdepth: 1
accelerators/ocxl accelerators/ocxl
dma-buf-alloc-exchange dma-buf-alloc-exchange
ebpf/index
ELF
ioctl/index
iommu iommu
iommufd iommufd
media/index media/index
dcdbas
vduse
isapnp
Everything else
===============
.. toctree::
:maxdepth: 1
ELF
netlink/index netlink/index
sysfs-platform_profile sysfs-platform_profile
vduse vduse
futex2 futex2
lsm perf_ring_buffer
tee
isapnp
dcdbas
.. only:: subproject and html .. only:: subproject and html
......
This diff is collapsed.
...@@ -24,7 +24,7 @@ Descriptions of section entries and preferred order ...@@ -24,7 +24,7 @@ Descriptions of section entries and preferred order
filing info, a direct bug tracker link, or a mailto: URI. filing info, a direct bug tracker link, or a mailto: URI.
C: URI for *chat* protocol, server and channel where developers C: URI for *chat* protocol, server and channel where developers
usually hang out, for example irc://server/channel. usually hang out, for example irc://server/channel.
P: Subsystem Profile document for more details submitting P: *Subsystem Profile* document for more details submitting
patches to the given subsystem. This is either an in-tree file, patches to the given subsystem. This is either an in-tree file,
or a URI. See Documentation/maintainer/maintainer-entry-profile.rst or a URI. See Documentation/maintainer/maintainer-entry-profile.rst
for details. for details.
...@@ -6385,6 +6385,7 @@ L: linux-doc@vger.kernel.org ...@@ -6385,6 +6385,7 @@ L: linux-doc@vger.kernel.org
S: Maintained S: Maintained
F: Documentation/admin-guide/quickly-build-trimmed-linux.rst F: Documentation/admin-guide/quickly-build-trimmed-linux.rst
F: Documentation/admin-guide/reporting-issues.rst F: Documentation/admin-guide/reporting-issues.rst
F: Documentation/admin-guide/verify-bugs-and-bisect-regressions.rst
DOCUMENTATION SCRIPTS DOCUMENTATION SCRIPTS
M: Mauro Carvalho Chehab <mchehab@kernel.org> M: Mauro Carvalho Chehab <mchehab@kernel.org>
...@@ -14035,7 +14036,7 @@ F: include/uapi/rdma/mlx5-abi.h ...@@ -14035,7 +14036,7 @@ F: include/uapi/rdma/mlx5-abi.h
MELLANOX MLX5 VDPA DRIVER MELLANOX MLX5 VDPA DRIVER
M: Dragos Tatulea <dtatulea@nvidia.com> M: Dragos Tatulea <dtatulea@nvidia.com>
L: virtualization@lists.linux-foundation.org L: virtualization@lists.linux.dev
S: Supported S: Supported
F: drivers/vdpa/mlx5/ F: drivers/vdpa/mlx5/
...@@ -21540,7 +21541,7 @@ F: tools/testing/selftests/drivers/net/team/ ...@@ -21540,7 +21541,7 @@ F: tools/testing/selftests/drivers/net/team/
TECHNICAL ADVISORY BOARD PROCESS DOCS TECHNICAL ADVISORY BOARD PROCESS DOCS
M: "Theodore Ts'o" <tytso@mit.edu> M: "Theodore Ts'o" <tytso@mit.edu>
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
L: tech-board-discuss@lists.linux-foundation.org L: tech-board-discuss@lists.linux.dev
S: Maintained S: Maintained
F: Documentation/process/contribution-maturity-model.rst F: Documentation/process/contribution-maturity-model.rst
F: Documentation/process/researcher-guidelines.rst F: Documentation/process/researcher-guidelines.rst
...@@ -23123,7 +23124,7 @@ F: drivers/vfio/pci/mlx5/ ...@@ -23123,7 +23124,7 @@ F: drivers/vfio/pci/mlx5/
VFIO VIRTIO PCI DRIVER VFIO VIRTIO PCI DRIVER
M: Yishai Hadas <yishaih@nvidia.com> M: Yishai Hadas <yishaih@nvidia.com>
L: kvm@vger.kernel.org L: kvm@vger.kernel.org
L: virtualization@lists.linux-foundation.org L: virtualization@lists.linux.dev
S: Maintained S: Maintained
F: drivers/vfio/pci/virtio F: drivers/vfio/pci/virtio
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment