Skip to content
Tags give the ability to mark specific points in history as being important
  • sent/exclusive-gup-v1
    [RFC] mm/gup: Introduce exclusive GUP pinning
    
    In arm64 pKVM and QuIC's Gunyah protected VM model, we want to support
    grabbing shmem user pages instead of using KVM's guestmemfd. These
    hypervisors provide a different isolation model than the CoCo
    implementations from x86. KVM's guest_memfd is focused on providing
    memory that is more isolated than AVF requires. Some specific examples
    include ability to pre-load data onto guest-private pages, dynamically
    sharing/isolating guest pages without copy, and (future) migrating
    guest-private pages.  In sum of those differences after a discussion in
    [1] and at PUCK, we want to try to stick with existing shmem and extend
    GUP to support the isolation needs for arm64 pKVM and Gunyah. To that
    end, we introduce the concept of "exclusive GUP pinning", which enforces
    that only one pin of any kind is allowed when using the FOLL_EXCLUSIVE
    flag is set. This behavior doesn't affect FOLL_GET or any other folio
    refcount operations that don't go through the FOLL_PIN path.
    
    [1]: https://lore.kernel.org/all/20240319143119.GA2736@willie-the-truck/
    
    Tree with patches at:
    https://git.codelinaro.org/clo/linux-kernel/gunyah-linux/-/tree/sent/exclusive-gup-v1
    
    To: Andrew Morton <akpm@linux-foundation.org>
    To: Shuah Khan <shuah@kernel.org>
    To: David Hildenbrand <david@redhat.com>
    To: Matthew Wilcox <willy@infradead.org>
    To: maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, seanjc@google.com, Vishal Annapurve <vannapurve@google.com>, Fuad Tabba <tabba@google.com>
    Cc: kvm@vger.kernel.org, kvmarm@lists.linux.dev
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-kselftest@vger.kernel.org
    Cc: pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au,
    	 anup@brainfault.org, paul.walmsley@sifive.com,
    	palmer@dabbelt.com,  aou@eecs.berkeley.edu, seanjc@google.com,
    	viro@zeniv.linux.org.uk,  brauner@kernel.org,
    	willy@infradead.org, akpm@linux-foundation.org,
    	 xiaoyao.li@intel.com, yilun.xu@intel.com,
    	chao.p.peng@linux.intel.com,  jarkko@kernel.org,
    	amoorthy@google.com, dmatlack@google.com,
    	 yu.c.zhang@linux.intel.com, isaku.yamahata@intel.com,
    	mic@digikod.net,  vbabka@suse.cz, vannapurve@google.com,
    	ackerleytng@google.com,  mail@maciej.szmigiero.name,
    	david@redhat.com, michael.roth@amd.com,  wei.w.wang@intel.com,
    	liam.merwick@oracle.com, isaku.yamahata@gmail.com,
    	 kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com,
    	steven.price@arm.com,  quic_eberman@quicinc.com,
    	quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com,
    	 quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com,
    	 quic_pderrin@quicinc.com, quic_pheragu@quicinc.com,
    	catalin.marinas@arm.com,  james.morse@arm.com,
    	yuzenghui@huawei.com, oliver.upton@linux.dev,  maz@kernel.org,
    	will@kernel.org, qperret@google.com, keirf@google.com,
    	 tabba@google.com
    Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
    
    ---
    Elliot Berman (2):
          mm/gup-test: Verify exclusive pinned
          mm/gup_test: Verify GUP grabs same pages twice
    
    Fuad Tabba (3):
          mm/gup: Move GUP_PIN_COUNTING_BIAS to page_ref.h
          mm/gup: Add an option for obtaining an exclusive pin
          mm/gup: Add support for re-pinning a normal pinned page as exclusive
    
     include/linux/mm.h                    |  57 ++++----
     include/linux/mm_types.h              |   2 +
     include/linux/page_ref.h              |  74 ++++++++++
     mm/Kconfig                            |   5 +
     mm/gup.c                              | 265 ++++++++++++++++++++++++++++++----
     mm/gup_test.c                         | 108 ++++++++++++++
     mm/gup_test.h                         |   1 +
     tools/testing/selftests/mm/gup_test.c |   5 +-
     8 files changed, 457 insertions(+), 60 deletions(-)
    ---
    base-commit: 6ba59ff4227927d3a8530fc2973b80e94b54d58f
    change-id: 20240509-exclusive-gup-66259138bbff
    
    Best regards,
  • v6.9
    a38297e3 · Linux 6.9 ·
    Linux 6.9