diff --git a/mm/Kconfig b/mm/Kconfig index f2fa89f11ae8..1d4a78416bc9 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -769,6 +769,29 @@ config HAVE_USERSPACE_LOW_MEMORY_KILLER when the OOM killer and userspace memory killer both have the potential to run). +config ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT + def_bool n + +config SPECULATIVE_PAGE_FAULT + bool "Speculative page faults" + default y + depends on ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT + depends on MMU && SMP + depends on QGKI + help + Try to handle user space page faults without holding the mmap_sem. + + This should allow better concurrency for massively threaded process + since the page fault handler will not wait for other threads memory + layout change to be done, assuming that this change is done in another + part of the process's memory space. This type of page fault is named + speculative page fault. + + If the speculative page fault fails because of a concurrency is + detected or because underlying PMD or PTE tables are not yet + allocating, it is failing its processing and a classic page fault + is then tried. + config GUP_BENCHMARK bool "Enable infrastructure for get_user_pages_fast() benchmarking" help