On Wed, 2024-04-10 at 15:07 -0700, isaku.yamahata@xxxxxxxxx wrote: > From: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> > > Add a new ioctl KVM_MAP_MEMORY in the KVM common code. It iterates on the > memory range and calls the arch-specific function. Add stub arch function > as a weak symbol. > > Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx> > Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> Reviewed-by: Rick Edgecombe <rick.p.edgecombe@xxxxxxxxx> But one comment below. > --- > v2: > - Drop need_resched(). (David, Sean, Kai) > - Move cond_resched() at the end of loop. (Kai) > - Drop added check. (David) > - Use EINTR instead of ERESTART. (David, Sean) > - Fix srcu lock leak. (Kai, Sean) > - Add comment above copy_to_user(). > - Drop pointless comment. (Sean) > - Drop kvm_arch_vcpu_pre_map_memory(). (Sean) > - Don't overwrite error code. (Sean, David) > - Make the parameter in bytes, not pages. (Michael) > - Drop source member in struct kvm_memory_mapping. (Sean, Michael) > --- > include/linux/kvm_host.h | 3 +++ > include/uapi/linux/kvm.h | 9 +++++++ > virt/kvm/kvm_main.c | 54 ++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 66 insertions(+) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index 48f31dcd318a..e56a0c7e5b42 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -2445,4 +2445,7 @@ static inline int kvm_gmem_get_pfn(struct kvm *kvm, > } > #endif /* CONFIG_KVM_PRIVATE_MEM */ > > +int kvm_arch_vcpu_map_memory(struct kvm_vcpu *vcpu, > + struct kvm_memory_mapping *mapping); > + > #endif > diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h > index 2190adbe3002..972aa9e054d3 100644 > --- a/include/uapi/linux/kvm.h > +++ b/include/uapi/linux/kvm.h > @@ -917,6 +917,7 @@ struct kvm_enable_cap { > #define KVM_CAP_MEMORY_ATTRIBUTES 233 > #define KVM_CAP_GUEST_MEMFD 234 > #define KVM_CAP_VM_TYPES 235 > +#define KVM_CAP_MAP_MEMORY 236 This can go in a later patch.