lkml.org 
[lkml]   [2009]   [Jul]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [KVM PATCH] KVM: introduce "xinterface" API for external interaction with guests
Gregory Haskins wrote:
> +/*
> + * ------------
> + * XINTERFACE (External Interface)
> + * -------------
> + */
> +
> +static struct kvm *
> +intf_to_kvm(struct kvm_xinterface *intf)
> +{
> + return container_of(intf, struct kvm, xinterface);
> +}
> +
> +static unsigned long
> +xinterface_gpa_to_hva(struct kvm_xinterface *intf, unsigned long gpa)
> +{
> + struct kvm *kvm = intf_to_kvm(intf);
> + unsigned long addr;
> +
> + addr = gfn_to_hva(kvm, gpa >> PAGE_SHIFT);
> + if (kvm_is_error_hva(addr))
> + return 0;
> +
> + return addr + offset_in_page(gpa);
> +}
> +
> +static struct page *
> +xinterface_gpa_to_page(struct kvm_xinterface *intf, unsigned long gpa)
> +{
> + struct kvm *kvm = intf_to_kvm(intf);
> + struct page *page;
> +
> + page = gfn_to_page(kvm, gpa >> PAGE_SHIFT);
> + if (page == bad_page)
> + return ERR_PTR(-EINVAL);
> +
> + return page;
> +}
> +
> +static void
> +xinterface_release(struct kvm_xinterface *intf)
> +{
> + struct kvm *kvm = intf_to_kvm(intf);
> +
> + kvm_put_kvm(kvm);
> +}
> +
> +struct kvm_xinterface_ops _kvm_xinterface_ops = {
> + .gpa_to_hva = xinterface_gpa_to_hva,
> + .gpa_to_page = xinterface_gpa_to_page,
> + .release = xinterface_release,
> +};
>

How do you deal with locking?

The mappings (gpa_to_page) are not fixed. They can and do change very
often. The interface doesn't seem to attempt to cope with this.

Regards,

Anthony Liguori


\
 
 \ /
  Last update: 2009-07-16 17:39    [W:0.062 / U:0.380 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site