OpenCloudOS-Kernel/Documentation
Hugh Dickins 0d940a9b27 mm/pgtable: allow pte_offset_map[_lock]() to fail
Make pte_offset_map() a wrapper for __pte_offset_map() (optionally outputs
pmdval), pte_offset_map_lock() a sparse __cond_lock wrapper for
__pte_offset_map_lock(): those __funcs added in mm/pgtable-generic.c.

__pte_offset_map() do pmdval validation (including pmd_clear_bad() when
pmd_bad()), returning NULL if pmdval is not for a page table. 
__pte_offset_map_lock() verify pmdval unchanged after getting the lock,
trying again if it changed.

No #ifdef CONFIG_TRANSPARENT_HUGEPAGE around them: that could be done to
cover the imminent case, but we expect to generalize it later, and it
makes a mess of where to do the pmd_bad() clearing.

Add pte_offset_map_nolock(): outputs ptl like pte_offset_map_lock(),
without actually taking the lock.  This will be preferred to open uses of
pte_lockptr(), because (when split ptlock is in page table's struct page)
it points to the right lock for the returned pte pointer, even if *pmd
gets changed racily afterwards.

Update corresponding Documentation.

Do not add the anticipated rcu_read_lock() and rcu_read_unlock()s yet:
they have to wait until all architectures are balancing pte_offset_map()s
with pte_unmap()s (as in the arch series posted earlier).  But comment
where they will go, so that it's easy to add them for experiments.  And
only when those are in place can transient racy failure cases be enabled. 
Add more safety for the PAE mismatched pmd_low pmd_high case at that time.

Link: https://lkml.kernel.org/r/2929bfd-9893-a374-e463-4c3127ff9b9d@google.com
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: David Hildenbrand <david@redhat.com>
Cc: "Huang, Ying" <ying.huang@intel.com>
Cc: Ira Weiny <ira.weiny@intel.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Lorenzo Stoakes <lstoakes@gmail.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Mike Rapoport (IBM) <rppt@kernel.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Naoya Horiguchi <naoya.horiguchi@nec.com>
Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Ralph Campbell <rcampbell@nvidia.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: SeongJae Park <sj@kernel.org>
Cc: Song Liu <song@kernel.org>
Cc: Steven Price <steven.price@arm.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Will Deacon <will@kernel.org>
Cc: Yang Shi <shy828301@gmail.com>
Cc: Yu Zhao <yuzhao@google.com>
Cc: Zack Rusin <zackr@vmware.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-06-19 16:19:12 -07:00
..
ABI dmaengine updates for v6.4 2023-05-03 11:11:56 -07:00
PCI ixgb: Remove ixgb driver 2023-03-19 10:51:07 +00:00
RCU doc: Update whatisRCU.rst 2023-04-05 13:47:18 +00:00
accel accel/qaic: Add documentation for AIC100 accelerator driver 2023-04-06 08:23:03 +02:00
accounting Scheduler changes for v6.4: 2023-04-28 14:53:30 -07:00
admin-guide mm/memcontrol: export memcg.swap watermark via sysfs for v2 memcg 2023-06-09 16:25:43 -07:00
arch A handful of late-arriving documentation fixes, plus one Spanish 2023-05-05 13:16:42 -07:00
arm ARM: SoC devicetree changes for 6.4 2023-04-25 12:11:54 -07:00
arm64 irqchip/gic-v3: Add Rockchip 3588001 erratum workaround 2023-04-18 17:31:17 +01:00
block Documentation/block: drop the request.rst file 2023-05-12 11:04:58 -06:00
bpf lsm/stable-6.4 PR 20230428 2023-04-29 10:17:05 -07:00
cdrom Documentation: use capitalization for chapters and acronyms 2023-05-16 12:49:31 -06:00
core-api - Nick Piggin's "shoot lazy tlbs" series, to improve the peformance of 2023-04-27 19:42:02 -07:00
cpu-freq
crypto
dev-tools Documentation: kselftest: "make headers" is a prerequisite 2023-06-19 16:19:03 -07:00
devicetree A set of fixes for interrupt chip drivers: 2023-05-28 07:12:21 -04:00
doc-guide
driver-api pwm: Changes for v6.4-rc1 2023-05-03 11:25:01 -07:00
fault-injection block: null_blk: make fault-injection dynamically configurable per device 2023-04-13 07:38:55 -06:00
fb
features s390: enable ARCH_HAS_MEMBARRIER_SYNC_CORE 2023-03-27 17:19:52 +02:00
filesystems smb3: move Documentation/filesystems/cifs to Documentation/filesystems/smb 2023-05-24 16:29:21 -05:00
firmware-guide ACPI: docs: enumeration: Correct reference to the I²C device data type 2023-03-07 14:09:49 +01:00
firmware_class
fpga Documentation: use capitalization for chapters and acronyms 2023-05-16 12:49:31 -06:00
gpu Merge tag 'amd-drm-next-6.4-2023-03-17' of https://gitlab.freedesktop.org/agd5f/linux into drm-next 2023-03-20 16:44:36 +10:00
hid
hwmon hwmon: (aquacomputer_d5next) Add support for Aquacomputer Aquastream XT 2023-04-21 07:27:23 -07:00
i2c
iio
images
infiniband
input
isdn
kbuild parisc: update kbuild doc. aliases for parisc64 2023-05-03 17:43:10 +02:00
kernel-hacking Documentation: Add document for false sharing 2023-04-10 16:46:11 -06:00
leds - New Drivers 2023-05-02 10:36:02 -07:00
litmus-tests LKMM scripting updates for v6.4 2023-04-24 12:02:25 -07:00
livepatch Objtool changes for v6.4: 2023-04-28 14:02:54 -07:00
locking Documentation: use capitalization for chapters and acronyms 2023-05-16 12:49:31 -06:00
loongarch
maintainer docs: rebasing-and-merging: Drop wrong statement about git 2023-03-07 10:26:22 -07:00
mhi
mips
misc-devices
mm mm/pgtable: allow pte_offset_map[_lock]() to fail 2023-06-19 16:19:12 -07:00
netlabel
netlink net/handshake: Enable the SNI extension to work properly 2023-05-24 22:05:24 -07:00
networking net/handshake: Enable the SNI extension to work properly 2023-05-24 22:05:24 -07:00
nvdimm
nvme
pcmcia Documentation: use capitalization for chapters and acronyms 2023-05-16 12:49:31 -06:00
peci
power regulator: consumer.rst: fix 'regulator_enable' typo. 2023-04-27 21:55:38 +01:00
powerpc
process docs: netdev: document the existence of the mail bot 2023-05-23 21:11:54 -07:00
riscv RISC-V Patches for the 6.4 Merge Window, Part 1 2023-04-28 16:55:39 -07:00
rust rust: sort uml documentation arch support table 2023-04-06 23:11:04 +02:00
s390 s390/iommu: get rid of S390_CCW_IOMMU and S390_AP_IOMMU 2023-05-17 15:20:18 +02:00
scheduler sh updates for v6.4 2023-04-27 17:41:23 -07:00
scsi scsi: core: Declare SCSI host template pointer members const 2023-03-24 19:19:19 -04:00
security lsm: move hook comments docs to security/security.c 2023-04-28 11:58:34 -04:00
sound ALSA: docs: Fix code block indentation in ALSA driver example 2023-05-03 08:08:25 +02:00
sphinx
sphinx-static
spi spi: docs: adjust summary to CONFIG_SYSFS_DEPRECATED removal 2023-03-14 13:30:52 +00:00
staging Documentation: use capitalization for chapters and acronyms 2023-05-16 12:49:31 -06:00
target
timers Documentation: use capitalization for chapters and acronyms 2023-05-16 12:49:31 -06:00
tools rtla/timerlat: Add auto-analysis only option 2023-04-25 19:26:17 -04:00
trace Minor tracing updates: 2023-05-05 13:11:02 -07:00
translations mm: convert migrate_pages() to work on folios 2023-06-09 16:25:27 -07:00
usb usb: gadget: uvc: Make bmControls attr read/write 2023-03-29 08:51:26 +02:00
userspace-api cifs: correct references in Documentation to old fs/cifs path 2023-05-24 16:29:21 -05:00
virt VFIO updates for v6.4-rc1 2023-05-02 11:56:43 -07:00
w1
watchdog
.gitignore
Changes
CodingStyle
Kconfig
Makefile
SubmittingPatches
atomic_bitops.txt
atomic_t.txt
conf.py docs: turn off "smart quotes" in the HTML build 2023-04-20 17:53:18 -06:00
docutils.conf
dontdiff
index.rst docs: create a top-level arch/ directory 2023-03-23 13:27:27 -06:00
memory-barriers.txt
subsystem-apis.rst