lkml.org 
[lkml]   [2015]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 07/13] KVM: add vcpu-specific functions to read/write/translate GFNs
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.)


\
 
 \ /
  Last update: 2015-05-29 21:41    [W:0.279 / U:0.244 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site