+4.143 KVM_MAP_MEMORY
+------------------------
+
+:Capability: KVM_CAP_MAP_MEMORY
+:Architectures: none
+:Type: vcpu ioctl
I think "vcpu ioctl" means theoretically it can be called on multiple vcpus.
What happens in that case?
Each vcpu can handle the ioctl simaltaneously.
+:Parameters: struct kvm_memory_mapping(in/out)
+:Returns: 0 on success, <0 on error
+
+KVM_MAP_MEMORY populates guest memory without running vcpu.
+
+::
+
+ struct kvm_memory_mapping {
+ __u64 base_gfn;
+ __u64 nr_pages;
+ __u64 flags;
+ __u64 source;
+ };
+
+ /* For kvm_memory_mapping:: flags */
+ #define KVM_MEMORY_MAPPING_FLAG_WRITE _BITULL(0)
+ #define KVM_MEMORY_MAPPING_FLAG_EXEC _BITULL(1)
+ #define KVM_MEMORY_MAPPING_FLAG_USER _BITULL(2)
I am not sure what's the good of having "FLAG_USER"?
This ioctl is called from userspace, thus I think we can just treat this always
as user-fault?
The point is how to emulate kvm page fault as if vcpu caused the kvm page
fault. Not we call the ioctl as user context.