Merge branch 'bjorn' into docs-mw

A big set of typo fixes from Bjorn Helgaas
This commit is contained in:
Jonathan Corbet 2025-08-18 10:40:16 -06:00
commit 4e18a0b090
36 changed files with 76 additions and 76 deletions

View File

@ -86,7 +86,7 @@ The <EPF Device> directory can have a list of symbolic links
be created by the user to represent the virtual functions that are bound to be created by the user to represent the virtual functions that are bound to
the physical function. In the above directory structure <EPF Device 11> is a the physical function. In the above directory structure <EPF Device 11> is a
physical function and <EPF Device 31> is a virtual function. An EPF device once physical function and <EPF Device 31> is a virtual function. An EPF device once
it's linked to another EPF device, cannot be linked to a EPC device. it's linked to another EPF device, cannot be linked to an EPC device.
EPC Device EPC Device
========== ==========
@ -108,7 +108,7 @@ entries corresponding to EPC device will be created by the EPC core.
The <EPC Device> directory will have a list of symbolic links to The <EPC Device> directory will have a list of symbolic links to
<EPF Device>. These symbolic links should be created by the user to <EPF Device>. These symbolic links should be created by the user to
represent the functions present in the endpoint device. Only <EPF Device> represent the functions present in the endpoint device. Only <EPF Device>
that represents a physical function can be linked to a EPC device. that represents a physical function can be linked to an EPC device.
The <EPC Device> directory will also have a *start* field. Once The <EPC Device> directory will also have a *start* field. Once
"1" is written to this field, the endpoint device will be ready to "1" is written to this field, the endpoint device will be ready to

View File

@ -197,8 +197,8 @@ by the PCI endpoint function driver.
* pci_epf_register_driver() * pci_epf_register_driver()
The PCI Endpoint Function driver should implement the following ops: The PCI Endpoint Function driver should implement the following ops:
* bind: ops to perform when a EPC device has been bound to EPF device * bind: ops to perform when an EPC device has been bound to EPF device
* unbind: ops to perform when a binding has been lost between a EPC * unbind: ops to perform when a binding has been lost between an EPC
device and EPF device device and EPF device
* add_cfs: optional ops to create function specific configfs * add_cfs: optional ops to create function specific configfs
attributes attributes
@ -251,7 +251,7 @@ pci-ep-cfs.c can be used as reference for using these APIs.
* pci_epf_bind() * pci_epf_bind()
pci_epf_bind() should be invoked when the EPF device has been bound to pci_epf_bind() should be invoked when the EPF device has been bound to
a EPC device. an EPC device.
* pci_epf_unbind() * pci_epf_unbind()

View File

@ -106,7 +106,7 @@ or the RCU-protected data that it points to can change concurrently.
Like rcu_dereference(), when lockdep is enabled, RCU list and hlist Like rcu_dereference(), when lockdep is enabled, RCU list and hlist
traversal primitives check for being called from within an RCU read-side traversal primitives check for being called from within an RCU read-side
critical section. However, a lockdep expression can be passed to them critical section. However, a lockdep expression can be passed to them
as a additional optional argument. With this lockdep expression, these as an additional optional argument. With this lockdep expression, these
traversal primitives will complain only if the lockdep expression is traversal primitives will complain only if the lockdep expression is
false and they are called from outside any RCU read-side critical section. false and they are called from outside any RCU read-side critical section.

View File

@ -119,7 +119,7 @@ warnings:
uncommon in large datacenter. In one memorable case some decades uncommon in large datacenter. In one memorable case some decades
back, a CPU failed in a running system, becoming unresponsive, back, a CPU failed in a running system, becoming unresponsive,
but not causing an immediate crash. This resulted in a series but not causing an immediate crash. This resulted in a series
of RCU CPU stall warnings, eventually leading the realization of RCU CPU stall warnings, eventually leading to the realization
that the CPU had failed. that the CPU had failed.
The RCU, RCU-sched, RCU-tasks, and RCU-tasks-trace implementations have The RCU, RCU-sched, RCU-tasks, and RCU-tasks-trace implementations have

View File

@ -41,7 +41,7 @@ namespace). The higher level goal is to allow for uid-based sandboxing of system
services without having to give out CAP_SETUID all over the place just so that services without having to give out CAP_SETUID all over the place just so that
non-root programs can drop to even-lesser-privileged uids. This is especially non-root programs can drop to even-lesser-privileged uids. This is especially
relevant when one non-root daemon on the system should be allowed to spawn other relevant when one non-root daemon on the system should be allowed to spawn other
processes as different uids, but its undesirable to give the daemon a processes as different uids, but it's undesirable to give the daemon a
basically-root-equivalent CAP_SETUID. basically-root-equivalent CAP_SETUID.

View File

@ -253,7 +253,7 @@ interface.
Some architectures have ECC detectors for L1, L2 and L3 caches, Some architectures have ECC detectors for L1, L2 and L3 caches,
along with DMA engines, fabric switches, main data path switches, along with DMA engines, fabric switches, main data path switches,
interconnections, and various other hardware data paths. If the hardware interconnections, and various other hardware data paths. If the hardware
reports it, then a edac_device device probably can be constructed to reports it, then an edac_device device probably can be constructed to
harvest and present that to userspace. harvest and present that to userspace.

View File

@ -118,7 +118,7 @@ and high-level drivers that you would use:
================ ============ ======== ================ ============ ========
All parports and all protocol drivers are probed automatically unless probe=0 All parports and all protocol drivers are probed automatically unless probe=0
parameter is used. So just "modprobe epat" is enough for a Imation SuperDisk parameter is used. So just "modprobe epat" is enough for an Imation SuperDisk
drive to work. drive to work.
Manual device creation:: Manual device creation::

View File

@ -600,7 +600,7 @@ lock and return itself to the pool.
All storage within vdo is managed as 4KB blocks, but it can accept writes All storage within vdo is managed as 4KB blocks, but it can accept writes
as small as 512 bytes. Processing a write that is smaller than 4K requires as small as 512 bytes. Processing a write that is smaller than 4K requires
a read-modify-write operation that reads the relevant 4K block, copies the a read-modify-write operation that reads the relevant 4K block, copies the
new data over the approriate sectors of the block, and then launches a new data over the appropriate sectors of the block, and then launches a
write operation for the modified data block. The read and write stages of write operation for the modified data block. The read and write stages of
this operation are nearly identical to the normal read and write this operation are nearly identical to the normal read and write
operations, and a single data_vio is used throughout this operation. operations, and a single data_vio is used throughout this operation.

View File

@ -214,7 +214,7 @@ XEON PHI specific considerations
command line with the 'ring3mwait=disable' command line option. command line with the 'ring3mwait=disable' command line option.
XEON PHI is not affected by the other MDS variants and MSBDS is mitigated XEON PHI is not affected by the other MDS variants and MSBDS is mitigated
before the CPU enters a idle state. As XEON PHI is not affected by L1TF before the CPU enters an idle state. As XEON PHI is not affected by L1TF
either disabling SMT is not required for full protection. either disabling SMT is not required for full protection.
.. _mds_smt_control: .. _mds_smt_control:

View File

@ -471,7 +471,7 @@ Notes on loading the dump-capture kernel:
performance degradation. To enable multi-cpu support, you should bring up an performance degradation. To enable multi-cpu support, you should bring up an
SMP dump-capture kernel and specify maxcpus/nr_cpus options while loading it. SMP dump-capture kernel and specify maxcpus/nr_cpus options while loading it.
* For s390x there are two kdump modes: If a ELF header is specified with * For s390x there are two kdump modes: If an ELF header is specified with
the elfcorehdr= kernel parameter, it is used by the kdump kernel as it the elfcorehdr= kernel parameter, it is used by the kdump kernel as it
is done on all other architectures. If no elfcorehdr= kernel parameter is is done on all other architectures. If no elfcorehdr= kernel parameter is
specified, the s390x kdump kernel dynamically creates the header. The specified, the s390x kdump kernel dynamically creates the header. The

View File

@ -3700,7 +3700,7 @@
looking for corruption. Enabling this will looking for corruption. Enabling this will
both detect corruption and prevent the kernel both detect corruption and prevent the kernel
from using the memory being corrupted. from using the memory being corrupted.
However, its intended as a diagnostic tool; if However, it's intended as a diagnostic tool; if
repeatable BIOS-originated corruption always repeatable BIOS-originated corruption always
affects the same memory, you can use memmap= affects the same memory, you can use memmap=
to prevent the kernel from using that memory. to prevent the kernel from using that memory.
@ -7382,7 +7382,7 @@
(converted into nanoseconds). Fast, but (converted into nanoseconds). Fast, but
depending on the architecture, may not be depending on the architecture, may not be
in sync between CPUs. in sync between CPUs.
global - Event time stamps are synchronize across global - Event time stamps are synchronized across
CPUs. May be slower than the local clock, CPUs. May be slower than the local clock,
but better for some race conditions. but better for some race conditions.
counter - Simple counting of events (1, 2, ..) counter - Simple counting of events (1, 2, ..)
@ -7502,12 +7502,12 @@
section. section.
trace_trigger=[trigger-list] trace_trigger=[trigger-list]
[FTRACE] Add a event trigger on specific events. [FTRACE] Add an event trigger on specific events.
Set a trigger on top of a specific event, with an optional Set a trigger on top of a specific event, with an optional
filter. filter.
The format is "trace_trigger=<event>.<trigger>[ if <filter>],..." The format is "trace_trigger=<event>.<trigger>[ if <filter>],..."
Where more than one trigger may be specified that are comma deliminated. Where more than one trigger may be specified that are comma delimited.
For example: For example:
@ -7515,7 +7515,7 @@
The above will enable the "stacktrace" trigger on the "sched_switch" The above will enable the "stacktrace" trigger on the "sched_switch"
event but only trigger it if the "prev_state" of the "sched_switch" event but only trigger it if the "prev_state" of the "sched_switch"
event is "2" (TASK_UNINTERUPTIBLE). event is "2" (TASK_UNINTERRUPTIBLE).
See also "Event triggers" in Documentation/trace/events.rst See also "Event triggers" in Documentation/trace/events.rst

View File

@ -25,7 +25,7 @@ generate, like:
(when available) (when available)
Those events (see linux/sonypi.h) can be polled using the character device node Those events (see linux/sonypi.h) can be polled using the character device node
/dev/sonypi (major 10, minor auto allocated or specified as a option). /dev/sonypi (major 10, minor auto allocated or specified as an option).
A simple daemon which translates the jogdial movements into mouse wheel events A simple daemon which translates the jogdial movements into mouse wheel events
can be downloaded at: <http://popies.net/sonypi/> can be downloaded at: <http://popies.net/sonypi/>

View File

@ -96,7 +96,7 @@ Some of the features of this driver include:
motion compensation modes: low, medium, and high motion. Pipelines are motion compensation modes: low, medium, and high motion. Pipelines are
defined that allow sending frames to the VDIC subdev directly from the defined that allow sending frames to the VDIC subdev directly from the
CSI. There is also support in the future for sending frames to the CSI. There is also support in the future for sending frames to the
VDIC from memory buffers via a output/mem2mem devices. VDIC from memory buffers via output/mem2mem devices.
- Includes a Frame Interval Monitor (FIM) that can correct vertical sync - Includes a Frame Interval Monitor (FIM) that can correct vertical sync
problems with the ADV718x video decoders. problems with the ADV718x video decoders.

View File

@ -13,7 +13,7 @@ Contact: Eduardo Valentin <eduardo.valentin@nokia.com>
Information about the Device Information about the Device
---------------------------- ----------------------------
This chip is a Silicon Labs product. It is a I2C device, currently on 0x63 address. This chip is a Silicon Labs product. It is an I2C device, currently on 0x63 address.
Basically, it has transmission and signal noise level measurement features. Basically, it has transmission and signal noise level measurement features.
The Si4713 integrates transmit functions for FM broadcast stereo transmission. The Si4713 integrates transmit functions for FM broadcast stereo transmission.
@ -28,7 +28,7 @@ Users must comply with local regulations on radio frequency (RF) transmission.
Device driver description Device driver description
------------------------- -------------------------
There are two modules to handle this device. One is a I2C device driver There are two modules to handle this device. One is an I2C device driver
and the other is a platform driver. and the other is a platform driver.
The I2C device driver exports a v4l2-subdev interface to the kernel. The I2C device driver exports a v4l2-subdev interface to the kernel.
@ -113,7 +113,7 @@ Here is a summary of them:
- acomp_attack_time - Sets the attack time for audio dynamic range control. - acomp_attack_time - Sets the attack time for audio dynamic range control.
- acomp_release_time - Sets the release time for audio dynamic range control. - acomp_release_time - Sets the release time for audio dynamic range control.
* Limiter setups audio deviation limiter feature. Once a over deviation occurs, * Limiter sets up the audio deviation limiter feature. Once an over deviation occurs,
it is possible to adjust the front-end gain of the audio input and always it is possible to adjust the front-end gain of the audio input and always
prevent over deviation. prevent over deviation.

View File

@ -357,7 +357,7 @@ The directory for the :ref:`quotas <damon_design_damos_quotas>` of the given
DAMON-based operation scheme. DAMON-based operation scheme.
Under ``quotas`` directory, four files (``ms``, ``bytes``, Under ``quotas`` directory, four files (``ms``, ``bytes``,
``reset_interval_ms``, ``effective_bytes``) and two directores (``weights`` and ``reset_interval_ms``, ``effective_bytes``) and two directories (``weights`` and
``goals``) exist. ``goals``) exist.
You can set the ``time quota`` in milliseconds, ``size quota`` in bytes, and You can set the ``time quota`` in milliseconds, ``size quota`` in bytes, and

View File

@ -109,8 +109,8 @@ uring channel. It is 2 bits. Some important codes are as follows:
- 2'b11: count the events which sent to the uring_ext (MATA) channel; - 2'b11: count the events which sent to the uring_ext (MATA) channel;
- 2'b01: is the same as 2'b11; - 2'b01: is the same as 2'b11;
- 2'b10: count the events which sent to the uring (non-MATA) channel; - 2'b10: count the events which sent to the uring (non-MATA) channel;
- 2'b00: default value, count the events which sent to the both uring and - 2'b00: default value, count the events which sent to both uring and
uring_ext channel; uring_ext channels;
Users could configure IDs to count data come from specific CCL/ICL, by setting Users could configure IDs to count data come from specific CCL/ICL, by setting
srcid_cmd & srcid_msk, and data desitined for specific CCL/ICL by setting srcid_cmd & srcid_msk, and data desitined for specific CCL/ICL by setting

View File

@ -273,7 +273,7 @@ again.
does nothing at all; in that case you have to manually install your kernel, does nothing at all; in that case you have to manually install your kernel,
as outlined in the reference section. as outlined in the reference section.
If you are running a immutable Linux distribution, check its documentation If you are running an immutable Linux distribution, check its documentation
and the web to find out how to install your own kernel there. and the web to find out how to install your own kernel there.
[:ref:`details<install>`] [:ref:`details<install>`]
@ -884,7 +884,7 @@ When a build error occurs, it might be caused by some aspect of your machine's
setup that often can be fixed quickly; other times though the problem lies in setup that often can be fixed quickly; other times though the problem lies in
the code and can only be fixed by a developer. A close examination of the the code and can only be fixed by a developer. A close examination of the
failure messages coupled with some research on the internet will often tell you failure messages coupled with some research on the internet will often tell you
which of the two it is. To perform such a investigation, restart the build which of the two it is. To perform such an investigation, restart the build
process like this:: process like this::
make V=1 make V=1

View File

@ -611,7 +611,7 @@ better place.
How to read the MAINTAINERS file How to read the MAINTAINERS file
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To illustrate how to use the :ref:`MAINTAINERS <maintainers>` file, lets assume To illustrate how to use the :ref:`MAINTAINERS <maintainers>` file, let's assume
the WiFi in your Laptop suddenly misbehaves after updating the kernel. In that the WiFi in your Laptop suddenly misbehaves after updating the kernel. In that
case it's likely an issue in the WiFi driver. Obviously it could also be some case it's likely an issue in the WiFi driver. Obviously it could also be some
code it builds upon, but unless you suspect something like that stick to the code it builds upon, but unless you suspect something like that stick to the
@ -1543,7 +1543,7 @@ as well, because that will speed things up.
And note, it helps developers a great deal if you can specify the exact version And note, it helps developers a great deal if you can specify the exact version
that introduced the problem. Hence if possible within a reasonable time frame, that introduced the problem. Hence if possible within a reasonable time frame,
try to find that version using vanilla kernels. Lets assume something broke when try to find that version using vanilla kernels. Let's assume something broke when
your distributor released a update from Linux kernel 5.10.5 to 5.10.8. Then as your distributor released a update from Linux kernel 5.10.5 to 5.10.8. Then as
instructed above go and check the latest kernel from that version line, say instructed above go and check the latest kernel from that version line, say
5.10.9. If it shows the problem, try a vanilla 5.10.5 to ensure that no patches 5.10.9. If it shows the problem, try a vanilla 5.10.5 to ensure that no patches

View File

@ -1757,7 +1757,7 @@ or all of these tasks:
to your bootloader's configuration. to your bootloader's configuration.
You have to take care of some or all of the tasks yourself, if your You have to take care of some or all of the tasks yourself, if your
distribution lacks a installkernel script or does only handle part of them. distribution lacks an installkernel script or does only handle part of them.
Consult the distribution's documentation for details. If in doubt, install the Consult the distribution's documentation for details. If in doubt, install the
kernel manually:: kernel manually::

View File

@ -9,9 +9,9 @@ ChangeLog:
/proc/irq/IRQ#/smp_affinity and /proc/irq/IRQ#/smp_affinity_list specify /proc/irq/IRQ#/smp_affinity and /proc/irq/IRQ#/smp_affinity_list specify
which target CPUs are permitted for a given IRQ source. It's a bitmask which target CPUs are permitted for a given IRQ source. It's a bitmask
(smp_affinity) or cpu list (smp_affinity_list) of allowed CPUs. It's not (smp_affinity) or CPU list (smp_affinity_list) of allowed CPUs. It's not
allowed to turn off all CPUs, and if an IRQ controller does not support allowed to turn off all CPUs, and if an IRQ controller does not support
IRQ affinity then the value will not change from the default of all cpus. IRQ affinity then the value will not change from the default of all CPUs.
/proc/irq/default_smp_affinity specifies default affinity mask that applies /proc/irq/default_smp_affinity specifies default affinity mask that applies
to all non-active IRQs. Once IRQ is allocated/activated its affinity bitmask to all non-active IRQs. Once IRQ is allocated/activated its affinity bitmask
@ -60,7 +60,7 @@ Now lets restrict that IRQ to CPU(4-7).
This time around IRQ44 was delivered only to the last four processors. This time around IRQ44 was delivered only to the last four processors.
i.e counters for the CPU0-3 did not change. i.e counters for the CPU0-3 did not change.
Here is an example of limiting that same irq (44) to cpus 1024 to 1031:: Here is an example of limiting that same IRQ (44) to CPUs 1024 to 1031::
[root@moon 44]# echo 1024-1031 > smp_affinity_list [root@moon 44]# echo 1024-1031 > smp_affinity_list
[root@moon 44]# cat smp_affinity_list [root@moon 44]# cat smp_affinity_list

View File

@ -18,8 +18,8 @@ handlers as irqchips. I.e. in effect cascading interrupt controllers.
So in the past, IRQ numbers could be chosen so that they match the So in the past, IRQ numbers could be chosen so that they match the
hardware IRQ line into the root interrupt controller (i.e. the hardware IRQ line into the root interrupt controller (i.e. the
component actually firing the interrupt line to the CPU). Nowadays, component actually firing the interrupt line to the CPU). Nowadays,
this number is just a number and the number loose all kind of this number is just a number and the number has no
correspondence to hardware interrupt numbers. relationship to hardware interrupt numbers.
For this reason, we need a mechanism to separate controller-local For this reason, we need a mechanism to separate controller-local
interrupt numbers, called hardware IRQs, from Linux IRQ numbers. interrupt numbers, called hardware IRQs, from Linux IRQ numbers.
@ -77,15 +77,15 @@ Once a mapping has been established, it can be retrieved or used via a
variety of methods: variety of methods:
- irq_resolve_mapping() returns a pointer to the irq_desc structure - irq_resolve_mapping() returns a pointer to the irq_desc structure
for a given domain and hwirq number, and NULL if there was no for a given domain and hwirq number, or NULL if there was no
mapping. mapping.
- irq_find_mapping() returns a Linux IRQ number for a given domain and - irq_find_mapping() returns a Linux IRQ number for a given domain and
hwirq number, and 0 if there was no mapping hwirq number, or 0 if there was no mapping
- generic_handle_domain_irq() handles an interrupt described by a - generic_handle_domain_irq() handles an interrupt described by a
domain and a hwirq number domain and a hwirq number
Note that irq domain lookups must happen in contexts that are Note that irq_domain lookups must happen in contexts that are
compatible with a RCU read-side critical section. compatible with an RCU read-side critical section.
The irq_create_mapping() function must be called *at least once* The irq_create_mapping() function must be called *at least once*
before any call to irq_find_mapping(), lest the descriptor will not before any call to irq_find_mapping(), lest the descriptor will not
@ -100,7 +100,7 @@ Types of irq_domain Mappings
============================ ============================
There are several mechanisms available for reverse mapping from hwirq There are several mechanisms available for reverse mapping from hwirq
to Linux irq, and each mechanism uses a different allocation function. to Linux IRQ, and each mechanism uses a different allocation function.
Which reverse map type should be used depends on the use case. Each Which reverse map type should be used depends on the use case. Each
of the reverse map types are described below: of the reverse map types are described below:
@ -111,13 +111,13 @@ Linear
irq_domain_create_linear() irq_domain_create_linear()
The linear reverse map maintains a fixed size table indexed by the The linear reverse map maintains a fixed-size table indexed by the
hwirq number. When a hwirq is mapped, an irq_desc is allocated for hwirq number. When a hwirq is mapped, an irq_desc is allocated for
the hwirq, and the IRQ number is stored in the table. the hwirq, and the IRQ number is stored in the table.
The Linear map is a good choice when the maximum number of hwirqs is The Linear map is a good choice when the maximum number of hwirqs is
fixed and a relatively small number (~ < 256). The advantages of this fixed and a relatively small number (~ < 256). The advantages of this
map are fixed time lookup for IRQ numbers, and irq_descs are only map are fixed-time lookup for IRQ numbers, and irq_descs are only
allocated for in-use IRQs. The disadvantage is that the table must be allocated for in-use IRQs. The disadvantage is that the table must be
as large as the largest possible hwirq number. as large as the largest possible hwirq number.
@ -134,7 +134,7 @@ The irq_domain maintains a radix tree map from hwirq numbers to Linux
IRQs. When an hwirq is mapped, an irq_desc is allocated and the IRQs. When an hwirq is mapped, an irq_desc is allocated and the
hwirq is used as the lookup key for the radix tree. hwirq is used as the lookup key for the radix tree.
The tree map is a good choice if the hwirq number can be very large The Tree map is a good choice if the hwirq number can be very large
since it doesn't need to allocate a table as large as the largest since it doesn't need to allocate a table as large as the largest
hwirq number. The disadvantage is that hwirq to IRQ number lookup is hwirq number. The disadvantage is that hwirq to IRQ number lookup is
dependent on how many entries are in the table. dependent on how many entries are in the table.
@ -169,10 +169,10 @@ Legacy
The Legacy mapping is a special case for drivers that already have a The Legacy mapping is a special case for drivers that already have a
range of irq_descs allocated for the hwirqs. It is used when the range of irq_descs allocated for the hwirqs. It is used when the
driver cannot be immediately converted to use the linear mapping. For driver cannot be immediately converted to use the Linear mapping. For
example, many embedded system board support files use a set of #defines example, many embedded system board support files use a set of #defines
for IRQ numbers that are passed to struct device registrations. In that for IRQ numbers that are passed to struct device registrations. In that
case the Linux IRQ numbers cannot be dynamically assigned and the legacy case the Linux IRQ numbers cannot be dynamically assigned and the Legacy
mapping should be used. mapping should be used.
As the name implies, the \*_legacy() functions are deprecated and only As the name implies, the \*_legacy() functions are deprecated and only
@ -180,15 +180,15 @@ exist to ease the support of ancient platforms. No new users should be
added. Same goes for the \*_simple() functions when their use results added. Same goes for the \*_simple() functions when their use results
in the legacy behaviour. in the legacy behaviour.
The legacy map assumes a contiguous range of IRQ numbers has already The Legacy map assumes a contiguous range of IRQ numbers has already
been allocated for the controller and that the IRQ number can be been allocated for the controller and that the IRQ number can be
calculated by adding a fixed offset to the hwirq number, and calculated by adding a fixed offset to the hwirq number, and
visa-versa. The disadvantage is that it requires the interrupt visa-versa. The disadvantage is that it requires the interrupt
controller to manage IRQ allocations and it requires an irq_desc to be controller to manage IRQ allocations and it requires an irq_desc to be
allocated for every hwirq, even if it is unused. allocated for every hwirq, even if it is unused.
The legacy map should only be used if fixed IRQ mappings must be The Legacy map should only be used if fixed IRQ mappings must be
supported. For example, ISA controllers would use the legacy map for supported. For example, ISA controllers would use the Legacy map for
mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ
numbers. numbers.
@ -197,7 +197,7 @@ which will use a legacy domain only if an IRQ range is supplied by the
system and will otherwise use a linear domain mapping. The semantics of system and will otherwise use a linear domain mapping. The semantics of
this call are such that if an IRQ range is specified then descriptors this call are such that if an IRQ range is specified then descriptors
will be allocated on-the-fly for it, and if no range is specified it will be allocated on-the-fly for it, and if no range is specified it
will fall through to irq_domain_create_linear() which means *no* irq will fall through to irq_domain_create_linear() which means *no* IRQ
descriptors will be allocated. descriptors will be allocated.
A typical use case for simple domains is where an irqchip provider A typical use case for simple domains is where an irqchip provider
@ -214,7 +214,7 @@ Hierarchy IRQ Domain
On some architectures, there may be multiple interrupt controllers On some architectures, there may be multiple interrupt controllers
involved in delivering an interrupt from the device to the target CPU. involved in delivering an interrupt from the device to the target CPU.
Let's look at a typical interrupt delivering path on x86 platforms:: Let's look at a typical interrupt delivery path on x86 platforms::
Device --> IOAPIC -> Interrupt remapping Controller -> Local APIC -> CPU Device --> IOAPIC -> Interrupt remapping Controller -> Local APIC -> CPU
@ -227,8 +227,8 @@ There are three interrupt controllers involved:
To support such a hardware topology and make software architecture match To support such a hardware topology and make software architecture match
hardware architecture, an irq_domain data structure is built for each hardware architecture, an irq_domain data structure is built for each
interrupt controller and those irq_domains are organized into hierarchy. interrupt controller and those irq_domains are organized into hierarchy.
When building irq_domain hierarchy, the irq_domain near to the device is When building irq_domain hierarchy, the irq_domain nearest the device is
child and the irq_domain near to CPU is parent. So a hierarchy structure child and the irq_domain nearest the CPU is parent. So a hierarchy structure
as below will be built for the example above:: as below will be built for the example above::
CPU Vector irq_domain (root irq_domain to manage CPU vectors) CPU Vector irq_domain (root irq_domain to manage CPU vectors)

View File

@ -116,7 +116,7 @@ cache_strategy=%s Select a strategy for cached decompression from now on:
cluster for further reading. It still does cluster for further reading. It still does
in-place I/O decompression for the rest in-place I/O decompression for the rest
compressed physical clusters; compressed physical clusters;
readaround Cache the both ends of incomplete compressed readaround Cache both ends of incomplete compressed
physical clusters for further reading. physical clusters for further reading.
It still does in-place I/O decompression It still does in-place I/O decompression
for the rest compressed physical clusters. for the rest compressed physical clusters.

View File

@ -105,7 +105,7 @@ go_unlocked Yes No
Operations must not drop either the bit lock or the spinlock Operations must not drop either the bit lock or the spinlock
if its held on entry. go_dump and do_demote_ok must never block. if its held on entry. go_dump and do_demote_ok must never block.
Note that go_dump will only be called if the glock's state Note that go_dump will only be called if the glock's state
indicates that it is caching uptodate data. indicates that it is caching up-to-date data.
Glock locking order within GFS2: Glock locking order within GFS2:

View File

@ -65,7 +65,7 @@ are case sensitive, so for example when you create a file FOO, you can use
'cat FOO', 'cat Foo', 'cat foo' or 'cat F*' but not 'cat f*'. Note, that you 'cat FOO', 'cat Foo', 'cat foo' or 'cat F*' but not 'cat f*'. Note, that you
also won't be able to compile linux kernel (and maybe other things) on HPFS also won't be able to compile linux kernel (and maybe other things) on HPFS
because kernel creates different files with names like bootsect.S and because kernel creates different files with names like bootsect.S and
bootsect.s. When searching for file thats name has characters >= 128, codepages bootsect.s. When searching for file whose name has characters >= 128, codepages
are used - see below. are used - see below.
OS/2 ignores dots and spaces at the end of file name, so this driver does as OS/2 ignores dots and spaces at the end of file name, so this driver does as
well. If you create 'a. ...', the file 'a' will be created, but you can still well. If you create 'a. ...', the file 'a' will be created, but you can still

View File

@ -563,7 +563,7 @@ this would be dependent on number of cores the benchmark is run on.
depending on # of threads: depending on # of threads:
For the same SKU in #1, a 'single thread, with 10% bandwidth' and '4 For the same SKU in #1, a 'single thread, with 10% bandwidth' and '4
thread, with 10% bandwidth' can consume upto 10GBps and 40GBps although thread, with 10% bandwidth' can consume up to 10GBps and 40GBps although
they have same percentage bandwidth of 10%. This is simply because as they have same percentage bandwidth of 10%. This is simply because as
threads start using more cores in an rdtgroup, the actual bandwidth may threads start using more cores in an rdtgroup, the actual bandwidth may
increase or vary although user specified bandwidth percentage is same. increase or vary although user specified bandwidth percentage is same.

View File

@ -454,7 +454,7 @@ filesystem so that it can apply pending filesystem updates to the staging
information. information.
Once the scan is done, the owning object is re-locked, the live data is used to Once the scan is done, the owning object is re-locked, the live data is used to
write a new ondisk structure, and the repairs are committed atomically. write a new ondisk structure, and the repairs are committed atomically.
The hooks are disabled and the staging staging area is freed. The hooks are disabled and the staging area is freed.
Finally, the storage from the old data structure are carefully reaped. Finally, the storage from the old data structure are carefully reaped.
Introducing concurrency helps online repair avoid various locking problems, but Introducing concurrency helps online repair avoid various locking problems, but
@ -2185,7 +2185,7 @@ The chapter about :ref:`secondary metadata<secondary_metadata>` mentioned that
checking and repairing of secondary metadata commonly requires coordination checking and repairing of secondary metadata commonly requires coordination
between a live metadata scan of the filesystem and writer threads that are between a live metadata scan of the filesystem and writer threads that are
updating that metadata. updating that metadata.
Keeping the scan data up to date requires requires the ability to propagate Keeping the scan data up to date requires the ability to propagate
metadata updates from the filesystem into the data being collected by the scan. metadata updates from the filesystem into the data being collected by the scan.
This *can* be done by appending concurrent updates into a separate log file and This *can* be done by appending concurrent updates into a separate log file and
applying them before writing the new metadata to disk, but this leads to applying them before writing the new metadata to disk, but this leads to

View File

@ -539,7 +539,7 @@ CAN Filter Usage Optimisation
The CAN filters are processed in per-device filter lists at CAN frame The CAN filters are processed in per-device filter lists at CAN frame
reception time. To reduce the number of checks that need to be performed reception time. To reduce the number of checks that need to be performed
while walking through the filter lists the CAN core provides an optimized while walking through the filter lists the CAN core provides an optimized
filter handling when the filter subscription focusses on a single CAN ID. filter handling when the filter subscription focuses on a single CAN ID.
For the possible 2048 SFF CAN identifiers the identifier is used as an index For the possible 2048 SFF CAN identifiers the identifier is used as an index
to access the corresponding subscription list without any further checks. to access the corresponding subscription list without any further checks.

View File

@ -42,7 +42,7 @@ Port's netdev devices have to be in UP before joining to the bridge to avoid
overwriting of bridge configuration as CPSW switch driver completely reloads its overwriting of bridge configuration as CPSW switch driver completely reloads its
configuration when first port changes its state to UP. configuration when first port changes its state to UP.
When the both interfaces joined the bridge - CPSW switch driver will enable When both interfaces have joined the bridge - CPSW switch driver will enable
marking packets with offload_fwd_mark flag. marking packets with offload_fwd_mark flag.
All configuration is implemented via switchdev API. All configuration is implemented via switchdev API.

View File

@ -92,7 +92,7 @@ Port's netdev devices have to be in UP before joining to the bridge to avoid
overwriting of bridge configuration as CPSW switch driver copletly reloads its overwriting of bridge configuration as CPSW switch driver copletly reloads its
configuration when first Port changes its state to UP. configuration when first Port changes its state to UP.
When the both interfaces joined the bridge - CPSW switch driver will enable When both interfaces have joined the bridge - CPSW switch driver will enable
marking packets with offload_fwd_mark flag unless "ale_bypass=0" marking packets with offload_fwd_mark flag unless "ale_bypass=0"
All configuration is implemented via switchdev API. All configuration is implemented via switchdev API.

View File

@ -339,7 +339,7 @@ The send path
rds_sendmsg() rds_sendmsg()
- struct rds_message built from incoming data - struct rds_message built from incoming data
- CMSGs parsed (e.g. RDMA ops) - CMSGs parsed (e.g. RDMA ops)
- transport connection alloced and connected if not already - transport connection allocated and connected if not already
- rds_message placed on send queue - rds_message placed on send queue
- send worker awoken - send worker awoken

View File

@ -472,7 +472,7 @@ in the device tree from the root bridge to a leaf device contains both of them).
The pci_pm_suspend_noirq() routine is executed after suspend_device_irqs() has The pci_pm_suspend_noirq() routine is executed after suspend_device_irqs() has
been called, which means that the device driver's interrupt handler won't be been called, which means that the device driver's interrupt handler won't be
invoked while this routine is running. It first checks if the device's driver invoked while this routine is running. It first checks if the device's driver
implements legacy PCI suspends routines (Section 3), in which case the legacy implements legacy PCI suspend routines (Section 3), in which case the legacy
late suspend routine is called and its result is returned (the standard late suspend routine is called and its result is returned (the standard
configuration registers of the device are saved if the driver's callback hasn't configuration registers of the device are saved if the driver's callback hasn't
done that). Second, if the device driver's struct dev_pm_ops object is not done that). Second, if the device driver's struct dev_pm_ops object is not
@ -544,7 +544,7 @@ result is then returned).
The resume phase is carried out asynchronously for PCI devices, like the The resume phase is carried out asynchronously for PCI devices, like the
suspend phase described above, which means that if two PCI devices don't depend suspend phase described above, which means that if two PCI devices don't depend
on each other in a known way, the pci_pm_resume() routine may be executed for on each other in a known way, the pci_pm_resume() routine may be executed for
the both of them in parallel. both of them in parallel.
The pci_pm_complete() routine only executes the device driver's pm->complete() The pci_pm_complete() routine only executes the device driver's pm->complete()
callback, if defined. callback, if defined.

View File

@ -13,7 +13,7 @@ infrastructure uses it internally? And where do they share common code?
Well, a picture is worth a thousand words... So ASCII art follows :-) Well, a picture is worth a thousand words... So ASCII art follows :-)
[This depicts the current design in the kernel, and focusses only on the [This depicts the current design in the kernel, and focuses only on the
interactions involving the freezer and CPU hotplug and also tries to explain interactions involving the freezer and CPU hotplug and also tries to explain
the locking involved. It outlines the notifications involved as well. the locking involved. It outlines the notifications involved as well.
But please note that here, only the call paths are illustrated, with the aim But please note that here, only the call paths are illustrated, with the aim

View File

@ -81,7 +81,7 @@ Same as ftrace, the registered callbacks will start being called some time
after the register_fprobe() is called and before it returns. See after the register_fprobe() is called and before it returns. See
:file:`Documentation/trace/ftrace.rst`. :file:`Documentation/trace/ftrace.rst`.
Also, the unregister_fprobe() will guarantee that the both enter and exit Also, the unregister_fprobe() will guarantee that both enter and exit
handlers are no longer being called by functions after unregister_fprobe() handlers are no longer being called by functions after unregister_fprobe()
returns as same as unregister_ftrace_function(). returns as same as unregister_ftrace_function().

View File

@ -193,7 +193,7 @@ FTRACE_OPS_FL_RECURSION
Note, if this flag is set, then the callback will always be called Note, if this flag is set, then the callback will always be called
with preemption disabled. If it is not set, then it is possible with preemption disabled. If it is not set, then it is possible
(but not guaranteed) that the callback will be called in (but not guaranteed) that the callback will be called in
preemptable context. preemptible context.
FTRACE_OPS_FL_IPMODIFY FTRACE_OPS_FL_IPMODIFY
Requires FTRACE_OPS_FL_SAVE_REGS set. If the callback is to "hijack" Requires FTRACE_OPS_FL_SAVE_REGS set. If the callback is to "hijack"

View File

@ -30,7 +30,7 @@ disabled and enabled, as well as for preemption and from a time
a task is woken to the task is actually scheduled in. a task is woken to the task is actually scheduled in.
One of the most common uses of ftrace is the event tracing. One of the most common uses of ftrace is the event tracing.
Throughout the kernel is hundreds of static event points that Throughout the kernel are hundreds of static event points that
can be enabled via the tracefs file system to see what is can be enabled via the tracefs file system to see what is
going on in certain parts of the kernel. going on in certain parts of the kernel.
@ -383,7 +383,7 @@ of ftrace. Here is a list of some of the key files:
not be listed in this count. not be listed in this count.
If the callback registered to be traced by a function with If the callback registered to be traced by a function with
the "save regs" attribute (thus even more overhead), a 'R' the "save regs" attribute (thus even more overhead), an 'R'
will be displayed on the same line as the function that will be displayed on the same line as the function that
is returning registers. is returning registers.
@ -392,7 +392,7 @@ of ftrace. Here is a list of some of the key files:
an 'I' will be displayed on the same line as the function that an 'I' will be displayed on the same line as the function that
can be overridden. can be overridden.
If a non ftrace trampoline is attached (BPF) a 'D' will be displayed. If a non-ftrace trampoline is attached (BPF) a 'D' will be displayed.
Note, normal ftrace trampolines can also be attached, but only one Note, normal ftrace trampolines can also be attached, but only one
"direct" trampoline can be attached to a given function at a time. "direct" trampoline can be attached to a given function at a time.
@ -402,7 +402,7 @@ of ftrace. Here is a list of some of the key files:
If a function had either the "ip modify" or a "direct" call attached to If a function had either the "ip modify" or a "direct" call attached to
it in the past, a 'M' will be shown. This flag is never cleared. It is it in the past, a 'M' will be shown. This flag is never cleared. It is
used to know if a function was every modified by the ftrace infrastructure, used to know if a function was ever modified by the ftrace infrastructure,
and can be used for debugging. and can be used for debugging.
If the architecture supports it, it will also show what callback If the architecture supports it, it will also show what callback
@ -418,7 +418,7 @@ of ftrace. Here is a list of some of the key files:
This file contains all the functions that ever had a function callback This file contains all the functions that ever had a function callback
to it via the ftrace infrastructure. It has the same format as to it via the ftrace infrastructure. It has the same format as
enabled_functions but shows all functions that have every been enabled_functions but shows all functions that have ever been
traced. traced.
To see any function that has every been modified by "ip modify" or a To see any function that has every been modified by "ip modify" or a
@ -517,7 +517,7 @@ of ftrace. Here is a list of some of the key files:
Whenever an event is recorded into the ring buffer, a Whenever an event is recorded into the ring buffer, a
"timestamp" is added. This stamp comes from a specified "timestamp" is added. This stamp comes from a specified
clock. By default, ftrace uses the "local" clock. This clock. By default, ftrace uses the "local" clock. This
clock is very fast and strictly per cpu, but on some clock is very fast and strictly per CPU, but on some
systems it may not be monotonic with respect to other systems it may not be monotonic with respect to other
CPUs. In other words, the local clocks may not be in sync CPUs. In other words, the local clocks may not be in sync
with local clocks on other CPUs. with local clocks on other CPUs.
@ -868,7 +868,7 @@ Here is the list of current tracers that may be configured.
"mmiotrace" "mmiotrace"
A special tracer that is used to trace binary module. A special tracer that is used to trace binary modules.
It will trace all the calls that a module makes to the It will trace all the calls that a module makes to the
hardware. Everything it writes and reads from the I/O hardware. Everything it writes and reads from the I/O
as well. as well.

View File

@ -840,7 +840,7 @@ Extended error information
The compound key examples used a key and a sum value (hitcount) to The compound key examples used a key and a sum value (hitcount) to
sort the output, but we can just as easily use two keys instead. sort the output, but we can just as easily use two keys instead.
Here's an example where we use a compound key composed of the the Here's an example where we use a compound key composed of the
common_pid and size event fields. Sorting with pid as the primary common_pid and size event fields. Sorting with pid as the primary
key and 'size' as the secondary key allows us to display an key and 'size' as the secondary key allows us to display an
ordered summary of the recvfrom sizes, with counts, received by ordered summary of the recvfrom sizes, with counts, received by