2015-05-27 19:05+0200, Paolo Bonzini: > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > @@ -1616,6 +1727,27 @@ int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data, | int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data, | unsigned long len) | { | gfn_t gfn = gpa >> PAGE_SHIFT; | int seg; | int offset = offset_in_page(gpa); | int ret; | | while ((seg = next_segment(len, offset)) != 0) { | ret = kvm_write_guest_page(kvm, gfn, data, offset, seg); | if (ret < 0) | return ret; | offset = 0; | len -= seg; | data += seg; | ++gfn; | } | return 0; | } > > +int kvm_vcpu_write_guest(struct kvm_vcpu *vcpu, gpa_t gpa, const void *data, > + unsigned long len) > +{ > + gfn_t gfn = gpa >> PAGE_SHIFT; > + int seg; > + int offset = offset_in_page(gpa); > + int ret; > + > + while ((seg = next_segment(len, offset)) != 0) { > + ret = kvm_vcpu_write_guest_page(vcpu, gfn, data, offset, seg); > + if (ret < 0) > + return ret; > + offset = 0; > + len -= seg; > + data += seg; > + ++gfn; > + } > + return 0; > +} (There is no need to pass vcpu, and kvm, in this API. Extracting memslots early will help to keep more code common. I have patches that did a superset of this for the old API, so posting them after this series is finalized will be simple.) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html