From: ZhangPeng <zhangpeng362(a)huawei.com>
This patch series support userswap feature including registration,
unregistration, swap-out and swap-in.
Userswap feature depends on CONFIG_USERSWAP and can be enabled by
cmdline enable_userswap.
We tested the concurrent scenario of multi-threaded page fault and
multi-threaded swap-in in the uswap demo;and the remapping in the
swap-out phase and the copy-free function in the swap-in phase were ok.
During the test, related debugging functions including CONFIG_DEBUG_VM,
lockdep, slub debug, kasan and kmemleak are enabled.
ChangeLog:
v3->v4:
- define UFFDIO_REGISTER_MODE_USWAP ((__u64)1<<10) rather than
((__u64)1<<3)
v2->v3:
- update patch 7 commit
v1->v2:
- enable CONFIG_USERSWAP for openeuler_defconfig
ZhangPeng (7):
mm/userswap: add VM_USWAP and SWP_USERSWAP_ENTRY
mm/userswap: add enable_userswap boot option
mm/userswap: introduce MREMAP_USWAP_SET_PTE
mm/userswap: support userswap via userfaultfd
mm/userswap: introduce UFFDIO_COPY_MODE_DIRECT_MAP
mm/userswap: provide cpu info in userfault msg
mm/userswap: openeuler_defconfig: enable userswap
arch/arm64/configs/openeuler_defconfig | 1 +
arch/x86/configs/openeuler_defconfig | 1 +
fs/proc/task_mmu.c | 3 +
fs/userfaultfd.c | 43 +-
include/linux/mm.h | 8 +
include/linux/swap.h | 14 +-
include/linux/swapops.h | 16 +
include/linux/userfaultfd_k.h | 5 +
include/linux/userswap.h | 60 +++
include/trace/events/mmflags.h | 7 +
include/uapi/linux/mman.h | 1 +
include/uapi/linux/userfaultfd.h | 3 +
mm/Kconfig | 10 +
mm/Makefile | 1 +
mm/memory.c | 8 +
mm/mremap.c | 8 +-
mm/userfaultfd.c | 12 +
mm/userswap.c | 552 +++++++++++++++++++++++++
18 files changed, 747 insertions(+), 6 deletions(-)
create mode 100644 include/linux/userswap.h
create mode 100644 mm/userswap.c
--
2.25.1