[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250402160721.97596-5-kalyazin@amazon.com>
Date: Wed, 2 Apr 2025 16:07:20 +0000
From: Nikita Kalyazin <kalyazin@...zon.com>
To: <akpm@...ux-foundation.org>, <pbonzini@...hat.com>, <shuah@...nel.org>
CC: <kvm@...r.kernel.org>, <linux-kselftest@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <linux-mm@...ck.org>,
<lorenzo.stoakes@...cle.com>, <david@...hat.com>, <ryan.roberts@....com>,
<quic_eberman@...cinc.com>, <jthoughton@...gle.com>, <peterx@...hat.com>,
<graf@...zon.de>, <jgowans@...zon.com>, <roypat@...zon.co.uk>,
<derekmn@...zon.com>, <nsaenz@...zon.es>, <xmarcalx@...zon.com>,
<kalyazin@...zon.com>
Subject: [PATCH v2 4/5] KVM: guest_memfd: add support for userfaultfd minor
Add support for sending a pagefault event if userfaultfd is registered.
Only page minor event is currently supported.
Signed-off-by: Nikita Kalyazin <kalyazin@...zon.com>
---
virt/kvm/guest_memfd.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c
index 26b1734b9623..92d3e6b51dc2 100644
--- a/virt/kvm/guest_memfd.c
+++ b/virt/kvm/guest_memfd.c
@@ -4,6 +4,9 @@
#include <linux/kvm_host.h>
#include <linux/pagemap.h>
#include <linux/anon_inodes.h>
+#ifdef CONFIG_KVM_PRIVATE_MEM
+#include <linux/userfaultfd_k.h>
+#endif /* CONFIG_KVM_PRIVATE_MEM */
#include "kvm_mm.h"
@@ -380,6 +383,13 @@ static vm_fault_t kvm_gmem_fault(struct vm_fault *vmf)
kvm_gmem_mark_prepared(folio);
}
+ if (userfaultfd_minor(vmf->vma) &&
+ !(vmf->flags & FAULT_FLAG_NO_USERFAULT_MINOR)) {
+ folio_unlock(folio);
+ filemap_invalidate_unlock_shared(inode->i_mapping);
+ return handle_userfault(vmf, VM_UFFD_MINOR);
+ }
+
vmf->page = folio_file_page(folio, vmf->pgoff);
out_folio:
--
2.47.1
Powered by blists - more mailing lists