This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Re: user/hypervisor address space solution

On Mon, 2006-02-13 at 23:45 +0000, Keir Fraser wrote:
> On 13 Feb 2006, at 22:56, Hollis Blanchard wrote:
> > There are very few uses of get/put_user() in common code right now,
> and
> > those can be trivially converted. However, there are some in arch
> code
> > e.g. xen/arch/x86/domain.c) that cannot, and so the current put_user
> > interface would need to be preserved as some arch-specific macro. In
> > this case I'd call it "x86_put_user" to emphasize that only x86 arch
> > code should be using it. Too many x86isms creep into places like
> > grant_table.c...
> I expect copy_to/from_user would also need to change. There are places
> where an array of structs are passed to a hcall, a pointer into that 
> array is passed around in Xen, and individual array entries are copied
> in/out. 

I am very happy to report that, after converting the get/put_user calls
as described (and fixing my bugs), domain creation and domU booting is
now working with an unmodified libxc. I am still using the simple C
tools I hacked up because I need the simplicity/traceability.

I will be busy for a week or so, but I will try to come up with a patch
that converts x86 and ia64 and all common code to the proposed API:
        get_user_offset(val, base, offset)
        put_user_offset(val, base, offset)
        get_user_array(val, array, index)
        put_user_array(val, array, index)
        copy_to_user(to, from, len)
        copy_from_user(to, from, len)
... plus __ variants of all of these, with identical arguments
... plus arch-specific get/put_user for e.g. xen/arch/x86/domain.c,
since some of those usages don't seem to fit above.

If you don't like the API, please speak up now.

Hollis Blanchard
IBM Linux Technology Center

Xen-devel mailing list