userfaultfd: support minor fault handling for shmem
From: | Axel Rasmussen <axelrasmussen-AT-google.com> | |
To: | Alexander Viro <viro-AT-zeniv.linux.org.uk>, Andrea Arcangeli <aarcange-AT-redhat.com>, Andrew Morton <akpm-AT-linux-foundation.org>, Hugh Dickins <hughd-AT-google.com>, Jerome Glisse <jglisse-AT-redhat.com>, Joe Perches <joe-AT-perches.com>, Lokesh Gidra <lokeshgidra-AT-google.com>, Mike Rapoport <rppt-AT-linux.vnet.ibm.com>, Peter Xu <peterx-AT-redhat.com>, Shaohua Li <shli-AT-fb.com>, Shuah Khan <shuah-AT-kernel.org>, Wang Qing <wangqing-AT-vivo.com> | |
Subject: | [PATCH 0/5] userfaultfd: support minor fault handling for shmem | |
Date: | Wed, 24 Feb 2021 18:14:15 -0800 | |
Message-ID: | <20210225021420.2290912-1-axelrasmussen@google.com> | |
Cc: | linux-kernel-AT-vger.kernel.org, linux-fsdevel-AT-vger.kernel.org, linux-mm-AT-kvack.org, linux-kselftest-AT-vger.kernel.org, Axel Rasmussen <axelrasmussen-AT-google.com>, Cannon Matthews <cannonmatthews-AT-google.com>, "Dr . David Alan Gilbert" <dgilbert-AT-redhat.com>, David Rientjes <rientjes-AT-google.com>, Michel Lespinasse <walken-AT-google.com>, Mina Almasry <almasrymina-AT-google.com>, Oliver Upton <oupton-AT-google.com> | |
Archive-link: | Article |
Base ==== This series is based on top of my series which adds minor fault handling for hugetlbfs [1]. (And, therefore, it is based on linux-next/akpm and Peter Xu's series for disabling huge pmd sharing as well.) [1] https://lore.kernel.org/patchwork/cover/1384095/ Overview ======== See my original series linked above for a detailed overview of minor fault handling in general. The feature in this series works exactly like the hugetblfs version (from userspace's perspective). I'm sending this as a separate series because: - The original minor fault handling series has been through several rounds of review and seems close to being merged, so it seems reasonable to start looking at this next step. - shmem is different enough that this series may require some additional work before it's ready, and I don't want to delay the original series unnecessarily by bundling them together. Use Case ======== In some cases it is useful to have VM memory backed by tmpfs instead of hugetlbfs. So, this feature will be used to support the same VM live migration use case described in my original series. Additionally, Android folks (Lokesh Gidra <lokeshgidra@google.com>) hope to optimize the Android JVM garbage collector using this feature (a paper describing a somewhat similar approach: https://arxiv.org/pdf/1902.04738.pdf). Axel Rasmussen (5): userfaultfd: support minor fault handling for shmem userfaultfd/selftests: use memfd_create for shmem test type userfaultfd/selftests: create alias mappings in the shmem test userfaultfd/selftests: reinitialize test context in each test userfaultfd/selftests: exercise minor fault handling shmem support fs/userfaultfd.c | 6 +- include/linux/shmem_fs.h | 26 +- include/uapi/linux/userfaultfd.h | 4 +- mm/memory.c | 8 +- mm/shmem.c | 88 +++---- mm/userfaultfd.c | 27 +- tools/testing/selftests/vm/userfaultfd.c | 322 +++++++++++++++-------- 7 files changed, 293 insertions(+), 188 deletions(-) -- 2.30.0.617.g56c4b15f3c-goog