lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240618-exclusive-gup-v1-0-30472a19c5d1@quicinc.com>
Date: Tue, 18 Jun 2024 17:05:06 -0700
From: Elliot Berman <quic_eberman@...cinc.com>
To: Andrew Morton <akpm@...ux-foundation.org>, Shuah Khan <shuah@...nel.org>,
        David Hildenbrand <david@...hat.com>,
        Matthew Wilcox <willy@...radead.org>, <maz@...nel.org>
CC: <kvm@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
        <linux-mm@...ck.org>, <linux-kernel@...r.kernel.org>,
        <linux-kselftest@...r.kernel.org>, <pbonzini@...hat.com>,
        Elliot Berman
	<quic_eberman@...cinc.com>,
        Fuad Tabba <tabba@...gle.com>
Subject: [PATCH RFC 0/5] 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

	 anup@...infault.org, paul.walmsley@...ive.com,
	palmer@...belt.com,  aou@...s.berkeley.edu, seanjc@...gle.com,
	viro@...iv.linux.org.uk,  brauner@...nel.org,
	willy@...radead.org, akpm@...ux-foundation.org,
	 xiaoyao.li@...el.com, yilun.xu@...el.com,
	chao.p.peng@...ux.intel.com,  jarkko@...nel.org,
	amoorthy@...gle.com, dmatlack@...gle.com,
	 yu.c.zhang@...ux.intel.com, isaku.yamahata@...el.com,
	mic@...ikod.net,  vbabka@...e.cz, vannapurve@...gle.com,
	ackerleytng@...gle.com,  mail@...iej.szmigiero.name,
	david@...hat.com, michael.roth@....com,  wei.w.wang@...el.com,
	liam.merwick@...cle.com, isaku.yamahata@...il.com,
	 kirill.shutemov@...ux.intel.com, suzuki.poulose@....com,
	steven.price@....com,  quic_eberman@...cinc.com,
	quic_mnalajal@...cinc.com, quic_tsoni@...cinc.com,
	 quic_svaddagi@...cinc.com, quic_cvanscha@...cinc.com,
	 quic_pderrin@...cinc.com, quic_pheragu@...cinc.com,
	catalin.marinas@....com,  james.morse@....com,
	yuzenghui@...wei.com, oliver.upton@...ux.dev,  maz@...nel.org,
	will@...nel.org, qperret@...gle.com, keirf@...gle.com,
	 tabba@...gle.com

Signed-off-by: Elliot Berman <quic_eberman@...cinc.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,
-- 
Elliot Berman <quic_eberman@...cinc.com>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ