linux/Documentation
Lorenzo Stoakes dbf8be8218 docs/mm: add VMA locks documentation
Locking around VMAs is complicated and confusing.  While we have a number
of disparate comments scattered around the place, we seem to be reaching a
level of complexity that justifies a serious effort at clearly documenting
how locks are expected to be used when it comes to interacting with
mm_struct and vm_area_struct objects.

This is especially pertinent as regards the efforts to find sensible
abstractions for these fundamental objects in kernel rust code whose
compiler strictly requires some means of expressing these rules (and
through this expression, self-document these requirements as well as
enforce them).

The document limits scope to mmap and VMA locks and those that are
immediately adjacent and relevant to them - so additionally covers page
table locking as this is so very closely tied to VMA operations (and
relies upon us handling these correctly).

The document tries to cover some of the nastier and more confusing edge
cases and concerns especially around lock ordering and page table
teardown.

The document is split between generally useful information for users of mm
interfaces, and separately a section intended for mm kernel developers
providing a discussion around internal implementation details.

[lorenzo.stoakes@oracle.com: v3]
  Link: https://lkml.kernel.org/r/20241114205402.859737-1-lorenzo.stoakes@oracle.com
[lorenzo.stoakes@oracle.com: docs/mm: minor corrections]
  Link: https://lkml.kernel.org/r/d3de735a-25ae-4eb2-866c-a9624fe6f795@lucifer.local
[jannh@google.com: docs/mm: add more warnings around page table access]
  Link: https://lkml.kernel.org/r/20241118-vma-docs-addition1-onv3-v2-1-c9d5395b72ee@google.com
Link: https://lkml.kernel.org/r/20241108135708.48567-1-lorenzo.stoakes@oracle.com
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Acked-by: Qi Zheng <zhengqi.arch@bytedance.com>
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Reviewed-by: Bagas Sanjaya <bagasdotme@gmail.com>
Reviewed-by: Jann Horn <jannh@google.com>
Cc: Alice Ryhl <aliceryhl@google.com>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Hillf Danton <hdanton@sina.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Liam R. Howlett <Liam.Howlett@Oracle.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: SeongJae Park <sj@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2024-12-18 19:04:41 -08:00
..
ABI linux-watchdog 6.13-rc1 tag 2024-12-05 10:03:43 -08:00
accel accel/qaic: Add AIC080 support 2024-10-12 14:51:04 -06:00
accounting
admin-guide sched/core: Update kernel boot parameters for LAZY preempt. 2024-12-02 12:01:28 +01:00
arch ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A 2024-12-05 11:24:18 +00:00
block Documentation: ublk: document UBLK_F_USER_RECOVERY_FAIL_IO 2024-10-22 08:16:40 -06:00
bpf bpf: Remove trailing whitespace in verifier.rst 2024-11-11 08:17:48 -08:00
cdrom
core-api module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
cpu-freq
crypto crypto: doc - Fix akcipher title reference 2024-10-10 17:08:02 +08:00
dev-tools Kbuild updates for v6.13 2024-11-30 13:41:50 -08:00
devicetree USB driver fixes for 6.13-rc3 2024-12-14 09:35:22 -08:00
doc-guide Documentation: kernel-doc: enumerate identifier *type*s 2024-11-22 10:37:40 -07:00
driver-api Driver core changes for 6.13-rc1 2024-11-29 11:43:29 -08:00
fault-injection net: Implement fault injection forcing skb reallocation 2024-11-12 12:05:33 +01:00
fb
features riscv: Add qspinlock support 2024-11-11 07:33:20 -08:00
filesystems vfs-6.13-rc1.fixes 2024-11-27 08:11:46 -08:00
firmware_class
firmware-guide
fpga
gpu drm/amdgpu: Add documentation for enforce isolation feature 2024-11-08 11:45:29 -05:00
hid
hwmon hwmon: (tmp108) Add NXP p3t1085 support 2024-11-12 13:54:55 -08:00
i2c i2c-host updates for v6.13, part 1 2024-11-18 08:35:47 +01:00
iio docs: iio: ad7380: add adaq4370-4 and adaq4380-4 2024-11-09 10:42:03 +00:00
images
infiniband
input Input: fix the input_event struct documentation 2024-11-14 18:03:23 -08:00
isdn
kbuild Kbuild updates for v6.13 2024-11-30 13:41:50 -08:00
kernel-hacking docs/licensing: Clarify wording about "GPL" and "Proprietary" 2024-11-22 10:44:25 -07:00
leds - Limited LED current based on thermal conditions in the QCOM flash LED driver. 2024-09-23 14:20:11 -07:00
litmus-tests
livepatch
locking locking/Documentation: Fix grammar in percpu-rw-semaphore.rst 2024-11-13 10:59:01 +01:00
maintainer docs: Remove redundant word "for" 2024-10-21 09:32:20 -06:00
mhi
misc-devices
mm docs/mm: add VMA locks documentation 2024-12-18 19:04:41 -08:00
netlabel
netlink net: Add napi_struct parameter irq_suspend_timeout 2024-11-11 18:45:05 -08:00
networking Documentation: networking: Add a caveat to nexthop_compat_mode sysctl 2024-12-10 18:26:24 -08:00
nvdimm
nvme
PCI Merge branch 'pci/endpoint' 2024-11-25 13:40:56 -06:00
pcmcia
peci
power Documentation: PM: Clarify pm_runtime_resume_and_get() return value 2024-12-10 20:14:22 +01:00
process A few late-arriving fixes, plus two more significant changes that were 2024-11-26 13:44:27 -08:00
RCU doc: rcu: update printed dynticks counter bits 2024-11-12 21:40:24 +01:00
rust Rust changes for v6.13 2024-11-26 14:00:26 -08:00
scheduler sched_ext: Rename scx_bpf_consume() to scx_bpf_dsq_move_to_local() 2024-11-11 07:06:16 -10:00
scsi
security landlock: Fix grammar issues in documentation 2024-10-21 20:36:26 +02:00
sound ASoC: Fixes for v6.13 2024-11-28 14:55:21 +01:00
sphinx
sphinx-static
spi
staging Documentation: Fix incorrect paths/magic in magic numbers rst 2024-11-04 12:34:59 -07:00
target
tee
timers timers/Documentation: Cleanup delay/sleep documentation 2024-10-16 00:36:48 +02:00
tools rtla: Documentation: Mention --deepest-idle-state 2024-10-17 17:13:16 -04:00
trace tracing: Record task flag NEED_RESCHED_LAZY. 2024-11-22 17:49:39 -05:00
translations module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
usb
userspace-api drm for 6.13-rc1 2024-11-21 14:56:17 -08:00
virt The biggest change here is eliminating the awful idea that KVM had, of 2024-11-23 16:00:50 -08:00
w1
watchdog watchdog: Delete the cpu5wdt driver 2024-11-05 10:04:39 +01:00
wmi platform-drivers-x86 for v6.13-1 2024-11-20 14:07:55 -08:00
.gitignore
atomic_bitops.txt
atomic_t.txt
Changes
CodingStyle
conf.py
docutils.conf
index.rst
Kconfig
Makefile
memory-barriers.txt
SubmittingPatches
subsystem-apis.rst