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:2.603 / U:0.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site