[PATCH 0/3] KVM: gmem: track preparedness a page at a time

Paolo Bonzini posted 3 patches 2 weeks, 1 day ago
include/uapi/linux/magic.h |   1 +
virt/kvm/guest_memfd.c     | 243 ++++++++++++++++++++++++++++++++++---
virt/kvm/kvm_main.c        |   7 +-
virt/kvm/kvm_mm.h          |   8 +-
4 files changed, 237 insertions(+), 22 deletions(-)
[PATCH 0/3] KVM: gmem: track preparedness a page at a time
Posted by Paolo Bonzini 2 weeks, 1 day ago
With support for large pages in gmem, it may happen that part of the gmem
is mapped with large pages and part with 4k pages.  For example, if a
conversion happens on a small region within a large page, the large
page has to be smashed into small pages even if backed by a large folio.
Each of the small pages will have its own state of preparedness,
which makes it harder to use the uptodate flag for preparedness.

Just switch to a bitmap in the inode's i_private data.  This is
a stupidly large amount of code; first because we need to add back
a gmem filesystem just in order to plug in custom inode operations,
second because bitmap operations have to be atomic.  Apart from
that, it's not too hard.

Please review!

Paolo

Paolo Bonzini (3):
  KVM: gmem: allocate private data for the gmem inode
  KVM: gmem: adjust functions to query preparedness state
  KVM: gmem: track preparedness a page at a time

 include/uapi/linux/magic.h |   1 +
 virt/kvm/guest_memfd.c     | 243 ++++++++++++++++++++++++++++++++++---
 virt/kvm/kvm_main.c        |   7 +-
 virt/kvm/kvm_mm.h          |   8 +-
 4 files changed, 237 insertions(+), 22 deletions(-)

-- 
2.43.5