[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4A5F4945.3080202@us.ibm.com>
Date: Thu, 16 Jul 2009 10:37:41 -0500
From: Anthony Liguori <aliguori@...ibm.com>
To: Gregory Haskins <ghaskins@...ell.com>
CC: kvm@...r.kernel.org, linux-kernel@...r.kernel.org, avi@...hat.com,
glommer@...hat.com
Subject: Re: [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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists