projects/linux·commit 72fdff14

Merge tag 'docs-7.3' of git://git.kernel.org/pub/scm/linux/kernel/git/docs/linux

72fdff14 · Linus Torvalds <[email protected]> · 2026-08-20 10:31:50 -07:00

Pull documentation updates from Jonathan Corbet:
 "It has been a not-too-busy cycle for docs; here's the highlights:

   - A (hopefully) consensus change to our LLM-attribution requirements,
     removing the specific model name from the Assisted-by tag

   - A couple of new realtime documents

   - Various docs-build-system fixes

   - Ongoing work with the Chinese, Portuguese, and Japanese
     translations

  ...and lots of typo fixes, grammar tweaks, etc"

* tag 'docs-7.3' of git://git.kernel.org/pub/scm/linux/kernel/git/docs/linux: (85 commits)
  Doc: admin-guide: pm: Remove unnecessary backticks and fix a spell
  Documentation: Extend the real-time hardware bits with some firmware bits
  docs: pt_BR: Reorganize process/index.rst to follow english structure
  docs: conf.py: fix the 'utf-8' typo
  doc tools: fix 'path' typos
  Documentation: real-time: Add kernel configuration guide
  docs: python: abi_regex: convert adjacent index placeholders
  docs: python: abi_regex: catch the right exception for a bad regex
  docs: sphinx-build-wrapper: include localversion in kernel version string
  Documentation: html: adjust sidebar section titles styling
  Documentation: html: show sections in the sidebar
  checkpatch.pl: adapt to new Assisted-by: format
  MAINTAINERS: update Traditional Chinese documentation maintainers
  docs: pt_BR: process: Translate CVE documentation
  docs: pt_BR: translate the management-style.rst to Brazilian Portuguese
  docs: xforms_lists: support DEFINE_IDTENTRY_IRQ()
  coding-assistants: simplify attribution
  docs: translations: pt_BR: translate email-clients.rst
  docs: pt_BR: process: Translate the security-bugs.rst
  doc:it_IT: align doc-guide translation
  ...
Commit
72fdff1416e280e2baaa3cca69574defb998437e
Parents
9d2ed026 · 791e4203

Merge commit. Changes below are compared with the first parent: 9d2ed026.

Changes

85 files changed · +8019 −604

FileStatusAddDelContent
CREDITSmodified+4−0View file
Documentation/ABI/READMEmodified+1−1View file
Documentation/ABI/testing/sysfs-edac-memory-repairmodified+1−1View file
Documentation/admin-guide/kernel-parameters.txtmodified+15−19View file
Documentation/admin-guide/media/bttv.rstmodified+1−1View file
Documentation/admin-guide/mm/pagemap.rstmodified+4−4View file
Documentation/admin-guide/pm/amd-pstate.rstmodified+1−1View file
Documentation/conf.pymodified+3−3View file
Documentation/core-api/SMP.rstadded+11−0View file
Documentation/core-api/dma-api.rstmodified+1−1View file
Documentation/core-api/errseq.rstmodified+1−1View file
Documentation/core-api/index.rstmodified+1−0View file
Documentation/core-api/list.rstmodified+1−1View file
Documentation/core-api/min_heap.rstmodified+0−13View file
Documentation/core-api/packing.rstmodified+2−2View file
Documentation/core-api/real-time/hardware.rstmodified+104−0View file
Documentation/core-api/real-time/index.rstmodified+1−0View file
Documentation/core-api/real-time/kernel-configuration.rstadded+307−0View file
Documentation/dev-tools/container.rstmodified+3−3View file
Documentation/driver-api/ipmi.rstmodified+1−1View file
Documentation/driver-api/usb/writing_usb_driver.rstmodified+0−3View file
Documentation/filesystems/overlayfs.rstmodified+1−2View file
Documentation/filesystems/proc.rstmodified+1−1View file
Documentation/index.rstmodified+8−0View file
Documentation/kernel-hacking/locking.rstmodified+4−4View file
Documentation/process/coding-assistants.rstmodified+6−6View file
Documentation/process/generated-content.rstmodified+7−0View file
Documentation/process/submitting-patches.rstmodified+6−8View file
Documentation/scheduler/sched-energy.rstmodified+1−1View file
Documentation/scheduler/sched-pelt.cmodified+2−1View file
Documentation/sphinx-static/custom.cssmodified+15−9View file
Documentation/sphinx/maintainers_include.pymodified+5−2View file
Documentation/translations/it_IT/doc-guide/checktransupdate.rstadded+59−0View file
Documentation/translations/it_IT/doc-guide/contributing.rstadded+319−0View file
Documentation/translations/it_IT/doc-guide/index.rstmodified+3−10View file
Documentation/translations/it_IT/doc-guide/kernel-doc.rstmodified+69−19View file
Documentation/translations/it_IT/doc-guide/maintainer-profile.rstadded+60−0View file
Documentation/translations/it_IT/doc-guide/parse-headers.rstmodified+110−110View file
Documentation/translations/it_IT/doc-guide/sphinx.rstmodified+137−41View file
Documentation/translations/it_IT/process/changes.rstmodified+73−45View file
Documentation/translations/ja_JP/process/submitting-patches.rstmodified+152−75View file
Documentation/translations/pt_BR/index.rstmodified+1−12View file
Documentation/translations/pt_BR/process/4.Coding.rstadded+440−0View file
Documentation/translations/pt_BR/process/5.Posting.rstadded+376−0View file
Documentation/translations/pt_BR/process/6.Followthrough.rstadded+220−0View file
Documentation/translations/pt_BR/process/7.AdvancedTopics.rstadded+201−0View file
Documentation/translations/pt_BR/process/8.Conclusion.rstadded+73−0View file
Documentation/translations/pt_BR/process/adding-syscalls.rstadded+700−0View file
Documentation/translations/pt_BR/process/applying-patches.rstadded+447−0View file
Documentation/translations/pt_BR/process/backporting.rstadded+598−0View file
Documentation/translations/pt_BR/process/botching-up-ioctls.rstadded+256−0View file
Documentation/translations/pt_BR/process/code-of-conduct-interpretation.rstadded+257−0View file
Documentation/translations/pt_BR/process/code-of-conduct.rstadded+88−0View file
Documentation/translations/pt_BR/process/contribution-maturity-model.rstadded+111−0View file
Documentation/translations/pt_BR/process/cve.rstadded+125−0View file
Documentation/translations/pt_BR/process/deprecated.rstadded+422−0View file
Documentation/translations/pt_BR/process/development-process.rstmodified+5−0View file
Documentation/translations/pt_BR/process/email-clients.rstadded+368−0View file
Documentation/translations/pt_BR/process/index.rstadded+102−0View file
Documentation/translations/pt_BR/process/kernel-driver-statement.rstadded+205−0View file
Documentation/translations/pt_BR/process/maintainer-netdev.rstmodified+16−7View file
Documentation/translations/pt_BR/process/management-style.rstadded+265−0View file
Documentation/translations/pt_BR/process/security-bugs.rstadded+368−0View file
Documentation/translations/pt_BR/process/submit-checklist.rstadded+145−0View file
Documentation/translations/zh_CN/accounting/psi.rstmodified+1−1View file
Documentation/translations/zh_CN/admin-guide/index.rstmodified+152−50View file
Documentation/translations/zh_CN/admin-guide/module-signing.rstadded+250−0View file
Documentation/translations/zh_CN/dev-tools/kasan.rstmodified+1−1View file
Documentation/translations/zh_CN/how-to.rstmodified+100−49View file
Documentation/translations/zh_CN/rust/arch-support.rstmodified+1−0View file
Documentation/translations/zh_CN/rust/general-information.rstmodified+79−3View file
Documentation/translations/zh_CN/rust/quick-start.rstmodified+19−29View file
Documentation/translations/zh_CN/rust/testing.rstmodified+4−0View file
Documentation/translations/zh_CN/scheduler/sched-energy.rstmodified+1−1View file
Documentation/translations/zh_CN/security/self-protection.rstmodified+1−1View file
Documentation/translations/zh_TW/process/stable-api-nonsense.rstmodified+31−31View file
MAINTAINERSmodified+4−3View file
READMEmodified+9−9View file
scripts/checkpatch.plmodified+4−3View file
tools/docs/documentation-file-ref-checkmodified+1−1View file
tools/docs/sphinx-build-wrappermodified+11−2View file
tools/lib/python/abi/abi_regex.pymodified+5−6View file
tools/lib/python/kdoc/kdoc_output.pymodified+1−1View file
tools/lib/python/kdoc/kdoc_parser.pymodified+53−5View file
tools/lib/python/kdoc/xforms_lists.pymodified+1−0View file

Only the first 600 diff lines are shown. Download the complete patch.

CREDITS

View file
diff --git a/CREDITS b/CREDITS
index 7367317..28fb257 100644
--- a/CREDITS
+++ b/CREDITS
@@ -1821,6 +1821,10 @@ S: Am Strand 5
S: D-19063 Schwerin
S: Germany
+N: Haowen Hu
+D: Traditional Chinese (zh_TW) documentation translation and maintenance
+
N: Jan Hubicka

Documentation/ABI/README

View file
diff --git a/Documentation/ABI/README b/Documentation/ABI/README
index 315fffe..27c962e 100644
--- a/Documentation/ABI/README
+++ b/Documentation/ABI/README
@@ -62,7 +62,7 @@ Users: All users of this interface who wish to be notified when
Note:
- The fields should be use a simple notation, compatible with ReST markup.
+ The fields should use a simple notation, compatible with ReST markup.
Also, the file **should not** have a top-level index, like::
===

Documentation/ABI/testing/sysfs-edac-memory-repair

View file
diff --git a/Documentation/ABI/testing/sysfs-edac-memory-repair b/Documentation/ABI/testing/sysfs-edac-memory-repair
index 0434a3b..ab19913 100644
--- a/Documentation/ABI/testing/sysfs-edac-memory-repair
+++ b/Documentation/ABI/testing/sysfs-edac-memory-repair
@@ -160,7 +160,7 @@ Description:
in trace events, such as CXL DRAM and CXL general media
error records of CXL memory devices.
- When readng back these attributes, it returns the current
+ When reading back these attributes, it returns the current
value of memory requested to be repaired.
bank_group - The bank group of the memory to repair.

Documentation/admin-guide/kernel-parameters.txt

View file
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index e464363..9b923a1 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -1618,10 +1618,17 @@ Kernel parameters
on all PCI bridges while in the EFI boot stub
efi_no_storage_paranoia [EFI,X86,EARLY]
- Using this parameter you can use more than 50% of
- your efi variable storage. Use this parameter only if
- you are really sure that your UEFI does sane gc and
- fulfills the spec otherwise your board may brick.
+ The kernel reserves 5KB of EFI variable storage for
+ safety, because some UEFI implementation may fail to
+ boot if there's insufficient space in the EFI variable
+ storage.
+
+ Using this parameter, you can use the 5KB reservation
+ in the EFI variable storage.
+
+ However, Use this parameter only if you are really
+ sure that your UEFI does sane gc and fulfills the spec
+ otherwise your board may brick.
efivar_ssdt= [EFI; X86] Name of an EFI variable that contains an SSDT
that is to be dynamically loaded by Linux. If there are
@@ -6446,9 +6453,9 @@ Kernel parameters
reboot= [KNL]
Format (x86 or x86_64):
[w[arm] | c[old] | h[ard] | s[oft] | g[pio]] | d[efault] \
- [[,]s[mp]#### \
+ [[,]s[mp]####] \
[[,]b[ios] | a[cpi] | k[bd] | t[riple] | e[fi] | p[ci]] \
- [[,]f[orce]
+ [[,]f[orce]]
Where reboot_mode is one of warm (soft) or cold (hard) or gpio
(prefix with 'panic_' to set mode for panic
reboot only),
@@ -6908,7 +6915,7 @@ Kernel parameters
xtime_lock contention on larger systems, and/or RCU lock
contention on all systems with CONFIG_MAXSMP set.
Format: { "0" | "1" }
- 0 -- disable. (may be 1 via CONFIG_CMDLINE="skew_tick=1"
+ 0 -- disable. (may be 1 via CONFIG_CMDLINE="skew_tick=1")
1 -- enable.
Note: increases power consumption, thus should only be
enabled if running jitter sensitive (HPC/RT) workloads.
@@ -6949,7 +6956,7 @@ Kernel parameters
apic=verbose is specified.
Example: apic=debug show_lapic=all
- slab_debug[=options[,slabs][;[options[,slabs]]...] [MM]
+ slab_debug[=options[,slabs][;[options[,slabs]]...]] [MM]
Enabling slab_debug allows one to determine the
culprit if slab objects become corrupted. Enabling
slab_debug can create guard zones around objects and
@@ -7039,17 +7046,6 @@ Kernel parameters
take as long as they take. Specifying 300,000
for this value provides a 5-minute timeout.
- smsc-ircc2.nopnp [HW] Don't use PNP to discover SMC devices
- smsc-ircc2.ircc_cfg= [HW] Device configuration I/O port
- smsc-ircc2.ircc_sir= [HW] SIR base I/O port
- smsc-ircc2.ircc_fir= [HW] FIR base I/O port
- smsc-ircc2.ircc_irq= [HW] IRQ line
- smsc-ircc2.ircc_dma= [HW] DMA channel
- smsc-ircc2.ircc_transceiver= [HW] Transceiver type:
- 0: Toshiba Satellite 1800 (GP data pin select)
- 1: Fast pin select (default)
- 2: ATC IRMode
-
smt= [KNL,MIPS,S390,EARLY] Set the maximum number of threads
(logical CPUs) to use per physical CPU on systems
capable of symmetric multithreading (SMT). Will

Documentation/admin-guide/media/bttv.rst

View file
diff --git a/Documentation/admin-guide/media/bttv.rst b/Documentation/admin-guide/media/bttv.rst
index 58cbaf6..78c3e56 100644
--- a/Documentation/admin-guide/media/bttv.rst
+++ b/Documentation/admin-guide/media/bttv.rst
@@ -1239,7 +1239,7 @@ Models:
- Galaxis DVB Card C CI
- Galaxis DVB Card S
- Galaxis DVB Card C
-- Galaxis plug.in S [neuer Name: Galaxis DVB Card S CI
+- Galaxis plug.in S [new Name: Galaxis DVB Card S CI]
Hauppauge
~~~~~~~~~

Documentation/admin-guide/mm/pagemap.rst

View file
diff --git a/Documentation/admin-guide/mm/pagemap.rst b/Documentation/admin-guide/mm/pagemap.rst
index c57e61b..20e3fe7 100644
--- a/Documentation/admin-guide/mm/pagemap.rst
+++ b/Documentation/admin-guide/mm/pagemap.rst
@@ -67,7 +67,7 @@ number of times a page is mapped.
* ``/proc/kpageflags``. This file contains a 64-bit set of flags for each
page, indexed by PFN.
- The flags are (from ``fs/proc/page.c``, above kpageflags_read):
+ The flags are (from ``include/uapi/linux/kernel-page-flags.h``):
0. LOCKED
1. ERROR
@@ -264,7 +264,7 @@ The ``struct pm_scan_arg`` is used as the argument of the IOCTL.
provided or not.
3. The range is specified through ``start`` and ``end``.
4. The walk can abort before visiting the complete range such as the user buffer
- can get full etc. The walk ending address is specified in``end_walk``.
+ can get full etc. The walk ending address is specified in ``walk_end``.
5. The output buffer of ``struct page_region`` array and size is specified in
``vec`` and ``vec_len``.
6. The optional maximum requested pages are specified in the ``max_pages``.
@@ -275,7 +275,7 @@ Find pages which have been written and WP them as well::
struct pm_scan_arg arg = {
.size = sizeof(arg),
- .flags = PM_SCAN_CHECK_WPASYNC | PM_SCAN_CHECK_WPASYNC,
+ .flags = PM_SCAN_WP_MATCHING | PM_SCAN_CHECK_WPASYNC,
..
.category_mask = PAGE_IS_WRITTEN,
.return_mask = PAGE_IS_WRITTEN,
@@ -288,7 +288,7 @@ present or huge::
.size = sizeof(arg),
.flags = 0,
..
- .category_mask = PAGE_IS_WRITTEN | PAGE_IS_SWAPPED,
+ .category_mask = PAGE_IS_WRITTEN | PAGE_IS_FILE,
.category_inverted = PAGE_IS_SWAPPED,
.category_anyof_mask = PAGE_IS_PRESENT | PAGE_IS_HUGE,
.return_mask = PAGE_IS_WRITTEN | PAGE_IS_SWAPPED |

Documentation/admin-guide/pm/amd-pstate.rst

View file
diff --git a/Documentation/admin-guide/pm/amd-pstate.rst b/Documentation/admin-guide/pm/amd-pstate.rst
index c7bf7cc..6fd72ba 100644
--- a/Documentation/admin-guide/pm/amd-pstate.rst
+++ b/Documentation/admin-guide/pm/amd-pstate.rst
@@ -471,7 +471,7 @@ update the core ranking and set the cpu's priority.
Kernel Parameters
-----------------
-``amd-pstate`` peferred core`` has two states: enable and disable.
+``amd-pstate`` preferred core has two states: enable and disable.
Enable/disable states can be chosen by different kernel parameters.
Default enable ``amd-pstate`` preferred core.

Documentation/conf.py

View file
diff --git a/Documentation/conf.py b/Documentation/conf.py
index 9b822ab..5ab26ce 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -61,12 +61,12 @@ manpages_url = 'https://man7.org/linux/man-pages/man{section}/{page}.{section}.h
def config_init(app, config):
"""
- Initialize path-dependent variabled
+ Initialize path-dependent variables
On Sphinx, all directories are relative to what it is passed as
SOURCEDIR parameter for sphinx-build. Due to that, all patterns
that have directory names on it need to be dynamically set, after
- converting them to a relative patch.
+ converting them to a relative path.
As Sphinx doesn't include any patterns outside SOURCEDIR, we should
exclude relative patterns that start with "../".
@@ -287,7 +287,7 @@ author = "The kernel development community"
try:
makefile_version = None
makefile_patchlevel = None
- with open("../Makefile", encoding="utf=8") as fp:
+ with open("../Makefile", encoding="utf-8") as fp:
for line in fp:
key, val = [x.strip() for x in line.split("=", 2)]
if key == "VERSION":

Documentation/core-api/SMP.rst

View file
diff --git a/Documentation/core-api/SMP.rst b/Documentation/core-api/SMP.rst
new file mode 100644
index 0000000..0265a98
--- /dev/null
+++ b/Documentation/core-api/SMP.rst
@@ -0,0 +1,11 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+==============
+SMP primitives
+==============
+
+.. kernel-doc:: include/linux/smp.h
+ :internal:
+
+.. kernel-doc:: kernel/smp.c
+ :export:

Documentation/core-api/dma-api.rst

View file
diff --git a/Documentation/core-api/dma-api.rst b/Documentation/core-api/dma-api.rst
index ca75b35..ba23a47 100644
--- a/Documentation/core-api/dma-api.rst
+++ b/Documentation/core-api/dma-api.rst
@@ -508,7 +508,7 @@ call to dma_iova_try_alloc. This can be useful in the unmap path.
Is used to link ranges to the IOVA previously allocated. The start of all
but the first call to dma_iova_link for a given state must be aligned
-to the DMA merge boundary returned by ``dma_get_merge_boundary())``, and
+to the DMA merge boundary returned by ``dma_get_merge_boundary()``, and
the size of all but the last range must be aligned to the DMA merge boundary
as well.

Documentation/core-api/errseq.rst

View file
diff --git a/Documentation/core-api/errseq.rst b/Documentation/core-api/errseq.rst
index ff332e2..d298d4c 100644
--- a/Documentation/core-api/errseq.rst
+++ b/Documentation/core-api/errseq.rst
@@ -143,7 +143,7 @@ Because of this, it's often advantageous to first do an errseq_check to
see if anything has changed, and only later do an
errseq_check_and_advance after taking the lock. e.g.::
- if (errseq_check(&wd.wd_err, READ_ONCE(su.s_wd_err)) {
+ if (errseq_check(&wd.wd_err, READ_ONCE(su.s_wd_err))) {
/* su.s_wd_err is protected by s_wd_err_lock */
spin_lock(&su.s_wd_err_lock);
err = errseq_check_and_advance(&wd.wd_err, &su.s_wd_err);

Documentation/core-api/index.rst

View file
diff --git a/Documentation/core-api/index.rst b/Documentation/core-api/index.rst
index 13769d5..92f91c6 100644
--- a/Documentation/core-api/index.rst
+++ b/Documentation/core-api/index.rst
@@ -81,6 +81,7 @@ Documentation/locking/index.rst for more related documentation.
padata
../RCU/index
wrappers/memory-barriers.rst
+ SMP
Low-level hardware management
=============================

Documentation/core-api/list.rst

View file
diff --git a/Documentation/core-api/list.rst b/Documentation/core-api/list.rst
index 479aa91..df8b078 100644
--- a/Documentation/core-api/list.rst
+++ b/Documentation/core-api/list.rst
@@ -458,7 +458,7 @@ The list_move() and list_move_tail() functions can be used to move an entry
from one list to another, to either the start or end respectively.
In the following example, we'll assume we start with two lists ("clowns" and
-"sidewalk" in the following initial state "State 0"::
+"sidewalk") in the following initial state "State 0"::
.----------------------------------------------------------------.
v |

Documentation/core-api/min_heap.rst

View file
diff --git a/Documentation/core-api/min_heap.rst b/Documentation/core-api/min_heap.rst
index 9f57766..919dcf1 100644
--- a/Documentation/core-api/min_heap.rst
+++ b/Documentation/core-api/min_heap.rst
@@ -240,19 +240,6 @@ This macro returns `true` if the heap is full, otherwise `false`.
**Inline Version:** min_heap_full_inline(heap)
-- **min_heap_empty(heap)**: Checks whether the heap is empty.
- Complexity: **O(1)**.
-
-.. code-block:: c
-
- bool empty = min_heap_empty(heap);
-
-- `heap`: A pointer to the min-heap to check.
-
-This macro returns `true` if the heap is empty, otherwise `false`.
-
-**Inline Version:** min_heap_empty_inline(heap)
-
Example Usage
=============

Documentation/core-api/packing.rst

View file
diff --git a/Documentation/core-api/packing.rst b/Documentation/core-api/packing.rst
index f68f1e0..cff1a26 100644
--- a/Documentation/core-api/packing.rst
+++ b/Documentation/core-api/packing.rst
@@ -330,7 +330,7 @@ Here is an example of how to use the fields APIs:
void unpack_your_data(const packed_buf_t *buf, struct data *unpacked)
{
- BUILD_BUG_ON(sizeof(*buf) != SIZE;
+ BUILD_BUG_ON(sizeof(*buf) != SIZE);
unpack_fields(buf, sizeof(*buf), unpacked, fields,
QUIRK_LITTLE_ENDIAN);
@@ -338,7 +338,7 @@ Here is an example of how to use the fields APIs:
void pack_your_data(const struct data *unpacked, packed_buf_t *buf)
{
- BUILD_BUG_ON(sizeof(*buf) != SIZE;
+ BUILD_BUG_ON(sizeof(*buf) != SIZE);
pack_fields(buf, sizeof(*buf), unpacked, fields,
QUIRK_LITTLE_ENDIAN);

Documentation/core-api/real-time/hardware.rst

View file
diff --git a/Documentation/core-api/real-time/hardware.rst b/Documentation/core-api/real-time/hardware.rst
index 19f9bb3..9f95e75 100644
--- a/Documentation/core-api/real-time/hardware.rst
+++ b/Documentation/core-api/real-time/hardware.rst
@@ -130,3 +130,107 @@ https://github.com/Linutronix/RTC-Testbench.
The goal of this project is to validate real-time network communication. It can
be thought of as a "cyclictest" for networking and also serves as a starting
point for application development.
+
+Firmware
+--------
+
+The firmware often plays a significant role in system operation because it can
+perform tasks that the kernel cannot directly access, and in some cases it can
+even preempt or intercept the kernel.
+
+A common example of firmware assisting the kernel is when it provides a generic
+interface to a resource. Instead of accessing an RTC chip through an I2C host
+controller, the kernel may query the firmware for the current time, and the
+firmware then accesses the RTC behind the scenes.
+
+Firmware can also intercept kernel execution by providing services that
+temporarily take control of the system. One example is memory scrubbing, where
+the firmware periodically pauses the kernel, reads back portions of system
+memory, and then returns control. During this time, the kernel is effectively
+interrupted.
+In contrast, some systems provide hardware-based memory scrubbing, which
+operates independently of firmware or software. See
+Documentation/edac/scrub.rst for details.
+
+If the kernel is intercepted for longer periods then these periods can be made
+visible with the hardware latency detector. See
+Documentation/trace/hwlat_detector.rst.
+
+The kernel can also be intercepted in response to specific events, such as
+overheating. In this case, the firmware may throttle the CPU or shut it down
+immediately to prevent hardware damage.
+
+Unless the firmware is well documented, it should be thoroughly tested to
+uncover any unexpected behaviour.
+
+EFI
+~~~~
+
+EFI provides runtime services that act as a communication interface between the
+firmware and the operating system. One such service is reading and writing EFI
+variables, which are used, for example, to determine the boot source.
+
+Invoking a runtime service may require the architecture to disable kernel
+preemption or interrupts during the call. This means the duration of a service
+invocation directly affects the system’s observable latency. There is also
+nothing that prevents a service call from disabling interrupts internally while
+it runs.
+
+For these reasons, EFI runtime services are disabled by default on a PREEMPT_RT
+kernel. They can still be enabled at boot time or via a Kconfig option if
+required.
+The native EFI runtime service implementation (where both the EFI service and
+the kernel are either 32-bit or 64-bit executables) uses a wrapper mechanism
+that invokes the service through a dedicated workqueue. This workqueue is named
+efi_runtime, and it can be restricted to a housekeeping CPU using the
+``/sys/devices/virtual/workqueue/efi_runtime/cpumask`` sysfs file. Assigning it
+to a housekeeping CPU ensures that potentially long service invocations do not
+impact the real-time workload which is restricted to other CPUs.
+
+It must also be verified that the runtime services behave as expected. Some
+implementations on the x86 architecture pause all other CPUs while one CPU
+performs the service call. In such cases, the interruption affects all CPUs,
+and restricting the workqueue to a single CPU provides no benefit.
+
+OP-TEE (ARM)
+~~~~~~~~~~~~
+
+Execution flows from the normal world (Linux) into the secure world (OP-TEE)
+through the secure monitor at EL3. The transition is initiated by the `smc`
+(Secure Monitor Call) opcode or the `hvc` (Hypervisor Call) opcode together
+with a function identifier. The calling convention defines two types of calls:
+**yielding calls** and **fast calls**:
+
+- A **yielding call** unmasks interrupts before handling the requested service,
+ allowing normal world interrupts to occur.
+- A **fast call** handles the requested service atomically, without allowing
+ interrupts from either the normal world or the secure world.
+
+In addition, the secure world (EL3 and OP-TEE) can receive interrupts routed to
+the secure world. While a secure world interrupt is being serviced,
+normal world interrupts are masked and cannot preempt the operation.
+
+The transition from normal world to secure monitor to OP-TEE and back introduces
+additional latency due to world switching and context save/restore. This
+overhead is typically a few microseconds and usually remains within the noise
+floor.
+
+It is worth noting that the normal world cannot mask secure interrupts, while
+the secure world can mask normal-world interrupts during execution. How OP-TEE
+affects real-time workloads depends on whether secure interrupts are enabled
+and which OP-TEE services are invoked.
+
+A practical concern is any fast call that runs longer than expected, for
+example a function that occasionally performs a long-running cryptographic
+computation. Another example that may block in an unexpected way are OP-TEE
+drivers that issue RPC requests. An OP-TEE service in the secure world (RPMB
+for instance) may need to issue a request back to the normal world (the Linux
+driver) in order to complete the operation. While Linux remains preemptible,
+the thread that issued the request stays blocked until the RPC completes and
+the secure function call returns.
+
+The TF-A project provides documentation on interrupt management:
+https://trustedfirmware-a.readthedocs.io/en/latest/design/interrupt-framework-design.html#interrupt-management-framework
+
+The OP-TEE project provides documentation on how interrupts are handled:
+https://optee.readthedocs.io/en/latest/architecture/core.html#interrupt-handling

Documentation/core-api/real-time/index.rst

View file
diff --git a/Documentation/core-api/real-time/index.rst b/Documentation/core-api/real-time/index.rst
index f08d239..a17a3de 100644
--- a/Documentation/core-api/real-time/index.rst
+++ b/Documentation/core-api/real-time/index.rst
@@ -15,3 +15,4 @@ the required changes compared to a non-PREEMPT_RT configuration.
differences
hardware
architecture-porting
+ kernel-configuration

Documentation/core-api/real-time/kernel-configuration.rst

View file
diff --git a/Documentation/core-api/real-time/kernel-configuration.rst b/Documentation/core-api/real-time/kernel-configuration.rst
new file mode 100644
index 0000000..d7f08e7
--- /dev/null
+++ b/Documentation/core-api/real-time/kernel-configuration.rst
@@ -0,0 +1,307 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+==============================
+Real-Time Kernel configuration
+==============================
+
+.. contents:: Table of Contents
+ :depth: 3
+ :local:
+
+Introduction
+============
+
+This document lists the kernel configuration options that might affect a
+real-time kernel's worst-case latency. It is intended for system integrators.
+
+Configuration options
+=====================
+
+.. Please keep the configuration listings alphabetically ordered
+
+CPU frequency governors
+-----------------------
+
+``CONFIG_CPU_FREQ``
+^^^^^^^^^^^^^^^^^^^
+
+:Expectation: enabled
+:Severity: *high*
+
+The CPU frequency scaling subsystem ensures that the processor can operate at
+its maximum supported frequency. While, in general, bootloaders are tasked
+with setting the CPU clock to the highest speed on boot, some do not. It is
+thus desirable to keep this option enabled.
+
+.. caution::
+
+ A real-time kernel is not about being "as fast as possible", however
+ real-time requirements may demand that the CPU is clocked at a particular
+ speed.
+
+``CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE``
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Expectation: enabled
+:Severity: *high*
+
+Real-Time workloads expect a fixed CPU frequency during execution. Using the
+performance governor is an easy way to achieve that purely from kernel
+configuration.
+
+This is not an absolute rule. Some setups might prefer to clock the CPU to
+lower speeds due to thermal packaging or other requirements. The key is that
+the CPU frequency remains constant once set.
+
+Non-performance CPU frequency governors
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Expectation: disabled
+:Severity: *medium*
+
+To ensure reproducible system latency measurements, disable the
+non-``PERFORMANCE`` CPU frequency governors whenever possible. This avoids
+the risk of unknown userspace tasks implicitly or explicitly setting a
+different CPU frequency governor, and thereby changing latency behavior while
+the system is running.
+
+If disabling other frequency governors is not an option, use a governor that
+keeps the CPU frequency fixed. For example,
+``CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE`` can be enabled when userspace is
+responsible for setting a *stable* frequency during system initialization.
+
+If a low CPU frequency is desired, then
+``CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE`` can be set.
+
+The ``ONDEMAND`` governor should not be enabled on a real-time system. Its
+frequency changes depend on workload behavior and can significantly harm
+determinism.
+
+For more information, see Documentation/admin-guide/pm/cpufreq.rst
+
+``CONFIG_CPU_IDLE``
+-------------------
+
+:Expectation: enabled
+:Severity: *info*
+
+CPU idle states (C-states) allow the processor to enter low-power modes during
+periods of inactivity. Very-low CPU idle states may require flushing the CPU
+caches and lowering or disabling the clocking. This can lower power
+consumption, but it also increases the entry and exit latency from such
+states.
+
+While disabling this option eliminates cpuidle-related latencies, doing so can
+significantly impact hardware longevity, warranty, and thermal behavior.
+Users should cap the maximum C-state to C1 instead. For ACPI platforms, this
+can be achieved by using the boot parameter [1]_::
+
+ processor.max_cstate=1
+
+Higher C-states can be acceptable depending on the user workload's latency
+requirements. For ACPI-based platforms, use the ``cpupower idle-info``
+command to inspect the available idle states.
+
+For more information, please see:
+
+- ``linux/tools/power/cpupower``
+- Documentation/admin-guide/pm/cpuidle.rst
+- Documentation/admin-guide/pm/index.rst
+
+``CONFIG_DRM``
+--------------
+
+:Expectation: disabled
+:Severity: *info*
+
+GPU-accelerated workloads can share system resources with the CPU, including
+last-level cache (LLC) and memory bandwidth. Modern integrated GPUs optimize
+graphics performance at the expense of CPU determinism.
+
+Examples of affected platforms:
+
+- Intel processors with integrated graphics (Gen9 and later)
+- AMD APUs with Radeon Graphics
+- Xilinx Zynq UltraScale+ MPSoC EG/EV series
+
+If graphics workloads must run alongside real-time tasks, users must conduct
+thorough stress testing using tools like ``glmark2`` while measuring the
+overall system latency.
+
+For more information, please check:
+
+- Documentation/core-api/real-time/hardware.rst ("Regarding hardware" section)
+- Documentation/filesystems/resctrl.rst
+- `Real-Time and Graphics: A Contradiction? <https://web.archive.org/web/20221025085614/https://linutronix.de/PDF/Realtime_and_graphics-acontradiction2021.pdf>`_
+
+``CONFIG_EFI_DISABLE_RUNTIME``
+------------------------------
+
+:Expectation: enabled
+:Severity: *medium*
+
+EFI is the standard boot and firmware interface for multiple architectures.
+EFI runtime services provide callback functions to be called from the kernel;
+e.g., as utilized by (``CONFIG_EFI_VARS*``) or (``CONFIG_RTC_DRV_EFI``). For
+the former, the kernel calls into EFI to update the EFI variables.
+
+Calling into EFI means invoking firmware callbacks. During such invocations,
+the system might not be able to react to interrupts and will thus not be able
+to perform a context switch. This can cause significant latency spikes for

This diff is incomplete. Download the complete patch.

Documentation/dev-tools/container.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/driver-api/ipmi.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/driver-api/usb/writing_usb_driver.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/filesystems/overlayfs.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/filesystems/proc.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/index.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/kernel-hacking/locking.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/process/coding-assistants.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/process/generated-content.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/process/submitting-patches.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/scheduler/sched-energy.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/scheduler/sched-pelt.c

View file

This diff is incomplete. Download the complete patch.

Documentation/sphinx-static/custom.css

View file

This diff is incomplete. Download the complete patch.

Documentation/sphinx/maintainers_include.py

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/doc-guide/checktransupdate.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/doc-guide/contributing.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/doc-guide/index.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/doc-guide/kernel-doc.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/doc-guide/maintainer-profile.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/doc-guide/parse-headers.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/doc-guide/sphinx.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/it_IT/process/changes.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/ja_JP/process/submitting-patches.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/index.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/4.Coding.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/5.Posting.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/6.Followthrough.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/7.AdvancedTopics.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/8.Conclusion.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/adding-syscalls.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/applying-patches.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/backporting.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/botching-up-ioctls.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/code-of-conduct-interpretation.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/code-of-conduct.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/contribution-maturity-model.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/cve.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/deprecated.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/development-process.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/email-clients.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/index.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/kernel-driver-statement.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/maintainer-netdev.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/management-style.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/security-bugs.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/pt_BR/process/submit-checklist.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/accounting/psi.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/admin-guide/index.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/admin-guide/module-signing.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/dev-tools/kasan.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/how-to.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/rust/arch-support.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/rust/general-information.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/rust/quick-start.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/rust/testing.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/scheduler/sched-energy.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_CN/security/self-protection.rst

View file

This diff is incomplete. Download the complete patch.

Documentation/translations/zh_TW/process/stable-api-nonsense.rst

View file

This diff is incomplete. Download the complete patch.

MAINTAINERS

View file

This diff is incomplete. Download the complete patch.

README

View file

This diff is incomplete. Download the complete patch.

scripts/checkpatch.pl

View file

This diff is incomplete. Download the complete patch.

tools/docs/documentation-file-ref-check

View file

This diff is incomplete. Download the complete patch.

tools/docs/sphinx-build-wrapper

View file

This diff is incomplete. Download the complete patch.

tools/lib/python/abi/abi_regex.py

View file

This diff is incomplete. Download the complete patch.

tools/lib/python/kdoc/kdoc_output.py

View file

This diff is incomplete. Download the complete patch.

tools/lib/python/kdoc/kdoc_parser.py

View file

This diff is incomplete. Download the complete patch.

tools/lib/python/kdoc/xforms_lists.py

View file

This diff is incomplete. Download the complete patch.