[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] passing hypercall parameters by pointer



On Aug 19, 2005, at 7:17 AM, Keir Fraser wrote:

On 19 Aug 2005, at 12:52, Jimi Xenidis wrote:

IP> Since passing by VA is so convenient on the architectures that
 IP> support it we may not want to do anything different on these
 IP> anyhow.

I agree, why create a new mapping when a usable one exists.

At least for common kernel code, we will need to wrap such VAs in a
macro so that the "psuedo-physical" is passed in for PPC. I assume
this is reasonable?

This is all potentially fixable before 3.0 final. Paravirt x86 can continue to use guest virtual addresses. The idea would be that the registration scheme would essentially create a parameter-passing 'address space' into which you hook pages of memory. On x86 we would map the address space onto regions of kernel va space. On other arches we would map the address space onto physical addresses that get mapped into Xen's va space. get_user/put_user/copy_from_user/copy_to_user will take guest addresses that point into this parameter-passing address space.

Could you flesh this out a little more? I *think* what you're saying is this (on PowerPC):
- at boot, the kernel notifies Xen of a parameter page
- replace libxc calls to mlock() with register_this_address() (which could be a privcmd ioctl) - register_this_address() stuffs the userspace pointer and corresponding pseudo-physical pointer into a table in the parameter page
- libxc ignorantly creates its structures with userspace addresses
- once the hypercall arrives in Xen, copy_from_user() is passed the userspace address - copy_from_user() consults the table in the parameter page to translate userspace -> pseudo-physical, then translates pseudo-physical -> machine

Is that right?

--
Hollis Blanchard
IBM Linux Technology Center


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.