mirror of https://gitee.com/openkylin/linux.git
Merge branch 'mauro' into docs-next
Mauro sez: Patches 1 to 5 contain changes to the documentation toolset: - The first 3 patches help to reduce a lot the number of reported kernel-doc issues, by making the tool more smart. - Patches 4 and 5 are meant to partially address the PDF build, with now requires Sphinx version 2.4 or upper. The remaining patches fix broken references detected by this tool: ./scripts/documentation-file-ref-check and address other random errors due to tags being mis-interpreted or mis-used. They are independent each other, but some may depend on the kernel-doc improvements.
This commit is contained in:
commit
3f11de39c4
|
@ -54,7 +54,7 @@ Date: October 2002
|
|||
Contact: Linux Memory Management list <linux-mm@kvack.org>
|
||||
Description:
|
||||
Provides information about the node's distribution and memory
|
||||
utilization. Similar to /proc/meminfo, see Documentation/filesystems/proc.txt
|
||||
utilization. Similar to /proc/meminfo, see Documentation/filesystems/proc.rst
|
||||
|
||||
What: /sys/devices/system/node/nodeX/numastat
|
||||
Date: October 2002
|
||||
|
|
|
@ -11,7 +11,7 @@ Description:
|
|||
Additionally, the fields Pss_Anon, Pss_File and Pss_Shmem
|
||||
are not present in /proc/pid/smaps. These fields represent
|
||||
the sum of the Pss field of each type (anon, file, shmem).
|
||||
For more details, see Documentation/filesystems/proc.txt
|
||||
For more details, see Documentation/filesystems/proc.rst
|
||||
and the procfs man page.
|
||||
|
||||
Typical output looks like this:
|
||||
|
|
|
@ -98,7 +98,11 @@ else # HAVE_PDFLATEX
|
|||
|
||||
pdfdocs: latexdocs
|
||||
@$(srctree)/scripts/sphinx-pre-install --version-check
|
||||
$(foreach var,$(SPHINXDIRS), $(MAKE) PDFLATEX="$(PDFLATEX)" LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit;)
|
||||
$(foreach var,$(SPHINXDIRS), \
|
||||
$(MAKE) PDFLATEX="$(PDFLATEX)" LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit; \
|
||||
mkdir -p $(BUILDDIR)/$(var)/pdf; \
|
||||
mv $(subst .tex,.pdf,$(wildcard $(BUILDDIR)/$(var)/latex/*.tex)) $(BUILDDIR)/$(var)/pdf/; \
|
||||
)
|
||||
|
||||
endif # HAVE_PDFLATEX
|
||||
|
||||
|
|
|
@ -32,12 +32,13 @@ interrupt goes unhandled over time, they are tracked by the Linux kernel as
|
|||
Spurious Interrupts. The IRQ will be disabled by the Linux kernel after it
|
||||
reaches a specific count with the error "nobody cared". This disabled IRQ
|
||||
now prevents valid usage by an existing interrupt which may happen to share
|
||||
the IRQ line.
|
||||
the IRQ line::
|
||||
|
||||
irq 19: nobody cared (try booting with the "irqpoll" option)
|
||||
CPU: 0 PID: 2988 Comm: irq/34-nipalk Tainted: 4.14.87-rt49-02410-g4a640ec-dirty #1
|
||||
Hardware name: National Instruments NI PXIe-8880/NI PXIe-8880, BIOS 2.1.5f1 01/09/2020
|
||||
Call Trace:
|
||||
|
||||
<IRQ>
|
||||
? dump_stack+0x46/0x5e
|
||||
? __report_bad_irq+0x2e/0xb0
|
||||
|
@ -85,15 +86,18 @@ Mitigations
|
|||
The mitigations take the form of PCI quirks. The preference has been to
|
||||
first identify and make use of a means to disable the routing to the PCH.
|
||||
In such a case a quirk to disable boot interrupt generation can be
|
||||
added.[1]
|
||||
added. [1]_
|
||||
|
||||
Intel® 6300ESB I/O Controller Hub
|
||||
Intel® 6300ESB I/O Controller Hub
|
||||
Alternate Base Address Register:
|
||||
BIE: Boot Interrupt Enable
|
||||
0 = Boot interrupt is enabled.
|
||||
1 = Boot interrupt is disabled.
|
||||
|
||||
Intel® Sandy Bridge through Sky Lake based Xeon servers:
|
||||
== ===========================
|
||||
0 Boot interrupt is enabled.
|
||||
1 Boot interrupt is disabled.
|
||||
== ===========================
|
||||
|
||||
Intel® Sandy Bridge through Sky Lake based Xeon servers:
|
||||
Coherent Interface Protocol Interrupt Control
|
||||
dis_intx_route2pch/dis_intx_route2ich/dis_intx_route2dmi2:
|
||||
When this bit is set. Local INTx messages received from the
|
||||
|
@ -109,12 +113,12 @@ line by default. Therefore, on chipsets where this INTx routing cannot be
|
|||
disabled, the Linux kernel will reroute the valid interrupt to its legacy
|
||||
interrupt. This redirection of the handler will prevent the occurrence of
|
||||
the spurious interrupt detection which would ordinarily disable the IRQ
|
||||
line due to excessive unhandled counts.[2]
|
||||
line due to excessive unhandled counts. [2]_
|
||||
|
||||
The config option X86_REROUTE_FOR_BROKEN_BOOT_IRQS exists to enable (or
|
||||
disable) the redirection of the interrupt handler to the PCH interrupt
|
||||
line. The option can be overridden by either pci=ioapicreroute or
|
||||
pci=noioapicreroute.[3]
|
||||
pci=noioapicreroute. [3]_
|
||||
|
||||
|
||||
More Documentation
|
||||
|
@ -127,19 +131,19 @@ into the evolution of its handling with chipsets.
|
|||
Example of disabling of the boot interrupt
|
||||
------------------------------------------
|
||||
|
||||
Intel® 6300ESB I/O Controller Hub (Document # 300641-004US)
|
||||
- Intel® 6300ESB I/O Controller Hub (Document # 300641-004US)
|
||||
5.7.3 Boot Interrupt
|
||||
https://www.intel.com/content/dam/doc/datasheet/6300esb-io-controller-hub-datasheet.pdf
|
||||
|
||||
Intel® Xeon® Processor E5-1600/2400/2600/4600 v3 Product Families
|
||||
Datasheet - Volume 2: Registers (Document # 330784-003)
|
||||
- Intel® Xeon® Processor E5-1600/2400/2600/4600 v3 Product Families
|
||||
Datasheet - Volume 2: Registers (Document # 330784-003)
|
||||
6.6.41 cipintrc Coherent Interface Protocol Interrupt Control
|
||||
https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xeon-e5-v3-datasheet-vol-2.pdf
|
||||
|
||||
Example of handler rerouting
|
||||
----------------------------
|
||||
|
||||
Intel® 6700PXH 64-bit PCI Hub (Document # 302628)
|
||||
- Intel® 6700PXH 64-bit PCI Hub (Document # 302628)
|
||||
2.15.2 PCI Express Legacy INTx Support and Boot Interrupt
|
||||
https://www.intel.com/content/dam/doc/datasheet/6700pxh-64-bit-pci-hub-datasheet.pdf
|
||||
|
||||
|
@ -150,6 +154,6 @@ Cheers,
|
|||
Sean V Kelley
|
||||
sean.v.kelley@linux.intel.com
|
||||
|
||||
[1] https://lore.kernel.org/r/12131949181903-git-send-email-sassmann@suse.de/
|
||||
[2] https://lore.kernel.org/r/12131949182094-git-send-email-sassmann@suse.de/
|
||||
[3] https://lore.kernel.org/r/487C8EA7.6020205@suse.de/
|
||||
.. [1] https://lore.kernel.org/r/12131949181903-git-send-email-sassmann@suse.de/
|
||||
.. [2] https://lore.kernel.org/r/12131949182094-git-send-email-sassmann@suse.de/
|
||||
.. [3] https://lore.kernel.org/r/487C8EA7.6020205@suse.de/
|
||||
|
|
|
@ -105,7 +105,7 @@ References
|
|||
----------
|
||||
|
||||
- http://lkml.org/lkml/2007/2/12/6
|
||||
- Documentation/filesystems/proc.txt (1.8)
|
||||
- Documentation/filesystems/proc.rst (1.8)
|
||||
|
||||
|
||||
Thanks
|
||||
|
|
|
@ -12,107 +12,107 @@ and more generally they allow userland to take control of various
|
|||
memory page faults, something otherwise only the kernel code could do.
|
||||
|
||||
For example userfaults allows a proper and more optimal implementation
|
||||
of the PROT_NONE+SIGSEGV trick.
|
||||
of the ``PROT_NONE+SIGSEGV`` trick.
|
||||
|
||||
Design
|
||||
======
|
||||
|
||||
Userfaults are delivered and resolved through the userfaultfd syscall.
|
||||
Userfaults are delivered and resolved through the ``userfaultfd`` syscall.
|
||||
|
||||
The userfaultfd (aside from registering and unregistering virtual
|
||||
The ``userfaultfd`` (aside from registering and unregistering virtual
|
||||
memory ranges) provides two primary functionalities:
|
||||
|
||||
1) read/POLLIN protocol to notify a userland thread of the faults
|
||||
1) ``read/POLLIN`` protocol to notify a userland thread of the faults
|
||||
happening
|
||||
|
||||
2) various UFFDIO_* ioctls that can manage the virtual memory regions
|
||||
registered in the userfaultfd that allows userland to efficiently
|
||||
2) various ``UFFDIO_*`` ioctls that can manage the virtual memory regions
|
||||
registered in the ``userfaultfd`` that allows userland to efficiently
|
||||
resolve the userfaults it receives via 1) or to manage the virtual
|
||||
memory in the background
|
||||
|
||||
The real advantage of userfaults if compared to regular virtual memory
|
||||
management of mremap/mprotect is that the userfaults in all their
|
||||
operations never involve heavyweight structures like vmas (in fact the
|
||||
userfaultfd runtime load never takes the mmap_sem for writing).
|
||||
``userfaultfd`` runtime load never takes the mmap_sem for writing).
|
||||
|
||||
Vmas are not suitable for page- (or hugepage) granular fault tracking
|
||||
when dealing with virtual address spaces that could span
|
||||
Terabytes. Too many vmas would be needed for that.
|
||||
|
||||
The userfaultfd once opened by invoking the syscall, can also be
|
||||
The ``userfaultfd`` once opened by invoking the syscall, can also be
|
||||
passed using unix domain sockets to a manager process, so the same
|
||||
manager process could handle the userfaults of a multitude of
|
||||
different processes without them being aware about what is going on
|
||||
(well of course unless they later try to use the userfaultfd
|
||||
(well of course unless they later try to use the ``userfaultfd``
|
||||
themselves on the same region the manager is already tracking, which
|
||||
is a corner case that would currently return -EBUSY).
|
||||
is a corner case that would currently return ``-EBUSY``).
|
||||
|
||||
API
|
||||
===
|
||||
|
||||
When first opened the userfaultfd must be enabled invoking the
|
||||
UFFDIO_API ioctl specifying a uffdio_api.api value set to UFFD_API (or
|
||||
a later API version) which will specify the read/POLLIN protocol
|
||||
userland intends to speak on the UFFD and the uffdio_api.features
|
||||
userland requires. The UFFDIO_API ioctl if successful (i.e. if the
|
||||
requested uffdio_api.api is spoken also by the running kernel and the
|
||||
When first opened the ``userfaultfd`` must be enabled invoking the
|
||||
``UFFDIO_API`` ioctl specifying a ``uffdio_api.api`` value set to ``UFFD_API`` (or
|
||||
a later API version) which will specify the ``read/POLLIN`` protocol
|
||||
userland intends to speak on the ``UFFD`` and the ``uffdio_api.features``
|
||||
userland requires. The ``UFFDIO_API`` ioctl if successful (i.e. if the
|
||||
requested ``uffdio_api.api`` is spoken also by the running kernel and the
|
||||
requested features are going to be enabled) will return into
|
||||
uffdio_api.features and uffdio_api.ioctls two 64bit bitmasks of
|
||||
``uffdio_api.features`` and ``uffdio_api.ioctls`` two 64bit bitmasks of
|
||||
respectively all the available features of the read(2) protocol and
|
||||
the generic ioctl available.
|
||||
|
||||
The uffdio_api.features bitmask returned by the UFFDIO_API ioctl
|
||||
defines what memory types are supported by the userfaultfd and what
|
||||
The ``uffdio_api.features`` bitmask returned by the ``UFFDIO_API`` ioctl
|
||||
defines what memory types are supported by the ``userfaultfd`` and what
|
||||
events, except page fault notifications, may be generated.
|
||||
|
||||
If the kernel supports registering userfaultfd ranges on hugetlbfs
|
||||
virtual memory areas, UFFD_FEATURE_MISSING_HUGETLBFS will be set in
|
||||
uffdio_api.features. Similarly, UFFD_FEATURE_MISSING_SHMEM will be
|
||||
set if the kernel supports registering userfaultfd ranges on shared
|
||||
memory (covering all shmem APIs, i.e. tmpfs, IPCSHM, /dev/zero
|
||||
MAP_SHARED, memfd_create, etc).
|
||||
If the kernel supports registering ``userfaultfd`` ranges on hugetlbfs
|
||||
virtual memory areas, ``UFFD_FEATURE_MISSING_HUGETLBFS`` will be set in
|
||||
``uffdio_api.features``. Similarly, ``UFFD_FEATURE_MISSING_SHMEM`` will be
|
||||
set if the kernel supports registering ``userfaultfd`` ranges on shared
|
||||
memory (covering all shmem APIs, i.e. tmpfs, ``IPCSHM``, ``/dev/zero``,
|
||||
``MAP_SHARED``, ``memfd_create``, etc).
|
||||
|
||||
The userland application that wants to use userfaultfd with hugetlbfs
|
||||
The userland application that wants to use ``userfaultfd`` with hugetlbfs
|
||||
or shared memory need to set the corresponding flag in
|
||||
uffdio_api.features to enable those features.
|
||||
``uffdio_api.features`` to enable those features.
|
||||
|
||||
If the userland desires to receive notifications for events other than
|
||||
page faults, it has to verify that uffdio_api.features has appropriate
|
||||
UFFD_FEATURE_EVENT_* bits set. These events are described in more
|
||||
detail below in "Non-cooperative userfaultfd" section.
|
||||
page faults, it has to verify that ``uffdio_api.features`` has appropriate
|
||||
``UFFD_FEATURE_EVENT_*`` bits set. These events are described in more
|
||||
detail below in `Non-cooperative userfaultfd`_ section.
|
||||
|
||||
Once the userfaultfd has been enabled the UFFDIO_REGISTER ioctl should
|
||||
be invoked (if present in the returned uffdio_api.ioctls bitmask) to
|
||||
register a memory range in the userfaultfd by setting the
|
||||
uffdio_register structure accordingly. The uffdio_register.mode
|
||||
Once the ``userfaultfd`` has been enabled the ``UFFDIO_REGISTER`` ioctl should
|
||||
be invoked (if present in the returned ``uffdio_api.ioctls`` bitmask) to
|
||||
register a memory range in the ``userfaultfd`` by setting the
|
||||
uffdio_register structure accordingly. The ``uffdio_register.mode``
|
||||
bitmask will specify to the kernel which kind of faults to track for
|
||||
the range (UFFDIO_REGISTER_MODE_MISSING would track missing
|
||||
pages). The UFFDIO_REGISTER ioctl will return the
|
||||
uffdio_register.ioctls bitmask of ioctls that are suitable to resolve
|
||||
the range (``UFFDIO_REGISTER_MODE_MISSING`` would track missing
|
||||
pages). The ``UFFDIO_REGISTER`` ioctl will return the
|
||||
``uffdio_register.ioctls`` bitmask of ioctls that are suitable to resolve
|
||||
userfaults on the range registered. Not all ioctls will necessarily be
|
||||
supported for all memory types depending on the underlying virtual
|
||||
memory backend (anonymous memory vs tmpfs vs real filebacked
|
||||
mappings).
|
||||
|
||||
Userland can use the uffdio_register.ioctls to manage the virtual
|
||||
Userland can use the ``uffdio_register.ioctls`` to manage the virtual
|
||||
address space in the background (to add or potentially also remove
|
||||
memory from the userfaultfd registered range). This means a userfault
|
||||
memory from the ``userfaultfd`` registered range). This means a userfault
|
||||
could be triggering just before userland maps in the background the
|
||||
user-faulted page.
|
||||
|
||||
The primary ioctl to resolve userfaults is UFFDIO_COPY. That
|
||||
The primary ioctl to resolve userfaults is ``UFFDIO_COPY``. That
|
||||
atomically copies a page into the userfault registered range and wakes
|
||||
up the blocked userfaults (unless uffdio_copy.mode &
|
||||
UFFDIO_COPY_MODE_DONTWAKE is set). Other ioctl works similarly to
|
||||
UFFDIO_COPY. They're atomic as in guaranteeing that nothing can see an
|
||||
half copied page since it'll keep userfaulting until the copy has
|
||||
finished.
|
||||
up the blocked userfaults
|
||||
(unless ``uffdio_copy.mode & UFFDIO_COPY_MODE_DONTWAKE`` is set).
|
||||
Other ioctl works similarly to ``UFFDIO_COPY``. They're atomic as in
|
||||
guaranteeing that nothing can see an half copied page since it'll
|
||||
keep userfaulting until the copy has finished.
|
||||
|
||||
Notes:
|
||||
|
||||
- If you requested UFFDIO_REGISTER_MODE_MISSING when registering then
|
||||
- If you requested ``UFFDIO_REGISTER_MODE_MISSING`` when registering then
|
||||
you must provide some kind of page in your thread after reading from
|
||||
the uffd. You must provide either UFFDIO_COPY or UFFDIO_ZEROPAGE.
|
||||
the uffd. You must provide either ``UFFDIO_COPY`` or ``UFFDIO_ZEROPAGE``.
|
||||
The normal behavior of the OS automatically providing a zero page on
|
||||
an annonymous mmaping is not in place.
|
||||
|
||||
|
@ -122,13 +122,13 @@ Notes:
|
|||
|
||||
- You get the address of the access that triggered the missing page
|
||||
event out of a struct uffd_msg that you read in the thread from the
|
||||
uffd. You can supply as many pages as you want with UFFDIO_COPY or
|
||||
UFFDIO_ZEROPAGE. Keep in mind that unless you used DONTWAKE then
|
||||
uffd. You can supply as many pages as you want with ``UFFDIO_COPY`` or
|
||||
``UFFDIO_ZEROPAGE``. Keep in mind that unless you used DONTWAKE then
|
||||
the first of any of those IOCTLs wakes up the faulting thread.
|
||||
|
||||
- Be sure to test for all errors including (pollfd[0].revents &
|
||||
POLLERR). This can happen, e.g. when ranges supplied were
|
||||
incorrect.
|
||||
- Be sure to test for all errors including
|
||||
(``pollfd[0].revents & POLLERR``). This can happen, e.g. when ranges
|
||||
supplied were incorrect.
|
||||
|
||||
Write Protect Notifications
|
||||
---------------------------
|
||||
|
@ -136,41 +136,42 @@ Write Protect Notifications
|
|||
This is equivalent to (but faster than) using mprotect and a SIGSEGV
|
||||
signal handler.
|
||||
|
||||
Firstly you need to register a range with UFFDIO_REGISTER_MODE_WP.
|
||||
Instead of using mprotect(2) you use ioctl(uffd, UFFDIO_WRITEPROTECT,
|
||||
struct *uffdio_writeprotect) while mode = UFFDIO_WRITEPROTECT_MODE_WP
|
||||
Firstly you need to register a range with ``UFFDIO_REGISTER_MODE_WP``.
|
||||
Instead of using mprotect(2) you use
|
||||
``ioctl(uffd, UFFDIO_WRITEPROTECT, struct *uffdio_writeprotect)``
|
||||
while ``mode = UFFDIO_WRITEPROTECT_MODE_WP``
|
||||
in the struct passed in. The range does not default to and does not
|
||||
have to be identical to the range you registered with. You can write
|
||||
protect as many ranges as you like (inside the registered range).
|
||||
Then, in the thread reading from uffd the struct will have
|
||||
msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP set. Now you send
|
||||
ioctl(uffd, UFFDIO_WRITEPROTECT, struct *uffdio_writeprotect) again
|
||||
while pagefault.mode does not have UFFDIO_WRITEPROTECT_MODE_WP set.
|
||||
This wakes up the thread which will continue to run with writes. This
|
||||
``msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP`` set. Now you send
|
||||
``ioctl(uffd, UFFDIO_WRITEPROTECT, struct *uffdio_writeprotect)``
|
||||
again while ``pagefault.mode`` does not have ``UFFDIO_WRITEPROTECT_MODE_WP``
|
||||
set. This wakes up the thread which will continue to run with writes. This
|
||||
allows you to do the bookkeeping about the write in the uffd reading
|
||||
thread before the ioctl.
|
||||
|
||||
If you registered with both UFFDIO_REGISTER_MODE_MISSING and
|
||||
UFFDIO_REGISTER_MODE_WP then you need to think about the sequence in
|
||||
If you registered with both ``UFFDIO_REGISTER_MODE_MISSING`` and
|
||||
``UFFDIO_REGISTER_MODE_WP`` then you need to think about the sequence in
|
||||
which you supply a page and undo write protect. Note that there is a
|
||||
difference between writes into a WP area and into a !WP area. The
|
||||
former will have UFFD_PAGEFAULT_FLAG_WP set, the latter
|
||||
UFFD_PAGEFAULT_FLAG_WRITE. The latter did not fail on protection but
|
||||
you still need to supply a page when UFFDIO_REGISTER_MODE_MISSING was
|
||||
former will have ``UFFD_PAGEFAULT_FLAG_WP`` set, the latter
|
||||
``UFFD_PAGEFAULT_FLAG_WRITE``. The latter did not fail on protection but
|
||||
you still need to supply a page when ``UFFDIO_REGISTER_MODE_MISSING`` was
|
||||
used.
|
||||
|
||||
QEMU/KVM
|
||||
========
|
||||
|
||||
QEMU/KVM is using the userfaultfd syscall to implement postcopy live
|
||||
QEMU/KVM is using the ``userfaultfd`` syscall to implement postcopy live
|
||||
migration. Postcopy live migration is one form of memory
|
||||
externalization consisting of a virtual machine running with part or
|
||||
all of its memory residing on a different node in the cloud. The
|
||||
userfaultfd abstraction is generic enough that not a single line of
|
||||
``userfaultfd`` abstraction is generic enough that not a single line of
|
||||
KVM kernel code had to be modified in order to add postcopy live
|
||||
migration to QEMU.
|
||||
|
||||
Guest async page faults, FOLL_NOWAIT and all other GUP features work
|
||||
Guest async page faults, ``FOLL_NOWAIT`` and all other ``GUP*`` features work
|
||||
just fine in combination with userfaults. Userfaults trigger async
|
||||
page faults in the guest scheduler so those guest processes that
|
||||
aren't waiting for userfaults (i.e. network bound) can keep running in
|
||||
|
@ -183,19 +184,19 @@ generating userfaults for readonly guest regions.
|
|||
The implementation of postcopy live migration currently uses one
|
||||
single bidirectional socket but in the future two different sockets
|
||||
will be used (to reduce the latency of the userfaults to the minimum
|
||||
possible without having to decrease /proc/sys/net/ipv4/tcp_wmem).
|
||||
possible without having to decrease ``/proc/sys/net/ipv4/tcp_wmem``).
|
||||
|
||||
The QEMU in the source node writes all pages that it knows are missing
|
||||
in the destination node, into the socket, and the migration thread of
|
||||
the QEMU running in the destination node runs UFFDIO_COPY|ZEROPAGE
|
||||
ioctls on the userfaultfd in order to map the received pages into the
|
||||
guest (UFFDIO_ZEROCOPY is used if the source page was a zero page).
|
||||
the QEMU running in the destination node runs ``UFFDIO_COPY|ZEROPAGE``
|
||||
ioctls on the ``userfaultfd`` in order to map the received pages into the
|
||||
guest (``UFFDIO_ZEROCOPY`` is used if the source page was a zero page).
|
||||
|
||||
A different postcopy thread in the destination node listens with
|
||||
poll() to the userfaultfd in parallel. When a POLLIN event is
|
||||
poll() to the ``userfaultfd`` in parallel. When a ``POLLIN`` event is
|
||||
generated after a userfault triggers, the postcopy thread read() from
|
||||
the userfaultfd and receives the fault address (or -EAGAIN in case the
|
||||
userfault was already resolved and waken by a UFFDIO_COPY|ZEROPAGE run
|
||||
the ``userfaultfd`` and receives the fault address (or ``-EAGAIN`` in case the
|
||||
userfault was already resolved and waken by a ``UFFDIO_COPY|ZEROPAGE`` run
|
||||
by the parallel QEMU migration thread).
|
||||
|
||||
After the QEMU postcopy thread (running in the destination node) gets
|
||||
|
@ -206,7 +207,7 @@ remaining missing pages from that new page offset. Soon after that
|
|||
(just the time to flush the tcp_wmem queue through the network) the
|
||||
migration thread in the QEMU running in the destination node will
|
||||
receive the page that triggered the userfault and it'll map it as
|
||||
usual with the UFFDIO_COPY|ZEROPAGE (without actually knowing if it
|
||||
usual with the ``UFFDIO_COPY|ZEROPAGE`` (without actually knowing if it
|
||||
was spontaneously sent by the source or if it was an urgent page
|
||||
requested through a userfault).
|
||||
|
||||
|
@ -219,74 +220,74 @@ checked to find which missing pages to send in round robin and we seek
|
|||
over it when receiving incoming userfaults. After sending each page of
|
||||
course the bitmap is updated accordingly. It's also useful to avoid
|
||||
sending the same page twice (in case the userfault is read by the
|
||||
postcopy thread just before UFFDIO_COPY|ZEROPAGE runs in the migration
|
||||
postcopy thread just before ``UFFDIO_COPY|ZEROPAGE`` runs in the migration
|
||||
thread).
|
||||
|
||||
Non-cooperative userfaultfd
|
||||
===========================
|
||||
|
||||
When the userfaultfd is monitored by an external manager, the manager
|
||||
When the ``userfaultfd`` is monitored by an external manager, the manager
|
||||
must be able to track changes in the process virtual memory
|
||||
layout. Userfaultfd can notify the manager about such changes using
|
||||
the same read(2) protocol as for the page fault notifications. The
|
||||
manager has to explicitly enable these events by setting appropriate
|
||||
bits in uffdio_api.features passed to UFFDIO_API ioctl:
|
||||
bits in ``uffdio_api.features`` passed to ``UFFDIO_API`` ioctl:
|
||||
|
||||
UFFD_FEATURE_EVENT_FORK
|
||||
enable userfaultfd hooks for fork(). When this feature is
|
||||
enabled, the userfaultfd context of the parent process is
|
||||
``UFFD_FEATURE_EVENT_FORK``
|
||||
enable ``userfaultfd`` hooks for fork(). When this feature is
|
||||
enabled, the ``userfaultfd`` context of the parent process is
|
||||
duplicated into the newly created process. The manager
|
||||
receives UFFD_EVENT_FORK with file descriptor of the new
|
||||
userfaultfd context in the uffd_msg.fork.
|
||||
receives ``UFFD_EVENT_FORK`` with file descriptor of the new
|
||||
``userfaultfd`` context in the ``uffd_msg.fork``.
|
||||
|
||||
UFFD_FEATURE_EVENT_REMAP
|
||||
``UFFD_FEATURE_EVENT_REMAP``
|
||||
enable notifications about mremap() calls. When the
|
||||
non-cooperative process moves a virtual memory area to a
|
||||
different location, the manager will receive
|
||||
UFFD_EVENT_REMAP. The uffd_msg.remap will contain the old and
|
||||
``UFFD_EVENT_REMAP``. The ``uffd_msg.remap`` will contain the old and
|
||||
new addresses of the area and its original length.
|
||||
|
||||
UFFD_FEATURE_EVENT_REMOVE
|
||||
``UFFD_FEATURE_EVENT_REMOVE``
|
||||
enable notifications about madvise(MADV_REMOVE) and
|
||||
madvise(MADV_DONTNEED) calls. The event UFFD_EVENT_REMOVE will
|
||||
be generated upon these calls to madvise. The uffd_msg.remove
|
||||
madvise(MADV_DONTNEED) calls. The event ``UFFD_EVENT_REMOVE`` will
|
||||
be generated upon these calls to madvise(). The ``uffd_msg.remove``
|
||||
will contain start and end addresses of the removed area.
|
||||
|
||||
UFFD_FEATURE_EVENT_UNMAP
|
||||
``UFFD_FEATURE_EVENT_UNMAP``
|
||||
enable notifications about memory unmapping. The manager will
|
||||
get UFFD_EVENT_UNMAP with uffd_msg.remove containing start and
|
||||
get ``UFFD_EVENT_UNMAP`` with ``uffd_msg.remove`` containing start and
|
||||
end addresses of the unmapped area.
|
||||
|
||||
Although the UFFD_FEATURE_EVENT_REMOVE and UFFD_FEATURE_EVENT_UNMAP
|
||||
Although the ``UFFD_FEATURE_EVENT_REMOVE`` and ``UFFD_FEATURE_EVENT_UNMAP``
|
||||
are pretty similar, they quite differ in the action expected from the
|
||||
userfaultfd manager. In the former case, the virtual memory is
|
||||
``userfaultfd`` manager. In the former case, the virtual memory is
|
||||
removed, but the area is not, the area remains monitored by the
|
||||
userfaultfd, and if a page fault occurs in that area it will be
|
||||
``userfaultfd``, and if a page fault occurs in that area it will be
|
||||
delivered to the manager. The proper resolution for such page fault is
|
||||
to zeromap the faulting address. However, in the latter case, when an
|
||||
area is unmapped, either explicitly (with munmap() system call), or
|
||||
implicitly (e.g. during mremap()), the area is removed and in turn the
|
||||
userfaultfd context for such area disappears too and the manager will
|
||||
``userfaultfd`` context for such area disappears too and the manager will
|
||||
not get further userland page faults from the removed area. Still, the
|
||||
notification is required in order to prevent manager from using
|
||||
UFFDIO_COPY on the unmapped area.
|
||||
``UFFDIO_COPY`` on the unmapped area.
|
||||
|
||||
Unlike userland page faults which have to be synchronous and require
|
||||
explicit or implicit wakeup, all the events are delivered
|
||||
asynchronously and the non-cooperative process resumes execution as
|
||||
soon as manager executes read(). The userfaultfd manager should
|
||||
carefully synchronize calls to UFFDIO_COPY with the events
|
||||
processing. To aid the synchronization, the UFFDIO_COPY ioctl will
|
||||
return -ENOSPC when the monitored process exits at the time of
|
||||
UFFDIO_COPY, and -ENOENT, when the non-cooperative process has changed
|
||||
its virtual memory layout simultaneously with outstanding UFFDIO_COPY
|
||||
soon as manager executes read(). The ``userfaultfd`` manager should
|
||||
carefully synchronize calls to ``UFFDIO_COPY`` with the events
|
||||
processing. To aid the synchronization, the ``UFFDIO_COPY`` ioctl will
|
||||
return ``-ENOSPC`` when the monitored process exits at the time of
|
||||
``UFFDIO_COPY``, and ``-ENOENT``, when the non-cooperative process has changed
|
||||
its virtual memory layout simultaneously with outstanding ``UFFDIO_COPY``
|
||||
operation.
|
||||
|
||||
The current asynchronous model of the event delivery is optimal for
|
||||
single threaded non-cooperative userfaultfd manager implementations. A
|
||||
single threaded non-cooperative ``userfaultfd`` manager implementations. A
|
||||
synchronous event delivery model can be added later as a new
|
||||
userfaultfd feature to facilitate multithreading enhancements of the
|
||||
non cooperative manager, for example to allow UFFDIO_COPY ioctls to
|
||||
``userfaultfd`` feature to facilitate multithreading enhancements of the
|
||||
non cooperative manager, for example to allow ``UFFDIO_COPY`` ioctls to
|
||||
run in parallel to the event reception. Single threaded
|
||||
implementations should continue to use the current async event
|
||||
delivery model instead.
|
||||
|
|
|
@ -18,7 +18,7 @@ Mounting the root filesystem via NFS (nfsroot)
|
|||
In order to use a diskless system, such as an X-terminal or printer server for
|
||||
example, it is necessary for the root filesystem to be present on a non-disk
|
||||
device. This may be an initramfs (see
|
||||
Documentation/filesystems/ramfs-rootfs-initramfs.txt), a ramdisk (see
|
||||
Documentation/filesystems/ramfs-rootfs-initramfs.rst), a ramdisk (see
|
||||
Documentation/admin-guide/initrd.rst) or a filesystem mounted via NFS. The
|
||||
following text describes on how to use NFS for the root filesystem. For the rest
|
||||
of this text 'client' means the diskless system, and 'server' means the NFS
|
||||
|
|
|
@ -212,7 +212,7 @@ EDAC - Error Detection And Correction
|
|||
purposes.
|
||||
|
||||
When the subsystem was pushed upstream for the first time, on
|
||||
Kernel 2.6.16, for the first time, it was renamed to ``EDAC``.
|
||||
Kernel 2.6.16, it was renamed to ``EDAC``.
|
||||
|
||||
Purpose
|
||||
-------
|
||||
|
@ -351,15 +351,17 @@ controllers. The following example will assume 2 channels:
|
|||
+------------+-----------+-----------+
|
||||
| | ``ch0`` | ``ch1`` |
|
||||
+============+===========+===========+
|
||||
| ``csrow0`` | DIMM_A0 | DIMM_B0 |
|
||||
| | rank0 | rank0 |
|
||||
+------------+ - | - |
|
||||
| |**DIMM_A0**|**DIMM_B0**|
|
||||
+------------+-----------+-----------+
|
||||
| ``csrow0`` | rank0 | rank0 |
|
||||
+------------+-----------+-----------+
|
||||
| ``csrow1`` | rank1 | rank1 |
|
||||
+------------+-----------+-----------+
|
||||
| ``csrow2`` | DIMM_A1 | DIMM_B1 |
|
||||
| | rank0 | rank0 |
|
||||
+------------+ - | - |
|
||||
| ``csrow3`` | rank1 | rank1 |
|
||||
| |**DIMM_A1**|**DIMM_B1**|
|
||||
+------------+-----------+-----------+
|
||||
| ``csrow2`` | rank0 | rank0 |
|
||||
+------------+-----------+-----------+
|
||||
| ``csrow3`` | rank1 | rank1 |
|
||||
+------------+-----------+-----------+
|
||||
|
||||
In the above example, there are 4 physical slots on the motherboard
|
||||
|
|
|
@ -23,6 +23,7 @@ optional external memory-mapped interface.
|
|||
|
||||
Version 1 of the Activity Monitors architecture implements a counter group
|
||||
of four fixed and architecturally defined 64-bit event counters.
|
||||
|
||||
- CPU cycle counter: increments at the frequency of the CPU.
|
||||
- Constant counter: increments at the fixed frequency of the system
|
||||
clock.
|
||||
|
@ -57,6 +58,7 @@ counters, only the presence of the extension.
|
|||
|
||||
Firmware (code running at higher exception levels, e.g. arm-tf) support is
|
||||
needed to:
|
||||
|
||||
- Enable access for lower exception levels (EL2 and EL1) to the AMU
|
||||
registers.
|
||||
- Enable the counters. If not enabled these will read as 0.
|
||||
|
@ -78,6 +80,7 @@ are not trapped in EL2/EL3.
|
|||
|
||||
The fixed counters of AMUv1 are accessible though the following system
|
||||
register definitions:
|
||||
|
||||
- SYS_AMEVCNTR0_CORE_EL0
|
||||
- SYS_AMEVCNTR0_CONST_EL0
|
||||
- SYS_AMEVCNTR0_INST_RET_EL0
|
||||
|
@ -93,6 +96,7 @@ Userspace access
|
|||
----------------
|
||||
|
||||
Currently, access from userspace to the AMU registers is disabled due to:
|
||||
|
||||
- Security reasons: they might expose information about code executed in
|
||||
secure mode.
|
||||
- Purpose: AMU counters are intended for system management use.
|
||||
|
@ -105,6 +109,7 @@ Virtualization
|
|||
|
||||
Currently, access from userspace (EL0) and kernelspace (EL1) on the KVM
|
||||
guest side is disabled due to:
|
||||
|
||||
- Security reasons: they might expose information about code executed
|
||||
by other guests or the host.
|
||||
|
||||
|
|
|
@ -173,7 +173,9 @@ Before jumping into the kernel, the following conditions must be met:
|
|||
- Caches, MMUs
|
||||
|
||||
The MMU must be off.
|
||||
|
||||
Instruction cache may be on or off.
|
||||
|
||||
The address range corresponding to the loaded kernel image must be
|
||||
cleaned to the PoC. In the presence of a system cache or other
|
||||
coherent masters with caches enabled, this will typically require
|
||||
|
@ -238,6 +240,7 @@ Before jumping into the kernel, the following conditions must be met:
|
|||
- The DT or ACPI tables must describe a GICv2 interrupt controller.
|
||||
|
||||
For CPUs with pointer authentication functionality:
|
||||
|
||||
- If EL3 is present:
|
||||
|
||||
- SCR_EL3.APK (bit 16) must be initialised to 0b1
|
||||
|
@ -249,18 +252,22 @@ Before jumping into the kernel, the following conditions must be met:
|
|||
- HCR_EL2.API (bit 41) must be initialised to 0b1
|
||||
|
||||
For CPUs with Activity Monitors Unit v1 (AMUv1) extension present:
|
||||
|
||||
- If EL3 is present:
|
||||
CPTR_EL3.TAM (bit 30) must be initialised to 0b0
|
||||
CPTR_EL2.TAM (bit 30) must be initialised to 0b0
|
||||
AMCNTENSET0_EL0 must be initialised to 0b1111
|
||||
AMCNTENSET1_EL0 must be initialised to a platform specific value
|
||||
having 0b1 set for the corresponding bit for each of the auxiliary
|
||||
counters present.
|
||||
|
||||
- CPTR_EL3.TAM (bit 30) must be initialised to 0b0
|
||||
- CPTR_EL2.TAM (bit 30) must be initialised to 0b0
|
||||
- AMCNTENSET0_EL0 must be initialised to 0b1111
|
||||
- AMCNTENSET1_EL0 must be initialised to a platform specific value
|
||||
having 0b1 set for the corresponding bit for each of the auxiliary
|
||||
counters present.
|
||||
|
||||
- If the kernel is entered at EL1:
|
||||
AMCNTENSET0_EL0 must be initialised to 0b1111
|
||||
AMCNTENSET1_EL0 must be initialised to a platform specific value
|
||||
having 0b1 set for the corresponding bit for each of the auxiliary
|
||||
counters present.
|
||||
|
||||
- AMCNTENSET0_EL0 must be initialised to 0b1111
|
||||
- AMCNTENSET1_EL0 must be initialised to a platform specific value
|
||||
having 0b1 set for the corresponding bit for each of the auxiliary
|
||||
counters present.
|
||||
|
||||
The requirements described above for CPU mode, caches, MMUs, architected
|
||||
timers, coherency and system registers apply to all CPUs. All CPUs must
|
||||
|
@ -304,7 +311,8 @@ following manner:
|
|||
Documentation/devicetree/bindings/arm/psci.yaml.
|
||||
|
||||
- Secondary CPU general-purpose register settings
|
||||
x0 = 0 (reserved for future use)
|
||||
x1 = 0 (reserved for future use)
|
||||
x2 = 0 (reserved for future use)
|
||||
x3 = 0 (reserved for future use)
|
||||
|
||||
- x0 = 0 (reserved for future use)
|
||||
- x1 = 0 (reserved for future use)
|
||||
- x2 = 0 (reserved for future use)
|
||||
- x3 = 0 (reserved for future use)
|
||||
|
|
|
@ -388,44 +388,6 @@ if major == 1 and minor < 6:
|
|||
# author, documentclass [howto, manual, or own class]).
|
||||
# Sorted in alphabetical order
|
||||
latex_documents = [
|
||||
('admin-guide/index', 'linux-user.tex', 'Linux Kernel User Documentation',
|
||||
'The kernel development community', 'manual'),
|
||||
('core-api/index', 'core-api.tex', 'The kernel core API manual',
|
||||
'The kernel development community', 'manual'),
|
||||
('crypto/index', 'crypto-api.tex', 'Linux Kernel Crypto API manual',
|
||||
'The kernel development community', 'manual'),
|
||||
('dev-tools/index', 'dev-tools.tex', 'Development tools for the Kernel',
|
||||
'The kernel development community', 'manual'),
|
||||
('doc-guide/index', 'kernel-doc-guide.tex', 'Linux Kernel Documentation Guide',
|
||||
'The kernel development community', 'manual'),
|
||||
('driver-api/index', 'driver-api.tex', 'The kernel driver API manual',
|
||||
'The kernel development community', 'manual'),
|
||||
('filesystems/index', 'filesystems.tex', 'Linux Filesystems API',
|
||||
'The kernel development community', 'manual'),
|
||||
('admin-guide/ext4', 'ext4-admin-guide.tex', 'ext4 Administration Guide',
|
||||
'ext4 Community', 'manual'),
|
||||
('filesystems/ext4/index', 'ext4-data-structures.tex',
|
||||
'ext4 Data Structures and Algorithms', 'ext4 Community', 'manual'),
|
||||
('gpu/index', 'gpu.tex', 'Linux GPU Driver Developer\'s Guide',
|
||||
'The kernel development community', 'manual'),
|
||||
('input/index', 'linux-input.tex', 'The Linux input driver subsystem',
|
||||
'The kernel development community', 'manual'),
|
||||
('kernel-hacking/index', 'kernel-hacking.tex', 'Unreliable Guide To Hacking The Linux Kernel',
|
||||
'The kernel development community', 'manual'),
|
||||
('media/index', 'media.tex', 'Linux Media Subsystem Documentation',
|
||||
'The kernel development community', 'manual'),
|
||||
('networking/index', 'networking.tex', 'Linux Networking Documentation',
|
||||
'The kernel development community', 'manual'),
|
||||
('process/index', 'development-process.tex', 'Linux Kernel Development Documentation',
|
||||
'The kernel development community', 'manual'),
|
||||
('security/index', 'security.tex', 'The kernel security subsystem manual',
|
||||
'The kernel development community', 'manual'),
|
||||
('sh/index', 'sh.tex', 'SuperH architecture implementation manual',
|
||||
'The kernel development community', 'manual'),
|
||||
('sound/index', 'sound.tex', 'Linux Sound Subsystem Documentation',
|
||||
'The kernel development community', 'manual'),
|
||||
('userspace-api/index', 'userspace-api.tex', 'The Linux kernel user-space API guide',
|
||||
'The kernel development community', 'manual'),
|
||||
]
|
||||
|
||||
# Add all other index files from Documentation/ subdirectories
|
||||
|
|
|
@ -29,7 +29,7 @@ Required properties for compatible string qcom,wcn399x-bt:
|
|||
|
||||
Optional properties for compatible string qcom,wcn399x-bt:
|
||||
|
||||
- max-speed: see Documentation/devicetree/bindings/serial/slave-device.txt
|
||||
- max-speed: see Documentation/devicetree/bindings/serial/serial.yaml
|
||||
- firmware-name: specify the name of nvm firmware to load
|
||||
- clocks: clock provided to the controller
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ patternProperties:
|
|||
bindings specified in
|
||||
Documentation/devicetree/bindings/phy/phy-cadence-sierra.txt
|
||||
Torrent SERDES should follow the bindings specified in
|
||||
Documentation/devicetree/bindings/phy/phy-cadence-dp.txt
|
||||
Documentation/devicetree/bindings/phy/phy-cadence-torrent.yaml
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
|
|
@ -52,8 +52,8 @@ A child node must exist to represent the core DWC3 IP block. The name of
|
|||
the node is not important. The content of the node is defined in dwc3.txt.
|
||||
|
||||
Phy documentation is provided in the following places:
|
||||
Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt - USB3 QMP PHY
|
||||
Documentation/devicetree/bindings/phy/qcom-qusb2-phy.txt - USB2 QUSB2 PHY
|
||||
Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt - USB3 QMP PHY
|
||||
Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml - USB2 QUSB2 PHY
|
||||
|
||||
Example device nodes:
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ A child node must exist to represent the core DWC3 IP block. The name of
|
|||
the node is not important. The content of the node is defined in dwc3.txt.
|
||||
|
||||
Phy documentation is provided in the following places:
|
||||
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt - USB2.0 PHY
|
||||
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.yaml - USB2.0 PHY
|
||||
Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt - Type-C PHY
|
||||
|
||||
Example device nodes:
|
||||
|
|
|
@ -6,7 +6,7 @@ Documentation subsystem maintainer entry profile
|
|||
The documentation "subsystem" is the central coordinating point for the
|
||||
kernel's documentation and associated infrastructure. It covers the
|
||||
hierarchy under Documentation/ (with the exception of
|
||||
Documentation/device-tree), various utilities under scripts/ and, at least
|
||||
Documentation/devicetree), various utilities under scripts/ and, at least
|
||||
some of the time, LICENSES/.
|
||||
|
||||
It's worth noting, though, that the boundaries of this subsystem are rather
|
||||
|
|
|
@ -50,10 +50,10 @@ Attributes
|
|||
|
||||
Attributes of devices can be exported by a device driver through sysfs.
|
||||
|
||||
Please see Documentation/filesystems/sysfs.txt for more information
|
||||
Please see Documentation/filesystems/sysfs.rst for more information
|
||||
on how sysfs works.
|
||||
|
||||
As explained in Documentation/kobject.txt, device attributes must be
|
||||
As explained in Documentation/core-api/kobject.rst, device attributes must be
|
||||
created before the KOBJ_ADD uevent is generated. The only way to realize
|
||||
that is by defining an attribute group.
|
||||
|
||||
|
|
|
@ -121,4 +121,4 @@ device-specific data or tunable interfaces.
|
|||
|
||||
More information about the sysfs directory layout can be found in
|
||||
the other documents in this directory and in the file
|
||||
Documentation/filesystems/sysfs.txt.
|
||||
Documentation/filesystems/sysfs.rst.
|
||||
|
|
|
@ -74,7 +74,7 @@ are zeroed out and converted to written extents before being returned to avoid
|
|||
exposure of uninitialized data through mmap.
|
||||
|
||||
These filesystems may be used for inspiration:
|
||||
- ext2: see Documentation/filesystems/ext2.txt
|
||||
- ext2: see Documentation/filesystems/ext2.rst
|
||||
- ext4: see Documentation/filesystems/ext4/
|
||||
- xfs: see Documentation/admin-guide/xfs.rst
|
||||
|
||||
|
|
|
@ -67,4 +67,4 @@ See tools/testing/selftests/filesystems/dnotify_test.c for an example.
|
|||
NOTE
|
||||
----
|
||||
Beginning with Linux 2.6.13, dnotify has been replaced by inotify.
|
||||
See Documentation/filesystems/inotify.txt for more information on it.
|
||||
See Documentation/filesystems/inotify.rst for more information on it.
|
||||
|
|
|
@ -71,7 +71,7 @@ be allowed write access to a ramfs mount.
|
|||
|
||||
A ramfs derivative called tmpfs was created to add size limits, and the ability
|
||||
to write the data to swap space. Normal users can be allowed write access to
|
||||
tmpfs mounts. See Documentation/filesystems/tmpfs.txt for more information.
|
||||
tmpfs mounts. See Documentation/filesystems/tmpfs.rst for more information.
|
||||
|
||||
What is rootfs?
|
||||
---------------
|
||||
|
|
|
@ -20,7 +20,7 @@ a means to export kernel data structures, their attributes, and the
|
|||
linkages between them to userspace.
|
||||
|
||||
sysfs is tied inherently to the kobject infrastructure. Please read
|
||||
Documentation/kobject.txt for more information concerning the kobject
|
||||
Documentation/core-api/kobject.rst for more information concerning the kobject
|
||||
interface.
|
||||
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="i2c.svg"
|
||||
sodipodi:docname="i2c_bus.svg"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
version="1.1"
|
||||
id="svg2"
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
|
@ -34,7 +34,7 @@ Terminology
|
|||
Using the terminology from the official documentation, the I2C bus connects
|
||||
one or more *master* chips and one or more *slave* chips.
|
||||
|
||||
.. kernel-figure:: i2c.svg
|
||||
.. kernel-figure:: i2c_bus.svg
|
||||
:alt: Simple I2C bus with one master and 3 slaves
|
||||
|
||||
Simple I2C bus
|
||||
|
|
|
@ -620,7 +620,7 @@ because the CPUs that the Linux kernel supports don't do writes
|
|||
until they are certain (1) that the write will actually happen, (2)
|
||||
of the location of the write, and (3) of the value to be written.
|
||||
But please carefully read the "CONTROL DEPENDENCIES" section and the
|
||||
Documentation/RCU/rcu_dereference.txt file: The compiler can and does
|
||||
Documentation/RCU/rcu_dereference.rst file: The compiler can and does
|
||||
break dependencies in a great many highly creative ways.
|
||||
|
||||
CPU 1 CPU 2
|
||||
|
|
|
@ -133,6 +133,7 @@ User API
|
|||
========
|
||||
|
||||
1. AFU character devices
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
For AFUs operating in AFU directed mode, two character device
|
||||
files will be created. /dev/cxl/afu0.0m will correspond to a
|
||||
|
@ -395,6 +396,7 @@ read
|
|||
|
||||
|
||||
2. Card character device (powerVM guest only)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
In a powerVM guest, an extra character device is created for the
|
||||
card. The device is only used to write (flash) a new image on the
|
||||
|
|
|
@ -344,7 +344,7 @@ Here is the list of files under powerpc debugfs:
|
|||
|
||||
|
||||
NOTE:
|
||||
Please refer to Documentation/filesystems/debugfs.txt on
|
||||
Please refer to Documentation/filesystems/debugfs.rst on
|
||||
how to mount the debugfs filesystem.
|
||||
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ interface.
|
|||
to a somewhat opaque API.
|
||||
|
||||
- If you're just exposing runtime system information, a new node in sysfs
|
||||
(see ``Documentation/filesystems/sysfs.txt``) or the ``/proc`` filesystem may
|
||||
(see ``Documentation/filesystems/sysfs.rst``) or the ``/proc`` filesystem may
|
||||
be more appropriate. However, access to these mechanisms requires that the
|
||||
relevant filesystem is mounted, which might not always be the case (e.g.
|
||||
in a namespaced/sandboxed/chrooted environment). Avoid adding any API to
|
||||
|
|
|
@ -107,7 +107,7 @@ and elsewhere regarding submitting Linux kernel patches.
|
|||
and why.
|
||||
|
||||
26) If any ioctl's are added by the patch, then also update
|
||||
``Documentation/ioctl/ioctl-number.rst``.
|
||||
``Documentation/userspace-api/ioctl/ioctl-number.rst``.
|
||||
|
||||
27) If your modified source code depends on or uses any of the kernel
|
||||
APIs or features that are related to the following ``Kconfig`` symbols,
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
docutils
|
||||
Sphinx==1.7.9
|
||||
Sphinx==2.4.4
|
||||
sphinx_rtd_theme
|
||||
|
|
|
@ -39,7 +39,7 @@ vostra interfaccia.
|
|||
un qualche modo opaca.
|
||||
|
||||
- Se dovete esporre solo delle informazioni sul sistema, un nuovo nodo in
|
||||
sysfs (vedere ``Documentation/filesystems/sysfs.txt``) o
|
||||
sysfs (vedere ``Documentation/filesystems/sysfs.rst``) o
|
||||
in procfs potrebbe essere sufficiente. Tuttavia, l'accesso a questi
|
||||
meccanismi richiede che il filesystem sia montato, il che potrebbe non
|
||||
essere sempre vero (per esempio, in ambienti come namespace/sandbox/chroot).
|
||||
|
|
|
@ -117,7 +117,7 @@ sottomissione delle patch, in particolare
|
|||
sorgenti che ne spieghi la logica: cosa fanno e perché.
|
||||
|
||||
25) Se la patch aggiunge nuove chiamate ioctl, allora aggiornate
|
||||
``Documentation/ioctl/ioctl-number.rst``.
|
||||
``Documentation/userspace-api/ioctl/ioctl-number.rst``.
|
||||
|
||||
26) Se il codice che avete modificato dipende o usa una qualsiasi interfaccia o
|
||||
funzionalità del kernel che è associata a uno dei seguenti simboli
|
||||
|
|
|
@ -641,7 +641,7 @@ P 는 짝수 번호 캐시 라인에 저장되어 있고, 변수 B 는 홀수
|
|||
리눅스 커널이 지원하는 CPU 들은 (1) 쓰기가 정말로 일어날지, (2) 쓰기가 어디에
|
||||
이루어질지, 그리고 (3) 쓰여질 값을 확실히 알기 전까지는 쓰기를 수행하지 않기
|
||||
때문입니다. 하지만 "컨트롤 의존성" 섹션과
|
||||
Documentation/RCU/rcu_dereference.txt 파일을 주의 깊게 읽어 주시기 바랍니다:
|
||||
Documentation/RCU/rcu_dereference.rst 파일을 주의 깊게 읽어 주시기 바랍니다:
|
||||
컴파일러는 매우 창의적인 많은 방법으로 종속성을 깰 수 있습니다.
|
||||
|
||||
CPU 1 CPU 2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Chinese translated version of Documentation/filesystems/sysfs.txt
|
||||
Chinese translated version of Documentation/filesystems/sysfs.rst
|
||||
|
||||
If you have any comment or update to the content, please contact the
|
||||
original document maintainer directly. However, if you have a problem
|
||||
|
@ -10,7 +10,7 @@ Maintainer: Patrick Mochel <mochel@osdl.org>
|
|||
Mike Murphy <mamurph@cs.clemson.edu>
|
||||
Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
|
||||
---------------------------------------------------------------------
|
||||
Documentation/filesystems/sysfs.txt 的中文翻译
|
||||
Documentation/filesystems/sysfs.rst 的中文翻译
|
||||
|
||||
如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
|
||||
交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
|
||||
|
@ -40,7 +40,7 @@ sysfs 是一个最初基于 ramfs 且位于内存的文件系统。它提供导
|
|||
数据结构及其属性,以及它们之间的关联到用户空间的方法。
|
||||
|
||||
sysfs 始终与 kobject 的底层结构紧密相关。请阅读
|
||||
Documentation/kobject.txt 文档以获得更多关于 kobject 接口的
|
||||
Documentation/core-api/kobject.rst 文档以获得更多关于 kobject 接口的
|
||||
信息。
|
||||
|
||||
|
||||
|
@ -281,7 +281,7 @@ drivers/ 包含了每个已为特定总线上的设备而挂载的驱动程序
|
|||
假定驱动没有跨越多个总线类型)。
|
||||
|
||||
fs/ 包含了一个为文件系统设立的目录。现在每个想要导出属性的文件系统必须
|
||||
在 fs/ 下创建自己的层次结构(参见Documentation/filesystems/fuse.txt)。
|
||||
在 fs/ 下创建自己的层次结构(参见Documentation/filesystems/fuse.rst)。
|
||||
|
||||
dev/ 包含两个子目录: char/ 和 block/。在这两个子目录中,有以
|
||||
<major>:<minor> 格式命名的符号链接。这些符号链接指向 sysfs 目录
|
||||
|
|
|
@ -97,7 +97,7 @@ Linux内核补丁提交清单
|
|||
24) 所有内存屏障例如 ``barrier()``, ``rmb()``, ``wmb()`` 都需要源代码中的注
|
||||
释来解释它们正在执行的操作及其原因的逻辑。
|
||||
|
||||
25) 如果补丁添加了任何ioctl,那么也要更新 ``Documentation/ioctl/ioctl-number.rst``
|
||||
25) 如果补丁添加了任何ioctl,那么也要更新 ``Documentation/userspace-api/ioctl/ioctl-number.rst``
|
||||
|
||||
26) 如果修改后的源代码依赖或使用与以下 ``Kconfig`` 符号相关的任何内核API或
|
||||
功能,则在禁用相关 ``Kconfig`` 符号和/或 ``=m`` (如果该选项可用)的情况
|
||||
|
|
|
@ -76,5 +76,5 @@ It is advisable that one or more 64k pages are set aside for the purpose of
|
|||
these structures and not used for other purposes, this enables the guest to map
|
||||
the region using 64k pages and avoids conflicting attributes with other memory.
|
||||
|
||||
For the user space interface see Documentation/virt/kvm/devices/vcpu.txt
|
||||
For the user space interface see Documentation/virt/kvm/devices/vcpu.rst
|
||||
section "3. GROUP: KVM_ARM_VCPU_PVTIME_CTRL".
|
||||
|
|
|
@ -110,5 +110,5 @@ Returns:
|
|||
|
||||
Specifies the base address of the stolen time structure for this VCPU. The
|
||||
base address must be 64 byte aligned and exist within a valid guest memory
|
||||
region. See Documentation/virt/kvm/arm/pvtime.txt for more information
|
||||
region. See Documentation/virt/kvm/arm/pvtime.rst for more information
|
||||
including the layout of the stolen time structure.
|
||||
|
|
|
@ -22,7 +22,7 @@ S390:
|
|||
number in R1.
|
||||
|
||||
For further information on the S390 diagnose call as supported by KVM,
|
||||
refer to Documentation/virt/kvm/s390-diag.txt.
|
||||
refer to Documentation/virt/kvm/s390-diag.rst.
|
||||
|
||||
PowerPC:
|
||||
It uses R3-R10 and hypercall number in R11. R4-R11 are used as output registers.
|
||||
|
@ -30,7 +30,7 @@ PowerPC:
|
|||
|
||||
KVM hypercalls uses 4 byte opcode, that are patched with 'hypercall-instructions'
|
||||
property inside the device tree's /hypervisor node.
|
||||
For more information refer to Documentation/virt/kvm/ppc-pv.txt
|
||||
For more information refer to Documentation/virt/kvm/ppc-pv.rst
|
||||
|
||||
MIPS:
|
||||
KVM hypercalls use the HYPCALL instruction with code 0 and the hypercall
|
||||
|
|
|
@ -319,7 +319,7 @@ Handling a page fault is performed as follows:
|
|||
|
||||
- If both P bit and R/W bit of error code are set, this could possibly
|
||||
be handled as a "fast page fault" (fixed without taking the MMU lock). See
|
||||
the description in Documentation/virt/kvm/locking.txt.
|
||||
the description in Documentation/virt/kvm/locking.rst.
|
||||
|
||||
- if needed, walk the guest page tables to determine the guest translation
|
||||
(gva->gpa or ngpa->gpa)
|
||||
|
|
|
@ -10,7 +10,7 @@ Review checklist for kvm patches
|
|||
2. Patches should be against kvm.git master branch.
|
||||
|
||||
3. If the patch introduces or modifies a new userspace API:
|
||||
- the API must be documented in Documentation/virt/kvm/api.txt
|
||||
- the API must be documented in Documentation/virt/kvm/api.rst
|
||||
- the API must be discoverable using KVM_CHECK_EXTENSION
|
||||
|
||||
4. New state must include support for save/restore.
|
||||
|
|
|
@ -31,6 +31,7 @@ descriptions of data structures and algorithms.
|
|||
active_mm
|
||||
balance
|
||||
cleancache
|
||||
free_page_reporting
|
||||
frontswap
|
||||
highmem
|
||||
hmm
|
||||
|
|
|
@ -1323,7 +1323,10 @@ ARM INTEGRATOR, VERSATILE AND REALVIEW SUPPORT
|
|||
M: Linus Walleij <linus.walleij@linaro.org>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/arm/arm-boards
|
||||
F: Documentation/devicetree/bindings/arm/arm,integrator.yaml
|
||||
F: Documentation/devicetree/bindings/arm/arm,realview.yaml
|
||||
F: Documentation/devicetree/bindings/arm/arm,versatile.yaml
|
||||
F: Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml
|
||||
F: Documentation/devicetree/bindings/auxdisplay/arm-charlcd.txt
|
||||
F: Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml
|
||||
F: Documentation/devicetree/bindings/i2c/i2c-versatile.txt
|
||||
|
@ -5552,7 +5555,7 @@ M: Chen-Yu Tsai <wens@csie.org>
|
|||
L: dri-devel@lists.freedesktop.org
|
||||
S: Supported
|
||||
T: git git://anongit.freedesktop.org/drm/drm-misc
|
||||
F: Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
|
||||
F: Documentation/devicetree/bindings/display/allwinner*
|
||||
F: drivers/gpu/drm/sun4i/
|
||||
|
||||
DRM DRIVERS FOR AMLOGIC SOCS
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
* Struct fields are always 32 or 64 bit aligned, depending on them being 32
|
||||
* or 64 bit wide respectively.
|
||||
*
|
||||
* See Documentation/virt/kvm/ppc-pv.txt
|
||||
* See Documentation/virt/kvm/ppc-pv.rst
|
||||
*/
|
||||
struct kvm_vcpu_arch_shared {
|
||||
__u64 scratch1;
|
||||
|
|
|
@ -3586,7 +3586,7 @@ static bool fast_page_fault(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
|
|||
/*
|
||||
* Currently, fast page fault only works for direct mapping
|
||||
* since the gfn is not stable for indirect shadow page. See
|
||||
* Documentation/virt/kvm/locking.txt to get more detail.
|
||||
* Documentation/virt/kvm/locking.rst to get more detail.
|
||||
*/
|
||||
fault_handled = fast_pf_fix_direct_spte(vcpu, sp,
|
||||
iterator.sptep, spte,
|
||||
|
|
|
@ -5209,7 +5209,7 @@ void ata_link_init(struct ata_port *ap, struct ata_link *link, int pmp)
|
|||
* sata_link_init_spd - Initialize link->sata_spd_limit
|
||||
* @link: Link to configure sata_spd_limit for
|
||||
*
|
||||
* Initialize @link->[hw_]sata_spd_limit to the currently
|
||||
* Initialize ``link->[hw_]sata_spd_limit`` to the currently
|
||||
* configured value.
|
||||
*
|
||||
* LOCKING:
|
||||
|
|
|
@ -1374,7 +1374,7 @@ static void device_release(struct kobject *kobj)
|
|||
else if (dev->class && dev->class->dev_release)
|
||||
dev->class->dev_release(dev);
|
||||
else
|
||||
WARN(1, KERN_ERR "Device '%s' does not have a release() function, it is broken and must be fixed. See Documentation/kobject.txt.\n",
|
||||
WARN(1, KERN_ERR "Device '%s' does not have a release() function, it is broken and must be fixed. See Documentation/core-api/kobject.rst.\n",
|
||||
dev_name(dev));
|
||||
kfree(p);
|
||||
}
|
||||
|
|
|
@ -147,7 +147,8 @@ EXPORT_SYMBOL_GPL(devm_platform_ioremap_resource_byname);
|
|||
* request_irq() APIs. This is the same as platform_get_irq(), except that it
|
||||
* does not print an error message if an IRQ can not be obtained.
|
||||
*
|
||||
* Example:
|
||||
* For example::
|
||||
*
|
||||
* int irq = platform_get_irq_optional(pdev, 0);
|
||||
* if (irq < 0)
|
||||
* return irq;
|
||||
|
@ -226,7 +227,8 @@ EXPORT_SYMBOL_GPL(platform_get_irq_optional);
|
|||
* IRQ fails. Device drivers should check the return value for errors so as to
|
||||
* not pass a negative integer value to the request_irq() APIs.
|
||||
*
|
||||
* Example:
|
||||
* For example::
|
||||
*
|
||||
* int irq = platform_get_irq(pdev, 0);
|
||||
* if (irq < 0)
|
||||
* return irq;
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
* This file add support for AES cipher with 128,192,256 bits keysize in
|
||||
* CBC and ECB mode.
|
||||
*
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi/README
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi.rst
|
||||
*/
|
||||
|
||||
#include <linux/crypto.h>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
* Core file which registers crypto algorithms supported by the CryptoEngine.
|
||||
*
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi/README
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi.rst
|
||||
*/
|
||||
#include <linux/clk.h>
|
||||
#include <linux/crypto.h>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
* This file add support for AES cipher with 128,192,256 bits keysize in
|
||||
* CBC and ECB mode.
|
||||
*
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi/README
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi.rst
|
||||
*/
|
||||
|
||||
#include <linux/crypto.h>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
* Core file which registers crypto algorithms supported by the SecuritySystem
|
||||
*
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi/README
|
||||
* You could find a link for the datasheet in Documentation/arm/sunxi.rst
|
||||
*/
|
||||
#include <linux/clk.h>
|
||||
#include <linux/crypto.h>
|
||||
|
|
|
@ -161,7 +161,7 @@ config DRM_LOAD_EDID_FIRMWARE
|
|||
monitor are unable to provide appropriate EDID data. Since this
|
||||
feature is provided as a workaround for broken hardware, the
|
||||
default case is N. Details and instructions how to build your own
|
||||
EDID data are given in Documentation/driver-api/edid.rst.
|
||||
EDID data are given in Documentation/admin-guide/edid.rst.
|
||||
|
||||
config DRM_DP_CEC
|
||||
bool "Enable DisplayPort CEC-Tunneling-over-AUX HDMI support"
|
||||
|
|
|
@ -741,7 +741,7 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
|
|||
* };
|
||||
*
|
||||
* Please make sure that you follow all the best practices from
|
||||
* ``Documentation/ioctl/botching-up-ioctls.rst``. Note that drm_ioctl()
|
||||
* ``Documentation/process/botching-up-ioctls.rst``. Note that drm_ioctl()
|
||||
* automatically zero-extends structures, hence make sure you can add more stuff
|
||||
* at the end, i.e. don't put a variable sized array there.
|
||||
*
|
||||
|
|
|
@ -170,7 +170,7 @@ struct dpu_global_state
|
|||
*
|
||||
* Main debugfs documentation is located at,
|
||||
*
|
||||
* Documentation/filesystems/debugfs.txt
|
||||
* Documentation/filesystems/debugfs.rst
|
||||
*
|
||||
* @dpu_debugfs_setup_regset32: Initialize data for dpu_debugfs_create_regset32
|
||||
* @dpu_debugfs_create_regset32: Create 32-bit register dump file
|
||||
|
|
|
@ -107,7 +107,7 @@ config CORESIGHT_CPU_DEBUG
|
|||
can quickly get to know program counter (PC), secure state,
|
||||
exception level, etc. Before use debugging functionality, platform
|
||||
needs to ensure the clock domain and power domain are enabled
|
||||
properly, please refer Documentation/trace/coresight-cpu-debug.rst
|
||||
properly, please refer Documentation/trace/coresight/coresight-cpu-debug.rst
|
||||
for detailed description and the example for usage.
|
||||
|
||||
config CORESIGHT_CTI
|
||||
|
|
|
@ -980,7 +980,7 @@ static int v4l2_fwnode_reference_parse(struct device *dev,
|
|||
*
|
||||
* THIS EXAMPLE EXISTS MERELY TO DOCUMENT THIS FUNCTION. DO NOT USE IT AS A
|
||||
* REFERENCE IN HOW ACPI TABLES SHOULD BE WRITTEN!! See documentation under
|
||||
* Documentation/acpi/dsd instead and especially graph.txt,
|
||||
* Documentation/firmware-guide/acpi/dsd/ instead and especially graph.txt,
|
||||
* data-node-references.txt and leds.txt .
|
||||
*
|
||||
* Scope (\_SB.PCI0.I2C2)
|
||||
|
|
|
@ -166,7 +166,7 @@ config TMPFS
|
|||
space. If you unmount a tmpfs instance, everything stored therein is
|
||||
lost.
|
||||
|
||||
See <file:Documentation/filesystems/tmpfs.txt> for details.
|
||||
See <file:Documentation/filesystems/tmpfs.rst> for details.
|
||||
|
||||
config TMPFS_POSIX_ACL
|
||||
bool "Tmpfs POSIX Access Control Lists"
|
||||
|
|
|
@ -72,7 +72,7 @@ config CORE_DUMP_DEFAULT_ELF_HEADERS
|
|||
|
||||
The core dump behavior can be controlled per process using
|
||||
the /proc/PID/coredump_filter pseudo-file; this setting is
|
||||
inherited. See Documentation/filesystems/proc.txt for details.
|
||||
inherited. See Documentation/filesystems/proc.rst for details.
|
||||
|
||||
This config option changes the default setting of coredump_filter
|
||||
seen at boot time. If unsure, say Y.
|
||||
|
|
|
@ -12,7 +12,7 @@ config ADFS_FS
|
|||
|
||||
The ADFS partition should be the first partition (i.e.,
|
||||
/dev/[hs]d?1) on each of your drives. Please read the file
|
||||
<file:Documentation/filesystems/adfs.txt> for further details.
|
||||
<file:Documentation/filesystems/adfs.rst> for further details.
|
||||
|
||||
To compile this code as a module, choose M here: the module will be
|
||||
called adfs.
|
||||
|
|
|
@ -9,7 +9,7 @@ config AFFS_FS
|
|||
FFS partition on your hard drive. Amiga floppies however cannot be
|
||||
read with this driver due to an incompatibility of the floppy
|
||||
controller used in an Amiga and the standard floppy controller in
|
||||
PCs and workstations. Read <file:Documentation/filesystems/affs.txt>
|
||||
PCs and workstations. Read <file:Documentation/filesystems/affs.rst>
|
||||
and <file:fs/affs/Changes>.
|
||||
|
||||
With this driver you can also mount disk files used by Bernd
|
||||
|
|
|
@ -8,7 +8,7 @@ config AFS_FS
|
|||
If you say Y here, you will get an experimental Andrew File System
|
||||
driver. It currently only supports unsecured read-only AFS access.
|
||||
|
||||
See <file:Documentation/filesystems/afs.txt> for more information.
|
||||
See <file:Documentation/filesystems/afs.rst> for more information.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
@ -18,7 +18,7 @@ config AFS_DEBUG
|
|||
help
|
||||
Say Y here to make runtime controllable debugging messages appear.
|
||||
|
||||
See <file:Documentation/filesystems/afs.txt> for more information.
|
||||
See <file:Documentation/filesystems/afs.rst> for more information.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
@ -37,6 +37,6 @@ config AFS_DEBUG_CURSOR
|
|||
the dmesg log if the server rotation algorithm fails to successfully
|
||||
contact a server.
|
||||
|
||||
See <file:Documentation/filesystems/afs.txt> for more information.
|
||||
See <file:Documentation/filesystems/afs.rst> for more information.
|
||||
|
||||
If unsure, say N.
|
||||
|
|
|
@ -11,7 +11,7 @@ config BFS_FS
|
|||
on your /stand slice from within Linux. You then also need to say Y
|
||||
to "UnixWare slices support", below. More information about the BFS
|
||||
file system is contained in the file
|
||||
<file:Documentation/filesystems/bfs.txt>.
|
||||
<file:Documentation/filesystems/bfs.rst>.
|
||||
|
||||
If you don't know what this is about, say N.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ config CRAMFS
|
|||
limited to 256MB file systems (with 16MB files), and doesn't support
|
||||
16/32 bits uid/gid, hard links and timestamps.
|
||||
|
||||
See <file:Documentation/filesystems/cramfs.txt> and
|
||||
See <file:Documentation/filesystems/cramfs.rst> and
|
||||
<file:fs/cramfs/README> for further information.
|
||||
|
||||
To compile this as a module, choose M here: the module will be called
|
||||
|
|
|
@ -7,7 +7,7 @@ config ECRYPT_FS
|
|||
select CRYPTO_MD5
|
||||
help
|
||||
Encrypted filesystem that operates on the VFS layer. See
|
||||
<file:Documentation/filesystems/ecryptfs.txt> to learn more about
|
||||
<file:Documentation/filesystems/ecryptfs.rst> to learn more about
|
||||
eCryptfs. Userspace components are required and can be
|
||||
obtained from <http://ecryptfs.sf.net>.
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ config VFAT_FS
|
|||
|
||||
The VFAT support enlarges your kernel by about 10 KB and it only
|
||||
works if you said Y to the "DOS FAT fs support" above. Please read
|
||||
the file <file:Documentation/filesystems/vfat.txt> for details. If
|
||||
the file <file:Documentation/filesystems/vfat.rst> for details. If
|
||||
unsure, say Y.
|
||||
|
||||
To compile this as a module, choose M here: the module will be called
|
||||
|
@ -82,7 +82,7 @@ config FAT_DEFAULT_CODEPAGE
|
|||
help
|
||||
This option should be set to the codepage of your FAT filesystems.
|
||||
It can be overridden with the "codepage" mount option.
|
||||
See <file:Documentation/filesystems/vfat.txt> for more information.
|
||||
See <file:Documentation/filesystems/vfat.rst> for more information.
|
||||
|
||||
config FAT_DEFAULT_IOCHARSET
|
||||
string "Default iocharset for FAT"
|
||||
|
@ -96,7 +96,7 @@ config FAT_DEFAULT_IOCHARSET
|
|||
Note that "utf8" is not recommended for FAT filesystems.
|
||||
If unsure, you shouldn't set "utf8" here - select the next option
|
||||
instead if you would like to use UTF-8 encoded file names by default.
|
||||
See <file:Documentation/filesystems/vfat.txt> for more information.
|
||||
See <file:Documentation/filesystems/vfat.rst> for more information.
|
||||
|
||||
Enable any character sets you need in File Systems/Native Language
|
||||
Support.
|
||||
|
@ -114,4 +114,4 @@ config FAT_DEFAULT_UTF8
|
|||
|
||||
Say Y if you use UTF-8 encoding for file names, N otherwise.
|
||||
|
||||
See <file:Documentation/filesystems/vfat.txt> for more information.
|
||||
See <file:Documentation/filesystems/vfat.rst> for more information.
|
||||
|
|
|
@ -12,7 +12,7 @@ config FUSE_FS
|
|||
although chances are your distribution already has that library
|
||||
installed if you've installed the "fuse" package itself.
|
||||
|
||||
See <file:Documentation/filesystems/fuse.txt> for more information.
|
||||
See <file:Documentation/filesystems/fuse.rst> for more information.
|
||||
See <file:Documentation/Changes> for needed library/utility version.
|
||||
|
||||
If you want to develop a userspace FS, or if you want to use
|
||||
|
|
|
@ -2081,7 +2081,7 @@ static void end_polls(struct fuse_conn *fc)
|
|||
* The same effect is usually achievable through killing the filesystem daemon
|
||||
* and all users of the filesystem. The exception is the combination of an
|
||||
* asynchronous request and the tricky deadlock (see
|
||||
* Documentation/filesystems/fuse.txt).
|
||||
* Documentation/filesystems/fuse.rst).
|
||||
*
|
||||
* Aborting requests under I/O goes as follows: 1: Separate out unlocked
|
||||
* requests, they should be finished off immediately. Locked requests will be
|
||||
|
|
|
@ -6,7 +6,7 @@ config HFS_FS
|
|||
help
|
||||
If you say Y here, you will be able to mount Macintosh-formatted
|
||||
floppy disks and hard drive partitions with full read-write access.
|
||||
Please read <file:Documentation/filesystems/hfs.txt> to learn about
|
||||
Please read <file:Documentation/filesystems/hfs.rst> to learn about
|
||||
the available mount options.
|
||||
|
||||
To compile this file system support as a module, choose M here: the
|
||||
|
|
|
@ -9,7 +9,7 @@ config HPFS_FS
|
|||
write files to an OS/2 HPFS partition on your hard drive. OS/2
|
||||
floppies however are in regular MSDOS format, so you don't need this
|
||||
option in order to be able to read them. Read
|
||||
<file:Documentation/filesystems/hpfs.txt>.
|
||||
<file:Documentation/filesystems/hpfs.rst>.
|
||||
|
||||
To compile this file system support as a module, choose M here: the
|
||||
module will be called hpfs. If unsure, say N.
|
||||
|
|
|
@ -1606,14 +1606,14 @@ EXPORT_SYMBOL(iput);
|
|||
* @inode: inode owning the block number being requested
|
||||
* @block: pointer containing the block to find
|
||||
*
|
||||
* Replaces the value in *block with the block number on the device holding
|
||||
* Replaces the value in ``*block`` with the block number on the device holding
|
||||
* corresponding to the requested block number in the file.
|
||||
* That is, asked for block 4 of inode 1 the function will replace the
|
||||
* 4 in *block, with disk block relative to the disk start that holds that
|
||||
* 4 in ``*block``, with disk block relative to the disk start that holds that
|
||||
* block of the file.
|
||||
*
|
||||
* Returns -EINVAL in case of error, 0 otherwise. If mapping falls into a
|
||||
* hole, returns 0 and *block is also set to 0.
|
||||
* hole, returns 0 and ``*block`` is also set to 0.
|
||||
*/
|
||||
int bmap(struct inode *inode, sector_t *block)
|
||||
{
|
||||
|
|
|
@ -8,7 +8,7 @@ config ISO9660_FS
|
|||
long Unix filenames and symbolic links are also supported by this
|
||||
driver. If you have a CD-ROM drive and want to do more with it than
|
||||
just listen to audio CDs and watch its LEDs, say Y (and read
|
||||
<file:Documentation/filesystems/isofs.txt> and the CD-ROM-HOWTO,
|
||||
<file:Documentation/filesystems/isofs.rst> and the CD-ROM-HOWTO,
|
||||
available from <http://www.tldp.org/docs.html#howto>), thereby
|
||||
enlarging your kernel by about 27 KB; otherwise say N.
|
||||
|
||||
|
|
|
@ -3595,7 +3595,7 @@ EXPORT_SYMBOL(path_is_under);
|
|||
* file system may be mounted on put_old. After all, new_root is a mountpoint.
|
||||
*
|
||||
* Also, the current root cannot be on the 'rootfs' (initial ramfs) filesystem.
|
||||
* See Documentation/filesystems/ramfs-rootfs-initramfs.txt for alternatives
|
||||
* See Documentation/filesystems/ramfs-rootfs-initramfs.rst for alternatives
|
||||
* in this situation.
|
||||
*
|
||||
* Notes:
|
||||
|
|
|
@ -12,6 +12,6 @@ config INOTIFY_USER
|
|||
new features including multiple file events, one-shot support, and
|
||||
unmount notification.
|
||||
|
||||
For more information, see <file:Documentation/filesystems/inotify.txt>
|
||||
For more information, see <file:Documentation/filesystems/inotify.rst>
|
||||
|
||||
If unsure, say Y.
|
||||
|
|
|
@ -18,7 +18,7 @@ config NTFS_FS
|
|||
the Linux 2.4 kernel series is separately available as a patch
|
||||
from the project web site.
|
||||
|
||||
For more information see <file:Documentation/filesystems/ntfs.txt>
|
||||
For more information see <file:Documentation/filesystems/ntfs.rst>
|
||||
and <http://www.linux-ntfs.org/>.
|
||||
|
||||
To compile this file system support as a module, choose M here: the
|
||||
|
|
|
@ -21,7 +21,7 @@ config OCFS2_FS
|
|||
OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/
|
||||
|
||||
For more information on OCFS2, see the file
|
||||
<file:Documentation/filesystems/ocfs2.txt>.
|
||||
<file:Documentation/filesystems/ocfs2.rst>.
|
||||
|
||||
config OCFS2_FS_O2CB
|
||||
tristate "O2CB Kernelspace Clustering"
|
||||
|
|
|
@ -9,7 +9,7 @@ config OVERLAY_FS
|
|||
'lower' filesystem is either hidden or, in the case of directories,
|
||||
merged with the 'upper' object.
|
||||
|
||||
For more information see Documentation/filesystems/overlayfs.txt
|
||||
For more information see Documentation/filesystems/overlayfs.rst
|
||||
|
||||
config OVERLAY_FS_REDIRECT_DIR
|
||||
bool "Overlayfs: turn on redirect directory feature by default"
|
||||
|
@ -38,7 +38,7 @@ config OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW
|
|||
If backward compatibility is not an issue, then it is safe and
|
||||
recommended to say N here.
|
||||
|
||||
For more information, see Documentation/filesystems/overlayfs.txt
|
||||
For more information, see Documentation/filesystems/overlayfs.rst
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
|
@ -103,7 +103,7 @@ config OVERLAY_FS_XINO_AUTO
|
|||
If compatibility with applications that expect 32bit inodes is not an
|
||||
issue, then it is safe and recommended to say Y here.
|
||||
|
||||
For more information, see Documentation/filesystems/overlayfs.txt
|
||||
For more information, see Documentation/filesystems/overlayfs.rst
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ config PROC_FS
|
|||
/proc" or the equivalent line in /etc/fstab does the job.
|
||||
|
||||
The /proc file system is explained in the file
|
||||
<file:Documentation/filesystems/proc.txt> and on the proc(5) manpage
|
||||
<file:Documentation/filesystems/proc.rst> and on the proc(5) manpage
|
||||
("man 5 proc").
|
||||
|
||||
This option will enlarge your kernel by about 67 KB. Several
|
||||
|
@ -95,7 +95,7 @@ config PROC_CHILDREN
|
|||
default n
|
||||
help
|
||||
Provides a fast way to retrieve first level children pids of a task. See
|
||||
<file:Documentation/filesystems/proc.txt> for more information.
|
||||
<file:Documentation/filesystems/proc.rst> for more information.
|
||||
|
||||
Say Y if you are running any user-space software which takes benefit from
|
||||
this interface. For example, rkt is such a piece of software.
|
||||
|
|
|
@ -6,7 +6,7 @@ config ROMFS_FS
|
|||
This is a very small read-only file system mainly intended for
|
||||
initial ram disks of installation disks, but it could be used for
|
||||
other read-only media as well. Read
|
||||
<file:Documentation/filesystems/romfs.txt> for details.
|
||||
<file:Documentation/filesystems/romfs.rst> for details.
|
||||
|
||||
To compile this file system support as a module, choose M here: the
|
||||
module will be called romfs. Note that the file system of your
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Copyright (c) 2007 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2007 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* Please see Documentation/filesystems/sysfs.txt for more information.
|
||||
* Please see Documentation/filesystems/sysfs.rst for more information.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "sysfs: " fmt
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Copyright (c) 2007 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2007 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* Please see Documentation/filesystems/sysfs.txt for more information.
|
||||
* Please see Documentation/filesystems/sysfs.rst for more information.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Copyright (c) 2007 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2007 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* Please see Documentation/filesystems/sysfs.txt for more information.
|
||||
* Please see Documentation/filesystems/sysfs.rst for more information.
|
||||
*/
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Copyright (c) 2007 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2007 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* Please see Documentation/filesystems/sysfs.txt for more information.
|
||||
* Please see Documentation/filesystems/sysfs.rst for more information.
|
||||
*/
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
|
|
@ -28,7 +28,7 @@ config SYSV_FS
|
|||
tar" or preferably "info tar"). Note also that this option has
|
||||
nothing whatsoever to do with the option "System V IPC". Read about
|
||||
the System V file system in
|
||||
<file:Documentation/filesystems/sysv-fs.txt>.
|
||||
<file:Documentation/filesystems/sysv-fs.rst>.
|
||||
Saying Y here will enlarge your kernel by about 27 KB.
|
||||
|
||||
To compile this as a module, choose M here: the module will be called
|
||||
|
|
|
@ -9,7 +9,7 @@ config UDF_FS
|
|||
compatible with standard unix file systems, it is also suitable for
|
||||
removable USB disks. Say Y if you intend to mount DVD discs or CDRW's
|
||||
written in packet mode, or if you want to use UDF for removable USB
|
||||
disks. Please read <file:Documentation/filesystems/udf.txt>.
|
||||
disks. Please read <file:Documentation/filesystems/udf.rst>.
|
||||
|
||||
To compile this file system support as a module, choose M here: the
|
||||
module will be called udf.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Copyright (c) 2006-2008 Greg Kroah-Hartman <greg@kroah.com>
|
||||
* Copyright (c) 2006-2008 Novell Inc.
|
||||
*
|
||||
* Please read Documentation/kobject.txt before using the kobject
|
||||
* Please read Documentation/core-api/kobject.rst before using the kobject
|
||||
* interface, ESPECIALLY the parts about reference counts and object
|
||||
* destructors.
|
||||
*/
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
*
|
||||
* Split from kobject.h by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* Please read Documentation/kobject.txt before using the kobject
|
||||
* Please read Documentation/core-api/kobject.rst before using the kobject
|
||||
* interface, ESPECIALLY the parts about reference counts and object
|
||||
* destructors.
|
||||
*/
|
||||
|
|
|
@ -1219,7 +1219,7 @@ void unpin_user_pages(struct page **pages, unsigned long npages);
|
|||
* used to track the pincount (instead using of the GUP_PIN_COUNTING_BIAS
|
||||
* scheme).
|
||||
*
|
||||
* For more information, please see Documentation/vm/pin_user_pages.rst.
|
||||
* For more information, please see Documentation/core-api/pin_user_pages.rst.
|
||||
*
|
||||
* @page: pointer to page to be queried.
|
||||
* @Return: True, if it is likely that the page has been "dma-pinned".
|
||||
|
@ -2834,7 +2834,7 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
|
|||
* releasing pages: get_user_pages*() pages must be released via put_page(),
|
||||
* while pin_user_pages*() pages must be released via unpin_user_page().
|
||||
*
|
||||
* Please see Documentation/vm/pin_user_pages.rst for more information.
|
||||
* Please see Documentation/core-api/pin_user_pages.rst for more information.
|
||||
*/
|
||||
|
||||
static inline int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags)
|
||||
|
|
|
@ -141,7 +141,7 @@ struct rchan_callbacks
|
|||
* cause relay_open() to create a single global buffer rather
|
||||
* than the default set of per-cpu buffers.
|
||||
*
|
||||
* See Documentation/filesystems/relay.txt for more info.
|
||||
* See Documentation/filesystems/relay.rst for more info.
|
||||
*/
|
||||
struct dentry *(*create_buf_file)(const char *filename,
|
||||
struct dentry *parent,
|
||||
|
|
|
@ -394,6 +394,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
|
|||
* for example doing DMA mapping. Called from threaded
|
||||
* context.
|
||||
* @transfer_one: transfer a single spi_transfer.
|
||||
*
|
||||
* - return 0 if the transfer is finished,
|
||||
* - return 1 if the transfer is still in progress. When
|
||||
* the driver is finished with this transfer it must
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Copyright (c) 2007 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2007 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* Please see Documentation/filesystems/sysfs.txt for more information.
|
||||
* Please see Documentation/filesystems/sysfs.rst for more information.
|
||||
*/
|
||||
|
||||
#ifndef _SYSFS_H_
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/*
|
||||
* include/uapi/linux/ethtool_netlink.h - netlink interface for ethtool
|
||||
*
|
||||
* See Documentation/networking/ethtool-netlink.txt in kernel source tree for
|
||||
* See Documentation/networking/ethtool-netlink.rst in kernel source tree for
|
||||
* doucumentation of the interface.
|
||||
*/
|
||||
|
||||
|
|
|
@ -308,7 +308,7 @@ struct fw_cdev_event_iso_interrupt_mc {
|
|||
/**
|
||||
* struct fw_cdev_event_iso_resource - Iso resources were allocated or freed
|
||||
* @closure: See &fw_cdev_event_common;
|
||||
* set by %FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE) ioctl
|
||||
* set by``FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE)`` ioctl
|
||||
* @type: %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED or
|
||||
* %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED
|
||||
* @handle: Reference by which an allocated resource can be deallocated
|
||||
|
|
|
@ -116,7 +116,7 @@ struct kvm_irq_level {
|
|||
* ACPI gsi notion of irq.
|
||||
* For IA-64 (APIC model) IOAPIC0: irq 0-23; IOAPIC1: irq 24-47..
|
||||
* For X86 (standard AT mode) PIC0/1: irq 0-15. IOAPIC0: 0-23..
|
||||
* For ARM: See Documentation/virt/kvm/api.txt
|
||||
* For ARM: See Documentation/virt/kvm/api.rst
|
||||
*/
|
||||
union {
|
||||
__u32 irq;
|
||||
|
@ -1107,7 +1107,7 @@ struct kvm_xen_hvm_config {
|
|||
*
|
||||
* KVM_IRQFD_FLAG_RESAMPLE indicates resamplefd is valid and specifies
|
||||
* the irqfd to operate in resampling mode for level triggered interrupt
|
||||
* emulation. See Documentation/virt/kvm/api.txt.
|
||||
* emulation. See Documentation/virt/kvm/api.rst.
|
||||
*/
|
||||
#define KVM_IRQFD_FLAG_RESAMPLE (1 << 1)
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/* Documentation/ioctl/ioctl-number.rst */
|
||||
/* Documentation/userspace-api/ioctl/ioctl-number.rst */
|
||||
#define RDMA_IOCTL_MAGIC 0x1b
|
||||
#define RDMA_VERBS_IOCTL \
|
||||
_IOWR(RDMA_IOCTL_MAGIC, 1, struct ib_uverbs_ioctl_hdr)
|
||||
|
|
|
@ -486,10 +486,13 @@ static u64 get_inode_sequence_number(struct inode *inode)
|
|||
* The key words are stored in @key on success.
|
||||
*
|
||||
* For shared mappings (when @fshared), the key is:
|
||||
*
|
||||
* ( inode->i_sequence, page->index, offset_within_page )
|
||||
*
|
||||
* [ also see get_inode_sequence_number() ]
|
||||
*
|
||||
* For private mappings (or when !@fshared), the key is:
|
||||
*
|
||||
* ( current->mm, address, 0 )
|
||||
*
|
||||
* This allows (cross process, where applicable) identification of the futex
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Public API and common code for kernel->userspace relay file support.
|
||||
*
|
||||
* See Documentation/filesystems/relay.txt for an overview.
|
||||
* See Documentation/filesystems/relay.rst for an overview.
|
||||
*
|
||||
* Copyright (C) 2002-2005 - Tom Zanussi (zanussi@us.ibm.com), IBM Corp
|
||||
* Copyright (C) 1999-2005 - Karim Yaghmour (karim@opersys.com)
|
||||
|
|
27
lib/bitmap.c
27
lib/bitmap.c
|
@ -182,21 +182,22 @@ EXPORT_SYMBOL(__bitmap_shift_left);
|
|||
*
|
||||
* In pictures, example for a big-endian 32-bit architecture:
|
||||
*
|
||||
* @src:
|
||||
* 31 63
|
||||
* | |
|
||||
* 10000000 11000001 11110010 00010101 10000000 11000001 01110010 00010101
|
||||
* | | | |
|
||||
* 16 14 0 32
|
||||
* The @src bitmap is::
|
||||
*
|
||||
* if @cut is 3, and @first is 14, bits 14-16 in @src are cut and @dst is:
|
||||
* 31 63
|
||||
* | |
|
||||
* 10000000 11000001 11110010 00010101 10000000 11000001 01110010 00010101
|
||||
* | | | |
|
||||
* 16 14 0 32
|
||||
*
|
||||
* 31 63
|
||||
* | |
|
||||
* 10110000 00011000 00110010 00010101 00010000 00011000 00101110 01000010
|
||||
* | | |
|
||||
* 14 (bit 17 0 32
|
||||
* from @src)
|
||||
* if @cut is 3, and @first is 14, bits 14-16 in @src are cut and @dst is::
|
||||
*
|
||||
* 31 63
|
||||
* | |
|
||||
* 10110000 00011000 00110010 00010101 00010000 00011000 00101110 01000010
|
||||
* | | |
|
||||
* 14 (bit 17 0 32
|
||||
* from @src)
|
||||
*
|
||||
* Note that @dst and @src might overlap partially or entirely.
|
||||
*
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Copyright (c) 2006-2007 Greg Kroah-Hartman <greg@kroah.com>
|
||||
* Copyright (c) 2006-2007 Novell Inc.
|
||||
*
|
||||
* Please see the file Documentation/kobject.txt for critical information
|
||||
* Please see the file Documentation/core-api/kobject.rst for critical information
|
||||
* about using the kobject interface.
|
||||
*/
|
||||
|
||||
|
@ -670,7 +670,7 @@ static void kobject_cleanup(struct kobject *kobj)
|
|||
kobject_name(kobj), kobj, __func__, kobj->parent);
|
||||
|
||||
if (t && !t->release)
|
||||
pr_debug("kobject: '%s' (%p): does not have a release() function, it is broken and must be fixed. See Documentation/kobject.txt.\n",
|
||||
pr_debug("kobject: '%s' (%p): does not have a release() function, it is broken and must be fixed. See Documentation/core-api/kobject.rst.\n",
|
||||
kobject_name(kobj), kobj);
|
||||
|
||||
/* send "remove" if the caller did not do it but sent "add" */
|
||||
|
|
12
mm/gup.c
12
mm/gup.c
|
@ -2843,9 +2843,9 @@ EXPORT_SYMBOL_GPL(get_user_pages_fast);
|
|||
* the arguments here are identical.
|
||||
*
|
||||
* FOLL_PIN means that the pages must be released via unpin_user_page(). Please
|
||||
* see Documentation/vm/pin_user_pages.rst for further details.
|
||||
* see Documentation/core-api/pin_user_pages.rst for further details.
|
||||
*
|
||||
* This is intended for Case 1 (DIO) in Documentation/vm/pin_user_pages.rst. It
|
||||
* This is intended for Case 1 (DIO) in Documentation/core-api/pin_user_pages.rst. It
|
||||
* is NOT intended for Case 2 (RDMA: long-term pins).
|
||||
*/
|
||||
int pin_user_pages_fast(unsigned long start, int nr_pages,
|
||||
|
@ -2883,9 +2883,9 @@ EXPORT_SYMBOL_GPL(pin_user_pages_fast);
|
|||
* the arguments here are identical.
|
||||
*
|
||||
* FOLL_PIN means that the pages must be released via unpin_user_page(). Please
|
||||
* see Documentation/vm/pin_user_pages.rst for details.
|
||||
* see Documentation/core-api/pin_user_pages.rst for details.
|
||||
*
|
||||
* This is intended for Case 1 (DIO) in Documentation/vm/pin_user_pages.rst. It
|
||||
* This is intended for Case 1 (DIO) in Documentation/core-api/pin_user_pages.rst. It
|
||||
* is NOT intended for Case 2 (RDMA: long-term pins).
|
||||
*/
|
||||
long pin_user_pages_remote(struct task_struct *tsk, struct mm_struct *mm,
|
||||
|
@ -2919,9 +2919,9 @@ EXPORT_SYMBOL(pin_user_pages_remote);
|
|||
* FOLL_PIN is set.
|
||||
*
|
||||
* FOLL_PIN means that the pages must be released via unpin_user_page(). Please
|
||||
* see Documentation/vm/pin_user_pages.rst for details.
|
||||
* see Documentation/core-api/pin_user_pages.rst for details.
|
||||
*
|
||||
* This is intended for Case 1 (DIO) in Documentation/vm/pin_user_pages.rst. It
|
||||
* This is intended for Case 1 (DIO) in Documentation/core-api/pin_user_pages.rst. It
|
||||
* is NOT intended for Case 2 (RDMA: long-term pins).
|
||||
*/
|
||||
long pin_user_pages(unsigned long start, unsigned long nr_pages,
|
||||
|
|
|
@ -213,7 +213,9 @@ my $type_constant = '\b``([^\`]+)``\b';
|
|||
my $type_constant2 = '\%([-_\w]+)';
|
||||
my $type_func = '(\w+)\(\)';
|
||||
my $type_param = '\@(\w*((\.\w+)|(->\w+))*(\.\.\.)?)';
|
||||
my $type_param_ref = '([\!]?)\@(\w*((\.\w+)|(->\w+))*(\.\.\.)?)';
|
||||
my $type_fp_param = '\@(\w+)\(\)'; # Special RST handling for func ptr params
|
||||
my $type_fp_param2 = '\@(\w+->\S+)\(\)'; # Special RST handling for structs with func ptr params
|
||||
my $type_env = '(\$\w+)';
|
||||
my $type_enum = '\&(enum\s*([_\w]+))';
|
||||
my $type_struct = '\&(struct\s*([_\w]+))';
|
||||
|
@ -236,6 +238,7 @@ my @highlights_man = (
|
|||
[$type_typedef, "\\\\fI\$1\\\\fP"],
|
||||
[$type_union, "\\\\fI\$1\\\\fP"],
|
||||
[$type_param, "\\\\fI\$1\\\\fP"],
|
||||
[$type_param_ref, "\\\\fI\$1\$2\\\\fP"],
|
||||
[$type_member, "\\\\fI\$1\$2\$3\\\\fP"],
|
||||
[$type_fallback, "\\\\fI\$1\\\\fP"]
|
||||
);
|
||||
|
@ -249,6 +252,7 @@ my @highlights_rst = (
|
|||
[$type_member_func, "\\:c\\:type\\:`\$1\$2\$3\\\\(\\\\) <\$1>`"],
|
||||
[$type_member, "\\:c\\:type\\:`\$1\$2\$3 <\$1>`"],
|
||||
[$type_fp_param, "**\$1\\\\(\\\\)**"],
|
||||
[$type_fp_param2, "**\$1\\\\(\\\\)**"],
|
||||
[$type_func, "\$1()"],
|
||||
[$type_enum, "\\:c\\:type\\:`\$1 <\$2>`"],
|
||||
[$type_struct, "\\:c\\:type\\:`\$1 <\$2>`"],
|
||||
|
@ -256,7 +260,7 @@ my @highlights_rst = (
|
|||
[$type_union, "\\:c\\:type\\:`\$1 <\$2>`"],
|
||||
# in rst this can refer to any type
|
||||
[$type_fallback, "\\:c\\:type\\:`\$1`"],
|
||||
[$type_param, "**\$1**"]
|
||||
[$type_param_ref, "**\$1\$2**"]
|
||||
);
|
||||
my $blankline_rst = "\n";
|
||||
|
||||
|
@ -327,13 +331,14 @@ my $lineprefix="";
|
|||
|
||||
# Parser states
|
||||
use constant {
|
||||
STATE_NORMAL => 0, # normal code
|
||||
STATE_NAME => 1, # looking for function name
|
||||
STATE_BODY_MAYBE => 2, # body - or maybe more description
|
||||
STATE_BODY => 3, # the body of the comment
|
||||
STATE_PROTO => 4, # scanning prototype
|
||||
STATE_DOCBLOCK => 5, # documentation block
|
||||
STATE_INLINE => 6, # gathering documentation outside main block
|
||||
STATE_NORMAL => 0, # normal code
|
||||
STATE_NAME => 1, # looking for function name
|
||||
STATE_BODY_MAYBE => 2, # body - or maybe more description
|
||||
STATE_BODY => 3, # the body of the comment
|
||||
STATE_BODY_WITH_BLANK_LINE => 4, # the body, which has a blank line
|
||||
STATE_PROTO => 5, # scanning prototype
|
||||
STATE_DOCBLOCK => 6, # documentation block
|
||||
STATE_INLINE => 7, # gathering doc outside main block
|
||||
};
|
||||
my $state;
|
||||
my $in_doc_sect;
|
||||
|
@ -1953,6 +1958,12 @@ sub process_body($$) {
|
|||
}
|
||||
}
|
||||
|
||||
if ($state == STATE_BODY_WITH_BLANK_LINE && /^\s*\*\s?\S/) {
|
||||
dump_section($file, $section, $contents);
|
||||
$section = $section_default;
|
||||
$contents = "";
|
||||
}
|
||||
|
||||
if (/$doc_sect/i) { # case insensitive for supported section names
|
||||
$newsection = $1;
|
||||
$newcontents = $2;
|
||||
|
@ -2006,18 +2017,21 @@ sub process_body($$) {
|
|||
$state = STATE_PROTO;
|
||||
$brcount = 0;
|
||||
} elsif (/$doc_content/) {
|
||||
# miguel-style comment kludge, look for blank lines after
|
||||
# @parameter line to signify start of description
|
||||
if ($1 eq "") {
|
||||
if ($section =~ m/^@/ || $section eq $section_context) {
|
||||
if ($section eq $section_context) {
|
||||
dump_section($file, $section, $contents);
|
||||
$section = $section_default;
|
||||
$contents = "";
|
||||
$new_start_line = $.;
|
||||
$state = STATE_BODY;
|
||||
} else {
|
||||
if ($section ne $section_default) {
|
||||
$state = STATE_BODY_WITH_BLANK_LINE;
|
||||
} else {
|
||||
$state = STATE_BODY;
|
||||
}
|
||||
$contents .= "\n";
|
||||
}
|
||||
$state = STATE_BODY;
|
||||
} elsif ($state == STATE_BODY_MAYBE) {
|
||||
# Continued declaration purpose
|
||||
chomp($declaration_purpose);
|
||||
|
@ -2169,7 +2183,8 @@ sub process_file($) {
|
|||
process_normal();
|
||||
} elsif ($state == STATE_NAME) {
|
||||
process_name($file, $_);
|
||||
} elsif ($state == STATE_BODY || $state == STATE_BODY_MAYBE) {
|
||||
} elsif ($state == STATE_BODY || $state == STATE_BODY_MAYBE ||
|
||||
$state == STATE_BODY_WITH_BLANK_LINE) {
|
||||
process_body($file, $_);
|
||||
} elsif ($state == STATE_INLINE) { # scanning for inline parameters
|
||||
process_inline($file, $_);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue